CopyTicksRange () в MQL5 некорректно работает.a - страница 6

 
Alexey Viktorov #:

За два-то года можно было понять, что если функция работает не так как вам хотелось-бы и разработчики зная об этом не исправляют, то это не называется багом…

Пальцы в растопырку, крутые образованные программисты………

т.е. если Вы, в продаваемых Вами индикаторах , по три года не исправляете ошибки, хотя и знаете об этом, то это не баги!  

Хороший подход, должно очень мотивировать публику к покупке ваших поделок

 
RusPro #:

INT_MAX = 2147483647


вы фактически сразу отхапали  INT_MAX* sizeof(double)   кусок памяти и дальше работаете как со статикой

можно тогда было написать:

double d[ INT_MAX]; - будет для вас тоже самое, что и 

отличие будет только в работе функции ArraySize(), а памяти отхапается сразу на всю катушку

Не нужно понимать все буквально, это же пример!

"Отхапывайте" сколько Вам может понадобится!

 
prostotrader #:

Не нужно понимать все буквально, это же пример!

"Отхапывайте" сколько Вам может понадобится!

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

 
RusPro #:

результаты в микросекундах.

У меня ни одна ячейка таблицы не показала результат больше двух.

 
fxsaber #:

У меня ни одна ячейка таблицы не показала результат больше двух.


Код не меняли?


перенесите весь код из OnCalculate() в OnInit()  , чтоб он только один раз выполнялся.  У меня просто тики в выходной не шли  и OnCalculate вызывался только один раз при старте

 
RusPro #:

перенесите весь код из OnCalculate() в OnInit()  , чтоб он только один раз выполнялся

Так воспроизводится. Интересно, что в OnCalculate становится все в порядке. Видимо, компилятор хорошо работает при повторах.

Для CopyTicks не вижу смысла использовать статику.

 
MetaQuotes #:
Исправили, будет сегодня в бете.

А какая дата будет у  сегодня?  :)

 
RusPro #:

А какая дата будет у  сегодня?  :)

Обновить только terminal64.exe до b3042. MetaEditor64.exe пока не обновлять.

 
RusPro #:

А какая дата будет у  сегодня?  :)

Бета-версии ежедневно выкладываются на MetaQuotes-Demo, но не всегда доступны при проверки черех меню справки, так как мы приоритетно обкатываем на своем демо-сервере.

 
int m1,min1;
datetime start,end;
MqlTick  arr_ticks[];
MqlDateTime       now1;

void OnTick()
{
   TimeTradeServer(now1);
   if(min1 != now1.min)
   {
      if(m1==0){start=TimeTradeServer();}
      m1+=1;
      if(m1==4)
      {
         end = TimeTradeServer();
         ZeroMemory(arr_ticks);
         int len1 = CopyTicksRange(_Symbol,arr_ticks,COPY_TICKS_INFO,start,end);
         Print(__FUNCTION__," start: ", start," end: ",end," len: ",len1);
         ArrayPrint(arr_ticks);
         m1=0;
      }//old 3 min
   
   
   min1 = now1.min;
   }//New Minute

}//end OnTick

В описании к CopyTicksRange () указано что оператор учитывает время в миллисекундах,

возникла идея собрать в массив Тики за несколько минут, но почему-то работает:

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