Ce petit bout de programme ne passe jamais d’ordre alors qu’il devrait le faire au moins une fois. Si je commente la ligne “Init = 1”, un ordre est bien exécuté.
Quand on lance une stratégie, on a 1000 barres préchargées par défaut sans besoin de le spécifier (celles de 0 à 999), ceci afin que puisse être défini dès la première barre visible tout ce qui nécessiterait une période de plusieurs barres précédentes (il en faut 19 avant la première barre visible pour une moyenne mobile 20 par exemple), disons N-1 nécessaires avant pour toute instruction de période N pour généraliser, et la plupart du temps N est inférieur à 1000, donc un défaut de 1000 convient à la plupart des utilisateurs. On peut toutefois en charger davantage si 1000 ne suffisaient pas, jusqu’à 10000, avec l’instruction defparam preloadbars=10000
Là, tout simplement dès la première barre des 1000 du preloadbars par défaut, init passe de 0 à 1 dans le bloc IF, et arrivé à la 1001e barre qui est la première barre visible, ça fait longtemps que ce code est passé à init=0, donc aucun trade pris.
Si on ne modifie pas le preloadbars par défaut de 1000, alors on peut débugguer ce code en ajoutant dans la ligne IF : AND barindex>=1000 (et si on personnalise un preloadbars plus grand à N barres, on adaptera avec: AND barindex>=N)
On peut au passage grapher le barindex et lire sa valeur à la première bougie visible pour mieux s’imprégner du phénomène des preloadbars s’il n’est pas encore familier, le code qui devrait pouvoir prendre un trade en première bougie visible post-1000 du preloadbars par défaut devient (à tester):
1
2
3
4
5
6
7
8
ONCEInit=0
IFNOTOnMarketANDInit=0ANDbarindex>=1000THEN
BUY10SHARESATMARKET
Init=1// If commented, shares are bought
ENDIF
GRAPHbarindexas"Numero de barre"// facultatif, juste pour voir le numéro de barindex au début
Merci pour cette réponse précise et détaillée. J’ai tapé le bout de code ci-dessous et en effet, dès que Init est graphé, je vois la valeur 1001. Je n’avais pas conscience que le code était exécuté 1000 fois avant d’être « graphable ».
Est-ce que cela veut dire que pendant la phase de preload tous les ordres achat/ventes sont ignorés ?
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.Ok