Trailing stop non funziona
Forums › ProRealTime forum Italiano › Supporto ProOrder › Trailing stop non funziona
- This topic has 4 replies, 2 voices, and was last updated 1 year ago by Stanko.
-
-
08/29/2023 at 10:12 AM #219988
Buongiorno a tutti, ho postato da poco un sistema sul CAC40 (https://www.prorealcode.com/prorealtime-trading-strategies/box-7-oclock-cac40-intraday/) e mi è stato evidenziato da un membro della community che il trailing stop non funziona.
Chiedo cortesemente se potete aiutarmi nel correggere il problema:
in pratica la posizione, se in profitto, dovrebbe aggiornarsi ogni 10 pips per poi incrementare ogni 6 pips, ma questo non avviene mai.
Allego codice versione Long:
BOX ore 7 Long12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576DEFPARAM CumulateOrders = FalseDEFPARAM FLATAFTER = 220000Timeframe (1 Hour, Updateonclose)//Once $MAXI[0] = High//Once $mini[0] = LowOnce COMPRA = High//Timeframe (1 Hour, Updateonclose)Timeframe (1 Hour, Updateonclose)IF Time = 080000 AND not OnMarket THENCOMPRA = Highest[7](high[1]) + 5*pipsizeBUY 1 CONTRACT AT COMPRA STOPENDIF//ENDIFTimeframe (30 minutes, Updateonclose)SET STOP pLOSS 70//////////////////////////////////////////////////////////////////////////////////////////////////////////// Trailing Stop//------------------------------------------------------------------------------------IF Not OnMarket THENTrailStart = 10 //10 Start trailing profits from this pointBasePerCent = 0.100 //10.0% Profit to keepStepSize = 6 //6 Pips chunks to increase PercentagePerCentInc = 0.100 //10.0% PerCent increment after each StepSize chunkRoundTO = -0.5 //-0.5 rounds to Lower integer, +0.4 rounds to Higher integerPriceDistance = 7 * pipsize//8.9 minimun distance from current pricey1 = 0y2 = 0ProfitPerCent = BasePerCentELSIF LongOnMarket AND close > (TradePrice + (y1 * pipsize)) THEN //LONGx1 = (close - tradeprice) / pipsize //convert price to pipsIF x1 >= TrailStart THEN //go ahead only if N+ pipsDiff1 = abs(TrailStart - x1)Chunks1 = max(0,round((Diff1 / StepSize) + RoundTO))ProfitPerCent = BasePerCent + (BasePerCent * (Chunks1 * PerCentInc))ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent))y1 = max(x1 * ProfitPerCent, y1) //y = % of max profitENDIFELSIF ShortOnMarket AND close < (TradePrice - (y2 * pipsize)) THEN//SHORTx2 = (tradeprice - close) / pipsize //convert price to pipsIF x2 >= TrailStart THEN //go ahead only if N+ pipsDiff2 = abs(TrailStart - x2)Chunks2 = max(0,round((Diff2 / StepSize) + RoundTO))ProfitPerCent = BasePerCent + (BasePerCent * (Chunks2 * PerCentInc))ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent))y2 = max(x2 * ProfitPerCent, y2) //y = % of max profitENDIFENDIFIF y1 THEN //Place pending STOP order when y>0SellPrice = Tradeprice + (y1 * pipsize) //convert pips to priceIF abs(close - SellPrice) > PriceDistance THENIF close >= SellPrice THENSELL AT SellPrice STOPELSESELL AT SellPrice LIMITENDIFELSESELL AT MarketENDIFENDIFIF y2 THEN //Place pending STOP order when y>0ExitPrice = Tradeprice - (y2 * pipsize) //convert pips to priceIF abs(close - ExitPrice) > PriceDistance THENIF close <= ExitPrice THENEXITSHORT AT ExitPrice STOPELSEEXITSHORT AT ExitPrice LIMITENDIFELSEEXITSHORT AT MarketENDIFENDIFSET STOP pLOSS 70Grazie e buona giornata.
08/30/2023 at 10:32 AM #220051Che cosa non funziona?
08/30/2023 at 3:50 PM #220066Da prove in demo il codice non aggiorna mai la posizione anche quando il profitto supera abbondantemente i 10 pips (target minimo di “azionamento” del trailing stop) e non è una questione di timeframe (in questo esempio 30 minuti).
Il codice di trailing l’ho copiato dal forum ma probabilmente l’ho modificato erroneamente: forse tu riesci a vedere subito un eventuale errore.
Le righe dalla nr. 23 alla nr. 31 probabilmente sono quelle da valutare.
Grazie
08/30/2023 at 4:52 PM #220079E’ solo un problema di parametri, sono troppo stretti per funzionare, per le righe 24-26 usa questi:
123TrailStart = 30 //10 Start trailing profits from this pointBasePerCent = 0.100 //10.0% Profit to keepStepSize = 10 //6 Pips chunks to increase PercentageLo stop loss indicalo solo una volta, alla riga 19, con questo valore:
1SET STOP pLOSS 270infine aggiungi queste quattro righe alla fine del codice, in modo da vedere i prezzi ed il profitto/perdita in corso, candela per candela:
1234graphonprice TradePrice AS "Entrata"graphonprice SellPrice coloured("Green") AS "Trailing Stop LONG"graphonprice ExitPrice coloured("Red") AS "Trailing Stop SHORT"graph PositionPerf * TradePrice / PipSize AS "Pips di guadagno/perdita"In realtà funziona anche con i tuoi parametri originali, ma esce quasi sempre subito, perché appena arriva a 10, ne mette in salvo 6 e basta che ritracci 4 pip che esce!
1 user thanked author for this post.
08/30/2023 at 5:22 PM #220083 -
AuthorPosts
Find exclusive trading pro-tools on