FLATBEFORE et CROSSES OVER/UNDER

Forums ProRealTime forum Français Support ProOrder FLATBEFORE et CROSSES OVER/UNDER

Viewing 8 posts - 1 through 8 (of 8 total)
  • #142637
    OLG

    Bonjour,

    Navré si cette question a déjà été posé , j’ai pourtant fait l’effort de rechercher sur le forum et dans la documentation mais je ne trouve pas la réponse.

    En codant une stratégie je me suis aperçu plusieurs fois que le système ouvre un trade à l’heure d’autorisation des trades si un signal “CROSSES” est apparu durant la plage d’interdiction des trades.

    Plus concrètement j’interdis l’ouverture des trades après 22h00 et avant 8h45 (FLATAFTER et FLATBEFORE).

    La condition d’ouverture d’un trade est que “a” CROSSES OVER “b”.

    Si “a” a croisé à la hausse “b” à 7h00 (donc pendant la période flat) et qu’il ne recroise pas à la baisse, à 8h45 le trade est ouvert.

    Est-ce normal ? J’utilise CROSSES OVER/UNDER en instantané, donc le trade doit s’ouvrir au début de la bougie suivante. Ça marche parfaitement durant la période de trade.

    Mais j’ai l’impression que le CROSSES OVER est un “flag” qui n’est “annulé” que si il est CROSSES UNDER …

    Avez vous constaté cela ? est ce un bug ? est ce normal ?

    Au poire j’utiliserai une formule du genre “a[1]<b[1] AND a>b” mais le CROSSES OVER est quand même plus facile à la lecture du code.

    D’avance merci,

    Regis

    #145249

    En effet CROSSES OVER/UNDER est testé sur la barre courante et ne retourne pas “true” durant plusieurs périodes.

    Par contre, si tu as enregistré sa valeur dans une autre variable et que celle-ci n’est pas remise à zéro, alors cette condition persiste, par exemple :

    ici tant que test n’est pas remis à zéro quelque part ailleurs dans le code, alors il restera à 1 (vrai) et donc pourra agir comme une condition pour ouvrir un ordre.

    1 user thanked author for this post.
    avatar OLG
    #145264
    OLG

    Merci Nicolas,

    Dans mon cas, il n’y a pas d’utilisation de variable, je vais faire un programme spécifique pour mettre en exergue ce que je pense être un bug.

    Il ne s’agissait pas d’une variable stockée, mais bien du test CROSS OVER/UNDER qui était valide dés que le FLATE BEFORE se “terminait” alors que le CROSS avait eu lieu durant la période “flat” et non à la bougie courante.

    Bref … un exemple (code et graph) sera plus parlant ! Je m’y atèle dés que possible.

    #145280
    OLG

    Bon je n’arrive pas à reproduire le cas de figure, et je n’ai pas conservé le code de l’époque … donc soit je n’avais vraiment pas les yeux en face des trous (fortement probable) soit c’est un bug qui ne se produit que dans certaines conditions (peu probable)

    Voici le code utilisé pour tenter de le reproduire, on sait jamais si je retombe dessus je pourrais faire des tests :

     

    #145282

    Remplacez la ligne 9 par:

    Remplacez les lignes 15-16 par:

    Cela devrait se comporter comme vous l’avez dit. xSignalAchat conserve sa valeur après le croisement, jusqu’à ce que vous le remettiez à zéro.

    #145298

    Le problème c’est que tu ne reset pas ta variable cSignalAchat lorsque tu es hors AuthorizedEntries, on le voit bien dans l’image que j’ai jointe à ce message.

    Ta condition booléenne est testé uniquement si tes conditions horaires sont valables, hors si à la barre juste avant tu as testé vrai, et que tu ne peux plus la tester dés la barre d’après, cette condition restera active (puisque elle ne ne sera plus testé) et donc ça impactera ton backtest.

    Pour tester des variables, il faut utiliser l’instruction GRAPH.

     

    #149516
    OLG

    Bonjour à tous,

    Merci pour vos réponses, j’ai pris le temps de pouvoir de nouveau constaté ce problème, et j’ai réussi à le reproduire et à comprendre sa cause !
    Le problème ne vient pas du CROSSES UNDER/OVER mais vient du fait que dans mon algorithme original (pas celui présenté dans ce fil de discussion) le calcul des indicateurs était dans le bloc de condition comme ceci :

    Lorsque l’indicateur n’est pas calculé (car AuthorizedEntries = 0) il prend la valeur 0, ce qui lorsqu’il est calculé de nouveau, provoquait déclenchait logiquement les CROSSES UNDER/OVER.
    Merci Nicolas, tu avais cerné le problème “à l’aveugle” et même si ce n’était pas exactement cela, c’était bien un problème de ce type.

    J’incluais le calcul de mes indicateurs dans mes blocs de conditions afin d’optimiser les temps de calcul, mais cela ne s’avère pas toujours pertinent… la preuve !

    Désolé de “déterrer” ce post, il me semblait judicieux d’apporter la réponse finale si quelqu’un fait la recherche plus tard.

    @+
    Regis

    2 users thanked author for this post.
    #149518

    Merci d’avoir livré ta conclusion même longtemps après, les discussions des topics étant effectivement aussi lues via le moteur de recherche du site, c’est toujours utile sur la durée pour la communauté

    1 user thanked author for this post.
Viewing 8 posts - 1 through 8 (of 8 total)

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