problemi con broker IG riguardo l’utilizzo di algo con trailing stop e trailing

Viewing 15 posts - 1 through 15 (of 19 total)
  • Author
    Posts
  • #175043 quote
    Steven11
    Participant
    Average

    Buonasera Roberto,

    sto avendo problemi con IG Markets in quanto utilizzando il codice formulato da te con trailing step e trailing stop (una volta raggiunti i punti a cui dovrebbe attivarsi il trailing stop ed alzare lo stop) non mi fa entrare gli ordini di vendita stop, li ho anche chiamati e mi hanno detto che deve esserci una distanza minima , ok capisco ma a questo punto l’ordine di vendita stop non entrerà mai visto che il sistema ha avuto rifiutato l’ordine di vendita stop. Tu come fai? utilizzi i trailing ti chiedo un consiglio su come fare a risolvere il problema, grazie.

    #175071 quote
    robertogozzi
    Moderator
    Master

    Non so quale sia il trailing stoip che usi, ma questo è quello di Nicolas, aggiornato con la DISTANZA:

    //*********************************************************************************
    // https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
    // (righe 17- 56)
    //
    //trailing stop function
    IF (BarIndex - TradeIndex) >= 0 THEN                                 //0
       trailingstart = 20  //20 trailing will start @trailinstart points profit
       trailingstep  = 5   //5  trailing step to move the "stoploss"
       distance      = 7   //7  pips distance from caurrent price (if required by the broker)
       //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
          IF LongOnMarket THEN
             IF (close + distance) > newSL THEN
                SELL AT newSL STOP
             ELSIF (close - distance) < newSL THEN
                SELL AT newSL LIMIT
             ELSE
                SELL AT Market
             ENDIF
          ELSIF ShortOnmarket THEN
             IF (close + distance) < newSL THEN
                EXITSHORT AT newSL STOP
             ELSIF (close - distance) > newSL THEN
                EXITSHORT AT newSL LIMIT
             ELSE
                EXITSHORT AT Market
             ENDIF
          ENDIF
       ENDIF
    ENDIF
    //*********************************************************************************
    #175193 quote
    Steven11
    Participant
    Average

    ciao Roberto, lo ho provato in reale il trailing stop modificato da Nicolas con la distanza ma mi è successo che per 2 ingressi che doveva entrare non è entrato (mi ha fatto un suono ed è comparsa una linea verde sotto) ed al terzo è entrato, perchè?

    #175198 quote
    robertogozzi
    Moderator
    Master

    Occorre:

    • il codice
    • lo strumento usato
    • il TF
    • data ed orario dell’operazione errata.

    Devo poter replicare la tua operatività in modo esatto.

    #176423 quote
    Steven11
    Participant
    Average

    Buonasera Roberto scusami ti rispondo solo ora perchè ero fuori per dei giorni e non potevo connettermi. Come ti dicevo (spero ricordi) inserendo il codice di  Nicolas fornitomi da te per il problema della distanza minima accettata dal broker IG riguardo lo spostamento del trailing stop ti invio tutte le informazioni che mi hai chiesto, ti posto il codice e ti dico che l’operazione in oggetto è sul Dow Jones Wall Street Cash 1 euro , su timeframe 5 minuti ed è del 12/08/2021 alle ore 18:01 è l’ingresso BUY , come sempre grazie.

    //-------------------------------------------------------------------------
    // Codice principale : Break in Limit DOW JONES 5 min
    //-------------------------------------------------------------------------
    // Definizione dei parametri del codice
    
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    
    // HORAIRES
    ONCE a1 = 1.0
    startTime = 145000
    endTime = 235500
    
    // Condizioni per entrare su posizioni long
    
    
    c1 = (high >= high[1])
    
    IF time >= startTime and time <= endTime and c1 then
    
    Buy 1 contract at high [1] LIMIT //entrata con ordine pendente LIMIT
    Endif
    
    // Stop e target
    SET STOP PLOSS 317
    SET TARGET PPROFIT 105 //395
    
    //trailing stop function
    IF (BarIndex - TradeIndex) >= 0 THEN                                 //0
    trailingstart = 25  //20 trailing will start @trailinstart points profit
    trailingstep  = 5   //5  trailing step to move the "stoploss"
    distance      = 8   //7  pips distance from caurrent price (if required by the broker)
    //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
    IF LongOnMarket THEN
    IF (close + distance) > newSL THEN
    SELL AT newSL STOP
    ELSIF (close - distance) < newSL THEN
    SELL AT newSL LIMIT
    ELSE
    SELL AT Market
    ENDIF
    ELSIF ShortOnmarket THEN
    IF (close + distance) < newSL THEN
    EXITSHORT AT newSL STOP
    ELSIF (close - distance) > newSL THEN
    EXITSHORT AT newSL LIMIT
    ELSE
    EXITSHORT AT Market
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    //**********************************************************************
    #176551 quote
    Steven11
    Participant
    Average

    Buonasera Roberto,

    hai avuto modo di provarlo? se aumento i punti di distanza dovrebbe risolversi il problema o c’è qualcos’altro che crea problema?

    #176573 quote
    robertogozzi
    Moderator
    Master

    Il trailing stop non ha nessun effetto sull’entrate, riguarda le uscite.
    Il 12/8 entra sulla candela delle 14:50 (in base alle condizioni rilevate su quella delle 14:45) edil trailing stop entra in funzione alle 22:20 ed alle 23:00 esce (la X di uscita è sulla candela successiva). Dopodiché entra ancora alle 23:10.
    Non vedo problemi.
    Prova ad aggiungere queste linee alla fine del codice per vedere i due prezzi (entrata e trailing stop) sul grafico:

    graphonprice PositionPrice coloured(0,0,255,255)
    graphonprice newSL         coloured(255,0,0,255)
    #176791 quote
    Steven11
    Participant
    Average

    Ok Roberto provo a far così su Dowjones, su altri assets va bene comunque. Come sempre ti ringrazio e ti auguro un sereno fine settimana, ciao.

    robertogozzi thanked this post
    #176958 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, senza aprire un altro topic sui trailingstop, ti volevo chiedere: A) se conosci (hai mai utilizzato e cosa ne pensi) di questi tipo di trailing stop trovato nel forum (riporto solo la parte long per semplicità).

    In generale preferisco quello classico che riporti sopra, ma in alcuni Ts questo performa meglio.

    B) se riesci a convertirlo in punti.

    Grazie

    once trailingstop = 1
    if trailingstop then
    trailingpercentlong = 0.35 // %
    once acceleratorlong = 0.055
    once steppercentlong = (trailingpercentlong/10)*acceleratorlong
    if onmarket then
    trailingstartlong = positionprice*(trailingpercentlong/100)
    trailingsteplong = positionprice*(steppercentlong/100)
    endif

    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    IF LONGONMARKET THEN
    IF newSL=0 AND high-tradeprice(1)>=trailingstartlong THEN
    newSL = tradeprice(1)+trailingsteplong
    ENDIF
    IF newSL>0 AND high-newSL>trailingsteplong THEN
    newSL = newSL+trailingsteplong
    ENDIF
    ENDIF
    IF newSL>0 THEN
    SELL AT newSL STOP
    ENDIF
    endif

    #176977 quote
    robertogozzi
    Moderator
    Master

    Adatta il trailing stop all’accumulo o vendita di posizioni seguendone il prezzo, per cui è impossibile convertirlo in pips, il prezzo resta tale, non si può convertire.

    Tu cosa vuoi che sia espresso in pips?

    #176984 quote
    MauroPro
    Participant
    Veteran

    Se era possibile volevo trasformare la percentuale in punti, come in altri trailing.

     

    pointToReachLong = (close * PERCENTUALE / 100) / pointSize                   //  %

    pointTo ReachLong =  PUNTI * pointSize                                                            // punti

    #176987 quote
    robertogozzi
    Moderator
    Master

    Dov’è il codice del tuo esempio?

    #176988 quote
    MauroPro
    Participant
    Veteran

    E’ quello riportato sopra, rif. 176958 ed è espresso in %. Se possibile volevo tradurlo in punti.

    #176990 quote
    robertogozzi
    Moderator
    Master

    Non vedo codeste variabili. Quali righe sono?

    #176991 quote
    MauroPro
    Participant
    Veteran

    Il mio era un esempio. La parte con le variabili d trasformare in punti, se possibile. è questa:

    trailingpercentlong = 0.35 // %
    once acceleratorlong = 0.055
    once steppercentlong = (trailingpercentlong/10)*acceleratorlong
    if onmarket then
    trailingstartlong = positionprice*(trailingpercentlong/100)
    trailingsteplong = positionprice*(steppercentlong/100)

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

problemi con broker IG riguardo l’utilizzo di algo con trailing stop e trailing


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Steven11 @steven11 Participant
Summary

This topic contains 18 replies,
has 3 voices, and was last updated by MauroPro
4 years, 5 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 08/10/2021
Status: Active
Attachments: No files
Logo Logo
Loading...