Aiuto x strategia reversal
Forums › ProRealTime forum Italiano › Supporto ProOrder › Aiuto x strategia reversal
- This topic has 9 replies, 2 voices, and was last updated 7 years ago by maximus78.
-
-
11/08/2017 at 12:02 AM #51876
Buonasera a tutti,
vorrei scrivere questa semplice strategia ma non riesco ad impostare le seguenti condizioni successive che il sistema deve monitorare per piazzare gli ordini.
Questa è la versione sell di esempio, la versione Buy è opposta, allego uno screenshot per capire meglio il sistema reversal.
1) il sistema parte appena il prezzo fa un nuovo massimo che imposto, es: high[0]>highest[50](high)[1] –> resistenza di donchian blu
2) il massimo non è violato e si formano dei minimi descrescenti , possono essere 1, 2 o molti. (frecce rosse) –
(solo i minimi decrescenti, non importa i massimi, a meno che un massimo superi il massimo del punto1, allora il sistema riparte da capo).
3) Appena il prezzo fa un nuovo minimo superiore rispetto al precedente (freccia verde), il sistema imposta un ordine pendente sell stop al minimo precedente (candela con più bassa freccia rossa)
4) Allo stesso tempo imposta uno stop loss al massimo della candela del punto 1
5)Allo stesso tempo imposta un take profit pari a 2 volte lo stop loss (massimo punto 1) -entry price (punto 4).
6) Se il prezzo non tocca il livello dell’ordine sell pendente ma ritraccia, l’ordine rimane attivo e se il prezzo ritraccia oltre il massimo al punto 1, elimina tutti gli ordini e riparte a leggere il nuovo massimo facendo un nuovo ciclo dal punto 1.
Grazie mille in anticipo!!
Max
Allego uno screenshot
11/08/2017 at 10:14 AM #51902- il massimo di cui al tuo punto 1 di quanti periodi deve essere?
- il Donchian a quanti periodi?
Proverò a scrivere qualcosa con i suddetti dettagli.
Roberto
11/08/2017 at 10:33 AM #5191111/08/2017 at 11:50 AM #51922Provala, io l’ho testata sul DAX a 10 minuti e sembra funzionare, ma l’ho solo provata una volta, non so se la logica va bene al 100%:
12345678910111213141516171819202122232425262728293031323334353637383940DEFPARAM CumulateOrders = false// inizializzazione Costanti e VariabiliONCE Periodi = 100ONCE Massimo = 999999ONCE Minimo = 0ONCE StopLoss = 0ONCE TargetProfit = 0ONCE CandeleInverse = 3 //Numero di candele con nuovi Minimi/Massimi prima di entrareONCE Moltiplicatore = 1.5 //Moltiplicatore per Target Profit// all'inizio, oppure quando una posizione è aperta, ricominciare daccapoIF OnMarket OR Massimo = 999999 THENMassimo = highest[Periodi](high)Minimo = lowest[Periodi](low)ENDIF// Entrare LONGa1 = close > Minimoa2 = summation[CandeleInverse](high[1] > high[2]) = CandeleInverse //almeno "n" massimi più altia3 = high < high[1] //Massimo attuale < quello precedenteax = a1 AND a2 AND a3IF ax THENStopLoss = MinimoTargetProfit = high[1] - ((high[1] + StopLoss) * Moltiplicatore)BUY 1 CONTRACTS AT high[1] STOP //Ordine BUY pendenteENDIF// Entrare SHORTb1 = close < Massimob2 = summation[CandeleInverse](low[1] < low[2]) = CandeleInverse //almeno "n" minimi più bassib3 = low > low[1] //Minimo attuale > quello precedentebx = b1 AND b2 AND b3IF bx THENStopLoss = MassimoTargetProfit = low[1] + ((StopLoss - low[1]) * Moltiplicatore)SELLSHORT 1 CONTRACTS AT low[1] STOP //Ordine SELL pendenteENDIF// Stop Loss & Target/Take ProfitSET STOP LOSS StopLossSET TARGET PROFIT TargetProfit1 user thanked author for this post.
11/08/2017 at 11:45 PM #52012Grazie Roberto,
di primo acchito ho notato che imposti un numero minimo di candele con nuovi massimi o minimi (ONCE CandeleInverse = 3 ), l’dea è che non ci sia un n° minimo di candele da impostare
perchè questo numero può essere viariabile, può essere 1 solo minimo come 10 di fila prima che il prezzo faccia un nuovo minimo superiore.
Non si può impostare in questo modo? Magari con una funzione tipo…………. WHILE low[attuale]<low[precedente]……..
Ho fatto girare il sistema su EUR/USD e noto anche che è sempre in posizione, quando chiude uno short, apre un long e sembra che non rispetti il take profit.
Comunque domani ci guardo meglio e ti dico.
Grazie
Massimo
11/09/2017 at 12:41 PM #52110Per il numero di candele ho indicato un numero a caso, puoi mettere 1 e dovrebbe funzionare come vuoi tu.
Force c’è un problema con HIGHEST e LOWEST secondo il numero di PreLoadBars caricate.
Però il problema vero, forse ho capito, è diverso. Perché quando lanci la strategia va a cercare dei massimi/minimi precedenti, dopodiché entra quando fa un minimo superiore al minimo precedente. A quel punto però il prezzo può trovarsi lontano dal massimo/munimo rilevato.
Quindi, confermami l’interpretazione se è corretta, quando entra rileva Massimi/minimi entro un certo periodo, dopodiché attende che il prezzo SUPERI quei Massimi/Minimi e da li attende il ritracciamento ecc… come hai indicato tu.
Va bene?
11/09/2017 at 1:52 PM #52124Ciao Roberto,
si infatti la logica è semplice ma per me è difficile scriverla perchè sono condizioni successive che non avvengono nello stesso tempo e vengono confermate nella candela successiva a cambiamento già avvenuto.
la logica per me è questa:
1) imposto un massimo/minimo tipo highest[100](high), quando il sistema rileva il nuovo massimo, attende che la candela successiva non superi il massimo precedente, perchè ovviamente farebbe un nuovo massimo, quindi la condizione è confermata quando si crea un massimo minore rispetto al punto 1 della strategia:
- high[1]>highest[100](high)[1] e high[0] < high[1]
2) se fa un massimo minore, allora il sistema deve rilevare i successivi minimi, perchè a questo punto il prezzo sta ritracciando. I minimi successivi possono essere vari.
low[corrente]<low[precedenti]
3) Quando il prezzo fa un minimo superiore rispetto al precedente, significa che il ritracciamento potrebbe essere concluso.
Quindi il sistema considera il minimo precedente perchè è il più basso della serie, e quindi un potenziale supporto e lì imposta l’ordine di entrata pendente in sell stop.
quando : low[corrente]>low[precedente]
imposta ordine su low precedente : sell 1 contracts at low[precedente] stop ……….che è anche lowest[1](low) perchè è il più basso dei due ultimi minimi
4) impostato l’ordine sell stop, imposta anche l’ordine stop loss sul massimo che considera all’inizio (resistenza).
5) Allo stesso tempo calcola la differenza tra i due ordini e imposta il take profit.
In questo modo ho supporto e resistenza definiti con i 3 ordini di entrata, stop loss e take profit per un potenziale reversal.
6) Se il prezzo continua nel trend precedente senza toccare l’ordine pendente e oltrepassa la nostra resistenza, gli ordini vengono annullati.
11/09/2017 at 5:37 PM #52155Ho rifatto daccapo la strategia e la sto provando:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647DEFPARAM CumulateOrders = falseDEFPARAM PreLoadBars = 0// inizializzazione Costanti e VariabiliONCE Massimo = 0ONCE Minimo = 999999ONCE StopLoss = 0ONCE TargetProfit = 0ONCE Moltiplicatore = 1.5 //Moltiplicatore per Target ProfitONCE StopMinimo = 6 * pipsize// Se nuovi Massimo/Minimo salvarli e ricominciare daccapoIF high > Massimo THENMassimo = highMinimo = 999999ELSIF low < Minimo THENMinimo = lowMassimo = 0ENDIF//// Entrare LONGa1 = (close > Minimo)a2 = high < high[1]ax = a1 AND a2IF ax AND NOT OnMarket THENStopLoss = Min(Minimo, high[1] - StopMinimo) //Usare lo Stop Loss minimo se necessarioTargetProfit = high[1] + ((high[1] - StopLoss) * Moltiplicatore)BUY 1 CONTRACTS AT high[1] STOP //Ordine BUY pendenteENDIF//// Entrare SHORTb1 = (close < Massimo)b2 = low > low[1]bx = b1 AND b2IF bx AND NOT OnMarket THENStopLoss = Max(Massimo, low[1] + StopMinimo) //Usare lo Stop Loss minimo se necessarioTargetProfit = low[1] - ((StopLoss + low[1]) * Moltiplicatore)SELLSHORT 1 CONTRACTS AT low[1] STOP //Ordine SELL pendenteENDIF// Stop Loss & Target/Take ProfitSET STOP LOSS StopLossSET TARGET PROFIT TargetProfit//GRAPH MassimoGRAPH MinimoGRAPH StopLossGRAPH TargetProfitGRAPH StopMinimoPerò per il momento non funziona, non so perché ma non esce in STOP LOSS, pur essendo stato colpito!
In pratica, come si vede dalla foto (EurUsd h1), il 2 Ottobre alle ore 06:00 è entrato in posizione LONG ad 1.1780, con Target Profit ad 1.7902 e Stop Loss ad 1,17732 (l’ho indicato con una linea orizzontale rossa tratteggiata). Alla candela successiva l’ha colpito e l’operazione avrebbe dovuto terminare, mentre il report mi segnala l’operazione ancora in corso!
Attendiamo un chiarimento da Nicolas, appena potrà.
11/12/2017 at 2:11 PM #52436Grazie Roberto, si infatti non considera i take profit,
ho provato a scrivere il codice e sono riuscito a ricostruire il sistema partendo dalla successione di minimi con l’istruzione WHILE ed andando a ritroso, purtroppo non riesco a definire il punto 1 di partenza, cioè l’Higher high di 100 periodi (HH100) ed il comando di cancellazione degli ordini pendenti se close sale al di sopra di HH100.
Magari riesci ad aiutarmi, anche tu Nicolas se puoi darci una mano, grazie mille!
Massimo
12345678910111213141516171819202122232425262728293031defparam cumulateorders=false// trova successione di lower lowsdecrease = (low[0] < low[1])lowerlows =0WHILE decrease[lowerlows] DOlowerlows = lowerlows+1wend//trova ultimo lower lowLL=lowerlows[1]>0//trova higher low correnteHL=lowerlows[0]=0//trova Higher high 100 periodi prima dei lower lowsHH100=// definizione stop loss sopra HH100SL= HH100-low[1]// definizione target profitTP=TP=(HH-low[1])*1.5// elimina ordini pendenti impostati se close>HH100ERASEORDERS= close>HH100// imposta ordine pendente su minimo precedenteif LL and HL and uptrend and not onmarket thensellshort 1 contracts at low[1] stopset stop loss SLTP=(HH-low[1])*1.5set target profit TPif eraseorders and not onmarket then............endif11/12/2017 at 2:17 PM #52437Ci sono degli errori, il codice è questo.
12345678910111213141516171819202122232425262728293031defparam cumulateorders=false// trova successione di lower lowsdecrease = (low[0] < low[1])lowerlows =0WHILE decrease[lowerlows] DOlowerlows = lowerlows+1wend//trova ultimo lower lowLL=lowerlows[1]>0//trova higher low correnteHL=lowerlows[0]=0//trova Higher high 100 periodi prima dei lower lowsHH100=// definizione stop loss sopra HH100SL= HH100-low[1]// definizione target profitTP=TP=(HH-low[1])*1.5// elimina ordini pendenti impostati se close>HH100eraseorders=close>HH100// imposta ordine pendente su minimo precedenteif LL and HL and HH100 and not onmarket thensellshort 1 contracts at low[1] stopset stop loss SLset target profit TPendif -
AuthorPosts
Find exclusive trading pro-tools on