Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 631

 
Artyom Trishkin:
Ho difficoltà a guardare il codice sul tablet, ma la risposta è: scrivi il valore di X nel buffer.

Registrato. Funziona. Come ottenere che l'indicatore visualizzi cinque cifre decimali nei calcoli, come nel terminale del broker i prezzi di domanda e offerta a cinque cifre e nella loro visualizzazione dell'indicatore? Uno screenshot è allegato.

Ho ottenuto cinque cifre nei commenti a sinistra con simboli bianchi sullo schermo: (ma nell'indicatore quando riempio i buffer, mostra ancora quattro cifre NormalizeDouble (ExtMapBuffer2[0],Digits) - non aiuta.

  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:

Registrato. Funziona. Come ottenere che l'indicatore visualizzi cinque cifre decimali nei calcoli, come nel terminale del broker i prezzi di domanda e offerta a cinque cifre e nella loro visualizzazione dell'indicatore? Uno screenshot è allegato.

Ho provato a mostrare quotazioni a cinque cifre nel commento a sinistra con simboli bianchi sullo schermo (ma nell'indicatore quando riempio i buffer, mostra ancora quattro cifre NormalizeDouble (ExtMapBuffer2[0],Digits) - non aiuta.


IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

o

IndicatoreDigitali(_Digitali);

 

E qui, per la velocità media specificatamente indicata riempiendo l'array di indicatori ExtMapBuffer_Ave_Speed[0]= NormalizeDouble(X,1);

Ma disegna ancora degli zeri fino a 4 cifre decimali... Come faccio a visualizzare cinque cifre decimali?

 
Alexey Viktorov:

IndicatorSetInteger(INDICATOR_DIGITS, _Digits);

o

IndicatoreDigitali(_Digitali);

Senc. Funziona tutto!
 
Roman Shiredchenko:
Cenk. Funziona tutto!
Scusa, ho dimenticato di metterlo in OnInit()
 
Alexey Viktorov:
Scusa, ho dimenticato di metterlo in OnInit()

Si scopre che abbiamo una coda di "risposta" qui ;)

Non ha avuto tempo...

 
Alexey Viktorov. Artyom Trishkin
Scusa, ho dimenticato di scriverlo in OnInit()

Questo è comprensibile. Senc. Forse puoi darmi un suggerimento...

La MA è stata applicata all'indicatore di tick dal navigatore del terminale. Come posso ottenere i suoi valori nell'EA?

Se riesci a ficcare il naso dove leggerlo.

Mi sembra di ricordare... attraverso iMAOnArray?


 
Roman Shiredchenko:

Questo è comprensibile. Senc. Ci possono essere altri suggerimenti...

La MA è applicata dal navigatore del terminale all'indicatore di tick. Come ottenere i suoi valori nell'Expert Advisor?

Si può anche solo ficcare il naso dove si legge.

Mi sembra di ricordare... attraverso iMAOnArray?


iMAOnArray dovrebbe essere inserito nell'indicatore di tick ed emesso in esso nel buffer aggiuntivo.

Oppure, in un nuovo indicatore, prima dovresti leggere il contenuto dei buffer dell'indicatore tick nel buffer di calcolo, e poi metterci sopra iMAOnArray.

 
Artyom Trishkin:

1. iMAOnArray dovrebbe essere scritto nell'indicatore tick e l'output in esso in un buffer aggiuntivo.

Oppure, in un nuovo indicatore, prima si dovrebbe leggere il contenuto dei buffer degli indicatori tick nel buffer di calcolo, e poi applicare iMAOnArray ad esso.

Grazie. Artyom. Quindi 1.
 

Non riesco ad ottenere l'uguaglianza dei valori MA (colore Oro) periodo 1 (sul grafico) da Bid (verde - non è visibile a causa della linea MA) e i suoi stessi valori MA (1) calcolati tramite iMAonArray() dal buffer dell'indicatore di prezzo 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",

frecce verdi - valori uguali - come dovrebbero essere. Frecce rosse - valori diversi. Dovrebbe essere lo stesso di quelli verdi.


le tre frecce in alto dovrebbero avere i numeri UNO, ma sono diversi... Puoi dirmi la ragione della discrepanza...