Mauvais résultats en multi time frame

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #211010 quote
    bruno0100
    Participant
    New

    Bonjour Nicolas,

    Je n’arrive pas à trouver le bon comportement en multi timeframe. Par exemple, j’ai fais un test simple avec MACD Weekly et Daily, et quand j’analyse les résultats, j’ai quelques fois, des signaux d’achats alors qu’en Weekly le MACD est en baisse (MACD < Signal au lieu d’être >). J’ai beau regarder, mais je n’arrive pas à trouver l’erreur. Pouvez-vous m’aider, s’il vous plait ?. Je vous envois, ci-dessous, un code simple pour comprendre mon problème. Merci par avance :

    TIMEFRAME(WEEKLY)
    
    //---MACDZEROLAG WEEKLY
    MACDZEROLAGW = MACDline[12,26,9](close)
    SignalW = ExponentialAverage[9](MACDZEROLAGW)
    
    // Condition Achat Weekly
    condAW = (MACDZEROLAGW[0] > SignalW[0])
    
    // Condition Vente Weekly
    condVW = (MACDZEROLAGW[0] < SignalW[0])
    
    TIMEFRAME(DAILY)
    
    //---MACDZEROLAG DAILY--------------
    MACDZEROLAG = MACDline[12,26,9](close)
    Signal = ExponentialAverage[9](MACDZEROLAG)
    
    //----METASCORE----------------------------
    myMetaScore, ignored, ignored = CALL "MetaScore"[0,0,0](close)
    
    //-----------Conditions Achat Daily
    condAD = (MACDZEROLAG[0] > Signal[0]) and (myMetaScore[1] >= 80 and myMetaScore > myMetaScore[1])
    
    //-----------Conditions Vente Daily
    condVD = (MACDZEROLAG[0] < Signal[0]) and (myMetaScore[1] <= 70 and myMetaScore < myMetaScore[1])
    
    TIMEFRAME(Default)
    
    // Paramètre divers
    c10 = volume[0] > volume[1] and volume >=1000000
    c20 = close[0] >= 50 and close[0] <= 200
    
    //---Signal Achat
    Signal = 0
    IF condAW and condAD and c10 and c20 THEN
    Signal = 1
    ELSIF condVW and condVD and c10 and c20 THEN
    Signal = 2
    ENDIF
    
    SCREENER[Signal](Signal AS "1=↑, 2=↓")
    #211031 quote
    JC_Bywan
    Moderator
    Master

    Il y a bien “signal” qui est utilisé 2 fois pour 2 choses différentes (en ligne 17 comme signal pour macd et en lignes 35-42 comme signal en guise de critère), mais comme il est remis à zéro en ligne 35 le double usage sur ce même nom de variable ne devrait pas poser d’erreur…

    Impossible à tester car faisant call d’un indic inconnu. Donc difficile de voir au-delà éventuellement de la supposition classique fréquente avec les screeners daily/weekly du décalage : est-ce bien un compte temps réel et non pas un compte gratuit “fin de journée” dont les résultats seront décalés d’une unité de la plus grande timeframe…

    #211040 quote
    bruno0100
    Participant
    New

    J’ai corrigé Signal en SignalD sur la partie Daily.

    J’ai enlevé le Call sur l’indicateur Metascore et mis en commentaire les tests sur Metascore. Je n’ai donc laissé que l’indicateur MACDZEROLAG en Weekly et Daily, et j’ai le même comportement anormal, à savoir que cet indicateur devrait avoir le même comportement en Weekly et en Daily (soit en hausse, soit en baisse).

    Merci pour votre aide.

    #211173 quote
    Nicolas
    Keymaster
    Master

    Pour info, tu utilises une MACD classique dans ton code et pas une MACD ZeroLag, c’est peut être là où se situe ton erreur ? Comparer des valeurs qui ne sont pas les mêmes ?

    #211319 quote
    bruno0100
    Participant
    New

    Tu as bien raison. Je viens de modifier l’affichage et c’est correct. Mais j’ai tenté de changer le code en remplacant le MACD classique par le MACD ZeroLag, mais j’ai une erreur.

    Ci-dessous le code de l’appel du MACD ZeroLag :

    //MACDZLW, SignalW, ignored, ignored = CALL MACDZL[12,26,9]

    et ci-joint la copie de l’erreur.

    Si ce n’est pas possible avec le ZeroLag, ce n’est pas grave, je reste le MACD classique. Merci pour ton aide.

    Capture-decran-2023-03-10-135658.png Capture-decran-2023-03-10-135658.png
    #212678 quote
    Demon
    Participant
    Average

    Bonsoir;

    Moi aussi j’ai des problèmes avec le multi frame.

    Ci joint le screener Retracement:

    -Unité supérieure: tendance détectée par SMI  long et faiblesse par StoRsi court;

    Unité inférieure: SMI court et StoRsi Court en survente ou surachat  (j’utilise le stoRsi et le SMI depuis longtemp sans problèmes)

    Anomalies nombreuses détectées notamment sur la tendance. visibles sur les graphes car le StoRsi et le Smi sont les deux oscillateurs figurant sous le graphe des prix

    J’ai modifié l’indicateur de tendance par un StoRsi long ou par une MME, anomalies encore.

    Ci-joint les différents programmes

    a = SMI[70,15,10](typicalprice)
    b = SMI[14,3,4](typicalprice)
    c = 40
    d = -40
    return a as "Tendance",b as "Impulsion",c as "zone SA",d as "Zone SV"
    
    
    storsi=100*((rsi[P1]-lowest[P2](rsi[P1]))/((highest[P2](rsi[P1]))-lowest[P2](rsi[P1])))
    dtosck=WeightedAverage[P3](storsi)
    dtoscd=WeightedAverage[P3](dtosck)
    Seuilhaut=75
    Seuilbas=25
    storsiL=100*((rsi[P4]-lowest[P5](rsi[P4]))/((highest[P5](rsi[P4]))-lowest[P5](rsi[P4])))
    dtosckL=WeightedAverage[P6](storsiL)
    dtoscdL=WeightedAverage[P6](dtosckL)
    Seuilhaut=75
    Seuilbas=25
    RETURN dtosck AS "DTOSCK" , dtoscd AS "DTOSCD" , dtosckL AS "DTOSCKL" , dtoscdL AS "DTOSCDL" ,Seuilhaut AS "Seuilhaut", Seuilbas As "Seuilbas"
    
    Total = 0
    
    Timeframe (Daily)
    V =Average[10](Volume)>200000
    P = close>0.8
    
    
    TIMEFRAME(daily)
    indicator1, ignored, ignored,ignored = CALL "Puissance Relative" //tendance, impusion,SA, SV//
    c1 = (indicator1 > indicator1[1])
    c2 = (indicator1 > indicator1[5])
    c3 = (indicator1 < indicator1[1])
    c4 = (indicator1 < indicator1[5])
    indicator5, ignored, ignored, ignored, ignored,ignored  = CALL "StoRsi"[13, 8, 5, 65, 40, 15](close) //Dtosck, ignored, DtosckL, ignored, SH, SB//
    c5 = (indicator5 < indicator5[1])
    c6 = (indicator5 > indicator5[1])
    
    TIMEFRAME(2hours)
    ignored, indicator2, indicator3,indicator4 = CALL "Puissance Relative" //tendance, impusion,SA, SV//
    c7 = (indicator2 < indicator4)
    c8 = (indicator2 > indicator3)
    indicator5, ignored, ignored, ignored, indicator7, indicator8 = CALL "StoRsi"[13, 8, 5, 65, 40, 15](close) //Dtosck, ignored, DtosckL, ignored, SH, SB//
    c9 = (indicator5 <  indicator8)
    c10 = (indicator5 > indicator7)
    
    
    C11 = V AND P AND c1 AND c2 AND c5 AND c7 AND c9
    If c11 then
    Total= Total+1000
    Endif
    c12 = V AND P AND c3 AND c4 AND c6 AND c8 AND c10
    If c12 then
    Total= Total-1000
    Endif
    
    
    SCREENER[Total] (Total AS "Signal")
    
    
    
    

    Et les captures d’écran:

     

    Qu’en pensez vous?

    Merci d’avance pour votre aide.

    Retracement-resultats.png Retracement-resultats.png SES.png SES.png Atos.png Atos.png
    #212682 quote
    Demon
    Participant
    Average

    Précision: le screener Vague3 qui est utilisé sur deux des trois graphiques joints a la même structure mais avec plusieurs combinaison de timeframe d’ou la variable total.

    Retracement-resultats-1.png Retracement-resultats-1.png
    #212696 quote
    Demon
    Participant
    Average

    Re : j’ai envoyé aussi le problème au support PRT. Pas de réponse pour le moment.

    #213228 quote
    Demon
    Participant
    Average

    Bonjour;

    j’ai eu une réponse de PRT.

    En fait pour un scanner sur plusieurs périodes, je n’avais pas changé les variables d’une période sur l’autre.

    En le faisant une partie des problèmes est résolue (plus de faux signaux) par contre, le scan n’est pas exhaustif, il ne ne détecte aucune occurence avec un total négatif alors qu’il en existe. A suivre

    #213244 quote
    Nicolas
    Keymaster
    Master

    Ci-dessous le code de l’appel du MACD ZeroLag : //MACDZLW, SignalW, ignored, ignored = CALL MACDZL[12,26,9]

    Le message est clair, ton CALL envoi 3 paramètres à ton code MACDZL, hors il n’en attend aucun (pas de paramètres extérieurs dans ton code), il faut donc supprimer [12,26,9]

    #215649 quote
    Demon
    Participant
    Average

    Bonjour;

     

    j’ai eu une réponse de l’équipe de maintenance de PRT.

    En fait quand un total peut être  négatif, il faut coder comme suit:

    SCREENER[Total<> 0] (Total AS “Signal”)

     

    Et ça marche.

    Bonne journée.

    #215657 quote
    Nicolas
    Keymaster
    Master

    Oui en effet, si “total” est négatif c’est une condition FAUSSE.

    Si >0 alors VRAI

    Si <=0 alors FAUX

    c’est une variable booléenne et comme tu l’utilises comme condition pour afficher tes résultats de screener, alors tu n’obtiens rien car “total” est FAUX, hors l’instruction SCREENER attente une condition qui est remplie (VRAI).

Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.

Mauvais résultats en multi time frame


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
bruno0100 @bruno0100 Participant
Summary

This topic contains 11 replies,
has 4 voices, and was last updated by Nicolas
2 years, 8 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 03/06/2023
Status: Active
Attachments: 5 files
Logo Logo
Loading...