Есть пользовательский индикатор который судя по его отображению на графике работает верно, но проблема возникает при попытке получить значения. Возвращаются не те значения которые ожидаются в соответствии с 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 здесь это не структура, просто много разных параметров примитивов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть пользовательский индикатор который судя по его отображению на графике работает верно, но проблема возникает при попытке получить значения. Возвращаются не те значения которые ожидаются в соответствии с view самого графика. Учитывая что индикатор на выходе умеет показывать только 3 значения: +1 -1 и 0, то можно точно сказать что проблема не в погрешности отрисовки самого графика, а в импорте или способе обращения к буферу.
Инициализация в OnInit проходит так:
И перед тем вытаскивать значения по индексу из буфера:
Если не какие ошибки не вылетели, то я ожидаю что в ExtOpenBuffer[0] будет лежать данные по текущему бару, но то что нарисовано на графике и значение которое я получаю не совпадают.
В моем импорте\вызове есть какие-то ошибки?