Bogue ordre non exécuté alors que code très simple

Forums ProRealTime forum Français Support ProOrder Bogue ordre non exécuté alors que code très simple

Viewing 3 posts - 1 through 3 (of 3 total)
  • #248269

    Bonjour,

    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é.

    Ça ressemble à un beau bogue PRT !

    David.

    #248273

    Bonjour,

    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):

     

     

    #248278

    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 ?

Viewing 3 posts - 1 through 3 (of 3 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login