1 allegato (i) Ciao !!
C'è qualche indiore che disegna linee rette ogni n barre ???
Grazie per l'aiuto.
Publi |
Publi |
1 allegato (i) Ciao !!
C'è qualche indiore che disegna linee rette ogni n barre ???
Grazie per l'aiuto.
Qualcosa di simile, ma in mq4 ..
https://www.mql5.com/en/docs/customi...s/draw_section
1 Attachment (s) Provo a codice in MT4 ma l'indiore non funziona correttamente. #property indior_chart_window #property indior_buffers 1 #property indior_plots 1/--- plot Section #property indior_label1 Section #property indior_type1 DRAW_SECTION #property indior_color1 clrRed #property indior_style1 STYLE_SOLID #property indior_width1 1/--- input input del parametro int bars = 5 ;/La lunghezza delle sezioni nelle barre input int N = 5;/Il numero di tick per cambiare lo stile delle sezioni/--- Un buffer indiore per il plot double SectionBuffer [];/--- Una variabile ausiliaria per calcolare le estremità del divisore int sezioni;/--- Una matrice per memorizzare colori colori [] = {clrRed, clrBlue, clrGreen};/--- Una matrice per memorizzare gli stili di linea ENUM_LINE_STYLE styles [] = {STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT};/ ----------------------------------------------- ------------------- /| Funzione di inizializzazione dell'indiore personalizzato |/ ----------------------------------------------- ------------------- int OnInit () {//--- Associazione di un array e un buffer di indiori SetIndexBuffer (0, SectionBuffer, INDICATOR_DATA);/--- Il valore 0 (vuoto) parteciperà al disegno PlotIndexSetDouble (0, PLOT_EMPTY_VALUE, 0);/--- Controlla il parametro dell'indiore if (barslt; = 0) {PrintFormat (valore non valido della barra dei parametri =% d, barre); ritorno (INIT_PARAMETERS_INCORRECT); } else divisore = 2 * barre;/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Funzione di iterazione dell'indiore personalizzato |/ ----------------------------------------------- ------------------- int OnCalculate (const int rates_total, const int prev_calculated, const tempo datetime [], const double open [], const double high [], const double low [], const double close [], const long tick_volume [], const long volume [], const int spread []) {static int ticks = 0;/--- Calcola le zecche per cambiare lo stile, il colore e la larghezza dei tick di linea ;/--- Se è stato accumulato un numero critico di tick se (ticksgt; = N)/--- Il numero della barra da cui inizia il calcolo dei valori degli indiori int start = 0;/--- Se l'indiore è stato calcolato in precedenza, quindi impostare start sulla barra precedente se (prev_calculatedgt; 0) start = prev_calculated-1;/--- Ecco tutti i calcoli dei valori dell'indiore per (int i = start; ilt; rates_total; i ) {//--- Ottieni un resto della divisione del numero di barre di 2 * bars int rest = i% divisore;/--- Se il numero della barra è divisibile per 2 * bar se (rest == 0) {//--- Imposta la fine della sezione al prezzo alto di questa barra SectionBuffer [i] = Close [i] ; } /---Seil resto della divisione è uguale a barre, altrimenti {//--- Imposta la fine della sezione al prezzo alto di questa barra se (rest == barre) SectionBuffer [i] = Close [i];/--- Se non succede a, ignora la barra - imposta 0 else SectionBuffer [i] = 0; }}/--- Restituisce il valore prev_calculated per la prossima chiamata della funzione return (rates_total); }
EDIT: nvm hai già definito la sezione di disegno all'inizio. ?? davvero difficile leggere un codice come questo.
1 allegatoi risolto. Ora l'unico problema che vedo è che non si aggiorna all'ultimo bar ....
https://www.forexmad.com/attachments...1034885298.mq4
1 Attachment (s) Per me, è più facile vedere il mero con questo indiore, meno rumore. Forse, un buon programmatore può risolvere il problema che non corregge correttamente le sezioni, aggiunge colori (su o giù) ecc. Grazie per i tuoi sforzi ..