syntaxe de FOR TO DO et THEN

Forums ProRealTime forum Français Support ProBuilder syntaxe de FOR TO DO et THEN

Viewing 11 posts - 1 through 11 (of 11 total)
  • #223863

    Bonjour,

    j’essaie de programmer un indicateur repérant les franchissements de DonInf en les conditionnant à un franchissement de DonSup antérieur. Je l’ai écrit ainsi:

     

     

     

    La plateforme l’accepte mais ne me donne aucun résultat positif (codé ici 5) alors que si je teste sur un cas précis de manière simple (franchissement de DonInf en [1] et franchissement de DonSup en [9] par ex.) ça marche. J’avoue que j’ai du mal avec la syntaxe des IF emboîtés et surtout des FOR TO DO CONTINUE BREAK NEXT.

    Une âme charitable pour m’aider à repérer le problème ? Merci !

    #223908

    Bonjour juld63,

    Peux-tu publier un graph de ce qui fonctionne ?

    Cordialement.

    #223935

    Bonjour Bernard13,

    voici un exemple de l’indicateur (ligne orange dans la première fenêtre en bas, codé comme ci-dessus), et un exemple du “test” codé ainsi :

    IF open[1]>=close[1]+close/5000 AND close>=open+close/5000 AND close>=open[1]+close/5000 AND ((low[1]-close/10000<=min(low[2],min(low[3],min(low[4],min(low[5],min(low[6],min (low[7],min(low[8],low[9]))))))) AND high[1]>=min(low[2],min(low[3],min(low[4],min(low[5],min(low[6],min (low[7],min(low[8],low[9])))))))) OR (low-close/10000<=DonchianChannelDown[8] AND high>=DonchianChannelDown[8])) AND low[16]-close/10000<=low[8] AND low[15]-close/10000<=low[7] AND low[14]-close/10000<=low[6] AND low[13]-close/10000<=low[5] AND low[12]-close/10000<=low[4] AND low[11]-close/10000<=low[3] AND low[10]-close/10000<=low[2] AND min(low[2],min(low[3],min(low[4],min(low[5],min(low[6],min(low[7],min(low[8],low[9])))))))+close/10000>=min(low[9],min(low[10],min(low[11],min(low[12],min(low[13],min(low[14],min(low[15],low[16]))))))) AND high[9]+close/5000>=max(high[10],max(high[11],max(high[12],max(high[13],max(high[14],max(high[15],max(high[16],high[17]))))))) THEN
    RESULT=5
    ELSE
    RESULT=0

    ENDIF

    RETURN result COLOURED (“orange”)

     

    Destiné à vérifier que cela donne bien le signal pour un retournement  avec franchissement de DonInf en bougies [1] et [0], à 16h30-16h45, précédé d’un franchissement de DonSup sur la bougie [9].

    Merci de votre aide !

     

    #223949

    D’ailleurs si vous avez une idée pour coder la valeur des Donchian à telle bougie [n] plutôt qu’une concaténation de min (x, min (y, z)) je suis preneur !

    #224079

    Bonjour

    Je suppose que l’indicateur que tu appelles Donchian est en rouge. Or un Donchian de période  p  est caractérisé par les 2 équations simples:

    plusHaut= Highest[p](Close)

    plusBas= Lowest[p](Close)

    Il est donc impossible que le prix casse un canal Donchian. Pour moi, cet indicateur rouge n’est pas un Donchian standard. Quelles sont ses équations ?

    J’ai regardé aussi du coté d’ Ichimoku (une sorte de Donchian) mais je n’ai rien trouvé.

    Le code fonctionne mais les signaux sont extrêmement rares.

    🙂

     

    #224101

    Bonjour,

    merci de ta réponse. Quand je veux dire que ça casse le Donchian, c’est qu’il passe en-dessous de la limite inférieure du canal (ou au-dessus de la limite supérieure). C’est bien

    plusHaut= Highest[p](Close)

    plusBas= Lowest[p](Close)

     

    mais calculé à partir de la bougie précédente, sinon effectivement ça ne pourrait par définition pas franchir son propre plusBas. Ici c’est défini comme le lowest des bougies [1] à [8]. Mais ProBuilder ne permet pas, en tout cas pas à ma connaissance, de demander le DonchianChannelDown[8] ou un Lowest pour autre chose que la bougie [0], ni même de demander un min sur plus de deux valeurs, d’où la nécessité d’emboîter les min. Je croyais jusqu’à hier que le code ne donnait que des 0, mais apparemment il donne de très rares signaux positifs, je vais donc analyser ceux-ci, qui me donneront peut-être la clé! Un code qui marche, même complètement à contresens, est plus utile qu’un code qui ne marche pas…

     

    #224103

    Bonjour, juste 2 remarques sur ces 2 derniers posts:

    Or un Donchian de période p est caractérisé par les 2 équations simples: plusHaut= Highest[p](Close) plusBas= Lowest[p](Close)

     

    Le canal de Donchian est basé sur les low et high pas sur les close, d’où plutôt:

    plusHaut= Highest[p]( HIGH )

    plusBas= Lowest[p]( LOW )

     

    Mais ProBuilder ne permet pas, en tout cas pas à ma connaissance, de demander le DonchianChannelDown[8] ou un Lowest pour autre chose que la bougie [0]

     

    Il suffit d’utiliser plusHaut[1] et plusBas[1] pour faire appel à l’état de ces variables en bougie précédente (et par extension plusHaut[N] renverrait aussi l’état de la variable plusHaut en Nème bougie précédente).

    En fait, puisque les crochets pour lowest/highest et les crochets pour une variable ne sont pas de même nature (p est une plage de bougies, un nombre d’éléments dans un intervalle, alors que dans plusHaut[N], N est un rang précédent de bougies), on pourrait même écrire les 2 types de crochets à la fois avec:

    plusHautprecedent=highest[10](high)[1]

    et ça passerait sans erreur de syntaxe pour obtenir le highest[10](high) en bougie précédente.

    Personnellement je trouve plus lisible dans un code de ne pas utiliser les 2 types de crochets d’un seul coup, mais de définir d’abord plusHaut, puis d’utiliser plusHaut[N] ensuite… c’était juste pour montrer le champ des possibles…

    Edit PS: je n’ai pas illustré avec les commandes donchianchanneldown et donchianchannelup , car je crois que donchianchanneldown est légèrement bugguée (décalée d’une bougie) alors que donchianchannelup est ok. C’est signalé.

    1 user thanked author for this post.
    #224108

    Merci JC. Effectivement, le Donchian est calculé sur les low et high, pas sur le close, évidemment.

    Je vais tenter de reformuler suivant ta proposition, on va voir si ça marche mieux

    #224145

    J’ai donc simplifié le code ainsi :

    Ca passe ; en fait quand le manuel parle d’une syntaxe de type Lowest[p](low) ça marche sur des bougies précédentes en écrivant Lowest[p](low[n]) – avec le [n] dans la parenthèse.

    Mais ça ne me donne toujours pas le résultat escompté… Est-ce que c’est ma syntaxe de récurrence qui est fautive ?

    #224328

    J’AI TROUVE ! C’était tout bête : il faut écrire FOR n=a TO b DO et j’avais écris FOR n=a TO n=b DO”… Là ça marche. Merci encore de votre aide

    #224435

    Bonjour, nous avons un retour de PRT sur les Donchian:

    En fait il n’y a aucun problème avec les instructions donchianchannelup et donchianchanneldown, c’est moi qui me suis enmêlé les pinceaux en testant trop vite entre 2 posts de forum. J’avais un écart ou pas entre donchian sur prix et les commandes selon que j’étais sur compte réel ou compte démo, mais c’était parce que pour le Donchian sur prix il y a dans les propriétés de l’indicateur une petite case “inclure le jour actuel” à laquelle je n’avais pas fait attention, et dans  un compte elle était cochée alors que dans l’autre elle ne l’était pas. Je me suis donc trompé dans mes comparaisons entre indic sur prix et les instructions donchianchannelup et donchianchanneldown.

    Si l’indic prédéfini sur prix a l’option d’inclure le jour actuel ou pas, en revanche afin de préciser leur fonctionnement, les instructions donchianchannelup et donchianchanneldown n’incluent pas le jour actuel dans leur plage de N bougies, les N partent de la précédente. Ces commandes sont donc exploitables directement plutôt que de passer par leur état en bougie précédente [1] pour détecter des dépassements de bandes lors de la bougie actuelle.

Viewing 11 posts - 1 through 11 (of 11 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login