Fonction once
Forums › ProRealTime forum Français › Support ProOrder › Fonction once
- This topic has 5 replies, 2 voices, and was last updated 5 years ago by Nicolas.
-
-
07/26/2019 at 9:04 AM #103531
Bonjour à tous,
j’essaie de créer un code pour backtest basé sur Ichimoku. J’aimerais que certains ordres ne soient réalisés qu’une fois (ie première prise de bénéfice partielle si le cours est au dessus de 20% du prix d’entrée et traverse la tenkansenD – je veux que cet ordre ne soit exécuté qu’une fois). J’ai rédigé les lignes suivantes (avec c3 = low[1]) :
12345If longonmarket and close > 1.2*positionprice thenif close crosses under TenkansenD thenOnce Sell countofposition*1/3 shares at C3 StopEndifEndifCa ne fonctionne pas 🙂 j’ai essayé de placer la fonction once un peu partout mais j’ai systématiquement une erreur de code. Est-ce que quelqu’un a déjà rédigé ce type d’instruction ?
En vous remerciant par avance.
Cordialement.
07/26/2019 at 10:08 AM #103533L’instruction Once ne sert pas du tout à cela 🙂 Elle est utile pour déclarer une valeur une seule fois uniquement pour une variable.
Concernant ta demande de fermer 1/3 de position une seule et unique fois, pourquoi ne pas intégrer dans ta condition de la ligne 2, un test pour savoir combien de contrats il y a au marché ? Si la quantité de contrat/lot est identique à la taille envoyé lors de l’ouverture de position, alors tu n’as encore jamais fermé aucune partie de celle-ci.
07/26/2019 at 10:57 AM #103539Bonjour Nicolas,
merci pour cette réponse (du coup l’intitulé de mon poste n’est peut être pas vraiment adapté 🙂 ).
Mon ordre d’achat est du type “BUY 1500 CASH at C2 STOP” si bien que je ne connais pas le nombre de lot à l’ouverture de la position.
Est-ce qu’une formule de type PositionInitiale = once countofposition insérée juste sous le code d’achat pourrait fonctionner ? ou il existe une formule dédiée ?
12345678910111213141516// ouverture de positionIf not longonmarket and Close crosses over KijunsenW thenBUY 1500 CASH at C2 STOPEndIfPositionInitiale = once countofposition//condition de cloture de positionIf longonmarket and close > 1.2*positionprice and countofposition > PositionInitiale thenif close crosses under TenkansenD thenOnce Sell countofposition*1/3 shares at C3 StopEndifEndif07/26/2019 at 12:44 PM #103548Merci de placer le code dans la balise appropriée en utilisant le bouton ‘insert PRT code’.
Il faut arrêter d’utiliser ONCE, il n’est vraiment pas utile ici 🙂 Ta solution pourrait fonctionner, je pense toutefois que le code aura besoin d’1 barre fermée pour reconnaître la quantité de positions au marché, soit:
12345678910111213141516// ouverture de positionIf not longonmarket and Close crosses over KijunsenW thenBUY 1500 CASH at C2 STOPEndIfif barindex-tradeindex=0 thenpositioninitiale=countofpositionendif//condition de cloture de positionIf longonmarket and close > 1.2*positionprice and countofposition >= PositionInitiale thenif close crosses under TenkansenD thenSell countofposition*1/3 shares at C3 StopEndifEndif1 user thanked author for this post.
07/26/2019 at 3:38 PM #103572Super merci !
je vais creuser les fonctions barindex et tradeindex que je ne maîtrise pas ! (et Once que de toute evidence je ne maîtrise pas non plus :))
Ok pour le bouton ‘insert PRT code’ – je ferais gaffe la prochaine fois !
Encore Merci.
07/29/2019 at 8:33 AM #103680Barindex c’est simplement le numéro unique de la barre (du chandelier). Tradeindex, c’est le numéro du chandelier qui a vu l’ordre N s’ouvrir ou se fermer. On peut donc faire des différences entre ces 2 constantes pour vérifier un “timing”.
-
AuthorPosts
Find exclusive trading pro-tools on