Signaux de l'indicateur appelé non respecté par ProBacktest
Forums › ProRealTime forum Français › Support ProOrder › Signaux de l'indicateur appelé non respecté par ProBacktest
- This topic has 11 replies, 2 voices, and was last updated 4 years ago by Nicolas.
-
-
05/12/2020 at 6:51 PM #131362
Bonjour,
Je viens demander de l’aide car je ne comprends pas le comportement de ProBacktest dans le cas suivant :
J’effectue un simple achat à l’aide du code ci-après (stoppé aussitôt juste pour vérifier la fiabilité des signaux d’entrée). Achat dès que le signal de l’indicateur appelé passe à 1 (0 le reste du temps).
Code ProBacktest achat sur signal=11234567891011DEFPARAM Preloadbars = 2000TLup, ignored, ignored = CALL "TrendLine Signal PRT"IF not longonmarket AND TLup THENBuy 1 shares at marketSET STOP pLOSS 1SET TARGET pPROFIT 1ENDIFVoici le code de l’indicateur appelé (trouvé à cet endroit sur le forum https://www.prorealcode.com/prorealtime-indicators/stair-step-moving-average/) :
Code indicateur (signal 0 ou 1)1234567891011121314151617181920once ssMA = closeMA = Average[200](close)step = 10if(MA > ssMA + step) THENssMA = MAtl = MAELSIF (MA < ssMA - step) THENssMA = MAtl = MAELSEssMA = ssMAENDIF// Permet de connaître le sens de la tendance puisque ssMA sera égal au précédent la plupart du temps (tl ne prend en compte que le point de changement)achat = tl > tl[1]vente = tl < tl[1]return achat, vente, ssMALe but ici étant d’acheter au marché dès que le signal d’achat passe à 1.
En pièce jointe l’exemple du Backtest qui montre clairement que les signaux ne sont pas pris au moment où le signal est envoyé (indicateur du signal d’achat en bas du graphique en histogramme vert et correspondant au code de l’indicateur ci-dessus). Il semble que le signal soit pris systématiquement avant… Il ne semble pas y avoir de période définie entre l’entrée probacktest et le signal émis non plus…
Ceci est une “Proof Of Concept” avec un code simple afin d’identifier le problème que je retrouve sur un plus gros algo…
J’ai bien sûr essayé différentes choses avant de poster ici mais rien ne fonctionne… J’imagine que le problème vient certainement de l’interface chaise-clavier… Si tel n’est pas le cas peut être est-ce un bug connu ou non ? Ou peut être une impossibilité de faire certaine chose ?
Merci d’avance pour l’aide qui me sera apporté. J’ai hâte de savoir ce qu’il en est…
05/13/2020 at 4:32 PM #13152505/13/2020 at 6:03 PM #131543En effet cette fonction va me faciliter la tâche. Merci pour votre réponse et votre réactivité.
Du coup, les signaux respectent en effet bien le “GRAPH” donc pas d’erreur à ce niveau. En revanche, pourquoi la ligne sur le GRAPH ne correspond pas à celle de l’indicateur ?
Je pense que la réponse vient du fait que l’on prend la première fois le close puis ensuite l’indicateur calcule les valeurs suivantes à partir de là, donc il semble que la première valeur soit différente si appelé dans ProBacktest ou ProBuilder. En effet, ProBuilder prend la première valeur de l’historique affiché, mais quelle valeur prend ProBacktest ?Dans tous les cas, ceci n’est pas la bonne façon de calculer cette indicateur… Mais comment alors fiabiliser cet indicateur (https://www.prorealcode.com/prorealtime-indicators/stair-step-moving-average/) pour que le GRAPH et l’indicateur affiché sur le graphique correspondent ?
05/14/2020 at 8:34 AM #131610Tu peux essayer avec un preloadbars=0. Mais le principal reste le fait que l’indicateur soit bien calculé et que les signaux soient corrects vis à vis de celui-ci. Comme tu le remarques, ces valeurs en escalier sont issues d’un écart entre chaque marche, donc la valeur de cette moyenne mobile sera différente selon là où débute l’historique, un peu comme un graphique renko.
05/14/2020 at 7:42 PM #131702Oui en effet un preloadbars=0 fonctionne. Oui c’est ça… Je vais tout de même réfléchir à un moyen de commencer tout le temps au même moment sinon selon l’endroit où débute l’historique les signaux de trading seront différents, ce qui n’est pas l’idéal pour une stratégie automatique… Peut être preload suffisamment d’historique et faire commencer l’indicateur sur un signal caractéristique évident, je sais pas je vais voir mais en tout cas merci beaucoup pour ces réponses.
05/14/2020 at 8:28 PM #131707Cependant, on peut voir avec les 2 images jointes qu’il existe malgré tout une divergence de calcul. En effet, avec un preload à 0 l’indicateur et le tracé de son “graph” sont identique au départ, comme il se doit, mais diverge ensuite… Comment expliquer cela ? (je note ici une belle divergence sur le passage du 1er mai au 4 mai -visible sur la 2e image jointe- / on semble également dévier peu à peu dans la journée du 27 avril…)
05/15/2020 at 8:47 AM #13173905/15/2020 at 7:49 PM #131820En effet très pratique merci. Je vais lire toute la doc ProBacktest ce WE.
En revanche, ces décorrélations me paraissent anormal… Pour l’instant ce n’est bien sûr qu’un prémisse, mais je souhaite comprendre car il me sera impossible de faire confiance à un algo automatique ensuite dont les signaux ne correspondent pas…
Par exemple, avec un preload à 0 les 2 signaux ne commencent pas au même endroit (cf. Preload_NOK.png), l’indicateur en vert prend bien le close alors que le même indicateur appelé dans ProBacktest avec le call n’a pas la même valeur (nous appellerons ce dernier graph par la suite pour plus de simplicité). Après tests, il semblerait que l’indicateur graph prenne le close précédent… Est-ce un bug ou est-ce voulu ?
Ensuite en mettant une valeur de départ plutôt que le close l’indicateur et le graph sont bien corrélés au départ cette fois, mais diverge ensuite : souvent la décorrélation se produit le weekend, donc entre un vendredi et un lundi (cf. Decalage_WE.png), ou de manière plus aléatoire (et plus infime mais tout de même divergeant sans raison apparente…) comme le montre la dernière image (cf. Decorrelation.png). Auriez-vous une explication à cela ?
Pour info, mettre directement le code de l’indicateur dans ProBacktest sans passer par la fonction call produit le même résultat… Ce qui signifierait que, si bug il y a, il ne viendrait pas de la function mais du module ProBacktest.05/15/2020 at 7:52 PM #13182305/18/2020 at 8:51 AM #13207305/18/2020 at 9:27 AM #132094En effet, c’est bien le cas. Grand merci pour votre aide c’est parfait.
Dernière question avant de clore le sujet, je lis dans la doc : “Les données du week-end sont toujours prises en compte pour les backtests.” dois-je en conclure qu’il n’est pas possible d’appliquer un indicateur uniquement sur certains horaires ou en excluant les données du week-end ? Aucune option n’est prévue pour ça ?
05/18/2020 at 11:53 AM #132121 -
AuthorPosts
Find exclusive trading pro-tools on