新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1381

 
Alexey Viktorov:

这没有什么超自然的东西。通常的OBJ_BITMAP_LABEL 和进入它的任何你想要的资源。Kanvas在OBJ_BITMAP_LABEL 中也能工作。

但你的方法对一个新手开发者来说要容易得多。

我明白你的意思,谢谢你。
 
Alexey Viktorov:

请学习如何在信息中插入代码

对于这个问题,请阅读CopyTicksRange的文档。

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlTick Tick_Mql[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

//---

ulong from_msc = TimeCurrent() - 10000;
ulong to_msc = TimeCurrent();
int Ticks = CopyTicksRange(_Symbol,Tick_Mql,COPY_TICKS_ALL,from_msc,to_msc);
  }
//+------------------------------------------------------------------+
不起作用。每次调用OnTick时,Ticks变量的结果是0。
 
Boris:
它不起作用。每次调用OnTick时,变量Ticks的结果是0。

你确定你在进入时需要过去的刻度线吗?10秒并不长,你可以等待并计算实际的滴答声和它们的数量。

一般来说,你需要2个变量来计算第一秒,并记住9秒内有多少个刻度,然后将它们相加,然后计算下一秒的刻度,减去第一个,再加上最后一个。结果应该存储在一个数组中或一个变量中。

 
Valeriy Yastremskiy:

你确定你在进入时需要过去的刻度线吗?10秒并不长,你可以等待并计算实际的滴答声和它们的数量。

一般来说,你需要2个变量来计算第一秒,并记住9秒内有多少个刻度,然后将它们相加,然后计算下一秒的刻度,减去第一个,再加上最后一个。这些结果被保存在一个数组或一个变量中。

事实证明,这不能通过CopyTicks和CopyTicksRange函数完成?

谢谢你。

 
Boris:
不起作用。每次调用OnTick时,Ticks变量的结果是0。

阅读文件!!!。

还是你想把所有的文件一块一块地复制到这里?

from_msc

[in]请求滴答的日期。从1970年1月1日起,以毫秒为单位指定 。如果没有指定from_msc 参数 ,则从历史开始返回刻度时间大于等于from_msc的ticks被返回。

to_msc

[in] 日期,在此基础上要求打钩。从1970年1月1日起,以毫秒为单位指定 。时间<= to_msc的刻度将被返回。如果 没有指定 参数 to_msc ,则会给出直到历史结束的所有刻度

 
Valeriy Yastremskiy:

你确定你在进入时需要过去的刻度线吗?10秒并不长,你可以等待并计算实际的滴答声和它们的数量。

一般来说,你需要2个变量来计算第一秒,并记住9秒内有多少个刻度,然后将它们相加,然后计算下一秒的刻度,减去第一个,再加上最后一个。将结果保存到一个数组或一个变量。

为什么要给出这样的建议?

 
Boris:

所以不能通过CopyTicks和CopyTicksRange函数来完成?

谢谢你。

是的,你可以。阅读文件,然后询问文件中你不明白的地方。这样你会更快地了解到真相)。

 
Alexey Viktorov:

为什么要给出这样的建议?

我自己也是这样做的。如果你能自己解决短促的行动,为什么要进入结构。

 
Valeriy Yastremskiy:

我自己也是这样做的。如果你能自己解决短促的行动,为什么要进入结构。

我用右手的小指头抓我的左耳......我可以教你,你需要吗?不要通过.....................,教别人做什么。

 
Valeriy Yastremskiy:

你可以。阅读文件,然后询问文件中你不明白的地方。这是通向真相的更快途径)。

所以...阅读文档(再次)。

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlTick Tick_Mql[];
ulong ten_msc =(ulong)TimeCurrent()-10000; // 1 секунда = 1000 милисекунд
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

//---

ulong from_msc = (ulong)TimeCurrent() - 10000;
ulong to_msc = (ulong)TimeCurrent();
int Ticks = CopyTicksRange(_Symbol,Tick_Mql,COPY_TICKS_ALL,from_msc,to_msc); //(с текущего времени - 10 сек назад)
// либо CopyTicks(_Sybol,Tick_Mql,COPY_TICKS_ALL,from_msc,0); //(все тики от 10 сек назад до настоящего времени)
  }

问题。怎么了?无论是CopyTicksRange还是CopyTicks,它都不算数。

原因: