Contatore barre medie mobili
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Contatore barre medie mobili
- This topic has 33 replies, 4 voices, and was last updated 7 years ago by
robertogozzi.
-
-
12/20/2017 at 9:25 PM #56176
salve vorrei capire come impostare il codice di un indicatore che mi somma il numero di barre che si formano tra un incrocio rialzista di due medie mobili da 10 e 20 periodi (la 10 che va sopra la 20), fino al verificarsi dell’incrocio al ribasso di queste due medie mobili,(la 10 che va sotto la 20)
Cioé contare quante barre ci sono tra questo spazio utilizzando come punto di riferimento l’incrocio delle medie mobili, e mi deve restituire la somma di queste barre.
L’indicatore deve iniziare a contare quando si verifica l’incrocio a rialzo, e finisce con l’incrocio a ribasso, successivamente riparte quando si riverifica l’incrocio al rialzo.
12/20/2017 at 9:59 PM #56179Ciao Luigi, ti allego l’indicatore.
Le variabili da settare sono:
Breve: periodo media mobile breve
Lunga: periodo media mobile lunga
Tipo 1 e Tipo 2: tipologia di medie mobili, semplice, esponenziale, ecc…
Prezzo da applicare: open, close, ecc….
Max
12/21/2017 at 6:49 PM #56276grazie, se inveve io vorrei che l’ultimo valore dell’indicatore mi segnasse la somma delle barre totali sia al rialzo che ribasso.
Ho provato a modificare il codice cosi, secondo voi potrebbe andare bene?
grazie, saluti.
12345678910111213141516171819202122media1=average[breve,tipo1](customclose)media2=average[lunga,tipo2](customclose)increase = media1>media2crossover =0WHILE increase[crossover] DOcrossover = crossover+1WENDdecrease = media1<media2crossunder =0WHILE decrease[crossunder] DOcrossunder = crossunder+1WENDif increase thenx = crossover+xelsif decrease thenx = crossunder+xendifreturn x coloured(0,0,0)12/21/2017 at 8:17 PM #56287Se vuoi che l’indicatore calcoli il totale delle barre crossover e crossunder in un dato periodo fai:
12345678910111213141516171819media1=average[breve,tipo1](customclose)media2=average[lunga,tipo2](customclose)increase = media1>media2crossover =0WHILE increase[crossover] DOcrossover = crossover+1WENDdecrease = media1<media2crossunder =0WHILE decrease[crossunder] DOcrossunder = crossunder+1WENDtotalcrossover=summation[10000](crossover)totalcrossunder=summation[10000](crossunder)return totalcrossover, totalcrossunderIn questo caso ho impostato il periodo 10000 barre, ma puoi cambiarlo a tuo piacimento.
Cambia anche l’impostazione istogramma e metti le linee.
Max
12/21/2017 at 9:00 PM #5629412/21/2017 at 9:19 PM #56297Scusa, allora non ho capito io bene cosa vuoi che l’indicatore faccia.
La modifica che ho fatto calcola le barre totali di crossover e di crossunder delle 2 medie mobili in un dato periodo di tempo.
Puoi spiegarti meglio facendo un esempio con dei dati?
grazie
Max
12/22/2017 at 6:02 PM #5638912/23/2017 at 10:14 AM #5641412/23/2017 at 2:36 PM #56429pero se vai a vedere essattamente sull’indicatore, il valore, se inizi dall’incrocio delle medie, e a barra a barra vai avanti, noterai che il valore aumenta non ad 1 ad 1 ma inizia ad esempio da 10 e cammina facendo 12, 14,18,25, cioe non in maniera aggiugento 1 valore, non so se hai capito.
nell’immagine che ho allegato si vede chiaramente il problema, inffatti sono partito sul valore 1032, e secondo il righello sono passati 17 barre dell’incrocio ribassista, quindi la somma deve essere 1032+17 = 1049 e non 1157.
Non riesco a capire perchè fa cosi, ho provato anche facendo il comando summation ma niente.
12/23/2017 at 6:35 PM #56451Ciao, hai ragione….leggendo il codice sembrava giusto, in realtà somma proprio come dici tu!
Allora basta che utilizzi il contatore di barre del grafico…visto che il conteggio è continuo, senza interruzioni
semplicemente con la formula
1return barindex12/23/2017 at 11:01 PM #56467Prova questo e fammi sapere (io l’ho provato solo una volta sul DAX daily):
123456789101112DEFPARAM CalculateOnLastBars = 2000media1=average[breve,tipo1](customclose)media2=average[lunga,tipo2](customclose)ONCE CrossOverBar = 0IF media1 CROSSES OVER media2 THENCrossOverBar = BarIndexENDIFReturnBar = CrossOverBarIF media1 CROSSES UNDER media2 THENCrossOverBar = 0ENDIFreturn (ReturnBar > 0) * (BarIndex - ReturnBar)Roberto
12/24/2017 at 10:07 AM #5647512/24/2017 at 10:09 AM #5647712/24/2017 at 10:15 AM #56478si infatti funziona maximus78, ma ho provato anche a fare questo codice è funziona lo stesso:
123456789101112131415media1=average[10](close)media2=average[20](close)increase = media1>media2decrase = media1<media2for i=1 to 1 doif increase theny = y+ielsif decrase theny = yendifnextreturn y coloured(0,0,0)comunque grazie per l’intervento, finalmente abbiamo risolto, grazie e buone feste a tutti.
12/24/2017 at 10:17 AM #56480 -
AuthorPosts
Find exclusive trading pro-tools on