Рисование индикаторов в эксперте

 

Добрый день!

Подскажите, пожалуйста, пытаюсь включить в код эксперта отрисовку мувингов. Столкнулся с проблемой: при тестировании отрисовка выполняется после остановки тестирования, а не вовремя...

Возможно ли это исправить?

Спасибо.

 
kirillov:

Добрый день!

Подскажите, пожалуйста, пытаюсь включить в код эксперта отрисовку мувингов. Столкнулся с проблемой: при тестировании отрисовка выполняется после остановки тестирования, а не вовремя...

Возможно ли это исправить?

Спасибо.

Включите визуализацию, поставьте скоростной движок на 1, запустите тест, и вручную перетащите мувинг на чарт. После этого можно увеличить скорость.
 
Reshetov:
Включите визуализацию, поставьте скоростной движок на 1, запустите тест, и вручную перетащите мувинг на чарт. После этого можно увеличить скорость.
Юрий, проблема в отрисовке индиктаоров, а не истории, т.е. рисуются тика, выставляются ордера, но линии индикатора не отрисовываются...
 

Изучая данную проблему, прочёл: https://book.mql4.com/ru/samples/icustom

Цитата:

Существует группа функций, которые можно использовать только в пользовательских индикаторах, и запрещено использовать в экспертах и скриптах: IndicatorBuffers(), IndicatorCounted (), IndicatorDigits(), IndicatorShortName(), SetIndexArrow(), SetIndexBuffer(), SetIndexDrawBegin(), SetIndexEmptyValue(), SetIndexLabel(), SetIndexShift(), SetIndexStyle(), SetLevelStyle(), SetLevelValue().

Конец цитаты.

Возникает вопрос, почему при написании эксперта эти функции частично работают... код эксперта без торговой и аналитической части:

#property  indicator_chart_window
 
#property  indicator_buffers 2
#property  indicator_color1  Blue
#property  indicator_color2  Blue
 
//--- Variable
extern int fastMA = 112;                              // period of fast indicator
extern int slowMA = 600;                              // period of slow indicator
 
double ind_buffer1[];                                 // buffer of fast indicator
double ind_buffer2[];                                 // buffer of slow indicator
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
//---- Parameters of drawing
   SetIndexBuffer(0,ind_buffer1);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1, Blue);
 
//   SetIndexBuffer(1,ind_buffer2);
//   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1, Blue);
 
   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
//--- Calculation and drawing of indicators
   int counted_bars=IndicatorCounted();
 
   for(int x=0;x<Bars;)
   {
      x++;
      ind_buffer1[x]=iMA(NULL,0,fastMA,0,MODE_SMMA,PRICE_CLOSE,x);
//      ind_buffer2[x]=iMA(NULL,0,slowMA,0,MODE_SMMA,PRICE_CLOSE,x);
   }
 
//--- Conclusion of the diagnostic information   
   ObjectCreate("Diagnostic info", OBJ_TEXT, 0, D'2004.02.20 12:30', 1.0045);
   
//----
   return(0);
}
//+------------------------------------------------------------------+
 
Вы немного запутались, но читаете правильную книгу). Эксперт не может выводить на чарт индикаторы, но может использовать их значения через iCustom, может содержать блок вычисления значения индикатора (встраивание кода индикатора). Все что может эксперт в плане вывода на чарт - это объекты и комментарии. Все другое просто ни к чему.. Для наглядности, соответствующий индикатор может быть дополнительно наброшен на чарт. А то что Вы привели - это код ИНДИКАТОРА, но не эксперта, потому и работает.
 

спасибо!