Tradeprice(N) = tradeprice du N-ème ordre éxécuté le plus récent en remontant dans le temps.
TRADEPRICE
Le niveau tient compte du demi spread si sur IG. Par exemple, si spread 1, le tradeprice sur la bougie d’éxécution de l’achat sera open+0.5 et le tradeprice sur la bougie d’éxécution de la vente sera open-0.5
Le nombre entre parenthèse correspond à un rangement du plus récent au plus ancien, et qui se décale à chaque nouvel ordre éxécuté – càd que pour un nouvel ordre, l’ancien tradeprice(1) devient remplacé par le nouveau, et cet ancien tradeprice(1) devient lui-même tradeprice(2) etc…
Ce nombre entre parenthèses ne doit pas être confondu avec la notation d’un nombre entre crochets qui évoque une énième bougie précédente, ici on numérote les ordres éxécutés, pas les bougies.
Enfin, tradeprice est la notation par défaut qui évoque tradeprice(1) en évitant de taper le (1)… (un peu comme close est la notation par défaut qui évoque close[0])
Dans la cas achat suivi de vente, quand on est onmarket, close-tradeprice donne le gain, il est bien positif si la close est plus haute que tradeprice. Au passage, attention dans le sens inverse, short suivi de exitshort, si on voulait mesurer une performance positive quand on a baissé, on ferait alors tradeprice-close.
Achat puis vente: perf=close-tradeprice
Si en plus on veut tenir compte d’une valeur du pip différente de 1: perf=(close-tradeprice)/pipsize
puis:
if perf[1]>20 and perf<20 then
ou bien:
if perf crosses under 20
Attention à une chose, qui n’apparait pas dans la question, mais qui peut poser souci: si tu testes le close-tradeprice (ou perf) sur la bougie qui “envoie l’ordre”, alors même si c’est évident ça va mieux en le disant: ton tradeprice n’est pas encore celui de l’ordre qui n’est pas encore éxécuté puisqu’il le “sera” (éxécuté) dans le futur, à l’open de la bougie suivante, et donc le nouveau tradeprice existera à partir de la lecture en fin de la bougie d’éxécution de l’ordre. Donc tester une valeur impliquant tradeprice en le pensant effectif sur la bougie d’envoi de l’ordre renverrait une valeur différente de celle espérée et pourrait générer un comportement inattendu, qui peut être évité avec un if adapté au code.
Pour mieux voir ce qu’il se passe, rajouter en fin de backtest:
graph perf
et on verra évoluer la valeur de (close-tradeprice)/pipsize dans une fenêtre séparée.
si besoin de mieux voir le pourquoi de l’évolution de perf, tu peux aussi regarder, ou à la place:
graph tradeprice
Effectivement je vais déplacer le sujet dans ProOrder plus tard, le mot-clé tradeprice n’est pas opérant dans ProBuilder de toute façon.