Errore di entrata/uscita sul BackTest
Forums › ProRealTime forum Italiano › Supporto ProOrder › Errore di entrata/uscita sul BackTest
- This topic has 5 replies, 2 voices, and was last updated 4 years ago by cventurer.
-
-
05/21/2020 at 7:33 AM #132516
Ciao, ho sviluppato un indicatore per l’indice Russel su timeframe 5 minuti. Devo dire che il BackTest mi da dei risultati incoraggianti, in allegato le immagini dei risultati.
In pratica l’indicatore restituisce 4 valori per essere utilizzati in Proorder, oppure per associare degli allarmi in caso si voglia intervenire in discrezionale. Per ora il codice non è “elegante”, ma eventualmente se volete provarlo sarò felice di condividerlo.
valori restituiti:
2 Entrata Long, 1 Uscita dal long
-2 Entrata Short, -1 Uscita dallo short
Però ho notato che in alcuni casi (3 su 91 trade) il BackTest esegue delle operazioni senza rispettare il segnale, escluderei errori di programmazione , possibile ci sia un bug? vi è mai capitato?
05/21/2020 at 8:45 AM #132534Per fare le verifiche esatte occorre:
- lo stesso codice che hai usato tu
- lo strumento su cui l’hai eseguito
- il time frame usate
- il numero di unità di barre usate
- il periodo (da… a…)
- lo spread + eventuali commissioni
- data ed ore delle candele dove si è verificata un’entrata/uscita errata oppore una mancara entrata/uscita
Devo farti notare che hai sbagliato forum, non è ProBuilder quello corretto perché non si tratta di un indicatore, bensì di una strategia e va postata nel forum di supporto ProOrder (lo sposto io).
Vorrei segnalarti anche che, come dalle regole più importanti ben evidenziate sotto (in giallo), il titolo deve essere significativo, “possibile bug” è troppo generico e non fa capire di cosa si sta esattamente parlando, meglio sarebbe “Errore di entrata/uscita sul BackTest” (lo modifico io).
Ti ringrazio per la collaborazione per le prossime volte 🙂
05/21/2020 at 9:15 AM #132540Grazie mille gentilissimo, mi scuso per il titolo vago grazie per la correzione. Mentre ero in effetti indeciso sulla sezione perchè in realtà nasce come indicatore che può essere utilizzato anche in una strategia automatizzata.
L’indicatore richiede 5 parametri, (di base è configurato per il Russell TF 5Min)
MyIndicator2C[2,0.3,20,0,15] [Volatilita, Spread medio asset,Fattore per moltiplicazione Spread,Tipo di grafico (0,1),TP]
Il [Tipo di grafico] serve per utilizzarlo nel grafico, o come indicatore
Quindi può essere caricato ed utilizzato in 2 modi
- Sul grafico in modo che possa disegnare le frecce per indicare entrate ed uscite [Tipo di grafico=0]
- Come indicatore in modo che indichi gli stati (-2,-1,2,1) per utilizzarlo in una strategia o associarlo ad allarmi [Tipo di grafico=1]
Per rispondere alle tue richieste:
- lo stesso codice che hai usato tu [Lo pubbico sotto]
- lo strumento su cui l’hai eseguito [US Russell 2000 Cash ($10)
- il time frame usate [5 Minuti]
- il numero di unità di barre usate [15000]
- il periodo (da… a…) [Tutto]
- lo spread + eventuali commissioni [0.3]
- data ed ore delle candele dove si è verificata un’entrata/uscita errata oppore una mancara entrata/uscita [Entrate non segnalate dall’indicatore 30/03/2020 03:10, 30/03/2020 10:25, 30/03/2020 18:20]
Inserisco il codice qui di seguito, come dicevo non è molto “elegante” è ancora in fase beta:
Indicatore:
Indicatore123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281//Candele HAIF BarIndex = 0 THENXClose = TotalPriceXOpen = (Open + Close) / 2XHigh = MAX(XOpen,XClose)XHigh = Max(XHigh,high)XLow = MIN(XOpen,XClose)XLow = MIN(XLow,Low)ELSEXClose = TotalPriceXOpen = (XOpen[1] + Xclose[1]) / 2XHighTemp = MAX(XOpen,XClose)XHigh = Max(XHighTemp,high)XLowTemp = MIN(XOpen,XClose)XLow = MIN(XLowTemp,Low)ENDIFCandeleTFBig=120 // 120 periodi a 5 min = 1hCandelaBig1=0CandelaBig2=0OpenTFBig1=XOpen[CandeleTFBig]CloseTFBig1=XClose[1]if OpenTFBig1>CloseTFBig1 thenCandelaBig1=-1elseCandelaBig1=1endifOpenTFBig2=XOpen[CandeleTFBig*2]CloseTFBig2=OpenTFBig1[1]if OpenTFBig2>CloseTFBig2 thenCandelaBig2=-1elseCandelaBig2=1endifTrend=0if CandelaBig1=1 and CandelaBig2=1 thenTrend=1endifif CandelaBig1=-1 and CandelaBig2=-1 thenTrend=-1endif//Volatilita ultimeVolLast=0For iVol=1 to 6 doVolTot= ABS(XOpen[iVol] - XClose[iVol] )VolLast=VolLast+VolTotnextVolLast=VolLast/6IF XClose >= XOpen THENCandela = 1//ConteggioDown=0//ConteggioUp=ConteggioUp+1if LastCandela=0 then//LastConteggioCandele=ConteggioCandelaConteggioCandela=0//PrezzoChiusura=XClose[1]//VolTrend=abs(PrezzoApertura-PrezzoChiusura)endif//PrezzoApertura=XOpenConteggioCandela=ConteggioCandela+1LastCandela=1elseCandela = -1//ConteggioUp=0//ConteggioDown=ConteggioDown+1if LastCandela=1 then//LastConteggioCandele=ConteggioCandelaConteggioCandela=0//PrezzoChiusura=XClose[1]//VolTrend=abs(PrezzoApertura-PrezzoChiusura)endif//PrezzoApertura=XOpenConteggioCandela=ConteggioCandela+1LastCandela=0endifVolBigTrand=3BigTrendLong=0if Candela[1]=-1 and Volatilita[1]>VolBigTrand and Candela[2]=-1 and Volatilita[2]>VolBigTrand and Candela[3]=-1 and Volatilita[3]>VolBigTrand and Candela[4]=-1 and Volatilita[4]>VolBigTrand and Candela[5]=-1 and Volatilita[5]>VolBigTrand thenif Candela=1 and Candela[1]=1 thenBigTrendLong=1endifendifBigTrendShort=0if Candela[1]=1 and Volatilita[1]>VolBigTrand and Candela[2]=1 and Volatilita[2]>VolBigTrand and Candela[3]=1 and Volatilita[3]>VolBigTrand and Candela[4]=1 and Volatilita[4]>VolBigTrand and Candela[5]=1 and Volatilita[5]>VolBigTrand thenif Candela=-1 and Candela[1]=-1 thenBigTrendShort=1endifendifOraInizio=070000OraFine=230000//OraLimite=235900//TradeOn=0if Time >= OraInizio and Time <= OraFine then//TradeOn=1endifVolatilita= ABS(XOpen - XClose )if (ABS(XOpen - XClose ) <= ((XHigh - XLow ) * 0.1)) thenDoji=1elseDoji=0endifif Doji=1 thenConteggioDoji=ConteggioDoji+1elseif Volatilita>1 thenConteggioDoji=0endifendif//MM=Average(7)//MME=ExponentialAverage[12](close)//MMW=WeightedAverage[20](close)MMEP=EndPointAverage[120](close)//WILLR=Williams[21](close)//SUPERT=Supertrend[6,12]StatoPosizione=0ValPipVolatilita=pipsize*ValVolatilita//ValProfit=40//ValSpread=0.3//ValSpreadX=10if 1=1 thenif Candela=1 and PositionLongOpen=0 and PositionShortOpen=0 and Trend=1 and xOpen>=MMEP and ConteggioCandela<=4 and Candela[ConteggioCandela+2]=1 and Volatilita>ValPipVolatilita and Volatilita<ValPipVolatilita*6 or PositionLongOpen=0 and PositionShortOpen=0 and BigTrendLong=1 thenif Grafico=1 thenDRAWARROWUP(barindex,xLow) Coloured(0,255,255)endifPositionLongOpen=1StatoPosizione=2ValPrezzoPosizioneLong=CloseValPrezzoBreakEvenLong=ValPrezzoPosizioneLong+(ValSpread*(ValSpreadX/2))ValTargetBreakEvenLong=ValPrezzoPosizioneLong+(ValSpread*ValSpreadX)ValPrezzoStopLong = MIN(Low[1] , MIN(Low[2] , MIN(Low[3] , MIN(Low[4] , MIN(Low[5] , MIN(Low[6] , MIN(Low[7] , Low[8]) ) ) ) ) ))ValPrezzoProfitLong=ValPrezzoPosizioneLong+(pipsize*ValProfit)endifif PositionLongOpen=1 and Close>ValTargetBreakEvenLong thenValStatoBreakEvenLong=1endifif Volatilita[1]<1 and Volatilita[2]<1 and Volatilita[3]<1 and Volatilita[4]<1 and Volatilita[5]<1 then//ForceCloseLong=1endifif PositionLongOpen=1 and XClose<MMEP and XOpen<MMEP and Candela=-1 and 1=0 or PositionLongOpen=1 and ValStatoBreakEvenLong=1 and Close<= ValPrezzoBreakEvenLong or PositionLongOpen=1 and Close<= ValPrezzoStopLong or PositionLongOpen=1 and Close> ValPrezzoProfitLong thenif ValStatoBreakEvenLong=1 thenif Grafico=0 thenDRAWARROWUP(barindex,StatoPosizione)Coloured(255,165,0)endifendifif Close<= ValPrezzoStopLong thenif Grafico=0 thenDRAWARROWUP(barindex,StatoPosizione)Coloured(255,0,255)endifendifif Grafico=0 thenif Close>ValPrezzoPosizioneLong thenDRAWARROWUP(barindex,StatoPosizione-0.3)Coloured(0,255,0)elseDRAWARROWUP(barindex,StatoPosizione-0.3)Coloured(255,0,0)endifendifValStatoBreakEvenLong=0ValPrezzoPosizioneLong=0ValPrezzoBreakEvenLong=0ValTargetBreakEvenLong=0PositionLongOpen=0StatoPosizione=1if Grafico=1 thenDRAWARROWUP(barindex,XLow)Coloured(0,0,128)endifendifendifif 1=1 thenif Candela=-1 and PositionShortOpen=0 and PositionLongOpen=0 and Trend=-1 and ConteggioCandela<=4 and xOpen<=MMEP and Candela[ConteggioCandela+2]=-1 and Volatilita>ValPipVolatilita and Volatilita<ValPipVolatilita*6 or PositionLongOpen=0 and PositionShortOpen=0 and BigTrendShort=1 thenif Grafico=1 thenDRAWARROWDOWN(barindex,XHigh) Coloured(255,255,0)endifPositionShortOpen=1StatoPosizione=-2ValPrezzoPosizioneShort=CloseValPrezzoBreakEvenShort=ValPrezzoPosizioneShort-(ValSpread*(ValSpreadX/2))ValTargetBreakEvenShort=ValPrezzoPosizioneShort-(ValSpread*ValSpreadX)ValPrezzoStopShort = MAX(High[1] , MAX(High[2] , MAX(High[3] , MAX(High[4] , MAX(High[5] , MAX(High[6] , MAX(High[7] , High[8]) ) ) ) ) ))ValPrezzoProfitShort=ValPrezzoPosizioneShort-(pipsize*ValProfit)endifif PositionShortOpen=1 and Close<ValTargetBreakEvenShort thenValStatoBreakEvenShort=1endifif PositionShortOpen=1 and XClose>MMEP and XOpen>MMEP and Candela=1 and 1=0 or PositionShortOpen=1 and ValStatoBreakEvenShort=1 and Close>= ValPrezzoBreakEvenShort or PositionShortOpen=1 and Close>= ValPrezzoStopShort or PositionShortOpen=1 and Close< ValPrezzoProfitShort thenif ValStatoBreakEvenShort=1 thenif Grafico=0 thenDRAWARROWDOWN(barindex,StatoPosizione)Coloured(255,165,0)endifendifif Close>= ValPrezzoStopShort thenif Grafico=0 thenDRAWARROWDOWN(barindex,StatoPosizione)Coloured(255,0,255)endifendifif Grafico=0 thenif Close<ValPrezzoPosizioneShort thenDRAWARROWDOWN(barindex,StatoPosizione+0.3)Coloured(0,255,0)elseDRAWARROWDOWN(barindex,StatoPosizione+0.3)Coloured(255,0,0)endifendifValStatoBreakEvenShort=0ValPrezzoPosizioneShort=0ValPrezzoBreakEvenShort=0ValTargetBreakEvenShort=0PositionShortOpen=0StatoPosizione=-1if Grafico=1 thenDRAWARROWDOWN(barindex,XHigh)Coloured(0,128,0)endifendifendifif StatoPosizione=1 and Trend=1 thenendifif Grafico=1 thenStatoPosizione= UndefinedendifReturn StatoPosizione as "StatoPosizione"Strategia:
Strategia12345678910111213141516171819202122StatoPosizione= CALL MyIndicator2C[2,0.3,20,0,15]// Condizioni per entrare su posizioni longIF NOT LongOnMarket and NOT ShortOnMarket AND StatoPosizione=2 and 1=1 THENBUY 2.5 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND StatoPosizione=1 THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni shortIF NOT ShortOnMarket and NOT LongOnMarket AND StatoPosizione=-2 and 1=1 THENSELLSHORT 2.5 CONTRACTS AT MARKETENDIF// Condizioni per uscire da posizioni shortIF ShortOnMarket AND StatoPosizione=-1 THENEXITSHORT AT MARKETENDIF05/21/2020 at 9:34 AM #132543Scusate ho invertito i valori del tipo di grafico, correggo:
Quindi può essere caricato ed utilizzato in 2 modi
- Sul grafico in modo che possa disegnare le frecce per indicare entrate ed uscite [Tipo di grafico=1]
- Come indicatore in modo che indichi gli stati (-2,-1,2,1) per utilizzarlo in una strategia o associarlo ad allarmi [Tipo di grafico=0]
05/21/2020 at 10:50 AM #132554Non è un mio codice, per cui non lo conosco. Leggendolo un pò velocemente ho notato, ad esempio che alla riga 163 viene assegnato a StatoPosizione il valore 2, mentre alle righe 183, 189 ecc… viene stampata la freccia di segnalazione SOLO se si verificano anche altre condizioni.
Siccome lui restituisce SOLO StatoPosizione, mentre le frecce sono solo un aspetto visivo, tu puoi avere dei segnali anche se non visualizzati.
Non so bene cosa volesse fare l’autore (puoi chiedere a lui mettendo “@” davanti al suo nome utente in un tuo post, riceverà un’email, però non abusarne, è un’opportunità da non usare spesso).
Ad ogni modo, aggiungendo l’istruzione GRAPH in fondo al codice si può vedere (screenshot allegato) che sulla candela di setup delle operazioni che hai riferito, il segnale c’è.
05/21/2020 at 11:26 AM #132565 -
AuthorPosts
Find exclusive trading pro-tools on