Problème de condition avec le symbole différent
Forums › ProRealTime forum Français › Support ProOrder › Problème de condition avec le symbole différent
- This topic has 8 replies, 3 voices, and was last updated 4 years ago by Nicolas.
-
-
08/26/2020 at 8:29 PM #142656
Bonsoir,
Je test une stratégie et je veux qu’elle ne se lance qu’une fois par jour.
Alors oui il y a notamment:
https://www.prorealcode.com/topic/code-une-question/Mais je veux pouvoir tester 2 fois par jour, 3 fois par jour etc…
123456789101112131415161718192021...ONCE iteration = 1iterationMax = 2ONCE jour = dayofweek...IF jour <> dayofweek THENiteration = 1jour = dayofweekENDIF...IF timeAchat AND NOT ONMARKET AND ... AND iteration <= iterationMax THENSELLSHORT 3 LOT AT MARKETset stop ploss 3iteration = iteration + 1ENDIFGRAPH iterationGRAPH jourGRAPH dayofweekPour plus de clarté je n’ai pas mis mon script en entier juste ce qui pause problème.
Les GRAPH sont correct mais si je mets:1234IF jour <> dayofweek THENiteration = 0jour = dayofweekENDIFC’est à dire “0” pour iteration à chaque changement de journée, en fait le GRAPH m’indique qu’il est à 0 tout le temps…
Dans l’exemple, iteration passe bien à 2 lors d’un achat, mais juste pour 1 bougie. Il revient aussitôt à 1 et donc, la condition ” iteration <= iterationMax” est à nouveau vrai alors qu’elle devrait être fausse jusqu’à 23h59.Vous l’avez compris, l’objectif est de pouvoir changer “interationMax” comme je veux afin d’avoir autant d’achat que je veux.
Une idée svp ?
08/27/2020 at 8:29 AM #14268008/27/2020 at 9:11 AM #14268308/27/2020 at 9:54 AM #142689Si j’ai bien compris tu veux que ton système ne place qu’un seul ordre par jour ?
Si c’est ca alors tu peux simplifier ton code :
12345678910ONCE jour = 100 //utile uniquement pour que le jour où tu le lances il s'execute une foisIF timeAchat AND NOT ONMARKET AND ... AND jour <> dayofweek THENjour = dayofweekSELLSHORT 3 LOT AT MARKETset stop ploss 3ENDIFGRAPH jourGRAPH dayofweekEt pour répondre à ta question, oui le code ONCE n’est exécuté qu’a la première itération de chaque lancement (si tu arrêtes et relances il se ré execute une fois)
08/27/2020 at 10:13 AM #142692oui je veux 1 ordre par jour, OU 2 ordres par jours, OU 3…
d’où la variable « iteration ».
Le ONCE n’est bien exécuté qu’à la toute première bougie ?
et ensuite il devrait être égale 2 tous le temps sauf en cas de changement de journée ? J’ai l’impression que le symbole « <> » ne fonctionne pas en fait.
08/27/2020 at 2:35 PM #142714Ok je n’avais pas compris, ton code me semble bon après une rapide itération de tête (même si pas optimisé), ce qui me fait dire que l’erreur vient du code que tu as supprimé pour plus de clarté.
Pour être le plus clair possible, le ONCE est exécuté à la première itération de ton code. Ton code est itéré (exécuté) à chaque clôture de bougie. Et ce sur l’historique que tu as sélectionné dans le cas d’un BackTest ou d’un indicateur.
08/27/2020 at 4:21 PM #142727ONCE est en effet utilisé qu’une seule fois à la première lecture du code (1ère bougie). J’ai fait la remarque car je ne savais pas si le problème était à la première itération ou sur toutes les autres également ? Comme le stipule OLG, il y a sans doute autre chose à creuser dans le code complet ?
DayOfWeek = tu devrais remplacer avec OpenDayOfWeek.
Pour le reset de variables au début d’une journée, j’ai l’habitude d’utiliser plutôt ceci :
123if day<>day[1] OR intradaybarindex= 0 then //2 précautions !var = 0 //resetendif08/27/2020 at 4:34 PM #142734Merci de vos réponses.
Je confirme que le problème vient, pour une raison que j’ignore, de:
1234IF jour <> dayofweek THENiteration = 1jour = dayofweekENDIFCar si je mets:
1234IF jour <> dayofweek THENiteration = 2jour = dayofweekENDIFAlors le graph me mets en 2 à après chaque fin de position.
ET:
Le problème est résolu en adoptant ta solution, Nicolas. Ce code fonctionne parfaitement, en remplacement du mien, sans rien toucher d’autre.123if day<>day[1] OR intradaybarindex= 0 then //2 précautions !iteration = 1 //resetendifA croire que <> ne fonctionne pas et que le contenu est exécuté à chaque bougie. Pourtant graph bougie est bien différent de graph DayOfWeek.
Enfin bon c’est résolu, merci 😉
08/31/2020 at 7:35 AM #143017 -
AuthorPosts
Find exclusive trading pro-tools on