Pattern di Gramza
Forums › ProRealTime forum Italiano › Supporto ProOrder › Pattern di Gramza
- This topic has 53 replies, 5 voices, and was last updated 6 years ago by volpiemanuele.
-
-
08/25/2017 at 4:22 PM #4463708/25/2017 at 5:22 PM #44645
Grazie Nicolas, mi piace aiutare qualcuno quando mi è possibile, anch’io a volte ho bisogno d’aiuto, specialmente agli inizi ne ho avuto tanto!!!
08/25/2017 at 5:25 PM #44646Scusami R05, al post #44632 ho indicato erroneamente “ed indichi 60 nelle parentesi”, mentre era corretto scrivere “ed indichi 540 nelle parentesi”.
08/25/2017 at 5:42 PM #4464708/25/2017 at 8:44 PM #44652Scusami ancora, ma ho trovato nel mio codice un errore logico, perché
1highest[540](high)alle 090000 mi restituisce il valore più alto della candela delle 000001 (se siamo sul TF a 1 minuto), NON il massimo di ieri. Per avere il massimo occorrerebbe scrivere
12x = highest[1440](high) //in 24 ore ci sono 1440 minutiMax = x[540] //Max conterrà il valore di cui sopra spostato indietro alla mezzzanotte (se siamo alle 090000)ma è un meccanismo un pò complicato ed inoltre durante il giorno il valore 540 andrà variato ad ogni candela che passa (inoltre IG considera il nuovo giorno a partire dalle 010000)!!!
C’è la soluzione più facile ed ovvia, cui non avevo pensato, che è di usare DHIGH e DLOW (vedi https://www.prorealcode.com/documentation/dhigh/):
12Max = Dhigh(0) //0 per la barra appena chiusa (la corrente), 1 per quella del giorno precedente e così via...Min = Dlow(0)ch restituiscono i valori Minimi e Massimi del giorno.
Buon fine settimana.
08/31/2017 at 3:13 PM #45053Gent.mo Roberto, riguardo il pattern di Gramza, dopo aver fatto le opportune verifiche con più calma, devo anzitutto scusarmi con te in quanto il primo codice che avevi riportato sullo stop e sul trailing stop erano corretti. Sbagliavo io: troppo frettoloso e poco capace. E quindi ti ringrazio tantissimo.
Ora il secondo passo è cercare di vedere se può essere migliorato ulteriormente aggiungendo dei filtri, tipo entrare in posizione se il pattern si verifica in presenza di un max o min del giorno fatto a quel momento o anche se supera la banda inferiore o superiore di Bollinger o anche fermare il sistema nel momenti della giornata poco movimentati tipo dalle 11:30-12:00 alle 14:30-15:00. Mi piace cercare di entrare il più possibile vicino ai massimi o minimi per avere bassi stop e in teoria alti profitti (in trailing stop). Speriamo che prorealtime implementi subito la possibilità anche di poter entrare nella stessa barra in cui si verifica il setup in modo anche da poter sfruttare il turtle soup o le sue varianti.
Allego la versione del codice (ho solo apportato piccole modifiche tipo nel trailing stop ho messo esplicitamente 2 altrimenti non mi metteva lo stop sotto o sopra 2 punti il min o max, e poi occorre aggiungere, come dicevi tu, pipsize per il forex).
Grande. E grazie di nuovo.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455DEFPARAM CumulateOrders = False // Posizioni cumulate disattivatedefparam flatbefore = 080000defparam flatafter = 220000Hammer = Close<Open AND (close-Low) >= 2*(Open-Close)Hammer2 = Close>Open AND (high-close) >= 2*(Close-Open)ShootingStar = close>open and (high-close)>=2*(close-open)ShootingStar2 = close<open and (close-low)>=2*(open-close)Candelarossa = (open>close)Candelaverde = (open<close)s = hight = high[1]z = high[2]// Condizioni per entrare su posizioni longIF NOT OnMarket and s<t and t<z and (hammer or hammer2 or ShootingStar or ShootingStar2 or candelaverde) THENbuy 1 CONTRACTS at high+1 stopENDIFs = lowt = low[1]z = low[2]// Condizioni per entrare su posizioni shortIF NOT OnMarket and s>t and t>z and (hammer or hammer2 or ShootingStar or ShootingStar2 or candelarossa) THENsellshort 1 CONTRACTS at low-1 stopENDIF// Stop e targetIF close > open THEN //LONGMinLow = lowStopLoss = low - 2 //2 pips sotto il minimoELSE //SHORTMaxHigh = highStopLoss = high + 2 //2 pips sopra il massimoENDIFSET STOP PLOSS StopLossIF LongOnMarket THEN //per i LONGIF low > MinLow THEN //verificare che sia un MINIMO più altoMinLow = Low //aggiornare la variabileENDIFSELL AT MinLow - 2 STOP //aggiornare l'ordine di STOP ad ogni candelaENDIFIF ShortOnMarket THEN //per gli SHORTIF high < MaxHigh THEN //verificare che sia un MASSIMO più bassoMaxHigh = high //aggiornare la variabileENDIFEXITSHORT AT MaxHigh + 2 STOP //aggiornare l'ordine di STOP ad ogni candelaENDIF08/31/2017 at 5:33 PM #45070Ho modificato il codice:
Pattern di GRAMZA123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115DEFPARAM CumulateOrders = Falsedefparam flatbefore = 080000defparam flatafter = 220000ONCE TimeLimit = 180000 //Nessun nuovo TRADE dopo le 18:00:00ONCE TimeFriday = 140000 //Nessun trade DOPO le 14 del VenerdìONCE TimeMonday = 123000 //Nessun trade PRIMA delle 103000 di LunedìONCE TimeOff = 123000 //Inizio pausa pranzo, nessun tradeONCE TimeOn = 133000 //Fine pausa pranzo, ricominciare a tradare//***************************************************************************TimeFlag = 1IF time > TimeLimit THENTimeFlag = 0ENDIFIF (CurrentDayOfWeek = 5) THEN //5 = VenerdiIF time >= TimeFriday THENTimeFlag = 0ENDIFELSIF (CurrentDayOfWeek = 1) THEN //1 = LunedìIF time < TimeMonday THENTimeFlag = 0ENDIFELSIF (time > TimeOff) AND (time < TimeOn) THEN //nessun trade in pausa pranzoTimeFlag = 0ENDIF//TimeFlag = 1//***************************************************************************// trailing stop functiontrailingstart = 3 //3 trailing will start @trailinstart points profittrailingstep = 27 //27 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//************************************************************************Hammer = Close<Open AND (close-Low) >= 2*(Open-Close)Hammer2 = Close>Open AND (high-close) >= 2*(Close-Open)ShootingStar = close>open and (high-close)>=2*(close-open)ShootingStar2 = close<open and (close-low)>=2*(open-close)Candelarossa = (open>close)Candelaverde = (open<close)s = hight = high[1]z = high[2]// Condizioni per entrare su posizioni longIF NOT OnMarket and s<t and t<z and (hammer or hammer2 or ShootingStar or ShootingStar2 or candelaverde) and TimeFlag THENbuy 1 CONTRACTS at high+1 stopENDIFs = lowt = low[1]z = low[2]// Condizioni per entrare su posizioni shortIF NOT OnMarket and s>t and t>z and (hammer or hammer2 or ShootingStar or ShootingStar2 or candelarossa) and TimeFlag THENsellshort 1 CONTRACTS at low-1 stopENDIF// Stop e targetIF close > open THEN //LONGMinLow = lowStopLoss = low - 2 //2 pips sotto il minimoELSE //SHORTMaxHigh = highStopLoss = high + 2 //2 pips sopra il massimoENDIFSET STOP PLOSS StopLossIF LongOnMarket THEN //per i LONGIF low > MinLow THEN //verificare che sia un MINIMO più altoMinLow = Low //aggiornare la variabileENDIFSELL AT MinLow - 2 STOP //aggiornare l'ordine di STOP ad ogni candelaENDIFIF ShortOnMarket THEN //per gli SHORTIF high < MaxHigh THEN //verificare che sia un MASSIMO più bassoMaxHigh = high //aggiornare la variabileENDIFEXITSHORT AT MaxHigh + 2 STOP //aggiornare l'ordine di STOP ad ogni candelaENDIF08/31/2017 at 5:41 PM #45071Le lineee 5-27 servono a selezionare certi orari, ad esempio l’inizio del lunedì mattina, la chiusura del venerdì pomeriggio e la pausa pranzo; ma si possono diversificare ulteriormente, ovviamente.
Basta mettere, come ho messo, alle linee 77 e 86 la variabile TIMEFLAG ed eventualmente modificare/aggiungere altri orari alle righe 5-9.
Vi sono poi le righe 29-62 che sono un codice per gestire il TRAILING STOP, indicando da quanti pips partire e di quanto incrementare lo stop. E’ un codice sviluppato da Nicolas, che lo ha messo a disposizione qui: https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/
Buon trading.
09/03/2017 at 4:56 PM #45305Gentilissimo Roberto, ti disturbo riguardo al seguente codice che è una variante del turtle soup, dove si entra in posizione se il prezzo di chiusura è sotto il minimo/sopra il Massimo del minimo/max precedente a 20 periodi, e quindi si piazza un ordine alla candela successiva qualora il prezzo superi il min/max precedente. Ma come faccio ad impostare che il max/min precedente deve essere più di tre barre prima?
Ti ringrazio.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960DEFPARAM CumulateOrders = Falsen = 1// Condizioni per aprire una posizione longc1 = close < lowest[20](low)[1]ctime = time > 060000 and time < 220000IF c1 AND ctime THENBUY n CONTRACT AT lowest[20](low)[1] + 1 stopENDIF// Condizioni per uscire da una posizione longc2 = low < lowest[5](low)[1]IF c2 THENsell AT MARKETENDIF// Condizioni per aprire una posizione shortc1 = close > highest[20](high)[1]ctime = time > 060000 and time < 220000IF c1 AND ctime THENSELLSHORT n CONTRACT AT highest[20](high)[1] - 1 stopENDIF// Condizioni per uscire da una posizione di venditac3 = high > highest[5](high)[1]IF c3 THENexitshort AT MARKETENDIF// Stop e targetIF close > open THEN //LONGMinLow = lowStopLoss = low - 2 //2 pips sotto il minimoELSE //SHORTMaxHigh = highStopLoss = high + 2 //2 pips sopra il massimoENDIFSET STOP PLOSS StopLossIF LongOnMarket THEN //per i LONGIF low > MinLow THEN //verificare che sia un MINIMO più altoMinLow = Low //aggiornare la variabileENDIFSELL AT MinLow - 2 STOP //aggiornare l'ordine di STOP ad ogni candelaENDIFIF ShortOnMarket THEN //per gli SHORTIF high < MaxHigh THEN //verificare che sia un MASSIMO più bassoMaxHigh = high //aggiornare la variabileENDIFEXITSHORT AT MaxHigh + 2 STOP //aggiornare l'ordine di STOP ad ogni candelaENDIF09/04/2017 at 9:38 AM #45336Con
1c1 = close < lowest[20](low)[1]verifichi il valore più basso (o alto con HIGHEST) di 20 barre indietro, iniziando non da quella corrente, ma dalla precedente.
basta fare una somma della condizione per le ultime, ad esmpio, 4 barre:
123c1 = summation[4](close < lowest[20](low))// oppure (come fatto tu)c1 = summation[4](close < lowest[20](low)[1])se c1 conterrà 0 significa che per tutte e 4 le barre precedenti la condizione non era verificata (quindi l’evento si è verificato prima delle 4 barre).
09/04/2017 at 9:38 AM #45337Dovrei aver trovato il codice. Lo riporto. Sembra funzionare.
123456789101112131415161718192021222324252627282930313233343536373839404142434445DEFPARAM CumulateOrders = Falsen = 1t = low[1]v = low[2]y = low[3]z = low[4]// Condizioni per aprire una posizione longc1 = low < lowest[20](low)[1]ctime = time > 060000 and time < 220000IF c1 AND ctime and t>z and v>z and y>z THENBUY n CONTRACT AT lowest[20](low)[1] + 1 stopENDIF// Condizioni per uscire da una posizione longc2 = low < lowest[5](low)[1]IF c2 THENsell AT MARKETENDIF// Condizioni per aprire una posizione shortt1 = high[1]v1 = high[2]y1 = high[3]z1 = high[4]c1 = high > highest[20](high)[1]ctime = time > 060000 and time < 220000IF c1 AND ctime and t1<z1 and v1<z1 and y1<z1 THENSELLSHORT n CONTRACT AT highest[20](high)[1] - 1 stopENDIF// Condizioni per uscire da una posizione di venditac3 = high > highest[5](high)[1]IF c3 THENexitshort AT MARKETENDIFset target pprofit 1009/04/2017 at 9:39 AM #45338Hai scritto tu il posta contemporaneamente a me.
09/04/2017 at 9:40 AM #45339Il tuo sistema dovrebbe funzionare, con il mio è più semplice aumentare o dominuire le barre a 3 o 5, semplicemente cambiando il numero tra le parentesi quadre di SUMMATION.
09/04/2017 at 9:41 AM #4534009/04/2017 at 9:43 AM #45341 -
AuthorPosts
Find exclusive trading pro-tools on