Modifica stop loss e ingresso a distanza ema predefinito
Forums › ProRealTime forum Italiano › Supporto ProOrder › Modifica stop loss e ingresso a distanza ema predefinito
- This topic has 7 replies, 2 voices, and was last updated 2 years ago by Laufre.
-
-
04/26/2022 at 9:33 AM #192220
Salve buongiorno…ringrazio anticipatamente per aiuto!!!
Non sono pratico… ma grazie ai vostri forum, ho cercato di buttar giù la mia idea.
Purtroppo non riesco a chiedergli quello che vorrei fare.
Dove sbaglio!!Esempio di cosa vorrei fargli fare:
buy se il prezzo corrente è 20 pip sopra EMA 200 a 5 min.
sellshort se il prezzo corrente è 20 pip sotto EMA 200 a 5 min.stop loss 20
Se vado sopra di 20 pip il mio stop loss diventa il mio ingresso.
Se vado sopra di 35 pip il mio stop loss diventa ingresso+20 pip
Se vado sopra di 100pip il mio stop loss diventa ingresso+75 pip
Se vado sopra di 150pip il mio stop loss diventa ingresso+125 pip
….e cosi via..Se non esco con gli step preimpostati di cui sopra, ma il prezzo corrente tocca la ema 200 (5min) uscire dal mercato.
In ogni caso si rientra a mercato solo quando la distanza dalla ema rientra sotto i 20 pip e poi si distanzia di nuovo di 20pip.
Ultima cosa che non sono riuscito a inserire nel codice perchè non ci arrivo proprio…. e questa ulteriore entrata:
Nel caso entro buy a mercato 10.000 punti… il mercato va sopra i 10.100 punti, riscende ed esco correttamente a +10.075 punti…..
Vorrei rientrare a mercato (nel caso non riscende nel range dei 20 pipsize dalla Ema)
al superamento dei 10.100 punti(stop loss sempre 20).Grazieee
Allego file codice di prova
04/26/2022 at 9:42 AM #192224Va bene, dammi solo un pò di tempo e la metto a posto.
04/26/2022 at 11:05 AM #19222904/29/2022 at 10:07 AM #192401Buongiorno sig. Gozzi,
ho provato questa modifica, va un pò meglio ma comunque, nella maggior parte delle volte salta le chiusure
sia con l’incrocio con la media, sia quando arriva il nuovo stop loss.
Allego codice.
Grazie per aiuto.
04/29/2022 at 10:53 AM #192403Mi sembra funzioni come vorresti, però controllalo meglio:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Impedisce al sistema di creare nuovi ordini per entrare a mercato o aumentare la taglia della posizione prima dell'orario specificatonoEntryBeforeTime = 000000timeEnterBefore = time >= noEntryBeforeTime// Impedisce al sistema di piazzare nuovi ordini per entrare a mercato o aumentare la taglia della posizione dopo l'orario indicatonoEntryAfterTime = 2359000timeEnterAfter = time < noEntryAfterTime// Impedisce al sistema di tradare in giorni specifici della settimanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0TIMEFRAME (5MINUTE, UPDATEONCLOSE)MEDIAEMA= EXPONENTIALAVERAGE[200] (close)//incrocio del prezzo corrente con media esponenziale a 200C1= (CLOSE CROSSES UNDER MEDIAEMA)C2= (CLOSE CROSSES OVER MEDIAEMA)//controlla l'ingresso solo se rientra sotto i 20 pipsizeMEDIAEMA1=MEDIAEMA+20*PIPSIZEMEDIAEMA2=MEDIAEMA-20*PIPSIZETIMEFRAME (DEFAULT)IF Not OnMarket OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THENNewSL = 0Flag = 0ENDIFIF LongOnMarket AND Not (LongOnMarket[1]) THENEntrataLong = TradePriceENDIFIF ShortOnMarket AND Not (ShortOnMarket[1]) THENEntrataShort = TradePriceENDIFIF LongOnMarket AND low <= MEDIAEMA THENSELL AT MARKETELSIF ShortOnMarket AND high >= MEDIAEMA THENEXITSHORT AT MARKETENDIF//controlla l'ingresso solo se rientra sotto i 20 pipsizeonce conto=0If not onMarket and onMarket[1] thenconto=conto+1endifif CLOSE < MEDIAEMA1 and close > MEDIAEMA2 thenconto=0endif//compra se il prezzo va sopra la ema da 20 pipsize in suIF CLOSE >= (MEDIAEMA+20*PIPSIZE) AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 thenBuy 1 contract at marketENDIF//vende allo scoperto se il prezzo va sotto la ema di 20 pipsize in giùIF CLOSE <= (MEDIAEMA-20*PIPSIZE) AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 thenSellshort 1 contract at marketENDIFIF Not OnMarket AND (conto = 0) THENIF close > EntrataLong THENBuy 1 contract at marketELSIF close < EntrataShort THENSellshort 1 contract at marketENDIFENDIFSET STOP PLOSS 20//************************************************************************// Trailing Stop//IF OnMarket THENProfitto = PositionPerf * PositionPrice / PipSizeIF Flag = 0 THENIF Profitto > 20 THEN //PareggioNewSL = TradepriceFlag = 1ENDIFENDIFIF Flag = 1 THENIF Profitto > 35 THENIF LongOnMarket THEN //primo livello di Profitto (oltre il pareggio)NewSL = TradePrice + 20*PipSizeELSENewSL = TradePrice - 20*PipSizeENDIFFlag = 2ENDIFENDIFIF Flag = 2 AND Profitto > 100 THEN //livelli di profitto successivi al primoLivelli50 = floor(Profitto / 50) - 1 //calcolare gli STEP di 50 punti (escluso i primi 50) oltre il pareggio + 25 puntiIF LongOnMarket THENNewSL = max(NewSL,Tradeprice + ((25 + (Livelli50 * 50))*PipSize))ELSENewSL = min(NewSL,Tradeprice - ((25 + (Livelli50 * 50))*PipSize))ENDIFENDIFIF NewSL > 0 THENSELL AT MARKETEXITSHORT AT MARKETENDIFENDIF//************************************************************************GRAPH newSL as "trailing" coloured(255,0,0,255)GRAPH Profitto coloured(0,0,255,255)GRAPHONPRICE newSL as "trailing" coloured(255,0,0,255)Il trailing stop l’ho fatto nuovo, in quanto non era possibile adattare quello di Nicolas alle tue necessità.
04/29/2022 at 12:19 PM #192414L’ho provato su euro/usd utilizzando come time frame di default anche 5 min per avere più backtest.
Purtroppo c’è qualcosa che non va…. però non riesco a capire cosa
- non rispetta l’ingresso (buy a +20 da ema) e lo stesso con (vendita a -20 da ema)
- il traling stop non viene preso in considerazione
- Non riesco a capire se rispetta l’uscita da mercato in caso d’ incrocio con ema
04/29/2022 at 4:09 PM #192440C’erano 3 errori e li ho corretti, adesso i due errori che segnalavi (più un altro che ho notato) li ho corretti.
Le entrate però andavano bene, quindi verificale ulteriormente, ma entra alla chiusura della candela che OLTREPASSA i limiti +20 o -20 dalla media (li ho resi visibili in verde sul grafico, quando fai il backtest).
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Impedisce al sistema di creare nuovi ordini per entrare a mercato o aumentare la taglia della posizione prima dell'orario specificatonoEntryBeforeTime = 000000timeEnterBefore = time >= noEntryBeforeTime// Impedisce al sistema di piazzare nuovi ordini per entrare a mercato o aumentare la taglia della posizione dopo l'orario indicatonoEntryAfterTime = 2359000timeEnterAfter = time < noEntryAfterTime// Impedisce al sistema di tradare in giorni specifici della settimanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0TIMEFRAME (5MINUTE, UPDATEONCLOSE)MEDIAEMA= EXPONENTIALAVERAGE[200] (close)//incrocio del prezzo corrente con media esponenziale a 200C1= (CLOSE CROSSES UNDER MEDIAEMA)C2= (CLOSE CROSSES OVER MEDIAEMA)//controlla l'ingresso solo se rientra sotto i 20 pipsizeMEDIAEMA1=MEDIAEMA+20*PIPSIZEMEDIAEMA2=MEDIAEMA-20*PIPSIZETIMEFRAME (DEFAULT)IF Not OnMarket OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) THENNewSL = 0Flag = 0ENDIFIF LongOnMarket AND Not (LongOnMarket[1]) THENEntrataLong = TradePriceENDIFIF ShortOnMarket AND Not (ShortOnMarket[1]) THENEntrataShort = TradePriceENDIFIF LongOnMarket AND low <= MEDIAEMA THENSELL AT MARKETELSIF ShortOnMarket AND high >= MEDIAEMA THENEXITSHORT AT MARKETENDIF//controlla l'ingresso solo se rientra sotto i 20 pipsizeonce conto=0If not onMarket and onMarket[1] thenconto=conto+1endifif CLOSE < MEDIAEMA1 and close > MEDIAEMA2 thenconto=0endif//compra se il prezzo va sopra la ema da 20 pipsize in suIF CLOSE >= MEDIAEMA1 AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 thenBuy 1 contract at marketENDIF//vende allo scoperto se il prezzo va sotto la ema di 20 pipsize in giùIF CLOSE <= MEDIAEMA2 AND Not OnMarket AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND CONTO=0 thenSellshort 1 contract at marketENDIFIF Not OnMarket AND (conto <> 0) THENIF close CROSSES OVER EntrataLong THENBuy 1 contract at marketELSIF close CROSSES UNDER EntrataShort THENSellshort 1 contract at marketENDIFENDIFSET STOP PLOSS 20//************************************************************************// Trailing Stop//IF OnMarket THENProfitto = PositionPerf * PositionPrice / PipSizeIF Flag = 0 THENIF Profitto > 20 THEN //PareggioNewSL = TradepriceFlag = 1ENDIFENDIFIF Flag = 1 THENIF Profitto > 35 THENIF LongOnMarket THEN //primo livello di Profitto (oltre il pareggio)NewSL = TradePrice + 20*PipSizeELSENewSL = TradePrice - 20*PipSizeENDIFFlag = 2ENDIFENDIFIF Flag = 2 AND Profitto > 100 THEN //livelli di profitto successivi al primoLivelli50 = floor(Profitto / 50) - 1 //calcolare gli STEP di 50 punti (escluso i primi 50) oltre il pareggio + 25 puntiIF LongOnMarket THENNewSL = max(NewSL,Tradeprice + ((25 + (Livelli50 * 50))*PipSize))ELSENewSL = min(NewSL,Tradeprice - ((25 + (Livelli50 * 50))*PipSize))ENDIFENDIFIF NewSL > 0 THENSELL AT NewSL STOPEXITSHORT AT NewSL STOPENDIFENDIF//************************************************************************GRAPH newSL as "trailing" coloured(255,0,0,255)GRAPH Profitto coloured(0,0,255,255)GRAPHONPRICE newSL as "trailing" coloured(255,0,0,255)graphonprice MEDIAEMA1 AS "Media1" coloured(0,128,0,155)graphonprice MEDIAEMA2 AS "Media2" coloured(0,128,0,155)04/29/2022 at 5:29 PM #192446 -
AuthorPosts
Find exclusive trading pro-tools on