Signaux de l'indicateur appelé non respecté par ProBacktest

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #131362 quote
    Cyssou
    Participant
    Junior

    Bonjour,

    Je viens demander de l’aide car je ne comprends pas le comportement de ProBacktest dans le cas suivant :

    J’effectue un simple achat à l’aide du code ci-après (stoppé aussitôt juste pour vérifier la fiabilité des signaux d’entrée). Achat dès que le signal de l’indicateur appelé passe à 1 (0 le reste du temps).

    DEFPARAM Preloadbars = 2000
    
    TLup, ignored, ignored = CALL "TrendLine Signal PRT"
    
    IF not longonmarket AND TLup THEN
    
    Buy 1 shares at market
    SET STOP pLOSS 1
    SET TARGET pPROFIT 1
    
    ENDIF

    Voici le code de l’indicateur appelé (trouvé à cet endroit sur le forum https://www.prorealcode.com/prorealtime-indicators/stair-step-moving-average/) :

    once ssMA = close
    
    MA = Average[200](close)
    step = 10
    
    if(MA > ssMA + step) THEN
    ssMA = MA
    tl = MA
    ELSIF (MA < ssMA - step) THEN
    ssMA = MA
    tl = MA
    ELSE
    ssMA = ssMA
    ENDIF
    
    // Permet de connaître le sens de la tendance puisque ssMA sera égal au précédent la plupart du temps (tl ne prend en compte que le point de changement)
    achat = tl > tl[1]
    vente = tl < tl[1]
    
    return achat, vente, ssMA

    Le but ici étant d’acheter au marché dès que le signal d’achat passe à 1.

    En pièce jointe l’exemple du Backtest qui montre clairement que les signaux ne sont pas pris au moment où le signal est envoyé (indicateur du signal d’achat en bas du graphique en histogramme vert et correspondant au code de l’indicateur ci-dessus). Il semble que le signal soit pris systématiquement avant… Il ne semble pas y avoir de période définie entre l’entrée probacktest et le signal émis non plus…

    Ceci est une “Proof Of Concept” avec un code simple afin d’identifier le problème que je retrouve sur un plus gros algo…

    J’ai bien sûr essayé différentes choses avant de poster ici mais rien ne fonctionne… J’imagine que le problème vient certainement de l’interface chaise-clavier… Si tel n’est pas le cas peut être est-ce un bug connu ou non ? Ou peut être une impossibilité de faire certaine chose ?

    Merci d’avance pour l’aide qui me sera apporté. J’ai hâte de savoir ce qu’il en est…

    Capture.png Capture.png
    #131525 quote
    Nicolas
    Keymaster
    Master

    Pour débugger une variable, faire un GRAPH, soit :

    GRAPH TLup

    La valeur du CALL est elle bien la même que celle de l’indicateur sur le graphique ?

    Cyssou thanked this post
    #131543 quote
    Cyssou
    Participant
    Junior

    En effet cette fonction va me faciliter la tâche. Merci pour votre réponse et votre réactivité.

    Du coup, les signaux respectent en effet bien le “GRAPH” donc pas d’erreur à ce niveau. En revanche, pourquoi la ligne sur le GRAPH ne correspond pas à celle de l’indicateur ?
    Je pense que la réponse vient du fait que l’on prend la première fois le close puis ensuite l’indicateur calcule les valeurs suivantes à partir de là, donc il semble que la première valeur soit différente si appelé dans ProBacktest ou ProBuilder. En effet, ProBuilder prend la première valeur de l’historique affiché, mais quelle valeur prend ProBacktest ?

    Dans tous les cas, ceci n’est pas la bonne façon de calculer cette indicateur… Mais comment alors fiabiliser cet indicateur (https://www.prorealcode.com/prorealtime-indicators/stair-step-moving-average/) pour que le GRAPH et l’indicateur affiché sur le graphique correspondent ?

    #131610 quote
    Nicolas
    Keymaster
    Master

    Tu peux essayer avec un preloadbars=0. Mais le principal reste le fait que l’indicateur soit bien calculé et que les signaux soient corrects vis à vis de celui-ci. Comme tu le remarques, ces valeurs en escalier sont issues d’un écart entre chaque marche, donc la valeur de cette moyenne mobile sera différente selon là où débute l’historique, un peu comme un graphique renko.

    #131702 quote
    Cyssou
    Participant
    Junior

    Oui en effet un preloadbars=0 fonctionne. Oui c’est ça… Je vais tout de même réfléchir à un moyen de commencer tout le temps au même moment sinon selon l’endroit où débute l’historique les signaux de trading seront différents, ce qui n’est pas l’idéal pour une stratégie automatique… Peut être preload suffisamment d’historique et faire commencer l’indicateur sur un signal caractéristique évident, je sais pas je vais voir mais en tout cas merci beaucoup pour ces réponses.

    #131707 quote
    Cyssou
    Participant
    Junior

    Cependant, on peut voir avec les 2 images jointes qu’il existe malgré tout une divergence de calcul. En effet, avec un preload à 0 l’indicateur et le tracé de son “graph” sont identique au départ, comme il se doit, mais diverge ensuite… Comment expliquer cela ? (je note ici une belle divergence sur le passage du 1er mai au 4 mai -visible sur la 2e image jointe- / on semble également dévier peu à peu dans la journée du 27 avril…)

    Preload0_ok.png Preload0_ok.png Preload0-nok.png Preload0-nok.png
    #131739 quote
    Nicolas
    Keymaster
    Master

    Avec

    GRAPHONPRICE TLup

    l’indicateur sera aussi tracé sur le graphique et te permettra de mieux cerner où se trouve la divergence, à quel moment elle démarre.

    Cyssou thanked this post
    #131820 quote
    Cyssou
    Participant
    Junior

    En effet très pratique merci. Je vais lire toute la doc ProBacktest ce WE.

    En revanche, ces décorrélations me paraissent anormal… Pour l’instant ce n’est bien sûr qu’un prémisse, mais je souhaite comprendre car il me sera impossible de faire confiance à un algo automatique ensuite dont les signaux ne correspondent pas…

    Par exemple, avec un preload à 0 les 2 signaux ne commencent pas au même endroit (cf. Preload_NOK.png), l’indicateur en vert prend bien le close alors que le même indicateur appelé dans ProBacktest avec le call n’a pas la même valeur (nous appellerons ce dernier graph par la suite pour plus de simplicité). Après tests, il semblerait que l’indicateur graph prenne le close précédent… Est-ce un bug ou est-ce voulu ?
    Ensuite en mettant une valeur de départ plutôt que le close l’indicateur et le graph sont bien corrélés au départ cette fois, mais diverge ensuite : souvent la décorrélation se produit le weekend, donc entre un vendredi et un lundi (cf. Decalage_WE.png), ou de manière plus aléatoire (et plus infime mais tout de même divergeant sans raison apparente…) comme le montre la dernière image (cf. Decorrelation.png). Auriez-vous une explication à cela ?
    Pour info, mettre directement le code de l’indicateur dans ProBacktest sans passer par la fonction call produit le même résultat… Ce qui signifierait que, si bug il y a, il ne viendrait pas de la function mais du module ProBacktest.

    Decalage_WE.png Decalage_WE.png Decorrelation.png Decorrelation.png
    #131823 quote
    Cyssou
    Participant
    Junior

    Re-post première image qui ne s’est pas chargé…

    Preload_NOK.png Preload_NOK.png
    #132073 quote
    Nicolas
    Keymaster
    Master

    Je pense que ton problème vient du fait que tu n’affiches pas les données du weekend, est-ce bien le cas ?

    Cyssou thanked this post
    #132094 quote
    Cyssou
    Participant
    Junior

    En effet, c’est bien le cas. Grand merci pour votre aide c’est parfait.

    Dernière question avant de clore le sujet, je lis dans la doc : “Les données du week-end sont toujours prises en compte pour les backtests.” dois-je en conclure qu’il n’est pas possible d’appliquer un indicateur uniquement sur certains horaires ou en excluant les données du week-end ? Aucune option n’est prévue pour ça ?

    #132121 quote
    Nicolas
    Keymaster
    Master

    Ne pas inclure les données du week end c’est purement visuel. ProOrder ne trade que les vrais données du marché et pas celles qu’on modifie visuellement.

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

Signaux de l'indicateur appelé non respecté par ProBacktest


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Cyssou @cyssou Participant
Summary

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

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 05/12/2020
Status: Active
Attachments: 6 files
Logo Logo
Loading...