Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1034

 
The_Sheikh:

Olá, alguém pode explicar em termos claros o que são"Plots" na MQL5? Não estão relacionados com buffers, mas a propriedade indicator_plots cria uma lista de propriedades de objectos de desenho semelhantes a buffers. Ao utilizar ferramentas MQL4, ficou claro que era feita uma referência a um objecto de desenho específico, e agora existe um novoindicador de propriedade depré-processador_plots que define o número do que não é claro.

Na MQL4, o número de amortecedores a serem exibidos foi especificado utilizando o

#property indicator_buffers 1

Na função OnInit(), pode adicionar vários amortecedores para cálculos

IndicatorBuffers(3);

E na MQL5, a mesma coisa está escrita em duas directivas

#property indicator_buffers 3
#property indicator_plots   1

Isto significa que existem 3 amortecedores no total, enquanto 1 amortecedor será exibido no gráfico. Os outros dois serão utilizados para os cálculos. E na MQL5, uma das adicionais pode ser utilizada para exibição a cores.

 
fxsaber:

É provavelmente mais claro compreender se correr este indicador em MT4 e MT5. Ao converter-me para MT5 tive de utilizar parcelas

Porque apenas dois amortecedores devem ser desenhados.

Já mais perto da verdade. Mas, nesse caso, e se o segundo e o sexto amortecedores devem ser sorteados? Será que não há maneira?

Alexey Viktorov:

Poderíamos adicionar vários amortecedores para cálculos nafunção OnInit()

A propósito, existe alguma alternativa a esta função na MQL5?

 
The_Sheikh:

Isto está mais próximo da verdade. Mas nesse caso, e se o segundo e o sexto forem sorteados? Nada?

Não sei.

 
The_Sheikh:

Isto está mais próximo da verdade. Mas nesse caso, e se o segundo e o sexto forem sorteados? Nem pensar?

1) "Segundo e sexto" - o senhor decide a distribuição dos números ;)

2) INDICATOR_CALCULATIONS e DRAW_NONE vs INDICATOR_DATA e não-DRAW_NONE (qualquer outro) funciona para qualquer número de sequência.

 
The_Sheikh:

Isto está mais próximo da verdade. Mas nesse caso, e se o segundo e o sexto forem sorteados? Nem pensar?

Basta definir o tipo de tampão, qual será mostrado, qual conterá a cor e qual conterá apenas valores auxiliares.


INDICADOR_DADOS

Dados do desenho

INDICADOR_COLOR_INDEX

Renderização de cores

INDICADORES_CÁLCULOS

Tampões adicionais para cálculos intermédios

 
The_Sheikh:

A propósito, existe alguma alternativa a esta função na MQL5?

Não há necessidade de tal função em mql5. Dei-vos um exemplo de como o escrever. A diferença com mql4 é apenas em sequência e ortografia.

 
Obrigado a todos pela vossa resposta!
 

Suponhamos que o número máximo de barras no gráfico é fixado em 10000. Depois, no guião e no indicador, a função Bars() devolve o número especificado nas definições + o número de novos castiçais que apareceram.

Assim, o número de castiçais mostrado no gráfico não será limitado a 10000?

Como posso saber em MQL exactamente o número especificado nas definições do terminal?

Se o número de barras atingir o tipo int máximo, o que acontecerá ao número de candelabros e posições dos elementos da matriz?

 
The_Sheikh:

Como é que sei exactamente quantas barras estão definidas nas definições do terminal no MQL?

TerminalInfoInteger(TERMINAL_MAXBARS))
The_Sheikh:

Se o número de barras atingir o valor máximo do tipo int, então o que irá acontecer ao número de castiçais

o número de barras aumentará, ou seja, excederá o valor deTERMINAL_MAXBARS

E depois, por alguns algoritmos desconhecidos, o terminal "reinicia as barras extra" - quando o número real de barras no gráfico estiver no const int rates_total, estará no iBars()https://www.mql5.com/ru/docs/series/ibars

isto é, como mostrado acima - TERMINAL_MAXBARS são dados da janela do terminal, e iBars() é o valor real das barras no gráfico


The_Sheikh:

e com posições de elementos de arrays-timeseries?

se estamos a falar de buffers indicadores, o terminal atribui-lhes memória e o tamanho da matriz, associado ao buffer indicador, é sempre igual aos elementos rate_total

indicador para testes:

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);
  }

registo indicador:

2019.04.30 19:10:12.247 tarifas (EURUSD,M1) tarifas_total = 50000, TERMINAL_MAXBARS = 50000

2019.04.30 19:10:29.699 tarifas (EURUSD,M1) tarifas_total = 50001, TERMINAL_MAXBARS = 50000

2019.04.30 19:11:29.392 tarifas (EURUSD,M1) tarifas_total = 50002, TERMINAL_MAXBARS = 50000

2019.04.30 19:12:30.125 tarifas (EURUSD,M1) tarifas_total = 50003, TERMINAL_MAXBARS = 50000


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

Quero familiarizar-me com o desenvolvimento de interfaces em MQL5 no EasyAndFastGUI

Existem 10 partes (ou quê?) de artigos de"Interfaces Gráficas" a partir de 2015

Tenho uma pergunta, são todos consistentes, ou não faz sentido ler os mais antigos?