STRATEGIA SU DIVERGENZA TRA PREZZO E OSCILLATORE
Forums › ProRealTime forum Italiano › Supporto ProOrder › STRATEGIA SU DIVERGENZA TRA PREZZO E OSCILLATORE
- This topic has 13 replies, 4 voices, and was last updated 2 months ago by robertogozzi.
-
-
12/28/2023 at 2:49 PM #225761Buongiorno,chiedo aiuto al forum per sapere se è già stata codificata una strategia di trading basata sulla divergenza tra presso e oscillatore (nel mio caso lo stocastico lento).Qualora non ci fosse, di seguito inserisco i parametri per il trading system con ingressi long e short basati sulla divergenza tra prezzo e stocastico, più due filtri: uno è il MACD, il secondo la trend line.Preciso che la strategia la utilizzo per tradare indici principalmente su time frame a 5 e 15 minuti.Di seguito ho allegato una immagine con un esempio di operazione short che dovrebbe scattare in base alle seguenti condizioni. Il segnale short si attiva quando il prezzo ha generato un massimo crescente rispetto al precedente, mentre lo stocastico (che si deve trovare in zona IPERCOMPRATO) genera in corrispondenza del massimo di prezzo un picco di indicatore inferiore rispetto al precedente. In pratica l’oscillatore sta registrando una tendenza ribassista in divergenza con la tendenza rialzista del prezzo.Infine, il segnale si attiverebbe nel momento in cui il MACD ha incrociato al ribasso, evidenziando il primo istogramma negativo. Il secondo filtro, se si può inserire, si attiverebbe quando il prezzo rompe la trend line rialzista ancorata al minimo di swin che ha generato il trend rialzista in oggetto.Lo STOP va inserito 2 tick sopra l’ultimo massimo di prezzo che ha generato la divergenza, l’ENTRY scatta dopo che si verificano le condizioni dell’incrocio del MACD e la rottura al ribasso della trendline, mentre il TARGET sul livello di minimo che ha generato il trend rialzista da cui parte la trendline.Per le operazioni Long valgono tutti i parametri al contrario.Ringrazio in anticipo chiunque possa aiutarmi nella realizzazione del trading system.01/06/2024 at 6:51 PM #226057
Intanto ho scritto questo:
12345678910111213141516171819202122232425262728293031323334DEFPARAM CumulateOrders = FalseONCE Segnale = 0ONCE Macd1 = 12ONCE Macd2 = 26ONCE Macd3 = 9myMACD = Average[Macd1,1](close) - Average[Macd2,1](close)mySignalLine = Average[Macd3,1](myMACD)myHisto = myMACD - mySignalLine//mySto = Stochastic[14,3](close)//ONCE Barre = 50ONCE Periodi = 14ONCE ValoreK = 3ONCE Validita = 1Divergenza = CALL "Divergenza Stocastico"[Barre, Periodi, ValoreK, Validita](close)IF Divergenza THENIF ((Divergenza > 0) AND (mySto <= 20)) OR ((Divergenza < 0) AND (mySto >= 80)) THENSegnale = DivergenzaHH = highest[50](high)LL = lowest[50](low)ENDIFENDIF//IF Not LongOnmarket AND (Segnale > 0) AND (myMACD CROSSES OVER mySignalLine) THENBUY 1 Contract at MarketSET STOP PRICE LL - 2*PipSizeSET TARGET PRICE HHENDIFIF Not ShortOnMarket AND (Segnale < 0) AND (myMACD CROSSES UNDER mySignalLine) THENSELL 1 Contract at MarketSET STOP PRICE HH + 2*PipSizeSET TARGET PRICE LLENDIFper quanto riguarda la Trend Line, la rottura deve avvenire contemporaneamente all’incrocio del MACD oppure dopo?
01/07/2024 at 11:44 AM #22607801/07/2024 at 12:59 PM #226081Questo è il codice dell’indicatore, ma ho allegato anche il file ITF:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657DEFPARAM CalculateOnLastBars = 2000//NumeroBarre = 50 //40//Periodi = 14 //14//ValoreK = 3 //3//Validita = 1 //1//Distanza = 10 * pipsize //10 pipsStoK = Stochastic[Periodi,ValoreK](close)Divergenza = 0// Divergenza RIALZISTA (minimi Prezzo decrescenti, minimi Stocastico crescenti)IF close = lowest[NumeroBarre](close) THENMinimo = closeMinimoPrec = lowest[NumeroBarre](close[1])IF Minimo < MinimoPrec THENMinStoPrec = lowest[NumeroBarre](StoK[1])IF StoK > MinstoPrec THENMinSto = StoKFOR i = 1 TO NumeroBarre + 1IF close[i] = MinimoPrec THENxTemp = StoK[i - 1]IF lowest[Validita](xTemp) = MinStoPrec THENIF MinSto > MinStoPrec THENx = round(StoK)//DRAWTEXT("#x#", barindex, low-Distanza) coloured(0,128,0,255)Divergenza = 1ENDIFENDIFBREAKENDIFNEXTENDIFENDIFENDIF// Divergenza RIBASSISTA (massimi Prezzo crescenti, massimi Stocastico decrescenti)IF close = highest[NumeroBarre](close) THENMassimo = closeMassimoPrec = highest[NumeroBarre](close[1])IF Massimo > MassimoPrec THENMaxStoPrec = highest[NumeroBarre](StoK[1])IF StoK < MaxStoPrec THENMaxSto = StoKFOR i = 1 TO NumeroBarre + 1IF close[i] = MassimoPrec THENxTemp = StoK[i - 1]IF highest[Validita](xTemp) = MaxStoPrec THENIF MaxSto < MaxStoPrec THENx = round(StoK)//DRAWTEXT("#x#", barindex, high+Distanza) coloured(255,0,0,255)Divergenza = -1ENDIFENDIFBREAKENDIFNEXTENDIFENDIFENDIFRETURN Divergenza01/09/2024 at 3:03 PM #226157Infinitamente grato Roberto per il codice.
Pero’ purtroppo se lancio il codice come strategia di trading automatico mi da errore (in allegato le immagine con i dettagli delle righe).
Per quanto riguarda la Trend Line, la rottura deve avvenire dopo l’incrocio del MACD.
Grazie in anticipo per qualunque ulteriore aiuto.
01/09/2024 at 6:32 PM #226167Il codice, è un indicatore, non una strategia.
La strategia è quella che avevo giàpostato. Quella è invariata.
1 user thanked author for this post.
01/09/2024 at 7:47 PM #226175ATTENZIONE CHE INVECE DI SELL BISOGNA SCRIVERE SELLSHORT
1 user thanked author for this post.
01/10/2024 at 10:53 AM #22618901/11/2024 at 12:48 PM #226231Non mi stancherò mai di ringraziare Roberto per l’immenso supporto che offre. Un ringraziamento anche a MaoRai54 per l’importante segnalazione.
Sarebbe possibile inserire anche gli altri due filtri che avevo indicato nella descrizione iniziale (vedi anche foto allegata).
- Il MACD incrocia evidenziando il primo istogramma negativo (per la divergenza ribassista) o positivo (per la divergenza rialzista).
- Dopo che si è verificato l’incrocio del MACD, il prezzo deve rompere la trend line rialzista/ribassista, che parte dal minimo che ha generato il trend in oggetto.
Una domanda: nel codice è fissato un minimo e un massimo di barre che devono intercorrere nella formazione dei due massimi e due minimi?
Grazie
02/08/2024 at 6:46 PM #227678Questo è il codice con l’aggiunta dei filtri MACD.
Per la TrendLine, come la vorresti tracciare, quali caratteristiche devono avere i due punti dove tracciarla?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960DEFPARAM CumulateOrders = FalseONCE Segnale = 0ONCE SegnaleMACD = 0ONCE macdHISTO = 0ONCE Macd1 = 12ONCE Macd2 = 26ONCE Macd3 = 9myMACD = Average[Macd1,1](close) - Average[Macd2,1](close)mySignalLine = Average[Macd3,1](myMACD)myHisto = myMACD - mySignalLine//mySto = Stochastic[14,3](close)//ONCE Barre = 50ONCE Periodi = 14ONCE ValoreK = 3ONCE Validita = 1Divergenza = CALL "Divergenza Stocastico"[Barre, Periodi, ValoreK, Validita](close)IF Divergenza THENIF ((Divergenza > 0) AND (mySto <= 20)) OR ((Divergenza < 0) AND (mySto >= 80)) THENSegnale = DivergenzaHH = highest[50](high)LL = lowest[50](low)SegnaleMACD = 0macdHISTO = 0ENDIFENDIF//IF myMACD CROSSES OVER mySignalLine THENSegnaleMACD = 1ELSIF myMACD CROSSES UNDER mySignalLine THENSegnaleMACD = -1ENDIF//IF SegnaleMACD = 1 THENIF myHisto CROSSES OVER 0 THENmacdHISTO = 1ENDIFELSIF SegnaleMACD = -1 THENIF myHisto CROSSES UNDER 0 THENmacdHISTO = -1ENDIFENDIF//IF Not LongOnmarket AND (Segnale > 0) AND (SegnaleMACD > 0) AND (macdHISTO > 0) THENBUY 1 Contract at MarketSET STOP PRICE LL - 2*PipSizeSET TARGET PRICE HHSegnale = 0SegnaleMACD = 0macdHISTO = 0ENDIFIF Not ShortOnMarket AND (Segnale < 0) AND (SegnaleMACD < 0) AND (macdHISTO < 0)THENSELLSHORT 1 Contract at MarketSET STOP PRICE HH + 2*PipSizeSET TARGET PRICE LLSegnale = 0SegnaleMACD = 0macdHISTO = 0ENDIF02/16/2024 at 12:26 PM #228279Ciao Roberto. Grazie ancora per l’aggiunta del Macd.
Per quanto riguarda la trend line, spero di riuscirmi a spiegare. Per una maggiore comprensione, rimando alla immagine che avevo allegato nel primo post per una divergenza ribassista.
La trend line rialzista/ribassista dovrebbe essere ancorata (1 punto) al massimo/minimo dal quale è partito il trend che poi ha originato il pattern doppio minimo/massimo (dove cerchiamo la divergenza), mentre nel 2 punto la trend live va ancorata al massimo/minimo di swing tra i due massimi/minimi in questione.
Spero di essermi spiegato.
Grazie in anticipo.
03/07/2024 at 6:00 PM #229411C’è voluto un pò a fare l’indicatore per tracciare le due trendline. Provalo per vedere se ti va bene (puoi cambiare i periodi iniziali come vuoi, io ho messo 50):
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061defparam drawonlastbaronly = trueONCE P = 50HH1 = highest[P](high[P])HH2 = highest[P](high)LL1 = lowest[P](low[P])LL2 = lowest[P](low)bH1 = 0bH2 = 0bL1 = 0bL2 = 0//IF BarIndex > P THEN//IF (close > HHx[1]) THEN//drawtext("●",BarIndex,HHx[1] + range)////ELSIF (close < LLx[1]) THEN//drawtext("●",BarIndex,LLx[1] - range)//ENDIF//ENDIFFOR i = 0 TO (p * 2)// trovare i Massimi e la relativa barra dove sono stati fattiIF bH2 = 0 THENIF high[i] = HH2 THENbH2 = BarIndex[i]ENDIFELSIF bH1 = 0 THENIF high[i] = HH1 THENbH1 = BarIndex[i]ENDIFENDIF// trovare i Minimi e la relativa barra dove sono stati fattiIF bL2 = 0 THENIF low[i] = LL2 THENbL2 = BarIndex[i]ENDIFELSIF bL1 = 0 THENIF low[i] = LL1 THENbL1 = BarIndex[i]ENDIFENDIF//IF bH2 > 0 AND bH1 > 0 AND bL1 > 0 AND bL2 > 0 THENbreakENDIFNEXT// calcolare la differenza tra i due valori, calcolandone il vaore medio di ogni barradiffH = HH2 - HH1diffL = LL2 - LL1barsH = bH2 - bH1barsL = bL2 - bL1futH = (diffH / barsH) * ((BarIndex - bH2) + 1)futL = (diffL / barsL) * ((BarIndex - bL2) + 1)HHx = HH2 + futH//HH1 + (diffH * futH)LLx = LL2 + futL//LL1 - (diffH * futH)DrawSegment(bH1,HH1,BarIndex + 1,HHx[1]) coloured("Blue")DrawSegment(bL1,LL1,BarIndex + 1,LLx[1]) coloured("Blue")//drawtext("HH1 #HH1# - bH1 #bH1#",bH1,HH1)//drawtext("LL1 #LL1# - bL1 #bL1#",bL1,LL1)//drawtext("HH2 #HH2# - bH2 #bH2#",bH2,HH2)//drawtext("LL2 #LL2# - bL2 #bL2#",bL2,LL2)//drawtext("barsH #barsH# - barsL #barsL#",Barindex + 15, high)return04/09/2024 at 3:16 PM #231305Ciao Roberto,
ti ringrazio per l’inserimento anche delle trend line.
Però guardando l’immagine che hai allegato, credo ci sia una differenza tra il modo in cui il codice traccia la/le trend line e quello che servirebbe a me.
Provo a riassumere il set-up operativo coadiuvato da un’altra immagine a corollario.
Nell’ipotesi di un trade long (situazione allegata sul grafico), io cerco un doppio minimo nei prezzi (nell’immagine ho cerchiato i due minimi) in divergenza di stocastico (in corrispondenza dei minimi decrescenti lo stocastico genera minimi crescenti, anch’essi cerchiati nell’immagine). Una volta generato il doppio minimo in divergenza di stocastico, scattano i due filtri:
- Divergenza del MACD (in rialzo, come evidenziato nell’immagine)
- La rottura della trend line che va ancorata al massimo che ha generato l’impulso ribassista e al massimo di swing che genera il secondo minimo (nell’immagine ho evidenziato i livelli di prezzo dove va ancorata la trend line).
Nel caso long, il segnale Buy scatta quando il prezzo rompe al rialzo la trend line.
08/21/2024 at 3:53 PM #236582Scusami, ma avevo dimenticato il tuo post.
Puoi allegare un immagine con solo le linee di trend che desideri, indicando il preché devono iniziare in un certo punto e terminare in un certo altro, in pratica quali caratteristiche devono avere in comune i due punti entro cui vanno tracciate, sia al rialzo che al ribasso.
-
AuthorPosts
Find exclusive trading pro-tools on