DAX CASH 2H
Forums › ProRealTime forum Italiano › Supporto ProOrder › DAX CASH 2H
- This topic has 12 replies, 2 voices, and was last updated 6 years ago by robertogozzi.
-
-
12/16/2017 at 11:45 AM #55805DAX CASH 2H123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145//-------------------------------------------------------------------------// Codice principale : Dax Cash 2h V2(1)//-------------------------------------------------------------------------// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.DEFPARAM FLATBEFORE = 080000// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"DEFPARAM FLATAFTER = 200000// Impedisce al sistema di tradare in giorni specifici della settimanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Position size module, 2 is the default. Can be adapted to scale with the profitspositionsize=3//+2*round((strategyprofit*2)/10000)maybe= positionperf(1)<0losses = positionperf(1)<0 and positionperf(2)<0if losses thenPositionSize = 4//+3*round((strategyprofit*2)/10000)elsif not losses thenPositionSize = 3//+2*round((strategyprofit*2)/10000)Endifif maybe and not losses thenpositionsize=4//+3*round((strategyprofit*2)/10000)endifif positionperf(1)<0 and positionperf(2)<0 and positionperf(3)<0 thenpositionSize=3//+2*round((strategyprofit*2)/10000)endifif positionperf(1)>0 and positionperf(2)>0 thenpositionsize=2//+1*round((strategyprofit*2)/10000)endifif positionperf(1)<0 and positionperf(2)<0 and positionperf(3)<0 and positionperf(4)<0 and positionperf(5)<0 and positionperf(6)<0 thenpositionsize=6endifif positionperf(1)>0 and positionperf(2)>0 and positionperf(3)>0 and positionperf(4)>0 and positionperf(5)>0 and positionperf(6)>0 thenpositionsize=1endif//////////////////////////////////////////////////////// Condizioni per entrare su posizioni longif not onmarket thenindicator11 = Average[21](close)c11 = (close CROSSES over indicator11)indicator21 = Stochastic[34,34](close)indicator31 = Average[14](indicator21)c21 = (indicator21 >= indicator31)indicator41 = AverageTrueRange[14](close)c31 = (indicator41 >= 25)indicator51 = AverageTrueRange[14](close)indicator61 = ExponentialAverage[50](AverageTrueRange[14](close))c41 = (indicator51 >= indicator61)IF c11 AND c21 AND c41 AND C31 and not daysForbiddenEntry THENbuy positionsize SHARES AT MARKETENDIFendif// Condizioni per uscire da posizioni longindicator111 = ExponentialAverage[7](close)[1]exitlong = (close CROSSES UNDER indicator111[4])IF exitlong THENsell AT MARKETENDIF// Condizioni per entrare su posizioni shortif not onmarket thenindicator1 = Average[21](close)c1 = (close CROSSES UNDER indicator1)indicator2 = Stochastic[34,34](close)indicator3 = Average[14](indicator2)c2 = (indicator2 <= indicator3)indicator4 = AverageTrueRange[14](close)c3 = (indicator4 >= 25)indicator5 = AverageTrueRange[14](close)indicator6 = ExponentialAverage[50](AverageTrueRange[14](close))c4 = (indicator5 >= indicator6)IF c1 AND c2 AND c4 AND C3 and not daysForbiddenEntry THENSELLSHORT positionsize SHARES AT MARKETENDIFendif// Condizioni per uscire da posizioni shortindicator111 = ExponentialAverage[7](close)[12]exitsho = (close CROSSES OVER indicator111[30])IF exitsho THENEXITSHORT AT MARKETENDIF// Stop e targetset stop ploss 150set target pprofit 230//************************************************************************//trailing stop functiontrailingstart = 55 //trailing will start @trailinstart points profittrailingstep = 55 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//************************************************************************// Sell at end of dayif time>215300 thenexitshort at marketsell at marketendif// Earlier friday exit. Insurance against accidental holding over weekendsif dayofweek=5 and time>212300 thenexitshort at marketsell at marketendif
Ciao a tutti, spero possiate darmi suggerimenti ed aiutarmi ad ottimizzare questo trading system, è uno dei primi che provo a fare, ho anche tagliuzzato qualche funzione qua e la da altri trading system presenti sul sito.
Il Ts è ottimizzato volutamente per fare poche operazioni cercando di minimizzare i downtrend
12/16/2017 at 7:24 PM #55837@robertogozzi che ne pensi?
12/16/2017 at 7:39 PM #5583812/16/2017 at 11:35 PM #55839Fino a lunedì tardo pomeriggio non ho possibilità di provarla.
1 user thanked author for this post.
12/18/2017 at 7:14 PM #56007Su quale TF lo usi, nel codice c’è scritto 2h (2 ore), ma a me sembra potrebbe risultare qualòche profitto su h1.
Dall’esame dei tuoi IF per farlo uscire la sera sembra tu utilizzi i minuti!?
Ad ogni modo le righe 136-145 sono inutili, tanto ci pensa la riga 9 a terminare le operazioni all’ora li indicata.
12/18/2017 at 8:45 PM #56016Il TF è 2h, ma funziona bene anche su 1h, sempre in backtest, ho aggiunto le righe 136-145 perchè mi è capitato in real che non chiudesse le operazioni! infatti non so se ricordi ho aperto un post un paio di giorni fa su questo problema.
12/19/2017 at 4:19 PM #5608212/20/2017 at 12:53 PM #56132Posso darti consigli sul codice, ad esempio la riga
1Stochastic[34,34](close)è ripetuta più volte, come altre del resto, dovresti metterla una sola volta ed usare sempre quella stessa variabile per farvi riferimento. In questo modo quando vorrai provare settaggi diversi li dovrai cambiare su una sola riga!
Inoltre, specialmente quanto le righe di codice aumentano, è opportuno usare nomi significativi, non C1 o C11 o INDICATOR1 o INDICATOR21 ecc… (il facilitatore fa così per semplicità, poi ognuno deve adattare il codice a se stesso) ma un nome che indichi a cosa serve, ad esempio la riga
1indicator11 = Average[21](close)sarebbe più comprensibile per chiunque se fosse
1Media21 = Average[21](close)oppure, se è la media più veloce nel tuo codice
1MediaVeloce = Average[21](close)Alla riga 60 calcoli una media esponenziale a 7 periodi sulla chiusura della barra precedente, può andare bene, è un metodo per shiftare di una posizione orizzontale.
La riga 86 fa lo stesso, ma con uno scostamento di 12 barre, mi pare un pò eccessivo, è un effetto voluto o è un errore di codifica?
La riga 87 testa la condizione di uscita sull’incrocio della media di cui sopra (già spostata di 12), tra il prezzo di chiusura corrente e quello di 30 (+12) barre prima! Anche questo è incomprensibile; a meno che non sia parte di una strategia ben precisa mi sembra un errore.
In conclusione, per poterti aiutare (non solo io, ma chiunque, anzi, man mano che ognuno progredisce è caldamente incoraggiato ad aiutare i meno esperti) devi dare un’indicazione dettagliate su cosa vuoi, su quale strumento e TF desideri operare.
E’ ovvio che l’aiuto, quando viene dato, non è detto che sia immediato, magari può capitare che qualcuno che ti ha dato suggerimenti possa essere occupaato per una giornata o più, magari andare in vacanza ecc… occorre pazienza.
Attendo tue precisazioni.
Roberto
12/20/2017 at 1:51 PM #5614001/07/2018 at 12:15 PM #57576Dax Cash 2h1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulateDEFPARAM FLATBEFORE = 090000DEFPARAM FLATAFTER = 210000daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Position size modulepositionsize=1//Indicatori//mm21= Average[21](close)stoc34 = Stochastic[34,34](close)mmstoc = Average[14](stoc34)atr= AverageTrueRange[14](close)emaatr = ExponentialAverage[50](AverageTrueRange[14](close))ema7 = ExponentialAverage[7](close)[1]ema7short = ExponentialAverage[7](close)[12]//Condizioni entrata longc1= (close CROSSES over mm21)c2 = (stoc34 >= mmstoc)c3 = (atr >= 25)c4 = (atr >= emaatr)oklong = (c1 and c2 and c3 and c4)//uscitalongexitlong = (close CROSSES UNDER ema7[4])// LONG POSITIONif oklong and not daysForbiddenEntry THENbuy positionsize SHARES AT MARKETset stop ploss 50set target pprofit 225ENDIF// EXIT LONGIF exitlong THENsell AT MARKETENDIF//CONDIZIONI ENTRATA SHORTS1 = (close CROSSES UNDER mm21)S2 = (STOC34 <= MMSTOC)S3 = (ATR >= 25)S4 = (ATR >= EMAATR)okshort = (s1 and s2 and s3 and s4)exitsho = (close CROSSES OVER ema7short[30])// Condizioni per entrare su posizioni shortif okshort and not daysForbiddenEntry THENSELLSHORT positionsize SHARES AT MARKET// Stop e targetset stop ploss 150set target pprofit 230ENDIF// Condizioni per uscire da posizioni shortIF exitsho THENEXITSHORT AT MARKETENDIF// Stop e target//************************************************************************//trailing stop functiontrailingstart = 70 //trailing will start @trailinstart points profittrailingstep = 20 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFCiao @Robertogozzi l’ho riscritto, ma riguardandolo sono molto deluso perchè è come se avesse guadagnato solo nel 2015-2016 e da un anno e mezzo è praticamente fermo il TS quindi l’ho quasi accantonato, posso chiederti una cosa riguardo le ottimizzazioni?
Sto cominciando a pensare che converrebbe lanciare ed ottimizzare i sistemi di 6 mesi in 6 mesi o al massimo 18 mesi, senza andare troppo indietro, perchè c’e’ sempre il rischio che ne esca una sistema che lavora bene in alcune fasi di mercato e non in quelle attuali.
Nel sistema ho inserito molti filtri per evitare operazioni in perdita dato che non ho grossi capitali qualsiasi perdita per me è pesante, ma da ciò ne e’ uscito un TS che non performa bene negli ultimi 16 mesi.
01/09/2018 at 4:28 PM #58684L’ho provato, così come l’hai pubblicato senza modifiche, sul DAX ed ho visto che i migliori risultati si ottengono su H4.
Una verifica potresti farla anche sugli orari, magari in certe fasce orarie lavora meglio. Addirittura potresti provare ad abbinare le fasce orarie ai giorni, chissà che il lunedì mattina non sia meglio farlo partire dalle, dico a caso, 14, o magari terminarlo il venerdì poimeriggio alla 12, ecc… sono tutte prove da fare a cui dedidarci ore e ti aiuta anche ad apprendere meglio la codifica.
Ad ogni modo, puoi anche lasciare il backtest per tutto il periodo, ma rieseguirlo bene ogni mese per aggiustare qualche parametro e renderlo adeguato al momento attuale, oppure, come hai detto tu, ridurre il backtest all’ultimo anno o due.
Serve tempo da dedicarci e molta pazienza.
01/09/2018 at 11:06 PM #5876601/09/2018 at 11:55 PM #58774Non so cosa dirti, ho riprovato ed ottengo gli stessi risultati di prima.
-
AuthorPosts
Find exclusive trading pro-tools on