Récupérer informations de bougies en particulier
Forums › ProRealTime forum Français › Support ProOrder › Récupérer informations de bougies en particulier
- This topic has 25 replies, 3 voices, and was last updated 3 years ago by Nicolas.
-
-
03/12/2021 at 1:39 AM #163886
Bonjour,
J’ai créé un indicateur qui me fait ressortir des bougies en particulier.
J’ai également fait apparaitre sur ces bougies des infos : high/low/pips pour info et pcque j’en aurais besoin ultérieurement.
Vous pouvez voir ça sur la capture d’écran en PJ, sur de l’AUDUSD.
J’aimerais maintenant parcourir uniquement ces bougies là afin de savoir si le cours actuel se situe dans une de ces bougies, et récupérer les informations de celle ci… (sur la capture d’écran on veut donc récupérer les infos de la bougie à gauche, avec une flèche rouge)
Dans le but de faire apparaitre ça dans l’affichage mais aussi de placer des ordres de manière automatique (ça c’est l’étape d’après)…
Merci beaucoup de votre aide ! 🙂
03/12/2021 at 8:32 AM #163899Je te suggère de remplir un tableau avec ces données puis de faire une boucle dans celles-ci pour vérifier ta condition.
Par exemple, si ta condition pour garder en mémoire un high s’appelle “c1”, on remplit un nouveau tableau (variable) que j’ai appelé $ihigh, puis j’augmente la colonne du tableau et ainsi de suite, à la fin tu auras toutes ces infos à dispo quand tu veux dans ton code pour en faire ce que tu veux..
1234if c1 then$ihigh[index] = highindex=index+1endifPour récupérer la valeur qui se trouve dans les colonnes du tableau, procède comme ceci :
1234for i = index downto 0var = $ihigh[i] //valeur qui se trouve dans la colonne i//je peux utiliser la variable var pour en faire ce que je veux ...next1 user thanked author for this post.
03/12/2021 at 1:34 PM #163932Top, merci bien, ca marche nickel en adaptant à mon code.
Me reste maintenant à réussir à passer des ordres notamment.
On peut passer de manière auto des Buy Stop & Sell Stop avec un Take Profit et un Stop Loss associé ?
Et autre question : il y a une commande qui cloture tous les ordres ouverts ?
03/12/2021 at 3:10 PM #163939On peut passer de manière auto des Buy Stop & Sell Stop avec un Take Profit et un Stop Loss associé ?
Oui avec SET TARGET PROFIT et SET STOP LOSS
il y a une commande qui cloture tous les ordres ouverts ?
SELL pour les achats et EXITSHORT pour les VAD
03/12/2021 at 5:05 PM #163946123456789// LONGBUY 1 SHARE AT Haut LIMITSET STOP %LOSS 1SET TARGET %PROFIT 1// SHORTSELLSHORT 1 SHARE AT Bas STOPSET STOP %LOSS 1SET TARGET %PROFIT 1Ca serait qqe chose comme ça ?
Où “Haut” est le haut de la bougie et “Bas” le bas de la bougie
Pcque visiblement ça donne pas gd chose, je ne vois pas de résultat dans le backtest… :/
J’aurais aimé mettre une somme directement : SET STOP $LOSS 100 mais visiblement c’est interdit, ça empeche d’ouvrir plusieurs ordres en meme temps si c’est le cas
03/12/2021 at 5:29 PM #163949L’instruction SET STOP $LOSS 100 n’est pas interdite 🙂
Pour ouvrir plus d’un ordre la fois, il faudra ajouter cette ligne en tête de code :
1defparam cumulateorders=trueLes variables Haut et Bas sont elles bien renseignées ?
Attention également, les ordres conditionnels ne durent qu’une seule bougie, si les conditions sont toujours réunies, il faut les replacer encore et encore.
1 user thanked author for this post.
03/12/2021 at 5:33 PM #16395003/15/2021 at 2:52 PM #164221J’ai l’impression que les SL/TP ne sont pas bien pris en compte car qd je regarde le détail les ordres d’entrée/sortie se font au même moment.
La date et l’heure sont exactement identiques pour les ordres Achats Entry & Exit / Vente Entry & Exit …
Mon code :
1234567891011121314151617181920212223242526272829303132defparam cumulateorders=true// Sauvegarde des donnés des bougies qui m'intéressent dans un Tableauif (high < high[1] and low > low[1]) or (abs(close-open)/close < 0.00125) then$Haut[index] = high$Bas[index] = low$Bar[index] = barindexindex=index+1endif// Derniere bougie// => on parcourt le Tableauif(islastbarupdate) thenfor i = index downto 0Haut = $Haut[i]Bas = $Bas[i]Bar = $Bar[i]amplitude = (Haut - Bas) / pipsizeage = barindex-Barif close < Haut and close > Bas then// LONGBUY 1 SHARE AT Haut LIMITSET STOP $LOSS 100SET TARGET $PROFIT 100// SHORTSELLSHORT 1 SHARE AT Bas STOPSET STOP $LOSS 100SET TARGET $PROFIT 100breakendifnextendifLes SL/TP sont ils bien positionnés comme ça ?
Je voudrais :
- un BUY STOP au niveau de ma variable HAUT avec TP +50€ et SL -50€
- un SELL STOP au niveau de ma variable BAS avec TP -50€ et SL +50€
Est-ce qu’il parcourt ce code uniquement en entrée de bougies ? Faut-il lui préciser qqe chose pour qu’il le parcourt régulièrement au sein d’une même bougie ?
De plus, la sortie/annulation des ordres en cours est-elle automatique en changeant de bougie, ou faut-il prévoir qqe chose du style (pour du 4H) :
12345// Sortieif (time=005900 or time=045900 or time=085900 or time=125900 or time=165900 or time=205900) AND onmarket thensell at marketexitshort at marketendif03/15/2021 at 4:47 PM #164230islastbarupdate n’est pas indispensable.
Le résultat me semble correct, on replace des ordres conditionnels sans arrêt à chaque bougie, qu’on soit au marché au non. Si l’un des 2 ordres conditionnels est activé (le prix le touche), alors l’ordre contrarien est automatiquement fermé.
Par ailleurs dans ta boucle, tu places l’ordre correspondant à la première condition trouvé, puis tu la quittes (break), donc tu utilises toujours la bougie la plus récente inscrite dans le tableau. Dans ce cas, un tableau était inutile, des variables simples auraient suffit.
03/15/2021 at 6:06 PM #164244D’une maniere plus generale, comment fonctionne le code du Backtest ?
Le code est parcouru à la fin de chaque bougie ? Et les actions de placement d’ordre sont exécutées à l’ouverture de la bougie suivante ?
Si c’est bien le cas, alors est-il possible de parcourir ce code en cours de bougie ?
03/15/2021 at 6:20 PM #164246Le code est parcouru à la fin de chaque bougie ? Et les actions de placement d’ordre sont exécutées à l’ouverture de la bougie suivante ?
OUI
voir ces exemples, on utilise un timeframe plus petit pour lire le code qui nous intéresse à la fermeture d’une bougie d’une UT inférieure (60 fois si on utilise le TF 1sec avec une stratégie basée en 1 minute par exemple)
https://www.prorealcode.com/topic/echelle-de-temps-multiples/#post-82039
03/16/2021 at 10:22 AM #164311Je profit de ce sujet pour poser une question connexe. J’ai exactement le même code que celui de Nicolas, qui me permet de remplir un tableau de valeurs et de pouvoir piocher dedans. Le problème est que lorsque je lance la stratégie, elle s’arrête en cours de route en mettant un message d’erreur du genre : Le tableau ne peut pas contenir plus de 10.000 valeurs. Comment régler le problème ?
Merci d’avance
03/16/2021 at 12:15 PM #164331Chaque tableau (variable) peut contenir 1.000.000 de valeurs/colonnes. Cette limite a été défini en fonction du maximum d’historique possible (1M d’unités). Je ne comprends pas le message d’erreur que tu obtiens, pourrais-tu me faire une copie d’écran stp ?
03/16/2021 at 1:56 PM #16434203/16/2021 at 3:49 PM #164356Ok donc bien plus de 1 million de valeurs ont été stockés dans 1 seul et même tableau, tu n’as plus qu’à trouver le moyen de le limiter 🙂 Soit tu utilises plusieurs variables, soit tu recommences à partir de zéro quand tu arrives à X colonnes dans le tableau, soit tu changes ta façon d’indexer tes valeurs dans ton tableau.
Je ne connais pas ton projet, mais je ne pense pas que tu aies besoin de conserver toutes ces données constamment ?
-
AuthorPosts
Find exclusive trading pro-tools on