Condition et TimeFrame

Forums ProRealTime forum Français Support ProBuilder Condition et TimeFrame

Viewing 15 posts - 1 through 15 (of 17 total)
  • #206784

    Bonjour Nicolas, bonjour à tous,

    Ccomment est-il possible d’écrire :

    Si mon UT est de 1 mn, j’affiche :

    TimeFrame (1 hour)
    TimeFrame ( 10 minute)
    TimeFrame ( 5 minute)
    TimeFrame (1 minute)

    Si mon UT est de 10 mn, j’affiche uniquement :

    TimeFrame (1 hour)
    TimeFrame ( 10 minute)
    TimeFrame ( 5 minute)
    TimeFrame (1 minute)

     

    En gros, comment émettre une condition sur la variable TimeFrame à afficher en fonction de l’unité de temps ?

    #206788

    On ne peut pas conditionner l’instruction TIMEFRAME, c’est à dire l’inclure dans un bloc IF/ENDIF.

    Par contre, pour ce que tu souhaites faire, tu peux conditionner ce qui se passe sous chaque instruction TIMEFRAME selon ce que l’instruction GetTimeframe te renvoi (la quantité de secondes du TF).

    1 user thanked author for this post.
    #206790

    Merci Nicolas,

     

    Seulement si je conditionne un GetTimeFrame sous une TimeFrame (10 minute) par exemple et que je souhaite passer le graph dans une UT 1H, celà ne risque t’il pas de faire planter l’indicateur ?
    Le but est que le code s’adapte à mon UT.

    #206804

    On ne peut pas conditionner l’instruction TIMEFRAME, c’est à dire l’inclure dans un bloc IF/ENDIF.

    Par contre, pour ce que tu souhaites faire, tu peux conditionner ce qui se passe sous chaque instruction TIMEFRAME selon ce que l’instruction GetTimeframe te renvoi (la quantité de secondes du TF).

    je bute, pourrais-tu me montrer un exemple concret stp ?

    #206822

    Seulement si je conditionne un GetTimeFrame sous une TimeFrame (10 minute) par exemple et que je souhaite passer le graph dans une UT 1H, celà ne risque t’il pas de faire planter l’indicateur ?

    En effet, j’ai répondu trop vite, le fait d’utiliser l’indicateur sur un timeframe plus grand fera stopper l’indicateur avec la fenêtre d’erreur, même avec ma solution.

    Toutefois, sauf erreur de ma part (à tester), on peut faire un CALL d’un indicateur “esclave” qui se calcule dans un autre timeframe (et donc avec son code dessous une instruction TIMEFRAME), tout en n’utilisant aucune instruction TIMEFRAME dans l’indicateur “maître”. Donc on pourrait conditionner ces CALL selon le résultat du GETTIMEFRAME, j’espère avoir été clair 🙂

    #206825

    La discussion porte sur la façon de créer un indicateur qui affiche des informations pour plusieurs unités de temps différentes, en fonction de l’unité de temps (UT) sélectionnée par l’utilisateur. La solution proposée consiste à utiliser l’instruction GetTimeframe pour récupérer la quantité de secondes de l’UT sélectionnée, puis à utiliser cette valeur dans des instructions if pour afficher les informations souhaitées pour chaque UT. Cependant, il a été noté que cela ne fonctionnera pas si l’UT sélectionnée est plus grande que celle pour laquelle l’indicateur a été conçu, car cela entraînera une erreur. Une autre solution proposée est de créer plusieurs indicateurs “esclaves”, chacun conçu pour fonctionner avec un UT différent, puis de les appeler à l’aide de l’instruction CALL dans l’indicateur principal, en fonction de l’UT sélectionnée par l’utilisateur. Cela permettrait de s’assurer que l’indicateur fonctionne correctement pour chaque UT sélectionnée, mais nécessiterait la création de plusieurs indicateurs distincts.

    (résumé généré par ChatGPT).

    #206831

    Bonjour Nicolas (et ChatGPT 🙂 ),

    J’ai anticipé hier la solution que tu propose par le biais d’un CALL depuis un autre indicateur.
    Je n’ai pas d’erreur généré mais la donnée retourné ne correspond pas.

    Dans cet exemple je cherche à récuperer dans un tableau le nombre de minute en UT5 et UT1.
    Voici une synthèse de mon code (le code est trop long sinon) pour illustrer ma tentative :

    Indicateur principal :

    Ici mon indicateur appelé via CALL (MonCallUTF) :

    Je devrais retourner les valeur “5” en UT5 et “1” en UT1 mais voici ce que j’obtiens dans mon tableau (les valeurs de l’unité par défaut soit 1 min) :

    #206837

    Ci-joint le résultat avec un code plus simple:

    Dans le cas du graphique courant en 5-minutes, le résultat est a=5 et b=0

    hors dans un graphique 1-minutes, tes 2 conditions sont vrais, puisque UT est à la fois inférieur à 5 et égal à 1, donc tu as a=1 et b=1

    Donc en résumé ça fonctionne, on peut conditionner les appels aux timeframes en utilisant des CALL qui eux comportent 1 ou plusieurs déclarations de timeframes, même inférieur à celui du graphique courant.

    #206851

    Nicolas,

    Dans ton exemple, ne devrais-tu pas retourner :
    a = 5 (normal tu es en UT5mn => OK)
    b = 1 (et non pas 0 => NOK).

    Je suis en UT 1mn et j’ai repris ton exemple, j’obtiens de nouveau a = 1, b = 1 (au lieu du 5 désiré).

    #206869

    Dans ton exemple, ne devrais-tu pas retourner : a = 5 (normal tu es en UT5mn => OK) b = 1 (et non pas 0 => NOK).

    Non puisque b n’est jamais renseigné à cause de ta condition: UT<=1, or ici UT = 5

    Je suis en UT 1mn et j’ai repris ton exemple, j’obtiens de nouveau a = 1, b = 1 (au lieu du 5 désiré).

    Tu as raison, je viens de reprendre mes notes de l’époque et je me souviens maintenant, que le conditionnement des timeframes ne fonctionnera pas non plus dans un CALL. MAIS, la bonne nouvelle c’est qu’on s’affranchit tout de même de l’erreur de la plateforme sur l’impossibilité d’obtenir les données d’une UT hors d’atteinte (le 1-min sur un graphique 10-minutes par exemple). Donc en résumé, les IF/ENDIF pour conditionner les CALL, on oublie, reste à gérer comment on tu organiseras les données retournées pour ton code maître. Il y a quelques indicateurs dans la marketeplace qui utilise ce principe, l’exemple le plus concret je pense est le suivant: https://market.prorealcode.com/product/graphic-patterns-scanner-v11/

    Bonne continuation.

    #206898

    Merci Nicolas,

    On retrouve également le même principe sur cet indicateur : https://market.prorealcode.com/product/ultimate-trend-dashboard/
    Il est donc possible de conditionner les données de TimeFrame différente en fonction de l’UT dans laquelle on se trouve ! Mais comment ?
    J’ai l’impression que la solution se touche du bout du doigt mais quel casse-tête…

    Reflexion : outre la fonction CALL et à l’instar de la fonction IMPORT en VBA, est-il possible d’importer un “code complet” ?

    #206911

    Dans ces indicateurs, je pense que l’auteur fait la même chose que dans mon dernier exemple, sauf que si la valeur appelé par le CALL retourne 0 et bien il affiche rien du tout, voilà.

    Donc c’est cette solution qui fonctionne 🙂

    #206916

    Nicolas, ce n’est malheureusement pas la solution. Si je suis ton exemple et pour imager mon propos, j’ajoute une 3ème donnée à retourner :

     

    Tu es en UT5min, tu devrais donc retourner :

    a = 10
    b= 5
    c=0

    Or dans ton exemple, on retourne :
    a=5
    b=5
    c=0

    Il ne génére pas d’erreur mais ne prend pas en compte le TimeFrame pour autant dans l’esclave, il génere la donnée via le Timeframe par défaut au final…

    #207162

    Il ne génére pas d’erreur mais ne prend pas en compte le TimeFrame pour autant dans l’esclave,

    Oui j’ai répondu à cela dans mon dernier message:

    que le conditionnement des timeframes ne fonctionnera pas non plus dans un CALL

    Donc quoiqu’il arrive, pas de IF/ENDIF autour d’un CALL qui appelle un indicateur qui a dans code l’instruction TIMEFRAME.

    #222449

    Il n’y a donc pas de solution? , cela m’intéresse aussi de conditionner un timeframe a une condition.. quelqu’un a t il une source ?

     

Viewing 15 posts - 1 through 15 (of 17 total)

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