1 seul trade après croisement 2 MM

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #17444 quote
    Matriciel
    Participant
    Master

    Bonjour Nicolas,

    Peux-tu me décrire le code afin de n’autoriser qu’un seul trade après le croisement de deux moyennes mobiles s’il te plait ?

    Te remerciant par avance.

    Bonne journée.

    DJ

    #17456 quote
    Nicolas
    Keymaster
    Master

    Si le lancement du trade résulte de ton test de croisement de moyennes mobiles, alors il ne devrait se lancer qu’une seule fois. Je pense que tu dois avoir un soucis de trades successifs sur la même barre, c’est bien cela ?

    #17457 quote
    Matriciel
    Participant
    Master

    Non, voilà ma stratégie :

    J’ai  deux moyennes mobiles de période 10 et 20 et deux moyennes mobiles de période 100 et 150.

    Par exemple, quand la MM10 croise à la hausse la MM20 alors que la MM100 est au-dessus de la 150 alors je déclenche un ordre à l’achat.

    Je voudrais profiter du retournement de tendance qu’uns seule fois, à son début car il y a aussi des croisements à la hausse de la MM10 sur la MM20 à l’essouflement de la MM100 au-dessus de MM150.

    #17466 quote
    Nicolas
    Keymaster
    Master

    Il suffit simplement de “flagger” le fait que ta MM10 passe au dessus de la M20 (tu inscrits dans une variable que le croisement a eu lieu) et tu reset cette variable à chaque croisement de tes moyennes mobiles long terme (changement de tendance dans ta stratégie si j’ai bien compris).

    Ensuite, tu testes ce flag avant de lancer chaque trade, si celui-ci est déjà vrai alors un croisement a déjà eu lieu.

    #54640 quote
    HerveS_67
    Participant
    Veteran

    @Nicolas

    Bonjour,

    Que veut dire “flagger” ?

    Boucle conditionnelle (if-while) / itérative (for) ?

    Count ?

    @+

     

    #54674 quote
    Nicolas
    Keymaster
    Master

    “flagger” est une francisation du verbe “to flag” soit signaler ou marquer quelque chose comme important, en Anglais. On utilise souvent ce terme en programmation. 

    Pour ce cas précis, j’indique qu’il faut inscrire dans une variable qu’un événement a eu lieu (ici un croisement de moyennes mobiles): 

    if average[10] crosses over average[20] then 
     flag = 1
    endif

    Si flag=1 alors on prendra d’autres décisions en fonction. On pourrait aussi stocker dans “flag” la valeur du barindex par exemple, ou même un prix, etc.

     

    Matriciel thanked this post
    #54680 quote
    HerveS_67
    Participant
    Veteran
    MM10 = Average[10](close)
    MM20 = Average[20](close)
    MM100 = Average[100](close)
    MM150 = Average[150](close)
    
    ca1 = MM10 crosses over MM20
    ca2 = MM100 > MM150
    
    Long = 0
    If Long = 0 and ca1 and ca2 then
    Long = 1
    elsif Long = 1 and ca1 and ca2 then
    endif
    If Long = 1 and close < MM150 then
    Long = 0
    Endif
    
    return long style(histogram) as "result", 0 coloured(0,0,255) AS "Zéro"

     

    Pour revenir sur l’exemple ci-dessus, j’ai essayé cela, mais tous les signaux restent Peux-tu nous aider ? @+

    #54683 quote
    Nicolas
    Keymaster
    Master

    Dans ton cas, je pense qu’il vaut mieux scinder les 2 conditions, puisque tu utilises “long” pour matérialiser le signal visuellement. J’ai donc ajouté la variable “signal” pour faire le reset quand le close repasse sous la MM150, car si j’ai bien compris tu ne prends que le premier trade et pas les suivants.

    MM10 = Average[10](close)
    MM20 = Average[20](close)
    MM100 = Average[100](close)
    MM150 = Average[150](close)
    
    ca1 = MM10 crosses over MM20
    ca2 = MM100 > MM150
    
    //Long = 0
    If signal=0 and ca1 and ca2 then
    Long = 1
    signal = 1
    else
    long = 0
    endif
    If signal = 1 and close < MM150 then
    signal = 0
    Endif
    
    return long style(histogram) as "result", 0 coloured(0,0,255) AS "Zéro"

     

    HerveS_67 thanked this post
    #54689 quote
    HerveS_67
    Participant
    Veteran

    @Nicolas 1000 MERCI

    #54705 quote
    HerveS_67
    Participant
    Veteran

    Me revoilà…..

    J’ai voulu transformer le code pour un affichage sur le graphique et faire les conditions ventes :

    MM10 = Average[10](close)
    MM20 = Average[20](close)
    MM100 = Average[100](close)
    MM150 = Average[150](close)
    
    //Conditions Achats
    ca0 = MM20 > MM150
    ca1 = MM10 crosses over MM20
    ca2 = MM100 > MM150
    
    //Long = 0
    If signalLong=0 and ca0 and ca1 and ca2 then
    Long = 1
    signalLong = 1
    DRAWARROWUP(barindex,low-10) COLOURED(0,0,0)
    else
    long = 0
    endif
    If signalLong = 1 and close < MM150 then
    signalLong = 0
    Endif
    
    //Conditions Vente
    ca10 = MM20 < MM150
    ca11 = MM10 crosses under MM20
    ca12 = MM100 < MM150
    If signalShort=0 and ca10 and ca11 and ca12 then
    Short = -1
    signalShort = -1
    DRAWARROWDOWN(barindex,high+10) COLOURED(0,0,0)
    else
    Short = 0
    endif
    If signalShort = -1 and close > MM150 then
    signalShort = 0
    Endif
    
    return Long as "Long", Short as "Short"

    Sauf que quand je l’applique au graphique “prix”, celui n’est pas dimensionné correctement !!! Il laisse apparaître la ligne 0 de l’actif…… 

    Comment corriger ce défaut, car si j’enlève l’incrémentation, il me met tous les signaux à nouveau ?!? :=(

    @+

    #54712 quote
    HerveS_67
    Participant
    Veteran

    Trouvé…

    Suffit d’indiquer à la fin du code “return” sans rien après !!!

    #54740 quote
    Nicolas
    Keymaster
    Master

    En effet, ou de paramétrer le graphique du prix pour n’utiliser que le prix pour l’échelle automatique. 

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

1 seul trade après croisement 2 MM


Support ProOrder

New Reply
Author
author-avatar
Matriciel @matriciel Participant
Summary

This topic contains 11 replies,
has 3 voices, and was last updated by Nicolas
8 years, 1 month ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 11/29/2016
Status: Active
Attachments: 2 files
Logo Logo
Loading...