Stop trailing + stop loss programmés

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #16438 quote
    arcane
    Participant
    Average

    Bonjour,

    Depuis ma découverte de PRT en aôut 2016, j’ai beaucoup progressé en terme de programmation.

    Je profite de ce message pour remercier Nicolas et tous les participants du forum.

    J’utilise à présent le stop trailing mis au point par Nicolas.

    A présent, je cherche à le combiner avec un stop loss.

    Si je mets en place le stop trailing qui se déclenche lorsque le dax gagne 15 points, cela n’est pas suffisant pour protéger la position quand le marché ne monte pas assez alors que je suis long.

    Je voudrais donc coder un stop sur le prix d’entrée du marché si le dax gagne 10 points.

    Exemple:

    Achat dax à 10 000.

    Le marché monte à 10 015, le stop trailing se met en place.

    Par contre, le marché monte à 10 010 et redescend. Je voudrais déclencher dans ce cas-là, un ordre stop à 10 000 pour sortir flat.

    J’ai essayé de combiner les 2 codes de Nicolas sans succès.

    Merci si quelqu’un peut m’aider à modifier le code.

    
    trailingstart = 15//trailing will start @trailinstart points profit
    trailingstep = 15//trailing step to move the "stoploss"
    minstop = 2//minimum allowed stop
    priceleap = 1 //if price moves rapidly the stop will move till the set leapstop from close.
    leapstop = 1//if price moves rapidly the stop will move till the set leapstop from close.
    //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 AND close-newSL>=minstop*pipsize THEN
    if close-newSL>=priceleap*pipsize then
    newSL = close - leapstop
    else
    newSL = newSL+trailingstep*pipsize
    endif
    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 AND newSL-close>= minstop*pipsize THEN
    if newSL-close>=priceleap*pipsize then
    newSL = close + leapstop
    else
    newSL = newSL-trailingstep *pipsize
    endif
    ENDIF
    ENDIF
    
    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF
    
    trailingstart = 10//trailing will start @trailinstart points profit
    trailingstep = 10 //trailing step to move the "stoploss"
    
    //reset the stoploss value
    IF NOT ONMARKET THEN
    SL=0
    ENDIF
    
    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
    IF SL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
    SL = tradeprice(1)+trailingstep*pipsize
    ENDIF
    //next moves
    IF SL>0 AND close-SL>=trailingstep*pipsize THEN
    SL = SL+trailingstep*pipsize
    ENDIF
    ENDIF
    
    //manage short positions
    IF SHORTONMARKET THEN
    //first move (breakeven)
    IF SL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    SL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    //next moves
    IF SL>0 AND SL-close>=trailingstep*pipsize THEN
    SL = SL-trailingstep*pipsize
    ENDIF
    ENDIF
    
    //stop order to exit the positions
    IF SL>0 THEN
    SELL AT SL STOP
    EXITSHORT AT SL STOP
    ENDIF
    
    #16456 quote
    Nicolas
    Keymaster
    Master

    Le “first move”, c’est à dire la première fois que le stoploss bouge doit mettre ton ordre au breakeven. C’est à dire au prix d’entrée + trailingstep.

    Si tu “trailingstep” a la même valeur que “trailingstart”, comme c’est le cas dans ton code, alors bien entendu ça ne fonctionner pas correctement. Pour mémoire, “trailingstart” est le seuil de gain en pips à partir duquel le trailing stop rentrera en fonctionnement. Je parle ici du fonctionnement de mon code original disponible dans le blog, et pas de celui de ton message .. désolé Dimanche soir, je n’ai pas pris le temps de bien l’analyser/comprendre 😉

    #16535 quote
    arcane
    Participant
    Average

    Bonjour Nicolas.

     

    Je pensais qu’on peut très bien mettre le même chiffre pour trailingstart et trailing step.

    Si je mets 20 points pour les 2. Cela veut dire que si le dax (dans mon exemple)passe de 1000 à 1020, le stop se fait à 1020.

    J’ai peut être mal interprété le code. Cela voudrait dire que à 1020, le stop se met à 1000 et montre tous les 20. Pourtant, ce n’est pas ce qui se passe dans le test en réel.

    Pour ma part, j’aurais voulu mettre 2 stops différents mais cela n’est sans doute pas possible.

    Pour un dax à 1000, je voulais la situation suivant si je suis long:

    1010 points, je déclenche un stop sur 1000

    1020 points, j’enclenche un nouveau stop à 1020 proche du niveau du marché (le stop de 1000 disparaît bien sûr)

    1030, le stop remonte à 1030 au niveau du marché.

    Je ne sais pas si je peux le faire à partir de votre code.

    Finalement, tous les systèmes reposent sur la gestion des sorties. Sinon point de salut.

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

Stop trailing + stop loss programmés


Support ProOrder

New Reply
Author
author-avatar
arcane @arcane_jerome Participant
Summary

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

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