Limitation des calculs

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

    Bonjour,

    Je ne constate pas l’effet du “DEFPARAM CalculateOnLastBars =X”  ni d’une condition sur “IsLastBarUpdate” pour limiter le calcul aux X dernieres barres (CalculateOnLastBars) ou à la dernière barre courante (IsLastBarUpdate) pour un indicateur perso (pour chaque barre, il fait des calculs impliquant les donnés des n barres précédentes).

    . quand je mets “DEFPARAM CalculateOnLastBars=X” ca ne change rien. Ceci étant la doc dit que ca réduit la conso mémoire ..; est-ce que ca réduit le calcul également aux x dernières barres ?
    . quand je mets une condition d’exécution sur IsLastBarUpdate=1 ca n’affiche plus rien

    Par contre, le temps de calcul est totalement dépendant du nombre d’unités à l’affichage.

    Quelqu’un aurait il une idée sur ce problème ?

    Merci par avance

     

     

     

    #223202

    J’annule mon message car j’ai reconstitué les choses en faisant des essais avec du code élémentaire.

    – CALCULATEONBARS limite l’affichage aux x dernieres barres mais n’empeche pas l’exécution du code de l’indicateur sur la totalité des barres (x unités d’affichage)

    – ISLASTBARUPDATE limite l’exécution du code de l’indicateur à la dernière barre mais il a comme effet de mettre à 0 toutes les valeurs du support en dehors de la dernière barre ce qui fausse biensur tous les calculs impliquant des valeurs de barres autre que la barre courante.  Il faut donc utiliser des moyens de contournement pour conserver les valeurs de la courbe sur les barres auxquelles on s’intéresse.

    Ce serait bien que tout ceci ca soit plus détaillé dans la doc de PRT.

     

    1 user thanked author for this post.
    #223203

    Merci d’avoir partagé votre travail acharné!

    Je pense avoir raison de dire que vos conclusions ne correspondent pas à ce que l’on nous a fait croire (peut-être que quelqu’un corrigera ma déclaration ?).

    Vous devriez informer PRT de vos conclusions pour voir s’ils ont des commentaires ? Utilisez le formulaire Web sur le lien ci-dessous et il sera directement envoyé à PRT.

    https://trading.prorealtime.com/fr/contact

    Vous pouvez inclure un lien vers ce sujet et il vous suffit ensuite de décrire brièvement les résultats sur le formulaire Web.

    #223210

    Merci GraHal.  Je note de le faire quand j’aurai fini la mise au point de mon programme 🙂

    #223255

    Bonjour,

    islastbarupdate dans un indicateur ne fait que retourner 1 ou 0 selon que la barre lue est bien celle en direct ou pas, rien d’autre… Attention de ne pas donner à cette condition booléenne un rôle plus grand que le sien si par exemple on l’a mise dans un if qui conditionne le calcul de tout l’indicateur ou de valeurs de départ essentielles poue en initialiser le calcul. On peut très bien utiliser dans un même code l’intégralité de l’historique et islastbarupdate sans que tout sois mis à zéro avant la dernière barre.

     

    calculateonlastbars, on peut en tester le comportement voir avec ce petit code:

    defparam CALCULATEONLASTBARS=100

    if barindex>1 then
    x=x[1]+1
    endif
    y=Average[20](close)

    return x,y

    on voit que x=1 est sur la première des 100 dernières barres dans l’ordre chronologique, donc ce n’est pas que l’affichage mais aussi le calcul de l’indicateur qui est concerné, sinon on aurait eu x=1 dès la 2e barre (car besoin d’une 1re barre pour que x[1] existe en 2e)

    et on voit aussi que la moyenne 20 périodes existe dès la première des 100 barres au lieu d’attendre d’avoir eu les 20 premières parmi les 100, donc on ne perd pas le bénéfice de l’historique OHLC (open high low close) présent avant les 100, mais historique dispo avant les 100 n’est pas équivalent à calcul de l’indic avant les 100 barres du calculateonlastbars

     

    La doc d’ici, au cas où elle explique autrement que celle de PRT:

    https://www.prorealcode.com/documentation/calculateonlastbars/

    https://www.prorealcode.com/documentation/islastbarupdate/

     

     

    1 user thanked author for this post.
    #223298

    Bonjour,

    Merci pour ce retour détaillé. J’ai refait l’essai et je confirme ce que j’avais constaté. Voici les détails pour que tu puisses située le case précisément :

    J’utilise “IF IslastBarUpadate THEN” pour englober le code d’un indicateur perso afin qu’il soit au départ (cad au moment ou je lance l’exécution de l’indicateur)  que sur la barre courante. Ca marche bien ce qui évite d’avoir le sablier pendant un certain temps au moment du lancement de l’indicateur ar il n’exécute pas l’indicateur sur toutes les barres qui précèdent la barre courante. NB : J’ai vérifié en mettant un compteur dans le IF que le code ne s’exécute qu’une seule fois ..

    Par contre, si je mets valeur=close[0]  (ou close[1] etc) à l’intérieur de la boucle “IF IslastBarUPdate THEN”, et que j’affiche Valeur via RETURN, ca affiche une droite en 0 alors que si je mets Valeur=close[0] (ou close[1] etc) avant la boucle “IF IsLastBarUpdate THEN” ca m’affiche la valeur de lu close à chaque barre .. si bien que ca affiche la courbe en close.

    Il y a donc bien une mise à 0 des valeurs de close a l’intérieur de la boucle “IF LastBarUpdate THEN”.

    Peux-tu me dire ce que tu en penses ?

    Un grand Merci par avance

    #223299

    Code test:

    if islastbarupdate then
    valeur=close[10]
    endif

    return valeur, close[10]

    Cela revoie bien pour “valeur” la close[10] dès la première barre en direct (et bien sûr 0 dans les barres de l’historique précédant le premier islastbarupdate vrai puisque pas des barres en direct), donc au sein d’une boucle “if islastbarupdate”, si c’est bien une barre en direct islastbarupdate vaut 1, le if est lu, et dans ce if on a bien accès aux valeurs de l’historique précédant le premier islastbarupdate vrai.

    Après, possible que j’ai mal compris ce que tu veux dire, ou que j’ai mal décrit ce que je voulais dire dans mon post précédent, ou qu’à un désaccord près sur un terme on ne soit pas en train de parler de la même chose…

    Ou bien autre hypothèse: dans ton code il y a une autre raison qui fait que ta variable valeur soit à zéro de façon inattendue dans une barre en direct, mais là si c’est le cas, sans le code difficile pour moi d’aller plus loin…

     

    #223304

    Merci pour ce retour .. et je réalise que mon dernier message n’a pas de sens puisqu’il est normal que ma variable soit à zéro pour toutes les barres qui précédent la barre courante puisque l’exécution ne se fait que sur la dernière barre grace à “IF IsLastBarUpdate THEN”. J’essaie de reproduire le problème auquel j’ai fait face samedi dernier mais je n’y parviens pas : pourtant il existait bien puisque mon indicateur ne fonctionnait plus et que j’ai été obligé après certains tests de mettre une solution de contournement (stockage dans un tableau des valeurs de Close sur un certain nombre de jours et ce avant l’instruction “IF IsLastBarUpdate”). Peut-etre était-ce du au fait que le marché était fermé ? Je réessaierai lorsque le marché sera fermé.

    En tout cas, merci encore pour ton retour et tes explications.

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