[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 874

 
Andrei01:
一个新蜡烛的时间是Time[0]。

以及我如何进一步确定新蜡烛的 到来?
 
reag:

以及如何进一步确定新蜡烛的到来?
在一个变量中记住前一个变量并进行比较。
 
Andrei01:
在一个变量中记住前一个变量并进行比较。

我现在要去试试...
 
reag:

以及如何识别新蜡烛的到来?


有几种选择,这里是其中的几个。

1.启动专家顾问时,记住图表上的总条数,并在专家顾问执行过程中监测条数 的变化。

//начало кода - самый верх
int counted;

int init(){
   counted=Bars;     // запомним общее количество баров на активном ТФ
    Myorders();
return(0);
}

int start(){
   Myorders();
........................

// я рассполагаю этот код в самом конце ф-ции start() - мне так удобнее
  int bar = Bars;
  if (bar != counted ) { // сравним запомненное кол-во баров с текущим если они равны тогда нет нового бара на активном ТФ
      counted= bar;
// код который необходимо выполнить по закрытию/открытию бара
  }
return(0);
}

2.记住最后一个酒吧开张的时间;代码是差不多的。

使用datetime last=Time[0]。

并比较last==Time[0]-->如果最后一次开盘时间与上次相同,如果不相同,则意味着我们有一个新的柱状图。

我不知道哪种方案更有效,1或2 - 我对自动下载历史记录到终端有疑问,但我没有看到任何问题。

 
IgorM:


有几种选择,这里是其中的几个。

1.启动专家顾问时,记住图表上的总条数,并在专家顾问执行过程中监测条数的变化。

这是行不通的。
 
Andrei01:
它不会起作用。酒吧的数量是有限的。 。


这样做是有效的,因为总数并不重要,我们只对图表上的条数 发生变化的时刻 感兴趣,在这个时刻,变量bar != counted,注意,我特意记住了int bar = Bars;--不丢失Bars的值,然后比较并分配这个值counted = bar;--你可以用Bars做一切事情,不需要额外的变量--但我决定仔细检查一下。

我还提到,在历史的自动抽水过程中,可能会有一个小的卡兹--可能是好的,也可能是坏的,如果我们使用酒吧开放时间,它肯定会工作--酒吧开放时间永远不会改变。

 
IgorM:


只对图表上的条数改变的时刻 感兴趣

一旦达到设置中的最大值,图表上的条数 就不应该增加。虽然可能是在最大值时跳加或减一,我没有检查过,那么可能会抓住它,但这是一个没有记录的选项。
 
Andrei01:
在达到设置中设定的最大值后,图表上的条数不应该增加。尽管它可能会跳动,我没有检查过,那么也许可以抓住它,但这已经是一个没有记录的选项。

这就是问题所在。我检查了一下,当达到最大值时...Bars不会改变,而是保持与窗口中的Max bars相等(见属性)。
 
reag:

这就是问题所在。我已经检查过了,当达到最大值时...Bars不改变,但仍然等于窗口中的Max bars(见属性)。
应该是这样的。所以第一个选项是行不通的。
 
Andrei01:
嗯,应该是这样的。所以第一个选项是不行的。

是的,第一个选项不起作用,虽然我在一个非标准的时间框架内工作,但第二个选项起作用。谢谢大家!
原因: