Mt4结束支持。 - 页 33

 
还有一个问题是开始时间。有些东西没有在正确的时间内登记酒吧的开始。我以后会想办法的。
 
Nikolai Semko:

彼得,它对我也不起作用。
你的编程风格很奇怪。你可以把所有这些东西和所有变量以及OnInit和OnTimer的循环放到一个过程中。如果有人想使用它,因为这个代码会妨碍到它。如果我们有20个或更多内容相同的同类程序怎么办?毕竟,它是在这里 实施的。


彼得并不是在寻找一个简单的出路...

 
Реter Konow:
开始时间也有问题。有些东西没有在正确的时间登记栏的开始。我以后会想办法的。

酒吧的开始并不总是精确的时间。

有时会完全跳过小节。
 
Nikolai Semko:

彼得,它对我也不起作用。
你的编程风格很奇怪。你可以把所有这些东西和所有的变量以及OnInit和OnTimer的循环放到一个过程中。如果有人想使用它,因为这个包会妨碍到它。如果将有20个或更多的程序具有相同的内容怎么办?毕竟,这里是实施的地方

在一分钟内它是有效的,但它没有在正确的时间内锁定小节的开始。

我没有在其他时间段检查过,因为需要长时间的等待。

至于风格,现在并不重要。我们可以把所有的东西从定时器中拿出来,放到一个单独的函数中。我只是在考虑解决方案本身,而不是其整合的未来变种。

 
Vladimir Pastushak:

酒吧的开始时间并不总是完全准时的。

是的,我注意到了,我稍后会修正它。
 
Реter Konow:

我在想,如果一个人在市场概览中真的有600个工具,并且在每个tick 上检查每个工具和每个时间框架的新条形的到来,可能会很昂贵......

我自己不做交易,所以我不知道这个函数在实践中到底应该被调用多少次。

只有在符号和时间框架的数量非常大,并且在数百个符号的每个刻度上调用该函数时,新条形图函数中的符号和时间框架的双循环才可能增加负荷。也许德米特里是对的,那么。

我已经缩短了函数中的一个循环。

忘掉它吧。

下面是我专门为这一行动所做的类的一个例子。当然,它不是一个杰作,但它是我的,它理解我,并能发挥作用。

class CNewBar
{
protected:
  MqlRates newBarRates[];
public:
 bool newBar();
 bool newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld);
};/********************************************************************/

bool CNewBar::newBar()
{
 static datetime timeLastBar;
  if(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, newBarRates) < 0)
   return(false);
  bool ret = timeLastBar != newBarRates[0].time;
   if(ret)
    timeLastBar = newBarRates[0].time;
   return(ret);
}/********************************************************************/

bool CNewBar::newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld)
{
  if(CopyRates(_Symbol, timeframe, 0, 1, newBarRates) < 0)
   return(false);
    datetime tNew = newBarRates[0].time;
   bool ret = tOld != tNew;
   if(ret)
    tOld = tNew;
   return(ret);
}/********************************************************************/

如果你想只对当前的TF进行判断,你必须调用不带参数的函数。

相应地,如果它被放在.mqh中,就必须附上该库。

#include <путь_папка\имя_файла.mqh>
CNewBar newBar;

并在OnTick()中调用。

if(newBar.newBar())
 Print("Новый бар на текущем ТФ");

如果我们需要定义其他的TF,我们为每个周期和符号声明变量,如果有必要,在全局变量或静态变量的层面上。

static datetime oldD1 = 0, oldH1 = 0;

if(newBar.newBar(PERIOD_H1, oldH1) && newBar.newBar(PERIOD_D1, oldD1)
 Print("Открылся новый день и новый час");

当在所需的TF上工作时,这种方法是有效的,并且可以防止专家顾问工作时意外切换图表的问题。

 
Nikolai Semko:

彼得,它对我也不起作用。虽然该算法相当快,但这是在浪费时间。但它还没有发挥作用。没有时间去弄清楚。
你有一个奇怪的编程风格。你可以把所有这些东西和所有变量以及OnInit和OnTimer的循环放到一个过程中。如果有人想使用它,所有这些东西都会碍手碍脚。如果将有20个或更多的程序具有相同的内容怎么办?它是在这里 实施的。


也许你不知道 "快速 "是什么意思?

 
Alexey Viktorov:

哦,吐出来吧...

这里有一个我专门为这个行动而设的班级的例子。当然,这不是一个杰作,但它是我的,而且对我有用。

如果你想只对当前的TF进行判断,那么就会调用不带参数的函数。

相应地,如果放在.mqh中,就必须连接该库。

并在OnTick()中调用。

如果我想确定其他TF,那么在全局变量或静态变量的层面上,必要时为每个周期和符号声明变量。

当在所需的TF上工作时,这种方法是有效的,并且可以防止与专家顾问操作的图表的意外切换有关的问题。


你不知道你表现出来的是什么白痴,这实在是太荒谬了。但我不会告诉你具体在什么地方,因为你们都对我的意见不感兴趣)))。

 
Alexey Viktorov:

哦,吐出来吧...

这里有一个我专门为这个行动而设的班级的例子。当然,这不是一个杰作,但它是我的,而且对我有用。

如果你想只对当前的TF进行判断,那么就会调用不带参数的函数。

相应地,如果它被放在.mqh中,就必须附上该库。

并在OnTick()中调用。

如果有必要确定其他的TF,那么在全局变量或静态变量的层面上,为每个时期,如果有必要,为符号声明。

当在所需的TF上工作时,这种方法是有效的,并且可以防止专家顾问工作时意外切换图表的问题。

任务是在市场概览中识别任何符号的变化。

注意到。
 
Alexey Viktorov:

哦,吐出来吧...

这里有一个我专门为这个行动而设的班级的例子。当然,这不是一个杰作,但它是我的,而且对我有用。

如果你想只对当前的TF进行判断,那么就会调用不带参数的函数。

相应地,如果这被放在.mqh中,那么该库应该被包括在内

并在OnTick()中调用。

如果我想确定其他时间段,那么在全局变量或静态变量的层面上,必要时为每个时期和符号声明。

当在所需的TF上工作时,这种方法是有效的,并且可以防止专家顾问工作时意外切换图表的问题。

你的解决方案运作良好吗?如果很好,那么一切都很好。

上百种乐器的情况如何--不会有重叠吗?