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

 
Artyom Trishkin:
Tenho dificuldade em olhar para o código num comprimido, mas a resposta é - escrever o valor de X no buffer.

Gravado. Funciona. Como conseguir que o indicador exiba cinco casas decimais nos cálculos, como no terminal do corretor de cinco dígitos de cotação e pedir preços de cinco dígitos e na sua exibição do indicador? Uma imagem de ecrã é anexada.

Tenho cinco dígitos nos comentários à esquerda com símbolos brancos no ecrã: (mas no indicador quando preencho buffers, ainda mostra quatro dígitos NormalizeDouble (ExtMapBuffer2[0],Digits) - não ajuda.

  Comment(
              "tickCounter = ", tickCounter, "\n",
              "secondCounter, time_s  = ",    NormalizeDouble(time_s,2) , "\n",
            
              "ExtMapBuffer1[0] = ", DoubleToStr(ExtMapBuffer1[0],Digits) , "\n",
              "ExtMapBuffer2[0] = ", DoubleToStr(ExtMapBuffer2[0],Digits) , "\n",
              "ExtMapBuffer1[1] = ", DoubleToStr(ExtMapBuffer1[1],Digits) , "\n",
              "ExtMapBuffer2[1] = ", DoubleToStr(ExtMapBuffer2[1],Digits) , "\n",
              "ExtMapBuffer1[2] = ", DoubleToStr(ExtMapBuffer1[2],Digits) , "\n",
              "ExtMapBuffer2[2] = ", DoubleToStr(ExtMapBuffer2[2],Digits) , "\n",


 
Roman Shiredchenko:

Gravado. Funciona. Como obter cinco casas decimais no indicador nos cálculos, como no terminal do corretor de cinco dígitos de cotação e preços de venda de cinco dígitos a ser e na exibição do seu indicador? Uma imagem de ecrã é anexada.

Tentei mostrar citações de cinco dígitos no comentário da esquerda com símbolos brancos no ecrã. (No indicador quando encho os amortecedores, ainda mostra quatro dígitos NormalizeDouble (ExtMapBuffer2[0],Digits) - não ajuda.


IndicatorSetInteger(INDICADOR_DIGITOS,_Dígitos);

ou

IndicatorDigits(_Digitos);

 

E aqui, para velocidade média especificamente indicada preenchendo a matriz indicadora ExtMapBuffer_Ave_Speed[0]= NormalizeDuplo(X,1);

Mas ainda desenha zeros a 4 casas decimais. Como é que o faço mostrar cinco casas decimais?

 
Alexey Viktorov:

IndicatorSetInteger(INDICADOR_DIGITOS, _Dígitos);

ou

IndicatorDigits(_Digitos);

Senc. Está tudo a funcionar!
 
Roman Shiredchenko:
Cenk. Está tudo a funcionar!
Desculpe ter-me esquecido de o colocar no OnInit()
 
Alexey Viktorov:
Desculpe ter-me esquecido de o colocar no OnInit()

Acontece que temos aqui uma fila de "resposta";)

Não teve tempo...

 
Alexey Viktorov. Artyom Trishkin
Desculpe, esqueci-me de o escrever no OnInit()

Isso é compreensível. Senc. Talvez me possa dar uma dica...

O MA foi aplicado ao indicador de tick do navegador do terminal. Como obter os seus valores na EA?

Se puder apenas meter o nariz onde ler sobre o assunto.

Parece que me lembro... através do iMAOnArray?


 
Roman Shiredchenko:

Isso é compreensível. Senc. Pode haver algumas outras dicas...

O MA é aplicado desde o navegador do terminal até ao indicador de tick. Como obter os seus valores no Expert Advisor?

Pode apenas meter o nariz onde ler sobre o assunto.

Parece que me lembro... através do iMAOnArray?


O iMAOnArray deve ser introduzido no indicador de carrapato e a sua saída no tampão adicional.

Ou, num novo indicador, deve primeiro ler o conteúdo dos amortecedores do indicador de tick no amortecedor de cálculo, e depois colocar-lhe iMAOnArray.

 
Artyom Trishkin:

1. iMAOnArray deve ser escrito no indicador de carrapato e nele ser emitido um tampão adicional.

Ou, num novo indicador, deve primeiro ler o conteúdo dos amortecedores de indicador de tick no amortecedor de cálculo, e depois aplicar-lhe o iMAOnArray.

Obrigado. Artyom. Portanto, 1.
 

Não posso alcançar a igualdade de valores de MA (cor Ouro) período 1 (no gráfico) de Bid (verde - não é visível devido à linha MA) e os seus mesmos valores de MA (1) calculados via iMAonArray() a partir do buffer do indicador de preço de Bid.

      double MA_0=iMAOnArray(ExtMapBuffer1,0,MA_Period,0,MODE_EMA,0); 
      double MA_1=iMAOnArray(ExtMapBuffer1,0,MA_Period,0,MODE_EMA,1); 
      double MA_2=iMAOnArray(ExtMapBuffer1,0,MA_Period,0,MODE_EMA,2); 
   
       


     if (time_s!=0) 
       Comment(
              "tickCounter = ", tickCounter, "\n",
              "secondCounter, time_s  = ",    NormalizeDouble(time_s,2) ,   "\n",
            
           ...
              "ExtMapBuffer_MA[0] = ", DoubleToStr(MA_0,Digits),"\n",
              "ExtMapBuffer_MA[1] = ", DoubleToStr(MA_1,Digits),"\n",
              "ExtMapBuffer_MA[2] = ", DoubleToStr(MA_2,Digits),"\n",

setas verdes - valores iguais - como deveriam ser. Setas vermelhas - valores diferentes. Devem ser os mesmos que os verdes.


as três setas superiores devem ter números UM, mas são diferentes... Pode dizer-me a razão da discrepância...


Razão: