Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 631

 
Artyom Trishkin:
На планшета тяжело код смотреть, но ответ напрашивается - записывайте значение Х в буфер.

Записал. Работает. Как добиться отображение пяти знаков после запятой в индикаторе в расчётах, как в терминале  у брокера пятизначного котировки бид и аск цены пятизначные чтобы были и в отображении их индикатором? Скрин прилагаю.

причём в комментах слева белыми символами на экране добился пяти знаков кодом:  (а в индикаторе буферы когда заполняю, то всё равно кажет четыре знака NormalizeDouble (ExtMapBuffer2[0],Digits) - не помогает.

  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:

Записал. Работает. Как добиться отображение пяти знаков после запятой в индикаторе в расчётах, как в терминале  у брокера пятизначного котировки бид и аск цены пятизначные чтобы были и в отображении их индикатором? Скрин прилагаю.

причём в комментах слева белыми символами на экране добился пяти знаков кодом:  (а в индикаторе буферы когда заполняю, то всё равно кажет четыре знака NormalizeDouble (ExtMapBuffer2[0],Digits) - не помогает.


IndicatorSetInteger(INDICATOR_DIGITS, _Digits);

или

IndicatorDigits(_Digits);

 

Причём, вот для средней скорости конкретно указал заполнении индикаторного массива     ExtMapBuffer_Ave_Speed[0]= NormalizeDouble(X,1);

А он всё равно нули рисует до 4-х знаков после запятой округляет... Как сделать, чтобы отображал пять знаков?

 

 
Alexey Viktorov:

IndicatorSetInteger(INDICATOR_DIGITS, _Digits);

или

IndicatorDigits(_Digits);

Сенк-с. Всё заработало!
 
Roman Shiredchenko:
Сенк-с. Всё заработало!
Извини забыл написать что это надо в OnInit()
 
Alexey Viktorov:
Извини забыл написать что это надо в OnInit()

У нас тут оказывается очередь "на ответить" ;)

Не успел...

 
Alexey Viktorov. Artyom Trishkin
Извини забыл написать что это надо в OnInit()

Это понятно. Сенк-с. Там попутно может. подскажете ещё...

МА наложил из навигатора терминала на индикатор тиков. Как её значения получать в эксперте?

Можно просто ткнуть носом где почитать об этом.

Кажись вспомнил... через       iMAOnArray


 
Roman Shiredchenko:

Это понятно. Сенк-с. Там попутно может. подскажете ещё...

МА наложил из навигатора терминала на индикатор тиков. Как её значения получать в эксперте?

Можно просто ткнуть носом где почитать об этом.

Кажись вспомнил... через       iMAOnArray


iMAOnArray нужно вписать в индикатор тиков и выводить в нём же в дополнительный буфер.

Либо в новом индикаторе сначала прочитать содержимое буферов индикатора тиков в расчётный буфер, а потом на него уже натравить iMAOnArray.

 
Artyom Trishkin:

1. iMAOnArray нужно вписать в индикатор тиков и выводить в нём же в дополнительный буфер.

2. Либо в новом индикаторе сначала прочитать содержимое буферов индикатора тиков в расчётный буфер, а потом на него уже натравить iMAOnArray.

Благодарю. Артём. Так 1. похоже сделаю...
 

Не могу добиться равенства значений индикатора МА (цвет Gold) период 1 (на графике)  от Bid (зелёного цвета - её не видно из-за линии МА) и её же МА (1) значений, рассчитанной через iMAonArray() от индикаторного буфера цен 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",

зелёные стрелочки - равные значения - как и должно быть. Красные стрелочки - отличные значения. Должны быть, как и у зелёных.


на трёх верхних стрелках должны быть числа ОДИНАКОВЫЕ, а они разные... Подскажите, причину расхождения...


Причина обращения: