Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 338

 

Может кто-то подскажет почему мой индикатор в тестах показывается и остаётся в окне индикатора по окончание тестов, но если вызвать через iCustom в эксперте, то индикатор не показывается?

//+------------------------------------------------------------------+
//|                                             Tiscks_Window_49.mq4 |
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 clrLawnGreen

double ExtMapBuffer1[];
int Draw_Bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorShortName("Ask");
   IndicatorDigits(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0,"Ask");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);
   for(int i=Bars-2; i>=0; i --)
     {
      ExtMapBuffer1[i+1]=ExtMapBuffer1[i];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


Может в iCustom я не правильно вызываю?

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double sep_window=iCustom(Symbol(),PERIOD_CURRENT,"Tiscks_Window_49",0,0);
   Print(" sep_window= ",sep_window);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

Может кто-то подскажет почему мой индикатор в тестах показывается и остаётся в окне индикатора по окончание тестов, но если вызвать через iCustom в эксперте, то индикатор не показывается?
Может в iCustom я не правильно вызываю?

Все правильно. Попробуйте с другими индикаторами - будет то же самое...

 
Nauris Zukas:

Может кто-то подскажет почему мой индикатор в тестах показывается и остаётся в окне индикатора по окончание тестов, но если вызвать через iCustom в эксперте, то индикатор не показывается?


Может в iCustom я не правильно вызываю?

ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);

попробуйте поставить просто =Ask;
или, для проверки close[0]

и тут, зачем вам перемещать всю историю? Достаточно первых 100-300 баров

for(int i=Bars-2; i>=0; i --)
 
LRA:

Все правильно. Попробуйте с другими индикаторами - будет то же самое...

Пробовал RSI, всё работает. Где-то какой то нюанс, пока не понимаю где.


 
Taras Slobodyanik:

попробуйте поставить просто =Ask;
или, для проверки close[0]

и тут, зачем вам перемещать всю историю? Достаточно первых 100-300 баров

Поменял но тоже не помогает.

 
Nauris Zukas:

Может кто-то подскажет почему мой индикатор в тестах показывается и остаётся в окне индикатора по окончание тестов, но если вызвать через iCustom в эксперте, то индикатор не показывается?


Может в iCustom я не правильно вызываю?

Наверное потому, что так написан индикатор. Какова вероятность, что он просто не успевает при вызове из советника пересчитать все бары?

Попробуй сделать пересчёт всех баров только один раз, а дальше только вновь поступивший вызов из советника.
 
Alexey Viktorov:

Какова вероятность, что он просто не успевает при вызове из советника пересчитать все бары?

В эксперте я вывожу Print и там видно что цены есть, значит бары пересчитаны.

Alexey Viktorov:
Попробуй сделать пересчёт всех баров только один раз, а дальше только вновь поступивший вызов из советника.

Пока не проверил этот вариант, пока думаю как это сделать.

 

Доброго времени суток, делаю первые шажки, прочитал учебник и т.д., возможно неправильно сформулирую вопрос, но все же.....

Возникла необходимость получить тиковый архив за последние пару лет, если возможно, то и на более продолжительный срок, для анализа в стороннем приложении. Возможно ли средствами mql этот архив достать(сохранить в файл уже сам разберусь))),или на худой конец архив баров, может я неправильно понял, но Bars содержит только данные текущего графика, спасибо.

 
ijonhson:

Доброго времени суток, делаю первые шажки, прочитал учебник и т.д., возможно неправильно сформулирую вопрос, но все же.....

Возникла необходимость получить тиковый архив за последние пару лет, если возможно, то и на более продолжительный срок, для анализа в стороннем приложении. Возможно ли средствами mql этот архив достать(сохранить в файл уже сам разберусь))),или на худой конец архив баров, может я неправильно понял, но Bars содержит только данные текущего графика, спасибо.

Либо в МТ5 штатно, либо, если для МТ4 -  ищите на сторонних ресурсах тиковую историю. Гугл вам в помощь.

 

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

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