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

 
K1mn10 #:

Приветствую, да про него речь. У создателя л\с закрыт, а в комментариях  не отвечает.

Зайди в его л/к (личный кабинет) и посмотри когда он был. Может он уже как год не заходит на свою страничку.  А если в л/к  появляется, то пиши в л/к. В противном случае, конкуренцию  никто не отменял, (тут идею отдал, квартиру потерял) ).

 

Подскажите, кто может и хочет. Как мне исправить предупреждение

'OnCalculate' function declared with wrong type or/and parameters       

перепробовал всё и не один раз, вот код:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[])
{
   static datetime lastBarTime = 0;
   MqlRates price[];
   ArraySetAsSeries(price, true);
   if(rates_total == 0)
      return(0);
   if(CopyRates(_Symbol, _Period, 0, 1, price) <= 0)
   {
      Print("CopyRates failed: ", GetLastError());
      return(prev_calculated);
   }
   // New bar detected
   if(price[0].time != lastBarTime)
   {
      Trigger1 = true;
      Trigger2 = true;
      lastBarTime = price[0].time;
   }
   // ZigZag calculations
   if(Period1 > 0)
      CountZZ(FP_BuferUp, FP_BuferDn, Period1, Dev1, Stp1);

   if(Period2 > 0)
      CountZZ(NP_BuferUp, NP_BuferDn, Period2, Dev2, Stp2);

   return(rates_total);
}

спасибо

 
Igor Nagorniuk #:

Подскажите, кто может и хочет. Как мне исправить предупреждение

перепробовал всё и не один раз, вот код:

спасибо

вам лень нажать F1 и почитать справку, каким может быть прототип OnCalculate ? 

 
Igor Nagorniuk #:

тут идею отдал, квартиру потерял

Интересная мысль :)))

 
Igor Nagorniuk #:
OnCalculate

Вы справку смотрели? Есть хоть что-то похожее?


 
Maxim Kuznetsov #:

вам лень нажать F1 и почитать справку, каким может быть прототип OnCalculate ? 

Клавиша F1, "уже стёрлась и треснула на три части."

 
Maxim Kuznetsov #:

а вот и нет :-) 

тестер работает "по генерированным событиям терминала" (OnTick,On...), подумайте что у вас пойдёт не так при "координаты просто считывать через dll"

Мы наверное не про те координаты разговариваем,ну да ладно не будет так не будет.
 

коллеги тут мысля пришла  -решил на долго не откладывать пока не забыл, по организационному вопросу - надо знать значение пользовательского индикатора во время открытия позиции например покупка - во вложении, для его получения при перезагрузке терминала к примеру или переключения таймфрейма - не через глобальные переменные терминала его отсматривать и не из файла ранее сохраненного считывать  - а что если отсматривать можно через время открытия позиции... мне надо (можно с погрешностью) зная время открытия позиции или даже номер бара (через номер бара) может так, потом например, после выходных когда может комп вообще выключен, в понедельник его включая - чтобы робот, например в ините, если есть позиция по символу крайняя (первая справа - значек покупка синяя стрелка справа налево первая), зная время ее открытия, считывал значение индикатора - на рисунке желтая кривая снизу в доп окне. Актуально и для Мт 4 и для МТ 5 


с робота к нему обращаюсь следующим образом:


int indHandle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // GlobalVariableSet(текущее_значение_спред_продан_глобал,1.23);
   
   indHandle=iCustom(_Symbol,_Period,"spreads",1,Coefficient_to_an_integer1,Symbol2,Reverse,1,Coefficient_to_an_integer2);
   if(indHandle == INVALID_HANDLE)
     {
      Print("Can't load indicator.");
      return INIT_FAILED;
     }

...

 текущее_значение_спред_куплен =   NormalizeDouble(GetData(indHandle,0),0);
   
   
   return(INIT_SUCCEEDED);
  }
   spread0 = NormalizeDouble(GetData(indHandle,0),0); // текущее значение спреда на нулевом баре
   spread2 = NormalizeDouble(GetData(indHandle,2),0); // текущее значение спреда на втором баре

...

double GetData(const int handle,const int i)
  {
   double res[1];
   if(CopyBuffer(handle,0,i,1,res)<=0)
      return(0);
   return(res[0]);
  }

индикатор во вложении.

может как то через ф-ию iTime  ()  можно, в ините, зная время открытия позиции например покупка - можно выйти на номер бара, на текущем (рабочем) таймфрейме и через него уже запросить это значение в ф-ии обращения к значению индикатора

Это чтобы не связываться с записью в файл значения индикатора или глобальными переменными терминала

по сути вот нашел ф-ию Ким И В для МТ 4 ее вставить вместо "Х" и все...???

если так - то можно подобие и для МТ 5?

NormalizeDouble(GetData(indHandle,Х),0); // текущее значение спреда на Х баре, на котором была открыта крайняя позиция покупки к примеру
Только "Полезные функции от KimIV". - Функция GetTypeLastOpenPos. Эта функция возвращает тип последней открытой позиции или -1. Более точный отбор учитываемых позиций задается внешними
Только "Полезные функции от KimIV". - Функция GetTypeLastOpenPos. Эта функция возвращает тип последней открытой позиции или -1. Более точный отбор учитываемых позиций задается внешними
  • 2011.02.18
  • Iurii Tokman
  • www.mql5.com
Более точный отбор учитываемых позиций задается внешними параметрами sy - Наименование рыночного инструмента. Значение по умолчанию -1 означает любой идентификатор. Эта функция возвращает флаг убыточности последней закрытой позиции. Значение по умолчанию - означает любой рыночный инструмент
Файлы:
spreads.mq5  9 kb
 
Как изменить цвет фона кнопки или точнее совсем его убрать? 
Надо чтобы была рамка и надпись.
 
Roman Shiredchenko #:

надо знать значение пользовательского индикатора во время открытия позиции

Возьмите значения индикатора и запишите в комментарий (если только советник не использует отложенные ордера), а потом при необходимости считывайте это значения с комментария