Pyramidage – Non respect du palier
Forums › ProRealTime forum Français › Support ProOrder › Pyramidage – Non respect du palier
- This topic has 3 replies, 2 voices, and was last updated 7 years ago by Tagener.
-
-
01/05/2018 at 11:28 PM #57463
Bonjour,
Pour mon premier code PRT, j’essaie le pyramidage.
Et je suis confronté aux premières difficultés.
Mon problème : au lancement du programme, j’ai deux ordres d’achats qui se succèdent sans laps de temps, à la même valeur.
J’ai essayé de forcer l’espacement avec BarIndex mais rien n’y fait et je ne trouve pas l’erreur…
123456789101112131415161718192021222324252627DEFPARAM CumulateOrders = TrueOnce nbContracts = 1Once palier = 1Once palierIndex = 5Once myTarget = 10Once myStop = 4.5Once nbPosMax = 5If Not OnMarket ThenBuy nbContracts Contracts At MarketprevPrice = TradePriceindex = TradeIndexEndIfc1 = ( Close > (prevPrice + palier*pipSize) )c2 = ( CountOfPosition < nbPosMax )c3 = ( BarIndex - index > palierIndex )If OnMarket And c1 And c2 And c3 ThenBuy nbContracts Contract At MarketprevPrice = TradePriceindex = TradeIndexEndIfSet Target pProfit myTargetSet Stop pLoss myStopSi un œil extérieur y trouve quelque chose, son avis serait très apprécié !
01/07/2018 at 11:27 AM #57574au lancement du programme
Sous ProOrder je pense ? Car en backtest, je n’arrive pas à reproduire ce comportement.
Je vois 2 problèmes éventuels:
- le palier est trop petit (1 point, cela correspond +/- à une valeur de spread “standard”)
- plus plausible, le tradeindex et tradeprice de l’ordre en cours seront disponibles à la prochaine bar et pas directement après avoir posé l’ordre au marché. Pour mémoire, le code est lu au Close et les ordres envoyés à l’Open de la barre suivante
Pour palier au problème cité en point 2, il faudrait enregistrer les valeurs comme ceci si tu souhaites les utiliser dans la même période:
12prevPrice = Close//TradePriceindex = Barindex//TradeIndexA tester toutefois, pas trop le temps de débugger ce matin 🙂
1 user thanked author for this post.
01/07/2018 at 8:34 PM #57639Merci pour cette réponse Nicolas !
J’ai le problème en ProOrder mais aussi en ProBacktest. Voici la copie d’écran de l’achat des premières positions alors que j’ai augmenté le palier à 4.
Grâce à ta remarque, je me suis dit que le problème pouvait venir du fait que tout était lu à la suite et que donc en arrivant à la condition pour le pyramidage, si TradePrice et TradeIndex sont par défaut sur 0, les conditions étaient toujours validées.
J’ai alors essayé en mettant les conditions “Not OnMarket” après les conditions “OnMarket” pour que ce ne soit pas considéré “OnMarket” juste après le premier achat mais cela ne change rien…01/07/2018 at 8:52 PM #57642En continuant la réflexion, j’ai trouvé la solution !
Il suffit de mettre TradePrice et TradeIndex au début du code, cela prend ainsi bien le dernier Trade en compte et pas une valeur par défaut inconnue.
1234567891011121314151617181920212223242526DEFPARAM CumulateOrders = TrueOnce nbContracts = 1Once palier = 4Once palierIndex = 5Once myTarget = 10Once myStop = 4.5Once nbPosMax = 5prevPrice = TradePriceindex = TradeIndexc1 = ( Close > (prevPrice + palier*pipSize) )c2 = ( CountOfPosition < nbPosMax )c3 = ( BarIndex - index > palierIndex )If OnMarket And c1 And c2 And c3 ThenBuy nbContracts Contract At MarketEndIfIf Not OnMarket ThenBuy nbContracts Contracts At MarketEndIfSet Target pProfit myTargetSet Stop pLoss myStopEncore merci pour ton aide !
-
AuthorPosts
Find exclusive trading pro-tools on