Domande per principianti in MQL5. I professionisti non passano. - pagina 6

 
_o0O:

Soprattutto nessuno, quindi ne consegue che qualsiasi domanda è solo benvenuta.

L'aiuto non contiene questa sfumatura. DRAW_NONE non funziona né #proprietà né in PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE), PlotIndexSetString(0, PLOT_LABEL, "Buff") non funziona nemmeno, quindi qual è la logica dietro lo specificare clrNONE per raggiungere questo obiettivo?

Inoltre, non tutti possono leggere la documentazione della lingua.

Il codice presentato ha tutto per controllare e capire.

 
Alexey Viktorov:

Inoltre, non tutti sanno leggere la documentazione della lingua.

Il codice fornito ha tutto il necessario per controllarlo e capirlo.

Vuoi parlare?

OK. Per favore, mostratemi il posto nell'aiuto dove c'è una soluzione al mio problema. E il tuo codice è una stampella, caratteristica non documentata, poiché specificare clrNONE per non rendere il buffer sembra delirante.

 
Alexey Viktorov:

Non è necessario mettere il tipo DRAV_NONE, ma il colore clr_NONE.

Ecco il codice di prova

Spiegare:

limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!

Perché non puoi? Perché in rosso con un'esclamazione?

 
_o0O:

Come posso fare in modo che alcuni buffer dell'indicatore non siano disegnati sul grafico, ma visualizzino i loro valori nella" Finestradati" dell'indicatore?

Lo faccio:


ma l'indicatore disegna ancora un buffer.

Potete vedere un esempio qui:

3TF_RSI_Average
3TF_RSI_Average
  • www.mql5.com
Индикатор Three timeframes RSI Average - отображает в отдельном окне три индикатора Relative Strength Index с заданных таймфреймов и их среднее значение. Имеет десять настраиваемых параметров: RSI period - период расчёта RSIOverbought - уровень перекупленностиOversold - уровень перепроданностиDrawing mode - режим рисованияFirst RSI timeframe...
 
Artyom Trishkin:

Potete vedere un esempio qui:

No, non è questo.

Nel tuo esempio, 4 buffer sono disegnati e 4 sono nella finestra dei dati. quello che serve è che non siano disegnati, ma che siano nella finestra dei dati e abbiano un nome.

 
_o0O:

No, non è questo.

Nel tuo esempio, 4 buffer sono disegnati e 4 sono nella finestra dei dati. Quello che serve è che non siano disegnati, ma che siano nella finestra dei dati e abbiano un nome.

E se si guarda con attenzione? C'è una disabilitazione della visualizzazione di tre dei quattro buffer - uno per uno. Ma quando sono disabilitati nella finestra dei dati, continuano ad essere visualizzati, e con nomi dati programmaticamente - tutto come richiesto. O ho frainteso la domanda?

 
Artyom Trishkin:

Che ne dici di un'occhiata più da vicino? C'è un'opzione per disabilitare la visualizzazione di tre dei quattro buffer - uno alla volta. Ma quando sono spenti, sono ancora visualizzati nella finestra dei dati, e con i nomi programmati - proprio come hai chiesto. O ho frainteso la domanda?

Sì, vedo che c'è

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1);

InpShowRSI1 prende i valori 0 o 1, è così che funziona.

Ma ho specificato PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE); e non funziona

 
_o0O:

sì, posso vedere lì

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1);

InpShowRSI1 prende i valori 0 o 1, è così che funziona.

Ma ho specificato PlotIndexSetInteger(0,PLOT_DRAW_TYPE, DRAW_NONE); e non ha funzionato

DRAW_NONE == 0

DRAW_LINE == 1

Quindi hai qualcos'altro da qualche parte. In teoria, dovrebbe funzionare anche per voi.

 
Artyom Trishkin:

Spiegare:

Perché non puoi? Perché in rosso con un'esclamazione?

Se l'indicatore calcolerà barre multiple, tale implementazione volerà fuori dalla matrice. Quindi bisogna sforzare i muscoli della testa in ogni caso...
 
Alexey Viktorov:
Se l'indicatore calcolerà diverse barre, tale implementazione volerà fuori dalla matrice. Pertanto, in ogni caso dobbiamo sforzare i muscoli della testa.

No, non è necessario. Tutto viene fatto una volta al limite>1. Questa è la prima esecuzione e il caricamento della storia. E se avete smoothing period_sm=10, allora il limite in questo caso dovrebbe essere inferiore di 10. Di conseguenza:

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - valore per inizializzare il buffer - 0 o EMPTY_VALUE - come appropriato. O forse -100500 ...