Modifica TS da condividere
Forums › ProRealTime forum Italiano › Supporto ProOrder › Modifica TS da condividere
- This topic has 43 replies, 3 voices, and was last updated 6 years ago by robertogozzi.
-
-
12/27/2017 at 7:34 PM #5668412/27/2017 at 10:24 PM #56710
Se vuoi che qualcuno ti aiuti devi certamente postare il codice per condividerlo.
Poi chi si sentirà in grado di aiutarti lo farà con piacere, nei tempi e modi in cui potrà dedicarcisi.
Buon trading.
Roberto
12/27/2017 at 10:54 PM #56713Certamente,
sono alla prima richiesta,quindi non sapevo di dover pubblicare subito il codice :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214defparam cumulateorders = false// --- parametersActivatePattern1 = 1//activate or not the 1st pattern (0=false) -> PINBAR PATTERNActivatePattern2 = 0//activate or not the 2nd pattern (0=false) -> SECOND PATTERNActivatePattern3 = 1 //activate or not the 3rd pattern (0=false) -> THIRD PATTERNMAtype = 1 //0=SMA ; 1=EMAMAperiod = 100 //Moving average periodMAprice = close //MA price (close,high,low,open)MAdifference = 0 //points difference from moving average and the pinbar (0=disable)CandleCount = 5//candles count above/below Moving AverageMinimoMassimoDecrescente = 0 //minimum candles to increase or decrease before pattern 1,2 or 3MaxStop = 30//maximum stoploss value in points15MinStop = 5//minimum stoploss value in pointsTimeStart = 080000 //time to start the strategyTimeEnd = 170000 //time to end the strategyMaxTradesPerDay = 5 //max quantity of trades each dayBarsExpiration = 1 //how much bars to wait to expire pending ordersPointsToKeep = 1 //how much points to keep above or below the openprice when breakeven (50% profit reached)// ---once buylevel=0once selllevel=0if longonmarket or barindex-tradeindex(1)<BarsExpiration then// set buy level @ 0 to avoid new pending orderbuylevel = 0endifif shortonmarket or barindex-tradeindex(1)<BarsExpiration then// set sell level @ 0 to avoid new pending orderselllevel = 0endifif intradaybarindex = 0 thentradecount = 0endiftcondition = time>=TimeStart and time<TimeEndif MAtype=1 thenma = exponentialaverage[MAperiod](MAprice)elsema = average[MAperiod](MAprice)endif//Trade countif onmarket and tradeprice<>savedprice thentradecount = tradecount+1savedprice = tradepriceendif//Candles countif close>ma thenabove = above+1below = 0endifif close<ma thenabove = 0below = below+1endif//Increase/Decrease countif MinimoMassimoDecrescente>0 thenlowincrease = summation[MinimoMassimoDecrescente+1](low>low[1])highdecrease = summation[MinimoMassimoDecrescente+1](high<high[1])elselowincrease = 1highdecrease = 1endif//Pin Barbody = abs(open-close)>=1*pointsizeif close>open thenbullishtail = (open-low>=0.33*range)bullishnose = (high-close<0.18*range)bearishtail = (high-close>=0.33*range)bearishnose = (open-low<0.18*range)elsebullishtail = (close-low>=0.33*range)bullishnose = (high-open<0.18*range)bearishtail = (high-open>=0.33*range)bearishnose = (close-low<0.18*range)endifif ActivatePattern1 thenbuypattern1 = body and bullishtail and bullishnose and highdecrease>=MinimoMassimoDecrescente and low<low[1] and close>open//and low>ma and low[1]>(high+low)/2 //+50%sellpattern1 = body and bearishtail and bearishnose and lowincrease>=MinimoMassimoDecrescente and high>high[1] and close<open//and high<ma and high[1]<(high+low)/2 //+50%elsebuypattern1 = 0sellpattern1 = 0endif//Max Above / Below patternsif ActivatePattern2 thenbuypattern2 = close>open and summation[2](close[1]<open[1])=2 and high>high[1] and low<low[1] and highdecrease>=MinimoMassimoDecrescentesellpattern2 = close<open and summation[2](close[1]>open[1])=2 and high>high[1] and low<low[1] and lowincrease>=MinimoMassimoDecrescenteelsebuypattern2 = 0sellpattern2 = 0endif//Pattern 3if ActivatePattern3 thenbuypattern3 = close>open and summation[2](close[1]<open[1])=2 and high>high[1] and low<low[1] and highdecrease>=MinimoMassimoDecrescentesellpattern3 = close<open and summation[2](close[1]>open[1])>=1 and high>high[1] and low>low[1] and lowincrease>=MinimoMassimoDecrescenteelsebuypattern3 = 0sellpattern3 = 0endif//MA difference activate or notif MAdifference=0 thenbuydiff = 1selldiff = 1elsebuydiff = low-ma>=MAdifference*pointsizeselldiff = ma-high>=MAdifference*pointsizeendif//long conditions testedif not longonmarket and (buypattern1 or buypattern2 or buypattern3) and tcondition and tradecount<MaxTradesPerDay and above>=candlecount and buydiff thensavedbarindex = barindexbuylevel = highstoplossvalue = range//buySL = lowendifwhile not longonmarket and buylevel>0 and barindex<=savedbarindex+BarsExpiration and stoplossvalue<MaxStop*pointsize and stoplossvalue>MinStop*pointsize and not onmarket[1] and barindex>tradeindex(1)+BarsExpiration and tcondition dobuy 1 share at buylevel stopwend//short conditions testedif not shortonmarket and (sellpattern1 or sellpattern2 or sellpattern3) and tcondition and tradecount<MaxTradesPerDay and below>=candlecount and selldiff thensavedbarindex = barindexselllevel = lowstoplossvalue = range//sellSL = highendifwhile not shortonmarket and selllevel>0 and barindex<=savedbarindex+BarsExpiration and stoplossvalue<MaxStop*pointsize and stoplossvalue>MinStop*pointsize and not onmarket[1] and barindex>tradeindex(1)+BarsExpiration and tcondition dosellshort 1 share at selllevel stopwendset target profit stoplossvalueset stop loss stoplossvalue//BREAKEVENif PointsToKeep>0 then//set the breakeven levelstartBreakeven = (stoplossvalue/2)/pipsize//reset the breakevenLevel when no trade are on marketIF NOT ONMARKET THENbreakevenLevel=0ENDIF// --- BUY SIDE ---//test if the price have moved favourably of "startBreakeven" points alreadyif longonmarket thenIF close-tradeprice(1)>=startBreakeven*pipsize THEN//calculate the breakevenLevelbreakevenLevel = tradeprice(1)+PointsToKeep*pipsizeENDIF//place the new stop orders on market at breakevenLevelIF breakevenLevel>0 THENSELL AT breakevenLevel STOPENDIF//place the stop for the first time//if breakevenlevel=0 then//sell at buySL stop//endifendif// --- end of BUY SIDE ---// --- SELL SIDE ---//test if the price have moved favourably of "startBreakeven" points alreadyif shortonmarket thenIF tradeprice(1)-close>=startBreakeven*pipsize THEN//calculate the breakevenLevelbreakevenLevel = tradeprice(1)-PointsToKeep*pipsizeENDIF//place the new stop orders on market at breakevenLevelIF breakevenLevel>0 THENSELLSHORT AT breakevenLevel STOPENDIF//place the stop for the first time//if breakevenlevel=0 then//sellshort at sellSL limit//endifendif// --- end of BUY SIDE ---endif // end of breakeven//graph above coloured(0,200,0) as "above"//graph below coloured(200,0,0) as "below"//graph bullishpinbar coloured(0,200,0) as "bull pinbar"//graph bearishpinbar coloured(200,0,0) as "bear pinbar"//graph buylevel coloured(0,200,0) as "buy level"//graph selllevel coloured(200,0,0) as "sell level"//graph buySL coloured(0,10,0) as "buy SL"//graph sellSL coloured(10,0,0) as "sell SL"//graph stoplossvalue//graph startbreakeven//graph breakevenLevel//graph buypattern2 coloured(0,200,0)//graph sellpattern2 coloured(200,0,0)//grafico buypattern3 colorato (0,200,0)//grafico sellpattern3 colorato (200,0,0)Il ts deve eseguire i trade sopra(buy)/sotto(short) la media in base alle condizioni inserite,le condizioni dei pattern pero’ non vanno bene :
esempio:
nel caso apertura trade buy del pattern n° 3 ,il pattern deve essere rialzista (candela verde ) ed avere sempre il minimo inferiore alla candela precedente che deve essere sempre ribassista (rossa)
12/27/2017 at 11:30 PM #56716Per scrivere il codice , utilizza il pulsante <> “insert PRT code” che si trova nella barra grigia proprio sopra allo spazio dove scrivi il testo quando posti qualcosa. L’ho fatto io, come vedi il codice è più leggibile e facilita chi ha intenzione d’aiutarti.
Nei prossimi giorni cerco di darci un’occhiata per capire cosa fa e poi ti faccio sapere qualcosa.
12/27/2017 at 11:39 PM #5671712/28/2017 at 11:34 AM #56728Questa è la scomposizione della riga 103
12345buypattern3 = close>open and //Ok, Candela RIALZISTAsummation[2](close[1]<open[1])=2 and // ??? forse dovevi scrivere: close[1] < open[1] per verificare che la candela precedente fosse RIBASSISTAhigh>high[1] and // ??? perché il massimo, non bastava che il minimo fosse inferiore al precedente?low<low[1] and //Ok, Minimo inferiore al precedentehighdecrease>=MinimoMassimoDecrescente //Questo non so cosa siacome vedi la seconda e la terza condizione mi sembrano sbagliate, la seconda puoi modificarla come ho indicato io nel commento, la terza credo dovresti toglierla se non ti interessa il massimo.
Poi riassemblala e ripeti il tutto anche per il pattern SELL.
Ripeti la verifica, riga per riga (scomponendole in modo da avere un corretto allineamento che ti facilita la comprensione) anche per gli altri pattern.
Con pazienza e dedizione arriverai alla corretta identificazione dei pattern.
12/28/2017 at 12:30 PM #56730Ciao,
Grazie di tutto!
Io non sono un programmatore,il ts lo fatto realizzare fornendo la strategia scritta con allegati disegni,provero’ ad applicare tutte le tue informazioni sperando di riuscirci,ti faro’ sapere se sono stato capace…
Grazie
edoardo
12/28/2017 at 12:52 PM #56731Ciao,puoi vedere se ho capito ?questa e la riga originale :if ActivatePattern3 thenbuypattern3 = close>open and summation[2](close[1]<open[1])=2 and high>high[1] and low<low[1] and highdecrease>=MinimoMassimoDecrescentequella da cambiare :buypattern3 = close>open and summation[2](close[1]<open[1]=2 and close[1]<open[1]
Scusa ma provo a capire!!!
grazie!!
12/28/2017 at 3:58 PM #5673712/28/2017 at 4:19 PM #56740Per scrivere il codice , utilizza il pulsante <> “insert PRT code. Grazie.
Questa è la riga scomposta come sopra descritta:
12345buypattern3 = close>open and //Ok, Candela RIALZISTAsummation[2](close[1]<open[1])=2 and // ??? forse dovevi scrivere: close[1] < open[1] per verificare che la candela precedente fosse RIBASSISTAhigh>high[1] and // ??? perché il massimo, non bastava che il minimo fosse inferiore al precedente?low<low[1] and //Ok, Minimo inferiore al precedentehighdecrease>=MinimoMassimoDecrescente //Questo non so cosa siaquesta dovrebbe essere, secondo me la riga corretta:
1buypattern3 = close>open and close[1]<open[1] and low<low[1] and highdecrease>=MinimoMassimoDecrescenteperché la verifica dei massimi (HIGH) non è necessaria e SUMMATION mi pare che non c’entri proprio niente con quello che vuoi, perché verifica che le DUE candele precedenti siano ribassiste, mentre tu hai detto solo UNA.
Imparare a programmare non è difficile, specialmente con il linguaggio PRT che è molto semplice e privo di strutture sofisticate. Se conosci un pò l’inglese non ti sarà difficile comprendere il significato di IF…ENDIF o FOR…NEXT, per il resto sono tutti riferimenti ai prezzi (Open, Close, High, Low, Customclose) ed indicatori/oscillatori (Medie, Macd, Rsi, ecc…).
La parte più difficile è riuscire a ragionare nella logica informatica. La classica difficoltà è riconoscere una Pin Bar, perché visivamente noi la notiamo subito, mentre un PC ha bisogno di sapere come definirla, quanto deve essere grande il corpo, quanto l’ombra superiore e quanto quella inferiore, ecc…
12/28/2017 at 4:33 PM #56743Ciao, per la mia ignoranza ho cambiato il modo di uscita dai trade cercando la fine dei cicli con il CCI. Ti incollo il file, è ottimizzato per il dax cash 30m.
Ho visto che gira; non conosco la tua strategia e non voglio saperla.
Tu provala in demo, dopo avere verificato che i pattern siano identificati come tu desideri.
Se hai problemi con i pattern o con qualche istruzione sarò ben lieto di aiutarti,
Circa la strategia, invece, non voglio entrare nel merito delle tue scelte.
12/28/2017 at 4:40 PM #56745Ciao ,
grazie lo provo sicuramente,la stretegia e’ concepita su una media mobile,numero candele sopra/sotto la media,pattern ingresso,su queste basi ho inserito la possibilita’ delle variabili in base allo strumento :
tipo media ,valore media
dimensione candela da un min/amx
numero candele sopra/sotto
orario di trading
spostamento breakeven
Il problema e’ stato nelle condizioni dei pattern ingresso,quello che cerco di risolvere
Grazie veramente a tutti quelli che condividono
edoardo
12/28/2017 at 4:41 PM #56747Scusami Roberto ma la tua risposta mi sembra un pò infastidita come mai? Io ho semplicemente risposto ad Edo che chiedeva collaborazione ed ho apportato delle modifiche che secondo me fanno lavorare al meglio il Trading System.
Semplicemente ho identificato l’utilizzo del Commodity Channel Index come un punto di uscita migliore (dal mio punto di vista e per i trading system) dai trade rispetto alla strategia originale di Edo, ho fatto qualcosa di sbagliato?
12/28/2017 at 4:57 PM #56748Non preoccuparti Altares, non ero e non sono affatto infastidito. A dire la verità mi sono accorto che il post era tuo solo dopo averlo confermato.
Non hai fatto niente di sbagliato, magari non so se edocasa inserirà le tue modifiche, visto che è alle prime armi. Anzi, credo sia meglio per lui affrontare un problema per volta per poi passare ad eventuali successivi. Il suo per ora sono il corretto riconoscimento dei pattern.
Ciò non toglie che tu, come chiunque altro, possa fare le modifiche che ritiene più opportune.
12/28/2017 at 5:36 PM #56749Altares,
ti ringrazio infinitamente,ho testato subito il tuo ts modificato,facendo delle modifiche al setting da febbraio 2017 ad oggi funziona discretamente,ringrazio anche Roberto,ho capito il suo spirito cerca di farmi fare modifiche dietro i suoi consigli,io lo stesso ts non trovando un modo per fare modificare i pattern sbagliati lo fatto realizzare su mt4,questo per farvi capire la mia volonta’ di arrivare ad ottenere un ts funzionale.
Se Altares vorrai dedicare un po’ di tempo alla modifica dei pattern,sarei lieto di specificare il piu’ possibile la strategia
Grazie ancora a tuttti!!!
Altares,
ActivatePattern1 = 1//activate or not the 1st pattern (0=false) -> PINBAR PATTERN
ActivatePattern2 = 0//activate or not the 2nd pattern (0=false) -> SECOND PATTERN
ActivatePattern3 = 1 //activate or not the 3rd pattern (0=false) -> THIRD PATTERN
MAtype = 1 //0=SMA ; 1=EMA
MAperiod = 21 //Moving average period
MAprice = close //MA price (close,high,low,open)
MAdifference = 0 //points difference from moving average and the pinbar (0=disable)
CandleCount = 3//5//candles count above/below Moving Average
MinimoMassimoDecrescente = 0 //minimum candles to increase or decrease before pattern 1,2 or 3
MaxStop = var3//30//maximum stoploss value in points15
MinStop = 8//minimum stoploss value in points
TimeStart = 080000 //time to start the strategy
TimeEnd = 150000 //time to end the strategy
MaxTradesPerDay = 5 //max quantity of trades each day
BarsExpiration = 2 //how much bars to wait to expire pending orders
cc = CCI[20]
targetplong = (cc < var1)
targetpshort = (cc>var2)Prova questo setting,fammi sapere cosa ne pensi
-
AuthorPosts
Find exclusive trading pro-tools on