Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1034

 
The_Sheikh:

Salve, qualcuno può spiegare in modo chiaro cosa sono le"Trame" in MQL5? Non sono collegate ai buffer, ma la proprietà indicator_plots crea una lista di proprietà dell'oggetto di disegno simile ai buffer. Quando si usano gli strumenti MQL4, era chiaro che si faceva riferimento a un oggetto di disegno specifico, e ora c'è una nuova proprietà del preprocessoreindicator_plots che definisce il numero di ciò che non è chiaro.

In MQL4, il numero di buffer da visualizzare era specificato utilizzando l'opzione

#property indicator_buffers 1

Nella funzione OnInit(), si possono aggiungere diversi buffer per i calcoli

IndicatorBuffers(3);

E in MQL5, la stessa cosa è scritta in due direttive

#property indicator_buffers 3
#property indicator_plots   1

Significa che ci sono 3 buffer in totale, mentre 1 buffer sarà visualizzato sul grafico. Gli altri due saranno utilizzati per i calcoli. E in MQL5, uno di quelli aggiuntivi può essere usato per la visualizzazione dei colori.

 
fxsaber:

Probabilmente è più chiaro da capire se si esegue questo indicatore in MT4 e MT5. Quando ho convertito a MT5 ho dovuto usare le trame

Perché devono essere disegnati solo due buffer.

Già più vicino alla verità. Ma in questo caso cosa succede se il secondo e il sesto buffer devono essere disegnati? Non c'è modo?

Alexey Viktorov:

Potremmo aggiungere diversi buffer per i calcoli nellafunzione OnInit()

A proposito, c'è un'alternativa a questa funzione in MQL5?

 
The_Sheikh:

Questo è più vicino alla verità. Ma in questo caso, cosa succede se il secondo e il sesto devono essere disegnati? Niente?

Non lo so.

 
The_Sheikh:

Questo è più vicino alla verità. Ma in questo caso, cosa succede se il secondo e il sesto devono essere disegnati? Impossibile?

1) "Secondo e sesto" - sei tu a decidere la distribuzione dei numeri ;)

2) INDICATOR_CALCULATIONS e DRAW_NONE vs INDICATOR_DATA e non-DRAW_NONE (qualsiasi altro) funziona per qualsiasi numero di sequenza.

 
The_Sheikh:

Questo è più vicino alla verità. Ma in questo caso, cosa succede se il secondo e il sesto devono essere disegnati? Impossibile?

Basta impostare il tipo di buffer, quale sarà mostrato, quale conterrà il colore e quale conterrà solo valori ausiliari.


DATI INDICATORE

Dati del disegno

INDICE_COLORE_INDICE

Colori di rendering

CALCOLI_INDICATORI

Buffer aggiuntivi per i calcoli intermedi

 
The_Sheikh:

A proposito, c'è un'alternativa a questa funzione in MQL5?

Non c'è bisogno di una tale funzione in mql5. Ti ho dato un esempio di come scriverlo. La differenza con mql4 è solo nella sequenza e nell'ortografia.

 
Grazie a tutti per aver risposto!
 

Supponiamo che il numero massimo di barre sul grafico sia impostato a 10000. Poi nello script e nell'indicatore, la funzione Bars() restituisce il numero specificato nelle impostazioni + il numero di nuove candele apparse.

Quindi, il numero di candele mostrate nel grafico non sarà limitato a 10000?

Come posso sapere in MQL esattamente il numero specificato nelle impostazioni del terminale?

Se il numero di barre raggiunge il tipo int massimo, cosa succederà al numero di candele e alle posizioni degli elementi della matrice?

 
The_Sheikh:

Come faccio a sapere in MQL esattamente quante barre sono impostate nelle impostazioni del terminale?

TerminalInfoInteger(TERMINAL_MAXBARS))
Lo_Sceicco:

Se il numero di barre raggiunge il valore massimo di tipo int, allora cosa succederà al numero di candele

il numero di barre aumenterà, cioè supererà il valoreTERMINAL_MAXBARS

E poi, per qualche algoritmo sconosciuto, il terminale "azzera le barre extra" - quando il numero effettivo di barre nel grafico sarà nel const int rates_total, sarà nel iBars()https://www.mql5.com/ru/docs/series/ibars

cioè, come mostrato sopra - TERMINAL_MAXBARS sono i dati dalla finestra del terminale, e iBars() è il valore effettivo delle barre sul grafico


Lo_Sceicco:

e con le posizioni degli elementi di arrays-timeseries?

se stiamo parlando di buffer di indicatori, il terminale alloca la memoria per loro e la dimensione dell'array, associata al buffer di indicatori, è sempre uguale a rates_total elements

indicatore per i test:

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[])
  {
//---
   static datetime t=0;
   if(t!=time[rates_total-1])
     {
      Print("rates_total = ",rates_total, ", TERMINAL_MAXBARS = ",TerminalInfoInteger(TERMINAL_MAXBARS));
      t=time[rates_total-1];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

registro degli indicatori:

2019.04.30 19:10:12.247 rates (EURUSD,M1) rates_total = 50000, TERMINAL_MAXBARS = 50000

2019.04.30 19:10:29.699 tassi (EURUSD,M1) rates_total = 50001, TERMINAL_MAXBARS = 50000

2019.04.30 19:11:29.392 tassi (EURUSD,M1) rates_total = 50002, TERMINAL_MAXBARS = 50000

2019.04.30 19:12:30.125 tassi (EURUSD,M1) rates_total = 50003, TERMINAL_MAXBARS = 50000


Документация по MQL5: Доступ к таймсериям и индикаторам / iBars
Документация по MQL5: Доступ к таймсериям и индикаторам / iBars
  • www.mql5.com
Количество баров в истории по соответствующему символу и периоду, но не более чем задано в настройках платформы параметром "Макс. баров в окне" ("Max bars in chart")
 

Voglio familiarizzare con lo sviluppo di interfacce in MQL5 su EasyAndFastGUI

Ci sono 10 parti (o cosa?) di articoli"Graphical Interfaces" del 2015

Ho una domanda: sono tutti coerenti o non ha senso leggere quelli più vecchi?