Stratégie ProOrder avec compteur de conditions majoritaires

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #259865 quote
    4801
    Participant
    Junior

    Bonsoir à tous et toutes

    Le principe est simple, 4 conditions sont définies ainsi qu’ un compteur = 0 au début du code.Si une condition est vrai alors +1 au compteur si elle est fausse -1 au compteur et si ni faux ni vrai alors 0 au compteur.

    On procède ainsi pour les 4 conditions à la clôture de chaque bougie, puis on calcule la valeur du compteur.

    Si le compteur est >0 on trade long et si le compteur est<0 on trade short.

    Voici le code que j’ ai essayé sans parvenir à un bon résultat :

    DEFPARAM FLATAFTER = 200000

    Ctime = time >= 080000 and time <= 200000

    compteur = 0

    Mrapide = Average[10](close)

    Mlente = Average[15](close)


    barhaussiere =  (close > open) // + 1 au compteur

    barbaissiere =  (close < open)  // – 1 au compteur

    doji     =  (close = open)  //  0 au compteur


    longclose =  CLOSE > MAX (Mrapide,Mlente) // + 1 au compteur

    shortclose = CLOSE < MIN (Mrapide,Mlente) // – 1 au compteur

    milieuclose = CLOSE < MAX (Mrapide,Mlente) AND CLOSE > MIN (Mrapide,Mlente) // 0 au compteur


    Mcroissantes = Mlente[1]< Mlente AND Mrapide[1]< Mrapide // + 1 au compteur

    Mdecroissantes = Mlente[1]> Mlente AND Mrapide[1]> Mrapide // – 1 au compteur

    Mplates = Mlente[1]= Mlente OR Mrapide[1]= Mrapide // 0 au compteur


    tendancelongue = Mrapide > Mlente // + 1 au compteur

    tendanceshort = Mrapide < Mlente  // – 1 au compteur

    tendanceplate = Mrapide = Mlente  // 0 au compteur


    //A la clôture de chaque bougie on calcule la valeur du compteur et c’ est là que je ne trouve pas le morceau de code pour calculer le compteur.

    IF Ctime THEN

    IF NOT LONGONMARKET AND compteur > 0 THEN  // ouverture trade long

    EXITSHORT AT MARKET 

    BUY 1CONTRACT AT MARKET

    ENDIF

    IF NOT SHORTONMARKET AND compteur < 0 THEN // ouverture trade short

    SELL AT MARKET

    SELLSHORT 1CONTRACT AT MARKET

    ENDIF

    ENDIF


    Merci pour vos conseils.

    #259886 quote
    robertogozzi
    Moderator
    Master

    Voici le code comme vous l’avez demandé (j’espère avoir bien compris) :

    DEFPARAM FLATAFTER = 200000
    Ctime = time >= 080000 and time <= 200000
    compteur = 0
    Mrapide = Average[10](close)
    Mlente = Average[15](close)
    
    barhaussiere =  (close > open) // + 1 au compteur
    barbaissiere =  (close < open)  // - 1 au compteur
    
    doji     =  (close = open)  //  0 au compteur
    
    longclose =  CLOSE > MAX (Mrapide,Mlente) // + 1 au compteur
    compteur  = compteur + longclose
    
    shortclose = CLOSE < MIN (Mrapide,Mlente) // - 1 au compteur
    compteur  = compteur - shortclose
    
    milieuclose = CLOSE < MAX (Mrapide,Mlente) AND CLOSE > MIN (Mrapide,Mlente) // 0 au compteur
    
    Mcroissantes = Mlente[1]< Mlente AND Mrapide[1]< Mrapide // + 1 au compteur
    compteur  = compteur + Mcroissantes
    
    Mdecroissantes = Mlente[1]> Mlente AND Mrapide[1]> Mrapide // - 1 au compteur
    compteur  = compteur - Mdecroissantes
    
    Mplates = Mlente[1]= Mlente OR Mrapide[1]= Mrapide // 0 au compteur
    IF Mplates THEN
    compteur = 0
    endif
    
    tendancelongue = Mrapide > Mlente // + 1 au compteur
    compteur  = compteur + tendancelongue
    
    tendanceshort = Mrapide < Mlente  // - 1 au compteur
    compteur  = compteur - tendanceshort
    
    tendanceplate = Mrapide = Mlente  // 0 au compteur
    IF tendanceplate THEN
    compteur = 0
    endif
    
    //A la clôture de chaque bougie on calcule la valeur du compteur et c’ est là que je ne trouve pas le morceau de code pour calculer le compteur.
    
    IF Ctime THEN
    IF NOT LONGONMARKET AND compteur > 0 THEN  // ouverture trade long
    EXITSHORT AT MARKET
    BUY 1CONTRACT AT MARKET
    ENDIF
    IF NOT SHORTONMARKET AND compteur < 0 THEN // ouverture trade short
    SELL AT MARKET
    SELLSHORT 1CONTRACT AT MARKET
    ENDIF
    ENDIF
    
    Iván González thanked this post
    #259923 quote
    4801
    Participant
    Junior

    Bonjour Roberto et grand merci pour votre aide. Ca marche !

    Afin d’ apprendre dans le morceau de code suivant:

    longclose =  CLOSE > MAX (Mrapide,Mlente) // + 1 au compteur
    compteur  = compteur + longclose
    
    

    Est ce que longclose est une condition booléenne avec +1 au compteur si cette condition est vraie ?

    D’autre part, est- il possible de créer un indicateur qui à chaque clôture de bougie indique achat long quand le compteur est >= +1 et venteshort quand le compteur est <= -1 ?


    Merci beaucoup et bonne journée.



    #259924 quote
    robertogozzi
    Moderator
    Master

    Oui, longclose est une condition booléenne, mais l’incrémentation du compteur est effectuée avec l’instruction :

    compteur  = compteur + longclose
    


    Voici l’indicateur à placer sur le graphique des prix.

    Il affichera un chandelier VERT à bordure bleue lorsque l’indicateur est positif et un chandelier NOIR à bordure rouge lorsqu’il est négatif :

    Ctime          = time >= 080000 and time <= 200000
    
    compteur       = 0
    
    Mrapide        = Average[10](close)
    Mlente         = Average[15](close)
    
    barhaussiere   =  (close > open) // + 1 au compteur
    barbaissiere   =  (close < open)  // - 1 au compteur
    
    doji           =  (close = open)  //  0 au compteur
    
    longclose      =  CLOSE > MAX (Mrapide,Mlente) // + 1 au compteur
    compteur       = compteur + longclose
    
    shortclose     = CLOSE < MIN (Mrapide,Mlente) // - 1 au compteur
    compteur       = compteur - shortclose
    
    milieuclose    = CLOSE < MAX (Mrapide,Mlente) AND CLOSE > MIN (Mrapide,Mlente) // 0 au compteur
    
    Mcroissantes   = Mlente[1]< Mlente AND Mrapide[1]< Mrapide // + 1 au compteur
    compteur       = compteur + Mcroissantes
    
    Mdecroissantes = Mlente[1]> Mlente AND Mrapide[1]> Mrapide // - 1 au compteur
    compteur       = compteur - Mdecroissantes
    
    Mplates = Mlente[1]= Mlente OR Mrapide[1]= Mrapide // 0 au compteur
    IF Mplates THEN
    compteur = 0
    endif
    
    tendancelongue = Mrapide > Mlente // + 1 au compteur
    compteur       = compteur + tendancelongue
    
    tendanceshort  = Mrapide < Mlente  // - 1 au compteur
    compteur       = compteur - tendanceshort
    
    tendanceplate  = Mrapide = Mlente  // 0 au compteur
    IF tendanceplate THEN
    compteur = 0
    endif
    
    //A la clôture de chaque bougie on calcule la valeur du compteur et c’ est là que je ne trouve pas le morceau de code pour calculer le compteur.
    
    IF Ctime THEN
    IF compteur > 0 THEN
    DrawCandle(Open,High,Low,Close) coloured("Green") bordercolor("Blue")
    ENDIF
    IF compteur < 0 THEN // ouverture trade short
    DrawCandle(Open,High,Low,Close) coloured("Black") bordercolor("Red")
    ENDIF
    ENDIF
    RETURN
    


    #259962 quote
    4801
    Participant
    Junior

    Bonjour Roberto,

    C’ est OK. Grace à votre aide je progresse un peu plus.

    Vos interventions sur PRCode sont très utiles et sympas.

    Merci.

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

Stratégie ProOrder avec compteur de conditions majoritaires


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
4801 @4801 Participant
Summary

This topic contains 4 replies,
has 2 voices, and was last updated by 4801
1 week, 1 day ago.

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