Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1129

 
Alexey Viktorov:

Perché devi fare un così gran casino? Qual è il problema di assegnare prima i buffer da visualizzare e poi i buffer ausiliari?

Una particolarità dell'algoritmo, i buffer ausiliari sono sempre un numero fisso, mentre il numero di buffer da visualizzare varia. Per favore, rispondete alla domanda del post precedente su come specificare il tutto correttamente?


Alexey Viktorov:

Per DRAW_HISTOGRAM2 sono specificati 3 buffer e la sequenza è obbligatoria, 2 buffer di valore prima seguiti da un buffer di colore. Ma c'è una differenza tra DRAW_HISTOGRAM e DRAW_HISTOGRAM2 in quanto DRAW_HISTOGRAM è disegnato da zero al valore nel buffer, mentre DRAW_HISTOGRAM2 è disegnato dal valore di un buffer al valore di un altro buffer.

Dalla descrizione di DRAW_HISTOGRAM2 su https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"Il numero di buffer richiesto per costruire DRAW_HISTOGRAM2 è 2".

Da dove verrebbe allora il terzo buffer? E nell'esempio nello stesso link ci sono solo due buffer, ma non è specificato se i colori possono essere interlacciati come con un normale DRAW_HISTOGRA?
 
The_Sheikh:

Una particolarità dell'algoritmo, i buffer ausiliari sono sempre un numero fisso, mentre il numero di buffer mappati varia. Per favore, rispondete alla domanda del post precedente su come specificare il tutto correttamente?


Dalla descrizione di DRAW_HISTOGRAM2 su https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"Il numero di buffer richiesto per costruire DRAW_HISTOGRAM2 è 2".

Da dove verrebbe allora il terzo buffer? E nell'esempio nello stesso link ci sono solo due buffer, ma non è specificato se i colori possono essere interlacciati come con un normale DRAW_HISTOGRA?

Sì, scusate la mia mancanza di attenzione. Intendevo DRAW_COLOR_HISTOGRAM2 e DRAW_COLOR_HISTOGRAM

 
The_Sheikh:

Una particolarità dell'algoritmo, i buffer ausiliari sono sempre un numero fisso e i buffer visualizzati sono un numero diverso. Per favore, rispondete alla domanda del post precedente su come specificare correttamente tutto questo?

Non mi sono mai preso in giro così prima d'ora. Se sei disposto, sperimenta.

 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL4 MT4 MetaTrader 4".
 

Come posso impostare correttamente i colori con PlotIndexSetInteger()?

Quando ho impostato

#property indicator_color3 clrRed,clrGreen

i colori sono impostati correttamente, ma quando uso il

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

allora il primo colore della linea è rosso, ma il secondo (e quelli successivi) sono neri (di default) invece che verdi per qualche motivo.

 
The_Sheikh:

Come posso impostare correttamente i colori con PlotIndexSetInteger()?

Quando specifico

#property indicator_color3 clrRed,clrGreen

i colori sono impostati correttamente, ma quando uso il

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

allora il primo colore della linea è rosso, ma il secondo è nero (di default) invece che verde per qualche motivo.

Perché mettere un modificatore?

 
Alexey Viktorov:

Perché mettere un modificatore?

Quale, dove? Ho guardato l'esempio nella documentazione di MQL5 e ho fatto lo stesso. Scrivilo, come è corretto?

 
The_Sheikh:

Quale, dove? Ho guardato l'esempio nella documentazione di MQL5 e ho fatto lo stesso. Scrivilo, come è corretto?

Mostra tutto il codice per l'inizializzazione dei buffer degli indicatori.
 
The_Sheikh:

Quale, dove? Ho guardato l'esempio nella documentazione di MQL5 e ho fatto lo stesso. Come farlo bene?

L'ho cercato

bool  PlotIndexSetInteger( 
   int  plot_index,        // индекс графического стиля 
   int  prop_id,           // идентификатор свойства 
   int  prop_value         // устанавливаемое значение 
   );

e ha fatto questo.

bool  PlotIndexSetInteger( 
   int  2,                 // индекс графического стиля 
   int  PLOT_LINE_COLOR,   // идентификатор свойства 
   int  0,                 // модификатор свойства 
   int  clrGreen           // устанавливаемое значение 
   )

E nella documentazione si dice

[in] Modificatore della proprietà specificata. Solo le proprietà dell'indice di colore richiedono un modificatore.


Questo significa che il modificatore deve essere se devono essere assegnati diversi colori di livelli di indicatori di base, livelli di Fibo o qualcosa di simile
 
Artyom Trishkin:
Mostra tutto il codice per l'inizializzazione dei buffer degli indicatori.

Qualcosa del genere

#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 2

#define  GreenC 0x00FF00
#define  RedC 0x0000FF
#property indicator_type1 DRAW_NONE
#property indicator_type2 DRAW_COLOR_HISTOGRAM2
//#property indicator_color2 GreenC,RedC

double
Arr11[],
Arr21[],
Arr22[],
Arr23[];

void OnInit()
{
SetIndexBuffer(0,Arr11,INDICATOR_CALCULATIONS);
SetIndexBuffer(1,Arr21,INDICATOR_DATA);
SetIndexBuffer(2,Arr22,INDICATOR_DATA);
SetIndexBuffer(3,Arr23,INDICATOR_COLOR_INDEX);
IndicatorSetInteger(INDICATOR_DIGITS,Digits());
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,4);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC);
//PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
)
{
ArraySetAsSeries(open,0);
ArraySetAsSeries(close,0);
ArraySetAsSeries(low,0);
ArraySetAsSeries(high,0);
ArrayInitialize(Arr11,0.0);
ArrayInitialize(Arr21,0.0);
ArrayInitialize(Arr22,0.0);
ArrayInitialize(Arr23,0.0);

for (int I=0;I<rates_total;I++)
{
Arr22[I]=low[I];
Arr23[I]=0.0;
//Arr23[I]=1.0;
}

return(rates_total);
}

Alexey Viktorov:

L'ho cercato

e ha fatto questo.

E lì, nella documentazione si dice

Questo significa che il modificatore dovrebbe essere se vengono assegnati diversi colori dei livelli degli indicatori di base, livelli fibo e qualcosa di simile

Esattamente il mio caso.

Ecco un pezzo dell'esempio per DRAW_COLOR_HISTOGRAM2 nel manuale:

/--- для каждого цветового индекса зададим новый цвет случайным образом
   for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
     {
      //--- получим случайное число
      int number=MathRand();
      //--- получим индекс в массиве col[] как остаток от целочисленного деления
      int i=number%size;
      //--- установим цвет для каждого индекса как свойство PLOT_LINE_COLOR
      PlotIndexSetInteger(0,                    //  номер графического стиля
                          PLOT_LINE_COLOR,      //  идентификатор свойства
                          plot_color_ind,       //  индекс цвета, куда запишем цвет
                          cols[i]);             //  новый цвет

Qui plot_colors = 8, cols[] - array con diversi colori. Ma il terminale non percepisce alcun colore tranne il primo.