CopyTicksRange()在MQL5中不能正确工作。 - 页 6

 
Alexey Viktorov #:

在两年内,你可以理解,如果一个功能不能按照你想要的方式工作,而开发者知道这个问题却不去修复它,那就不叫错误......

竖起大拇指,酷爱教育的程序员.........

因此,如果你在三年内不修复你所销售的指标中的错误,即使你知道它,它也不叫错误!这是不可能的。

很好的方法,应该很能激励公众购买你的手工艺品。

 
RusPro #:

int_max = 2147483647


事实上,你已经立即抢走了一块INT_MAX* sizeof(double)的内存,然后像静态一样工作

你可能已经写了

double d[INT_MAX]; - 对你来说,它将与

唯一的区别是ArraySize()函数的操作,而你将一次获得整个卷轴的内存。

你不应该从字面上理解所有的东西,这只是一个例子

尽可能多地 "吸纳 "你可能需要的东西!

 
prostotrader #:

你不必按字面意思理解,这只是一个例子!"。

你可能需要多少就 "抢 "多少!

我没有任何冒犯的意思,对不起。只是在这个例子中,已经抓住了最大的可能:))

 
RusPro #:

以微秒为单位的结果。

我的表格中没有单元格显示出大于2的结果。

 
fxsaber #:

我还没有发现表格中的任何一个单元格显示出大于2的结果。


你改变了代码吗?


把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() 的描述指出,该操作者以毫秒为单位计算时间。

我的想法是在一个数组中收集几分钟的Ticks,但由于某些原因,它是有效的。