Rechercher une condition sur une période de nbarres

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #224028 quote
    Bodaris
    Participant
    New

    Bonjour,

    Je le précise, même si c’est évident, je suis pas calé du tout :p

    Bon, je veux chercher une condition sur une période comprenant les 5 dernières barres. Par exemple, je veux acheter si le RSI croise à la hausse la valeur 30 que si durant les 5 dernières bougies, le + bas et/ou la clôture sont sous la borne inférieure de Bollinger.

    J’ai codé ça. Mais j’ai l’impression qu’il teste que la bougie 5 avant la bougie actuelle et chacune des bougies de la période définie.

    Mon code est il correct ? sinon, comment faire ?

    DEFPARAM CumulateOrders = true 
    period = 10
    indicator2 = RSI[8](close)
    c2 = (indicator2 CROSSES OVER 30)
    indicator3 = BollingerDown[20](close)
    c3 = (DLow(0)[period] <= indicator3[period])
    c5 = (Close[period] <= indicator3[period])
    IF (c3 or c5) AND c2 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    indicator4 = RSI[8](close)
    c4 = (indicator4 >= 70)
    IF c4 THEN
    SELL AT MARKET
    ENDIF
    SET TARGET pPROFIT 50

    Merci par avance pour vos lumières.

    #224032 quote
    JC_Bywan
    Moderator
    Master

    Bonjour, suggestions de modifications pour trouver si la condition “close ou low sous bollinger basse” soit vraie pendant toute la période (non testé) :

    period = 5 //choisir 5 si on veut 4 précédentes + la bougie en cours, 6 si on veut 5 précédentes + la bougie en cours
    
    indicator2 = RSI[8](close)
    c2 = (indicator2 CROSSES OVER 30)
    c4 = (indicator2 >= 70)
    
    indicator3 = BollingerDown[20](close)
    c3 = (low <= indicator3 or close <= indicator3)
    c5 = (summation[period](c3) = period)
    
    IF c2 and c5 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF longonmarket and c4 THEN
    SELL AT MARKET
    ENDIF
    
    SET TARGET pPROFIT 50
    Bodaris thanked this post
    #224048 quote
    Bodaris
    Participant
    New

    Bonjour,

    Merci pour votre réponse. Je crois qu’il calcule la condition uniquement sur la bougie de la période, à dire 3 pour l’exemple. Au moins, je sais ce que je fais.

    Ce n’est pas possible de faire vérifier une condition sur plusieurs bougies ? et non une seule ?

    L’image 1 c’est nos codes avec période 3 pour chacun. L’image 2, ce sont nos codes avec période 1. Bref, pour ce cas présent, pas la peine de se prendre la tête, c’est période 1 qui donne les meilleurs résultats. Mais j’aurais bien aimé exploiter la totalité des occurrences et ne pas être limité par une aléa technique. Je vais essayer de coder la condition pour chaque bougie de la période que je veux étudier. Ça devrait le faire.

    Merci encore, si vous avez une autre solution, je suis ouvert :).

    Capture-decran-65.png Capture-decran-65.png Capture-decran-64.png Capture-decran-64.png
    #224053 quote
    Bodaris
    Participant
    New

    Bon voilà, ça marche comme ça. Si quelqu’un sait comment simplifier le codage, je suis preneur ^^

    Merci

    DEFPARAM CumulateOrders = true
    period1 = 1
    period2 = 2
    period3 = 3
    period4 = 4
    period5 = 5
    period6 = 6
    period7 = 7
    indicator2 = RSI[8](close)
    c2 = (indicator2 CROSSES OVER 30)
    c4 = (indicator2 >= 70)
    indicator3 = BollingerDown[20](close)
    c3 = (DLow(0)[period1] <= indicator3[period1])
    c6 = (DLow(0)[period2] <= indicator3[period2])
    c7 = (DLow(0)[period3] <= indicator3[period3])
    c8 = (DLow(0)[period4] <= indicator3[period4])
    c9 = (DLow(0)[period5] <= indicator3[period5])
    c10 = (DLow(0)[period6] <= indicator3[period6])
    c11 = (DLow(0)[period7] <= indicator3[period7])
    c5 = (Close[period1] <= indicator3[period1])
    
    IF (c3 or c5 or c6 or c7 or c8 or c9 or c10 or c11) AND c2 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF c4 THEN
    SELL AT MARKET
    ENDIF
    SET TARGET pPROFIT 50
    #224346 quote
    JC_Bywan
    Moderator
    Master

    Ce n’est pas possible de faire vérifier une condition sur plusieurs bougies ? et non une seule ?

    Si, c’est ce qui était fait dans le post précédent avec “summation” dans:

    c5 = (summation[period](c3) = period)

    mis en mots si on ne connait pas summation, cela a fait la somme sur le nombre de bougies entre crochets [period] de c3 (qui vaut soit 0 soit 1), et si cette somme = period, c’est que chaque c3 valait logiquement 1, si un seul ou plus de ces c3 vaut 0 alors on n’aurait pas pu avoir leur somme égale à period, bref c’est une ligne à la fois dense en contenu et légère en quantité d’instructions par rapport à d’autres façons d’obtenir c5.

    Les rapports détaillés de backtests n’aideront pas à débugguer, l’utilisateur qui veut débugguer son code ou vérifier des comportements de variables obtiendra davantage d’informations exploitables avec graph et/ou print

    exemple à rajouter en fin de code:

    graph c5 as “c5”

    qui ouvrira une fenêtre de plus lors du backtest pour voir quand c5 vaut 0 ou 1

    jdb19 and Bodaris thanked this post
    #224680 quote
    Bodaris
    Participant
    New

    Merci beaucoup pour votre réponse. Ca restait un peu abstrait cette notion de summation. Depuis hier, j’ai accès à la formation de programmation avancée. Je comprends mieux vos propos maintenant, même si c’était bien expliqué. Je suis un vrai néophyte en programmation.

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

Rechercher une condition sur une période de nbarres


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Bodaris @bodaris Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by Bodaris
2 years, 3 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 11/21/2023
Status: Active
Attachments: 2 files
Logo Logo
Loading...