Utilisation du trailing stop et d’une seconde condition

Forums ProRealTime forum Français Support ProOrder Utilisation du trailing stop et d’une seconde condition

Viewing 5 posts - 16 through 20 (of 20 total)
  • #198216

    Bonjour,

    mon code emploie beaucoup d’indicateurs qu’il faudrait que je redéfinisse. Je vais essayer de le simplifier à minima et de le poster. Encore une fois, merci pour votre aide.

    #199056

    Rebonjour, je reviens sur ma problématique. j’ai juste codé rapidement un petit programme de façon à illustrer le sujet. Je pars des moyennes 20 et 50 et sur le DM (que j’ai fait un peu bidouillé avec l’aide des personnes sur ce site). La stratégie étant que :

    – entrer long si la MM20 croise à la hausse la MM50 et le DM est au dessus de la moyenne des 5 derniers retournements baissiers

    – entrer court si la MM20 croise à la baisse la MM5° et le DM est au dessous de la moyenne des 5 derniers retournements haussiers.

    Pour cela, j’ai essayé d’insérer le code avec l’onglet prévu à cet effet mais je n’y suis pas arrivé. Donc, je le colle ci-dessous avec le code du DM et je rajoute un print écran pour montrer mon problème : le 12 août à 8h30 le système entre long mais tout de suite après la MM20 croise à la baisse la MM50.

    je souhaiterais qu’en plus du trailing stop soit ajouté une commande qui permette en cas de croisement à la baisse décrit ci-dessus, le système sorte du marché (et vice-versa si le système entre short et que la MM20 croise à la hausse la MM 50).

    Merci d’avance.

    Le programme :

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé

    // Conditions pour ouvrir une position acheteuse
    indicator1 = WilderAverage[20](close)
    indicator2 = WilderAverage[50](close)
    c1 = (indicator1 CROSSES OVER indicator2)
    c3 = (indicator1 CROSSES UNDER indicator2)

    indicator3, ignored, ignored, ignored, indicator4, indicator5 = CALL “DM 15 minutes”[5, -5]
    c2 = (indicator3 > indicator4)
    c4 = (indicator3 < indicator5)

    IF c1 AND c2 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF

    IF c3 and C4 THEN
    SELLSHORT 1 contract at market
    endif

    //trailing stop function
    trailingstart = 5 //trailing will start @trailinstart points profit
    trailingstep = 5 //trailing step to move the “stoploss”

     

    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF

    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
    newSL = tradeprice(1)+trailingstep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
    newSL = newSL+trailingstep*pipsize
    ENDIF
    ENDIF

    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    //next moves
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF

    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF

     

    le code du  “DM 15 minutes”[5, -5]

    period=50

    plusDM = (MAX(HIGH-HIGH[1], 0))*10
    minusDM = (MAX(LOW[1]-LOW, 0))*10

    IF plusDM > minusDM THEN
    minusDM = 0
    ENDIF

    IF plusDM < minusDM THEN
    plusDM = 0
    ENDIF

    IF plusDM = minusDM THEN
    plusDM = 0
    minusDM = 0
    ENDIF

    plusDI = WILDERAVERAGE[period](plusDM)
    minusDI = WILDERAVERAGE[period](minusDM)

    DM = plusDI-minusDI

    moy = exponentialaverage[period](DM/pipsize)

    if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then
    RetB5=RetB4
    RetB4=RetB3
    RetB3=RetB2
    RetB2=RetB1
    RetB1=Moy[1]
    RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
    endif

    if Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then
    RetH5=RetH4
    RetH4=RetH3
    RetH3=RetH2
    RetH2=RetH1
    RetH1=Moy[1]
    RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
    endif

    Return DM/pipsize, seuilhaut as “haut”, seuilbas as “bas”, moy as “moyenne”, RetBmoy as “Moyenne 5 derniers retournements baissiers”, RetHmoy as “Moyenne 5 derniers retournements haussiers”

     

    Merci pour l’aide apportée.

    #199207

    Bonjour, tu peux tester en rajoutant:

     

     

     

    #199255

    Bonsoir,

    je viens de rajouter le code après le trailing stop et cela n’a aucun effet. La position ne déboucle pas lorsque la MM20 croise à la baisse la MM50.

    #199270

    Je corrige ma réponse précédente : le code fonctionne sur un autre programme automatique d’achat / vente. Donc, le problème vient de mon autre programme automatique. Merci. Bon week-end.

Viewing 5 posts - 16 through 20 (of 20 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login