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

 
MakarFX:

谢谢你的帮助。如果我没有弄错的话,尽管void OnTick()处理每个刻度,但如果我们在里面使用TimeSeconds(),那么void OnTick()将不会处理每个刻度,而只是处理每分钟蜡烛的开始,因此会节省整个代码的运行时间

告诉我,如果你不写TimeSeconds(),而是写条件if(Minute()!=x),最后x=Minute(),它的效果会和 TimeSeconds()一样吗?

谢谢你

 
ANDREY:

谢谢你的帮助。如果我没有弄错的话,尽管void OnTick()处理每个刻度,但如果我们在里面使用TimeSeconds(),那么void OnTick()将不会处理每个刻度,而只是处理每分钟蜡烛的开始,因此会节省整个代码的运行时间

告诉我,如果你不写TimeSeconds(),而是写条件if(Minute()!=x),最后x=Minute(),它的效果会和 TimeSeconds()一样吗?

谢谢

bool FlagNewBar=false,
     FlagBegin=true;

void OnTick()

FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }


   if(FlagNewBar || FlagBegin)
     {
      FlagBegin=false;
.......

)

更好的是,你在会议之外也会有一个计时器。而且只在新的蜡烛上。

但是,既然在第一个极值处放置一格挂单更容易,你为什么要这样做呢?这在本质上与你的情况相同。第一个条件是确定极值,然后,如果趋势向下,将在30点后下单。

旗子是需要在被扔到图表上后立即锻炼的。如果不需要,那就去掉标记。

 
Valeriy Yastremskiy:

更好的是,你会让定时器跑出会期。但只是在新的蜡烛上。

而你为什么要这样做呢?因为从第一个极值开始下一格挂单更容易。这在本质上与你的情况相同。第一个条件是确定极值,然后,如果趋势向下, 将在30点后下单。

旗帜是需要在被扔到图表上后立即锻炼的。如果不需要,那就去掉标记。

我的订单从当地低点向上 打开30点,即出价减去最低点>=30点。
谢谢你的参与。我现在将开始深入研究你的提示....

 
Valeriy Yastremskiy:

更好的是,你会让定时器跑出会期。但只是在新的蜡烛上。

而你为什么要这样做呢?因为从第一个极值开始下一格挂单 更容易。这在本质上与你的情况相同。第一个条件是确定极值,然后,如果趋势向下,将在30点后下单。

旗帜是需要在被扔到图表上后立即锻炼的。如果我们不需要它,我们就会把旗子拿掉。

有一个当地的最低限度。我在距离当地最低点30,32,34...点的位置设置了10个挂单。然后在价格达到第一个挂单之前,本地低点被更新,我不得不再次设置所有的挂单。在我看来,设置和重设挂单需要很多时间。而我正在努力拯救它。

 
Valeriy Yastremskiy:

更好的是,你会让定时器 跑出会期。但只是在新的蜡烛上。

而你为什么要这样做呢?因为从第一个极值开始下一格挂单更容易。这在本质上与你的情况相同。第一个条件是确定极值,然后,如果趋势向下,将在30点后下单。

旗子是需要在被扔到图表上后立即锻炼的。如果不需要,那就去掉标记。

如果我的定时器在拍打,我会很高兴。但在MT4测试器中发现,定时器并不工作。

 
ANDREY:

谢谢你的帮助。如果我没有弄错的话,尽管void OnTick()处理每个刻度,但如果我们在里面使用TimeSeconds(),那么void OnTick()将不会处理每个刻度,而只是处理每分钟蜡烛的开始,因此会节省整个代码的运行时间

告诉我,如果你不写TimeSeconds(),而是写条件if(Minute()!=x),最后x=Minute(),它的效果会和 TimeSeconds()一样吗?

谢谢你

      if(TimeMinute(TimeCurrent())!=x)
         x=TimeMinute(TimeCurrent();
 
Valeriy Yastremskiy:

这样做更好。

你能告诉我为什么我们需要一个 "FlagNewBar "吗?

这不是同样的事情吗?

   if(BarTime!=Time[0])
     {
      ........
      BarTime=Time[0];
     }
 

MakarFX:

if(TimeMinute(TimeCurrent())!=x)
         x=TimeMinute(TimeCurrent();


我还是不明白,在这种情况下使用TimeSeconds()或TimeMinute() 函数是否是基本的和必须的?毕竟,你可以用一个函数得到与这些函数相同的结果--Minute()

如果(Minute()!= x)
{

行动
x=Minute();

}

谢谢你。

 
ANDREY:

我还是不明白,在这种情况下使用TimeSeconds()或TimeMinute() 函数是否是基本的和必须的?毕竟,你可以用一个函数得到与这些函数相同的结果--Minute()

如果(Minute()!= x)
{

行动
x=Minute();

}

谢谢你。

这不是一个原则问题。只要是最适合你的就行
 
MakarFX:

你能告诉我为什么需要 "FlagNewBar "吗?

这不是同样的事情吗?

这是BASIC的一个习惯。使用它更容易)没有它你也能做到。)而如果在几个地方插入条件,记录就会更短。

Zy。如果逻辑是分叉和滞后的,就不能没有标志。而且打印起来也很方便)