Получение значений из буфера iCustom
Есть пользовательский индикатор который судя по его отображению на графике работает верно, но проблема возникает при попытке получить значения. Возвращаются не те значения которые ожидаются в соответствии с view самого графика. Учитывая что индикатор на выходе умеет показывать только 3 значения: +1 -1 и 0, то можно точно сказать что проблема не в погрешности отрисовки самого графика, а в импорте или способе обращения к буферу.
Инициализация в OnInit проходит так:
И перед тем вытаскивать значения по индексу из буфера:
Если не какие ошибки не вылетели, то я ожидаю что в ExtOpenBuffer[0] будет лежать данные по текущему бару, но то что нарисовано на графике и значение которое я получаю не совпадают.
В моем импорте\вызове есть какие-то ошибки?
А разве MqlParam IndicatorCreate применяется к обычному созданию индикатора? Ведь MqlParam применяется только для создания индикатора через IndicatorCreate.
Уберите из вызова MqlParam и создайте индикатор без параметров.Ничего такого неправильного не видно. А может у индикатора не один буфер? Или с params что-то не то.
Не params это условно там просто параметры из примитивов, их много я так и написал params что бы не городить огород. А у индикатора да не один буфер:
//--- indicator buffers mapping SetIndexBuffer(0,ExtMainBuffer,INDICATOR_DATA); SetIndexBuffer(1,ExtColorBuffer,INDICATOR_COLOR_INDEX); SetIndexBuffer(2,ExtMA_1_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(3,ExtMA_2_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(4,ExtMA_3_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(5,ExtMA_4_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(6,ExtMA_5_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(7,ExtST_1_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(8,ExtST_2_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(9,ExtST_3_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(10,ExtST_4_Buffer,INDICATOR_CALCULATIONS); SetIndexBuffer(11,ExtST_5_Buffer,INDICATOR_CALCULATIONS); //--- set accuracy IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1); //--- sets first bar from what index will be drawn PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,33); //--- sets width of data line view PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2); //--- name for DataWindow IndicatorSetString(INDICATOR_SHORTNAME,"OpenGroup"); //--- get handles ExtMA_1_Handle=iMA(NULL,timeframe,ma_1_period,0,MODE_SMA,PRICE_OPEN); ExtMA_2_Handle=iMA(NULL,timeframe,ma_2_period,0,MODE_SMA,PRICE_OPEN); ExtMA_3_Handle=iMA(NULL,timeframe,ma_3_period,0,MODE_SMA,PRICE_OPEN); ExtMA_4_Handle=iMA(NULL,timeframe,ma_4_period,0,MODE_SMA,PRICE_OPEN); ExtMA_5_Handle=iMA(NULL,timeframe,ma_5_period,0,MODE_SMA,PRICE_OPEN); ExtST_1_Handle=iStochastic(NULL,st_1_timeframe,st_1_k_period,3,st_1_slowing,MODE_SMA,STO_CLOSECLOSE); ExtST_2_Handle=iStochastic(NULL,st_2_timeframe,st_2_k_period,3,st_2_slowing,MODE_SMA,STO_CLOSECLOSE); ExtST_3_Handle=iStochastic(NULL,st_3_timeframe,st_3_k_period,3,st_3_slowing,MODE_SMA,STO_CLOSECLOSE); ExtST_4_Handle=iStochastic(NULL,st_4_timeframe,st_4_k_period,3,st_4_slowing,MODE_SMA,STO_CLOSECLOSE); ExtST_5_Handle=iStochastic(NULL,st_5_timeframe,st_5_k_period,3,st_5_slowing,MODE_SMA,STO_CLOSECLOSE);
Но результирующий с INDICATOR_DATA только 1.
А разве MqlParam IndicatorCreate применяется к обычному созданию индикатора? Ведь MqlParam применяется только для создания индикатора через IndicatorCreate.
Уберите из вызова MqlParam и создайте индикатор без параметров.Не удачно назвал param здесь это не структура, просто много разных параметров примитивов.
Не удачно назвал param здесь это не структура, просто много разных параметров примитивов.
Есть пользовательский индикатор который судя по его отображению на графике работает верно, но проблема возникает при попытке получить значения. Возвращаются не те значения которые ожидаются в соответствии с view самого графика. Учитывая что индикатор на выходе умеет показывать только 3 значения: +1 -1 и 0, то можно точно сказать что проблема не в погрешности отрисовки самого графика, а в импорте или способе обращения к буферу.
Инициализация в OnInit проходит так:
И перед тем вытаскивать значения по индексу из буфера:
Если не какие ошибки не вылетели, то я ожидаю что в ExtOpenBuffer[0] будет лежать данные по текущему бару, но то что нарисовано на графике и значение которое я получаю не совпадают.
В моем импорте\вызове есть какие-то ошибки?