Erreur code probacktest
Forums › ProRealTime forum Français › Support ProOrder › Erreur code probacktest
- This topic has 8 replies, 4 voices, and was last updated 7 years ago by Phil4910.
-
-
03/07/2017 at 6:09 PM #27592
Bonjour,
J’essaie de faire un probacktest avec un code simplissime mais le test prend des positions non conformes.
Le principe :Dax 25 ticks; si la clôture est égale au plus haut/plus bas, prise de position sur la bougie suivante si dépassement (0.5 par exemple) du plus haut/plus bas (et donc de la clôture) de la bougie signal. TP à 1 et stoploss à 5.
Quelqu’un peut-il vérifier mon code en image jointe?
Merci d’avance.
Phil4910
03/07/2017 at 6:57 PM #2760303/08/2017 at 9:45 AM #27697Merci de ta réponse Arcane.
Cependant, même en 1 minute, il me prend des positions non conformes.
Je pense savoir d’oµ provient l’erreur mais je ne sais pas comment la résoudre : le système “garde en mémoire” le signal et l’exécute parfois 10 minutes après. Moi, ce que je souhaiterais, c’est qu’il l’exécute uniquement sur la bougie suivante. Si les conditions de dépassement du +haut/+bas de la bougie signal ne sont pas remplies sur la bougie qui suit, le signal doit “s’éteindre”.
Comment faire?
Phil4910
03/10/2017 at 12:57 PM #28082le stop n’est il pas de trop ?
03/14/2017 at 10:44 AM #2849003/14/2017 at 11:30 AM #28493En l’absence de suffisamment d’infos, ce qui saute aux yeux dans un premier temps, c’est l’imbrication des boucles if pour c1 et c2, au lieu d’être séparées… Si ce n’était pas voulu, cela va affecter la logique de prise de positions. Aussi, si le respect de la condition c2 du 2e if est pour engager un short plutôt qu’une vente de position existante, mieux vaut utiliser sellshort plutôt que sell.
Si jamais séparer les 2 boucles if/endif ne suffit pas à résoudre le problème dans un nouveau backtest, alors pour obtenir davantage de réponses, il va falloir aider ceux qui potentiellement peuvent t’aider en leur fournissant davantage d’infos disponibles:
- merci d’insérer le code via le bouton “insert PRT code” plutôt que par image, afin que celui qui veut aider puisse rapidement le copier coller plutôt que de devoir le retaper, et ce aussi bien pour ceux qui tenteront de reproduire le problème en faisant tourner le code chez eux que pour ceux qui vont copier coller des bouts de code dans leur posts sur ce topic
- merci de décrire ou donner un exemple concret de ce que tu appelles “une position non conforme”, car bien souvent on part d’un exemple concret pour soit trouver l’erreur de programmation, soit un éventuel bug plateforme (ou réglage à modifier), soit conclure qu’il n’y a pas d’erreur de programme ou de plateforme mais erreur d’interprétation
- merci de fournir en image un zoom du backtest dax 25 ticks avec cas de “position non conforme” et avec la fenêtre des variables du code affichées avec la fonction GRAPH (graph c1 as “c1”, graph c2 as “c2” etc…)
1 user thanked author for this post.
03/14/2017 at 1:10 PM #28513Merci Noobywan pour tes explications qui m’ont déjà permis de rectifier une première erreur : il fallait séparer les boucles if/endif. De la sorte, les prises de position à l’achat tout comme à la vente sont maintenant “conformes”.
Subsiste une erreur : dans mon code, je demande un target profit à 1 (soit 25€ pour un lot plein dax30) et un stop loss à 5 (soit 125€). Cependant, au vu de la liste des positions clôturées en perf absolues (cfr image jointe), le code semble ne pas respecter mes instructions -> ?
Je voulais tester ce code en 100 ticks mais il ne fonctionne pas. Il faut aller sur une UT >= 1 minute 🙁
123456789101112131415161718defparam flatbefore=091000defparam flatafter=173000C1 = close = highC2 = close = low// Conditions pour ouvrir une position acheteuseIF NOT LongOnMarket AND C1 THENBUY 1 CONTRACTS AT (close+0.5)stopENDIF// Conditions pour ouvrir une position en vente à découvertIF NOT ShortOnMarket AND C2 THENSELLSHORT 1 CONTRACTS AT (close-0.5)stopENDIF// Stops et objectifs : entrez vos stops et vos objectifs iciSet stop loss 5Set target profit 103/14/2017 at 1:57 PM #28517Pour les clotures de positions, sur les quelques unes que j’ai regardé (pas toutes), ce sont des cas où le programme veut rentrer en position inverse d’une position existante, et cumuler des positions inverses PRT ne sait pas faire, à la place il calcule une position “nette” différence entre long et short (même si rajoute un defparam cumulate order = true).
Donc tu peux te retrouver avec ton stoploss 5 et target 1 pas encore atteints ni l’un ni l’autre et une entrée en position inverse, qui au lieu de rajouter une position dans l’autre sens en plus de celle existante, va juste fermer la position en cours résultant en un gain/perte quelque part entre +25 et -125 sur la position fraichement fermée et pas de position inverse réellement ouverte…
En ce qui concerne les légers surpassements de +25, voir si ça peut correspondre pas à un léger slippage favorable de 0.2 ou 0.3 sur le tick par tick (on est à 0.9 de gain, le +1 pas encore atteint, et on “saute” à 1.1 ou 1.2 sans passer par le +1), ça me semble probable.
03/14/2017 at 2:01 PM #28518 -
AuthorPosts
Find exclusive trading pro-tools on