Indicatore CCI modificato con ZigZag
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Indicatore CCI modificato con ZigZag
- This topic has 9 replies, 3 voices, and was last updated 5 years ago by Hendrix.
-
-
06/24/2019 at 9:14 AM #101277
Buongiorno,
volevo realizzare un indicatore Commodity Channel Index a 150 periodi con media mobile semplice a 21 periodi come in foto in allegato, aggiungendo in indicatore ZIG ZAG che disegni i segmenti tenendo conto dei valori espressi dall’indicatore
negli ultimi 20 istogrammi. Naturalmente dovrà disegnare un segmento anche tra l’ultimo punto di svolta e l’ultimo istogramma .
Saluti
Grazie
06/24/2019 at 12:03 PM #10129206/24/2019 at 12:47 PM #101299Questo è il CCI modificato con l’aggiunta della media:
12345cciP = 150maP = 21MyCCI = CCI[cciP](typicalPrice)MyAvg = average[maP,maT](MyCCI)RETURN MyCCI AS "Cci",100 AS "100",-100 AS "-100",MyAvg AS "MA"dalle proprietà deciderai come visualizzare il CCI o la media, se con istogramma o linea e quali colori usare.
Non ho, invece, capito dove vuoi mettere lo ZigZag e su cosa lo vuoi calcolare.
06/24/2019 at 1:23 PM #101305Se possibile inserire un indicatore ZIG ZAG che con i valori del CCI tenga conto dei punti di inversione, ad esempio come il fractal ZIG ZAG sul prezzo presente nel forums oppure se impossibile inserirne uno che tenga conto dei prezzi.
06/24/2019 at 1:48 PM #101310Ho preso pari pari il Fractal ZigZag e l’ho adattato al CCI, prova se ti va bene:
Custom CCI with Average & ZigZag1234567891011121314151617181920212223242526272829303132333435363738394041424344DEFPARAM CalculateOnLastBars = 1000cciP = max(2,min(999,cciP)) //2-999maP = max(2,min(999,maP)) //2-999maT = max(0,min(6,maT)) //0-6cp = max(2,min(999,cp)) //2-999MyCCI = CCI[cciP](typicalPrice) //CCIMyAvg = average[maP,maT](MyCCI) //Moving Average// Fractal ZIGZAGonce lastpoint = 0if MyCCI[cp] >= highest[2*cp+1](MyCCI) thenLH = 1elseLH = 0endifif MyCCI[cp] <= lowest[2*cp+1](MyCCI) thenLL = -1elseLL = 0endifif LH = 1 thenTOPy = MyCCI[cp]TOPx = barindex[cp]endifif LL = -1 thenBOTy = MyCCI[cp]BOTx = barindex[cp]endifif LH>0 and (lastpoint=-1 or lastpoint=0) thenDRAWSEGMENT(lastX,lastY,TOPx,TOPy) COLOURED(200,0,0,255)DRAWTEXT("■",TOPx,TOPy,Dialog,Bold,20) coloured(200,0,0,255)lastpoint = 1lastX = TOPxlastY = TOPyendifif LL<0 and (lastpoint=1 or lastpoint=0) thenDRAWSEGMENT(lastX,lastY,BOTx,BOTy) COLOURED(0,200,0,255)DRAWTEXT("■",BOTx,BOTy,Dialog,Bold,20) coloured(0,200,0,255)lastpoint = -1lastX = BOTxlastY = BOTyendifRETURN MyCCI AS "Cci",100 AS "100",-100 AS "-100",MyAvg AS "MA"06/24/2019 at 2:02 PM #101318Perfetto unica cosa se puoi aggiungere anche l’ultimo segmento che unisce l’ultimo punto di inversione con l’ultimo istogramma (o prezzo) come mi era stato fatto per lo zig zag sul prezzo da Nicolas che ti metto in copia:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051defparam drawonlastbaronly=true//—external parameterscp = 20once lastpoint = 0if high[cp] >= highest[2*cp+1](high) thenLH = 1elseLH = 0endifif low[cp] <= lowest[2*cp+1](low) thenLL = -1elseLL = 0endifif LH = 1 thenTOPy = high[cp]TOPx = barindex[cp]endifif LL = -1 thenBOTy = low[cp]BOTx = barindex[cp]endifif LH>0 and (lastpoint=-1 or lastpoint=0) thenDrawSegment(lastX,lastY,TOPx,TOPy) coloured(255,255,0)lastpoint = 1lastX = TOPxlastY = TOPyendifif LL<0 and (lastpoint=1 or lastpoint=0) thenDrawSegment(lastX,lastY,BOTx,BOTy) coloured(255,255,0)lastpoint = -1lastX = BOTxlastY = BOTyendifif lastpoint>0 thenDrawSegment(lastX,lastY,barindex,low) coloured(255,255,0)elsif lastpoint<0 thenDrawSegment(lastX,lastY,barindex,high) coloured(255,255,0)endifreturnInoltre se possibile senza i quadrati rossi e verdi basta un segmento in giallo.
Grazie Roberto
06/24/2019 at 2:15 PM #101320Per scrivere il codice , utilizza il pulsante <> “insert PRT code”. GRAZIE.
Questo è quello modificato con il codice che mi hai detto tu, ma non mi sembra sia quello che desideri:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748DEFPARAM CalculateOnLastBars = 1000cciP = max(2,min(999,cciP)) //2-999maP = max(2,min(999,maP)) //2-999maT = max(0,min(6,maT)) //0-6cp = max(2,min(999,cp)) //2-999MyCCI = CCI[cciP](typicalPrice) //CCIMyAvg = average[maP,maT](MyCCI) //Moving Average// Fractal ZIGZAGonce lastpoint = 0if MyCCI[cp] >= highest[2*cp+1](MyCCI) thenLH = 1elseLH = 0endifif MyCCI[cp] <= lowest[2*cp+1](MyCCI) thenLL = -1elseLL = 0endifif LH = 1 thenTOPy = MyCCI[cp]TOPx = barindex[cp]endifif LL = -1 thenBOTy = MyCCI[cp]BOTx = barindex[cp]endifif LH>0 and (lastpoint=-1 or lastpoint=0) thenDrawSegment(lastX,lastY,TOPx,TOPy) coloured(255,255,0)lastpoint = 1lastX = TOPxlastY = TOPyendifif LL<0 and (lastpoint=1 or lastpoint=0) thenDrawSegment(lastX,lastY,BOTx,BOTy) coloured(255,255,0)lastpoint = -1lastX = BOTxlastY = BOTyendifif lastpoint>0 thenDrawSegment(lastX,lastY,barindex,MyCCI) coloured(255,255,0)elsif lastpoint<0 thenDrawSegment(lastX,lastY,barindex,MyCCI) coloured(255,255,0)endif//RETURN MyCCI AS "Cci",100 AS "100",-100 AS "-100",MyAvg AS "MA"06/24/2019 at 3:05 PM #101321Ciao Roberto,
infatti non va bene il tuo primo codice andava bene dovevi solo aggiungere un segmento che dall’ultimo punto dello zig zag vada ad unire l’attuale prezzo nell’ultimo istogramma del CCI, (che si muova con l’indicatore per intenderci).
Saluti
06/24/2019 at 10:27 PM #101348Per ottenere il risultato che desideri devi usare due indicatori qusi identici:
Primo: quello del mio primo post, commentando le linee 32 e 39, quello che non stampa l’ultimo segmento.
Secondo: devi aggiungere all’indicatore di cui sopra quest’altro indictore che stampa SOLO l’ultimo segmento:
12345678910111213141516171819202122232425262728293031323334353637383940414243DEFPARAM CalculateOnLastBars = 1000DEFPARAM DrawOnLastBarOnly = TRUEcciP = 150cp = 20MyCCI = CCI[cciP](typicalPrice) //CCI// Fractal ZIGZAGonce lastpoint = 0if MyCCI[cp] >= highest[2*cp+1](MyCCI) thenLH = 1elseLH = 0endifif MyCCI[cp] <= lowest[2*cp+1](MyCCI) thenLL = -1elseLL = 0endifif LH = 1 thenTOPy = MyCCI[cp]TOPx = barindex[cp]endifif LL = -1 thenBOTy = MyCCI[cp]BOTx = barindex[cp]endifif LH>0 and (lastpoint=-1 or lastpoint=0) then//DrawSegment(lastX,lastY,TOPx,TOPy) coloured(255,255,0)lastpoint = 1lastX = TOPxlastY = TOPyendifif LL<0 and (lastpoint=1 or lastpoint=0) then//DrawSegment(lastX,lastY,BOTx,BOTy) coloured(255,255,0)lastpoint = -1lastX = BOTxlastY = BOTyendifif lastpoint>0 thenDrawSegment(lastX,lastY,barindex,MyCCI) coloured(205,205,0,255)elsif lastpoint<0 thenDrawSegment(lastX,lastY,barindex,MyCCI) coloured(205,205,0,255)endifRETURN06/25/2019 at 7:44 AM #101363 -
AuthorPosts
Find exclusive trading pro-tools on