Trailing stop + Take profit + Stop loss

Viewing 15 posts - 1 through 15 (of 22 total)
  • Author
    Posts
  • #64195 quote
    beppe8949
    Participant
    Average

    Ciao a tutti!
    Vorrei utilizzare uno stop fisso, un take profit fisso e un trailing stop che parta e che una volta partito disattivi il take profit fisso (se possibile). Mi spiego meglio..

    Il codice funziona benissimo, ma il take profit rimane fisso e quindi la posizione viene chiusa in profitto ma potrebbe andare anche oltre.
    Incollo il codice e chiedo gentilmente cosa dovrei modificare per far si che ottenga questo risultato, il codice è stato ottimizzato con probacktest sul dax 5€ a punto, l’indicatore utilizzato è stato realizzato da me, oggi ha aperto una posizione short sul dax che è andata in profitto di 30 punti (valore del take profit), ma il prezzo è sceso ancora tantissimo e avrei potuto prendere tutto il movimento se avessi avuto un trailing stop funzionante.

    Io penso che il trailing stop non sia nemmeno partito. Da ottimizzazione, i seguenti, erano i risultati e i valori migliori, sicuramente sto sbagliando qualcosa! Grazie mille in anticipo!

    DEFPARAM PRELOADBARS = 10000
    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 220000
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    myINDICATORE = CALL INDICATORE
    
    c1 = (myINDICATORE = 1)
    
    IF c1 AND NOT daysForbiddenEntry THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    SET STOP PLOSS 10
    SET TARGET PPROFIT 30
    
    trailingstart = 11
    trailingstep = 376
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    
    IF LONGONMARKET THEN
    IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
    newSL = tradeprice(1)+trailingstep*pipsize
    ENDIF
    IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
    newSL = newSL+trailingstep*pipsize
    ENDIF
    ENDIF
    IF SHORTONMARKET THEN
    IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF
    
    
    #64198 quote
    robertogozzi
    Moderator
    Master

    Senza l’indicatore è impossibile provarlo.

    #64199 quote
    beppe8949
    Participant
    Average

    Grazie Roberto, però vorrei sapere magari se ci sono i settaggi scorretti a livello di trailing stop, take profit e stop loss.. Cioè se li devo usare tutti e 3, se il codice per avviare il trailing stop è corretto ecc..
    Grazie! 🙂

    #64203 quote
    robertogozzi
    Moderator
    Master

    Io l’ho provato sul DAX a 10 minuti mettendo

    myINDICATORE = 1

    e mi pare funzioni correttamente. Vedo che quasi tutti gli SL sono di € 250, cioè 10 pips (a 25 € caduno).

    A volte il Trailing Stop entra, però con uno step di 376 pips la vedo dura che riesca a fare qualcosa di buono, è enorme,generalmente si incrementa di 10-20 pips. Nel tuo caso con un TP di 30 pips non ha molto senso.

    Ho provato a cambiare i valori così

    SET STOP   PLOSS   20
    SET TARGET PPROFIT 35
    trailingstart = 11
    trailingstep  = 15

    e vedo funziona molto meglio. Fai molte prove con valori diversi finché non trovi quelli giusti.

    #64210 quote
    beppe8949
    Participant
    Average

    Ok perfetto grazie mille, un’ultima cosa, io ho 2 codici per avviare il trailing stop.. Posso chiederti quale reputi sia il migliore? Calcolando che uno però non ha il take profit, non so se posso ritenerlo affidabile, però chiedo infatti a te:

    DEFPARAM PRELOADBARS = 10000
    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 220000
    
    PointTarget= 123456 // limite punti di profitto
    PointStop= 123456 // limite punti di perdita
    size= 1 //  numero di contratti/valore del pip (punto)
    PointSogliaTrailing= 123456 // valore che attiva il trailingstop
    PointTrailingStop= 123456 //  valore del trailingstop
    
    Indicator1=CALL "EGL"
    c1=(Indicator1=2)
    c2=(Indicator1=1)
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    IF c1 AND NOT LongOnMarket AND NOT daysForbiddenEntry THEN
    BUY size CONTRACTS AT MARKET
    SET STOP pLOSS PointStop
    SET TARGET pPROFIT PointTarget
    ENDIF
    
    IF PointTrailingStop>0 AND ONMARKET THEN
    if LongOnMarket and High>=POSITIONPRICE+PointSogliaTrailing*POINTVALUE then
    SET STOP pTRAILING PointTrailingStop
    endif
    ENDIF
    
    DEFPARAM PRELOADBARS = 10000
    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 220000
    trailingstart = 123456 //trailing will start @trailinstart points profit
    trailingstep = 123456 //trailing step to move the "stoploss"
    Indicator1=CALL "EGL"
    c1=(Indicator1=2)
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    
    IF C1 AND NOT daysForbiddenEntry THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    //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
    //stop order to exit the positions
    IF newSL>0 THEN
    SELL AT newSL STOP
    ENDIF
    #64211 quote
    beppe8949
    Participant
    Average

    Mi piacerebbe anche capirne possibilmente la differenza a livello funzionale (a parte la presenza o meno di take profit, stop loss ecc)

    #64218 quote
    robertogozzi
    Moderator
    Master

    Non saprei dirti. Se non in qualche prova iniziale, non ho mai usato

    SET STOP pTRAILING

    perché non mi piaceva.

    #64223 quote
    beppe8949
    Participant
    Average

    Ok ti ringrazio, nelle ottimizzazioni, te personalmente preferisci le variabili con maggior guadagno ma percentuale di posizioni profittevoli minore oppure scegli minor guadagno ma percentuale di posizioni profittevoli maggiore?
    Grazie, ciao buona giornata e buon week end!

    #64224 quote
    robertogozzi
    Moderator
    Master

    Per me la precedenza assoluta va alla percentuale di profittabilità. Il guadagno può essere inferiore o maggiore, ma l’importante è chiudere in profitto ogni volta che è possibile!

    Grazie. Buon fine settimana anche a te.

    #64576 quote
    beppe8949
    Participant
    Average

    Perdonami Roberto, però con set stop ptrailing succede che mi apre la posizione ma il trailing stop rimane fisso a 0 e non capisco perchè non segue il prezzo! Mi sta facendo dannare!

    #64587 quote
    robertogozzi
    Moderator
    Master

    Io non uso

    set stop ptrailing

    però l’ho provato sul Dax a 1 minuto e funziona, mi ha chiuso alcune operazioni in profitto usando il trailing stop nativo.

    #64589 quote
    beppe8949
    Participant
    Average

    Porca miseria e che trailing stop adoperi? Perchè io uso il TF a 4H sul dax, ma non parte. Ho provato a cercare e ne ho trovato uno di Nicolas nella sezione “learning” che è spettacolare, però se metto Take profit e Stop loss in automatico il sistema mi trova variabili molto più basse rispetto al trailing stop e per tanto è come se non ci fosse perchè mi prende il take profit ancor prima che parta il trailing stop.. Se invece non metto ne stop loss e ne take profit, mi da solo risultati negativi il backtest..

    DEFPARAM PRELOADBARS = 10000
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 215500
    Indicator1=CALL "EGL"
    c1=(Indicator1=2)
    IF C1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    SET STOP PLOSS sl
    SET TARGET PPROFIT tp
    trailingstart = tr1
    trailingstep = tr2
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    IF LONGONMARKET THEN
    IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
    newSL = tradeprice(1)+trailingstep*pipsize
    ENDIF
    IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
    newSL = newSL+trailingstep*pipsize
    ENDIF
    ENDIF
    IF SHORTONMARKET THEN
    IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF
    
    #64592 quote
    robertogozzi
    Moderator
    Master

    Sul 4h occorreranno valori adeguati, specialmente sul DAX in una sola candela si possono muovere anche 100-200 pips!

    Comunque io avevo fatto la prova con il trailing stop nativo della pòiattaforma.

    Ad ogni modo io uso sempre il codice di Nicolas e funziona!

    #64626 quote
    beppe8949
    Participant
    Average

    Si si ma ne sono certissimo che funziona, però non so perchè non mi trova le giuste variabili (a 4h) sul dax, ho provato anche su altri mercati.. Guarda, questo è il codice che uso, dove “TR1” e “TR2” sono le due variabili che voglio trovare ed “EGL” è l’indicatore da me creato che funziona benissimo con TAKE PROFIT E STOP LOSS.

    DEFPARAM PRELOADBARS = 10000
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 215500
    Indicator1=CALL "EGL"
    c1=(Indicator1=2)
    IF C1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    trailingstart = TR1
    trailingstep = TR2
    
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    IF LONGONMARKET THEN
    IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
    newSL = tradeprice(1)+trailingstep*pipsize
    ENDIF
    IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
    newSL = newSL+trailingstep*pipsize
    ENDIF
    ENDIF
    IF SHORTONMARKET THEN
    IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
    newSL = tradeprice(1)-trailingstep*pipsize
    ENDIF
    IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
    newSL = newSL-trailingstep*pipsize
    ENDIF
    ENDIF
    IF newSL>0 THEN
    SELL AT newSL STOP
    EXITSHORT AT newSL STOP
    ENDIF
    #64636 quote
    robertogozzi
    Moderator
    Master

    Mi pare che il codice sia corretto. Non prosso provarlo perché manca l’indicatore e parti del codice.

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

Trailing stop + Take profit + Stop loss


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
beppe8949 @beppe8949 Participant
Summary

This topic contains 21 replies,
has 2 voices, and was last updated by beppe8949
7 years, 11 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 03/01/2018
Status: Active
Attachments: 3 files
Logo Logo
Loading...