Mémoire d'une variable

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #125414 quote
    Roger
    Participant
    Veteran

    Bonjour,

    Je souhaite savoir si PRC peut se souvenir d’une variable d’une itération à l’autre (d’une bougie à l’autre).

    Voici ce que je fais :

    defparam preloadbars=10000
    
    if barindex>=10000 then
    for i=1 to 10000 
    if condition then 
    count=count+1 
    endif 
    next
    endif

     

    Le temps de calcul est extrêmement long car à chaque barre je refais des calculs déjà fait avant, et je souhaite raccourcir en faisant :

    defparam preloadbars=10000
    
    //calcul du count pour les 10 000 barres préchargées
    if barindex=10000 then 
    for i=1 to 10000 
    if condition then 
    count=count+1 
    endif 
    next 
    endif
    
    //mise à jour de la valeur de count au fur et à mesure du backtest
    if barindex>10000 then 
    if condition then 
    count=count+1 
    endif 
    endif

    Est ce que de cette façon, PRC peut retenir la valeur de “count” et l’actualiser ?

    L’avantage est aussi que ça me permet d’avoir un historique plus long pour le calcul de count.

    Merci d’avance pour votre aide.

    #125417 quote
    Nicolas
    Keymaster
    Master

    Pourquoi ne pas faire une somme des booléens avec SUMMATION, pour éviter les boucles :

    count = summation[10000](condition)

     

    La variable count se remplira à chaque nouvelle bougie d’une nouvelle valeur et tu pourras donc accéder à toutes ses valeurs passés avec un offset entre crochet, exemple le count d’il y a 10 barres auparavant :

    var = count[10]
    Roger thanked this post
    #125429 quote
    Roger
    Participant
    Veteran

    Merci beaucoup pour ta réponse Nicolas.

    J’ai volontairement simplifié le code pour plus de clarté.

    Ma condition ressemble en réalité à ça :

    defparam preloadbars=10000
    
    if barindex>=10000 then
    for i=1 to 10000 
    if open[i-1-x]/open[i-1]-1>0 then 
    count=count+1 
    endif 
    next
    endif

    Je cherche à calculer la performance en t+x d’une condition réalisée en t

    En gros je fais des calculs forward dans le passé, et je pense que la fonction summation est insuffisante dans ce cas, à moins que je me trompe ?

    #125438 quote
    Nicolas
    Keymaster
    Master

    Est-ce qu’il y a une raison particulière pour faire le test en avant ? et pourquoi pas l’inverse ? Tu cherches à connaître le futur pour recalculer le passé ou non ?

    #125439 quote
    Roger
    Participant
    Veteran

    Tu as raison , il faut que j’inverse…et avec des summation ça devrait être bon

    Mon cerveau était bloqué sur ma manière de faire

    Je teste ça !

    Merci beaucoup

    #125444 quote
    Roger
    Participant
    Veteran

    Bon en fait je bloque encore, il y a un problème de temps.

    Je vais préciser :

    Je souhaite regarder si ma condition dans le passé s’est avérée rentable en ayant pris position et en étant resté dans le marché pendant x barres.

    L’idée est d’ignorer cette condition si elle n’est pas assez rentable.

    defparam preloadbars=10000
    condition=close>close[10]
    x=5 // nb de barres ou je reste en position
    
    if barindex>=10000 then
     compteurOccurences=summation[10000](condition)
     compteurTradesRentables=compteurOccurences[x] .......

    Et là je retrouve mon problème de calcul de performance en forward.

    #125457 quote
    Nicolas
    Keymaster
    Master

    En résumé tu veux savoir si lorsque tu détectes ‘condition’, en rentrant au marché et en sortant 5 barres plus loin, cela est rentable ? Si oui, uniquement sur la dernière occurrence ou sur toutes celles rencontrées en faisant une moyenne ?

    #125459 quote
    Roger
    Participant
    Veteran

    Oui c’est ça.

    Sur toutes celles rencontrées, en comptant le nombre de trades gagnant et de trades perdant.

    #125465 quote
    Nicolas
    Keymaster
    Master

    Ok, mais alors je ne comprends pas pourquoi tu veux faire une boucle dans le passé pour connaître ces résultats, puisque tu ne peux plus y intervenir … dans le passé 🙂

    Bref, si on comptabilise les résultats tout en laissant passer le temps, on peut y arriver :

    condition=close>close[10]
    x=5 // nb de barres ou je reste en position
    
    if condition and barindex-startbar>x then //si condition et aucun ordre en cours
     startbar=barindex
     startprice=close
    endif
    if barindex-startbar=x  then //gain ou perte après X bar  
     if close>startprice then 
      gain=gain+1 //gagné ! 
     else
      perte=perte+1 //perdu :(
     endif
    endif
    
    return gain coloured(0,255,0), perte coloured(255,0,0)

    Je pense que c’est l’idée, à tester en tant qu’indicateur pour voir si j’ai bien compris.

    #125472 quote
    Roger
    Participant
    Veteran

    Merci je vais regarder et tester ça !

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

Mémoire d'une variable


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Roger @rgkp Participant
Summary

This topic contains 9 replies,
has 2 voices, and was last updated by Roger
5 years, 11 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 04/09/2020
Status: Active
Attachments: No files
Logo Logo
Loading...