Stoploss a breakeven IG market

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #7963 quote
    Nico
    Participant
    Average

    Bonjour
    ce bout de code fonctionne bein en backtest.
    Si les prix monte ou descende de 20 pts, la position est fermée s’ils revienent au prix d’entree
    Lorsque je le lance avec proorder ca ne fonctionne pas.
    Je précise que proorder est lancé avec prt lié à un compte démo d’igmarkets.

    IF LONGONMARKET AND close-tradeprice(1) >= 20 then
      newsl = tradeprice(1)*pipsize
    endif
    
    IF SHORTONMARKET AND tradeprice(1) - close >= 20 then
      newsl = tradeprice(1)*pipsize
    endif
    
    sell at newsl stop
    exitshort at newsl stop
    #7966 quote
    Nicolas
    Keymaster
    Master

    Bonjour Nico,

    C’est normal, tu cherches à transformer un prix en point, alors que pour placer un ordre STOP (un ordre différé) il faut le placer sur un seuil de prix.

    Donc dans ton code tu dois simplement supprimer le “*pipsize”, comme ceci:

    IF LONGONMARKET AND close-tradeprice(1) >= 20 then
      newsl = tradeprice(1)
    endif
    
    IF SHORTONMARKET AND tradeprice(1) - close >= 20 then
      newsl = tradeprice(1)
    endif
    
    sell at newsl stop
    exitshort at newsl stop

    N’oublie pas ensuite de réinitialiser ta variable “newsl” à 0 par exemple, quand tu n’es pas au marché, sinon elle restera en mémoire et tes futurs ordres STOP pourraient l’utiliser alors que tu n’as pas encore dépassé ton seuil de 20 points en gain.

    #7967 quote
    Nico
    Participant
    Average

    a l’origine je ne l’avais pas mis et ca ne fonctionnait pas non plus

    #7968 quote
    Nicolas
    Keymaster
    Master

    Sur quel instrument rencontres-tu ce problème ?

    #7969 quote
    Nico
    Participant
    Average

    minidax chez ig markets compte demo et prt demo

    #7972 quote
    Nicolas
    Keymaster
    Master

    Bon.. je ne vois pas vraiment où se situe le problème, au cas où voici le code complet à tester:

    IF LONGONMARKET AND close-tradeprice(1) >= 20 then
     newsl = tradeprice(1)
    endif
    
    IF SHORTONMARKET AND tradeprice(1) - close >= 20 then
     newsl = tradeprice(1)
    endif
    
    if not onmarket then
     newsl=0
    endif
    
    sell at newsl stop
    exitshort at newsl stop
    #8008 quote
    Victorio
    Participant
    Senior

    Indispensable bout de code, merci.

    Est-il possible de poser plusieurs seuils (+20, +30, +40…) ?

    #8014 quote
    Nicolas
    Keymaster
    Master

    @Victorio

    J’ai écrit un article complet dans le blog à ce propos, c’est adaptable à toutes les stratégies, tu pourras utiliser la variable “trailingstep” pour cela.

    http://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/

    #8027 quote
    Victorio
    Participant
    Senior

    Merci beaucoup, c’est exactement ce que je recherchais.

    #11122 quote
    Stark
    Participant
    Junior

    @Nicolas > Merci beaucoup pour ton code, par contre plutôt que d’utiliser la fonction “close”,  je voudrais que le code tienne compte du “high” pour une position longue, ou du “low” pour une position courte.

    J’utilise ce code, qui fonctionne très bien en backtest, mais pas en réel :

    X = Barindex - TradeIndex
    
    IF Highest[X](High) - TradePrice > 20 AND LongOnMarket THEN
    SELL AT TradePrice - 0.5 STOP
    ENDIF
    IF TradePrice - Lowest[X](Low) > 20 AND ShortOnMarket THEN
    EXITSHORT AT TradePrice + 0.5 STOP
    ENDIF

    Aurais-tu une idée pour le faire fonctionner en réel ?

    #11129 quote
    Nicolas
    Keymaster
    Master

    sur le même instrument ?

    #11136 quote
    Stark
    Participant
    Junior

    Oui c’est sur le CFD DAX30 de chez IG.

    #12448 quote
    Stark
    Participant
    Junior

    Un petit up pour ce sujet. J’ai testé ce code mais il coupe instantanément le robot sur PRT. Une solution ?

    IF LongOnMarket AND Close - TradePrice(1) >= 20 THEN
    NewSL = TradePrice(1)
    ENDIF
    IF ShortOnMarket AND TradePrice(1) - Close >= 20 THEN
    NewSL = TradePrice(1)
    ENDIF
    IF Not OnMarket THEN
    NewSL = 0
    ENDIF
    
    SELL AT NewSL STOP
    EXITSHORT AT NewSL STOP
    #12467 quote
    Nicolas
    Keymaster
    Master

    C’est normal que les trades soient fermés, car tu places un ordre STOP à 0 avec tes lignes 11 et 12. Tu dois placer ces lignes dans une condition pour vérifier que le NewSL n’est pas égal à 0.

    #12518 quote
    Stark
    Participant
    Junior

    Ok je vois, il faut cette condition alors ? Merci pour ta réponse en tout cas.

    IF NewSL <> 0 THEN
    SELL AT NewSL STOP
    EXITSHORT AT NewSL STOP
    ENDIF
Viewing 15 posts - 1 through 15 (of 16 total)
  • You must be logged in to reply to this topic.

Stoploss a breakeven IG market


Support ProOrder

New Reply
Author
author-avatar
Nico @nico Participant
Summary

This topic contains 15 replies,
has 4 voices, and was last updated by Nicolas
9 years, 4 months ago.

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