Problème 1 achat par jour avec TF

Forums ProRealTime forum Français Support ProOrder Problème 1 achat par jour avec TF

Viewing 10 posts - 1 through 10 (of 10 total)
  • #142981

    Bonjour,

    Je reprends ma question d’ici:
    https://www.prorealcode.com/topic/probleme-de-condition-avec-le-symbole-different/
    Puisque j’ai identifié la cause et qui m’amène à une autre question…

    … et c’est encore un TF.

    Voici un code d’exemple:

    Sur DAX en 10 secondes. On a bien une transaction par jour.

    Voici le même code avec TF M1:

    Pourquoi as-t-on parfois plus de 10 transactions ?

    D’ailleurs sur le code sans TF qui fonctionne, je note un bug car le système indique 2,11 ordres par jours: mais il n’y en a QUE 2.
    D’où sort le “,11” ?

    Merci de vos réponses. J’ai vraiment du mal avec le TF… on dirait qu’il remet le ONCE à zéro à chaque itération…

    #143024

    Pour le deuxième code, tu le lances dans quel TF ? Si tu veux qu’il fonctionne en TF 1-minute, et que le code ne comporte qu’une seule instruction TIMEFRAME, il est inutile de la déclarer. Il suffit simplement de lancer la stratégie dans le TF désiré qu’on choisit dans la liste déroulante des UT du graphique.

    #143027

    Oui il ne comporte pour l’instant qu’une instruction. C’est un TF M1 lancé sur du 10 sec.

    évidemment je pourrais enlever le TF mais ce n’est pas la réponse… normalement je ne devrais pas avoir d’autres résultats que le même sans TF. C’est là le problème.

    et je n’aborde pas le fait que les achats ventes sont totalement différentes dans d’autres test avec le meme type de tests 😉

    #143143

    Personne n’a de solution pour ce bug très gênant ?

    Cette partie est une portion de code d’une stratégie qui bug. J’ai réussi à isoler le problème qui est le TF sans trouver de solution…

    #143181

    J’ai un peu de mal à suivre désolé .. 🙂

    J’essai de comprendre pourquoi le comportement est différent, la variable “iteration” ne devrait pas se reset à 1 dés qu’un ordre est passé (voir image jointe), je vais me renseigner.

    Par ailleurs cette version du code fonctionne: (utilisation de timeframe(default)) :

     

    #143197

    Merci Nicolas,

    oui je me doute que c’est bizarre et sur le multi TF je te raconte pas les écarts que j’ai pu observer.

    ca fait un moment que je tourne en rond sans avoir identifié le bug mais avec ce code très simple, on s’en rend mieux compte.

    j’attends ton retour.

    #143346

    Non, en fait ça n’est pas un bug, mais le fonctionnement normal d’une variable dans PRT. J’aurai du identifier cela dés le début ^^ 🙄

    En effet, sur la bougie courante, les valeurs de variable ne sont pas historisées. Ici, les valeurs calculées dans la bougie M1 ne seront pas fixées tant que la bougie n’est pas clôturée, donc ta variable “iteration” ne s’incrémentera qu’une seule fois à la lecture du code (à la fin de la bougie du TF sur lequel tu as lancé le programme), puis se resettera.

    Il faut bien intégrer que : à chaque tick reçu, dans la bougie courante, les variables sont réinitialisées.

    Donc avec un code TF M1 et TF 10sec ; les variables dans le TF M1 (sans updateonclose), sont réinitialisées 6 fois (6 x 10 = 60 sec = 1 minute).

    Il y a 2 solutions:

    1. les calculs sont faits dans le TF default (comme dans la version “correct” que j’ai posté dans le précédent message)
    2. soit tu utilises des variables de type array, puisque celles-ci ne sont pas ré-initialiser dans la barre courante

     

    #143347

    Alors, honnêtement, je crois que je vrai prendre un dafalgan pour la tête 😉

    non pas que ton explication ne soit pas compréhensible, mais c’est tellement bourré (j’ai l’impression) de subtilité que pour un néophyte comme moi, c’est ces concepts sont difficiles à appréhender.

    J’ai bien remarqué une réinitialisation des variables puisqu’à chaque fois que iteration passait à 1, à la bougie suivante ça repassait à zéro.

    Ce qui pourrait être utile (mais ça existe peut-être déjà), c’est un post explicatif en deux parties par ex:
    – Ce qui est exécuté pendant la création d’une bougie c-a-d entre le open et le close (lecture du close en cours, opération mathématique à chaque tick…)
    – Ce qui est exécuté à l’open de la bougie suivante (les achats, les ventes, donc les mises à jours des variables…)

    Et pour finir donc quand tu dis: “chaque tick reçu, dans la bougie courante, les variables sont réinitialisées.” ça veut dire que le ONCE est exécuté à chaque fois ?

    #143349

    Un bête exemple avec un indicateur :

    Si le prix en cours est supérieur au dernier prix enregistré dans la variable “last” alors on incrémente “count”. En live, si tu observes la bougie courante, tu verras que “count” ne s’incrémente pas. Puisque à chaque fois que le code est lu dans la bougie, tout est remis à zéro et c’est ce qui se passe exactement de la même façon dans ta stratégie.

    #143351

    Ok, je vais regarder cela et voir du côté des array comme tu me conseils.

    Merci de tes précieuses réponses.

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

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