文章 ""New Bar" (新柱)事件处理程序" - 页 6

 

大家日安,心情愉快!

不知道这段代码

bool IsNewBar()
  {
   static datetime TimeOld;
   datetime TimeNew[1];
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,TimeNew);
   if(TimeNew[0]!=TimeOld)
     {
      TimeOld=TimeNew[0];
      return(true);
     }
   return(false);
  }

是否有效?我是很久以前在 MQL5 网站上找到的,不记得是从谁那里复制的了。

 
MrBrooklin #:

祝大家今天愉快

不知道这样的代码

是否有效?我很久以前在 MQL5 网站上找到的,不记得是从谁那里复制的了。


顺便说一下,我也使用了这套代码,效果很好,但它的适用范围更广一些,可以用于任何 TF!

bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame)
  {
//----
   bool res=false;               // 分析结果变量 
   int  i=0;                     // 数组单元格编号 old_Times[] 
   datetime new_Time[1];         // 新条的时间

   switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }
   // 将最后一个条形图的时间复制到单元格 new_Time[0] 中 
   int copied=CopyTime(INST,timeFrame,0,1,new_Time);
   
   if(copied>0) // 数据已复制
      {
      if(old_Times[i]!=new_Time[0])       // 如果旧的条形图时间不等于新的条形图时间
         {
         if(old_Times[i]!=0) res=true;    // 如果这不是第一次运行,则 true = new bar
         old_Times[i]=new_Time[0];        // 记住酒吧的时间 
         }
      }      
//----
   return(res);
  }
 
switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }

哇)。

 
Dmitry Fedoseev #:

哇)。

谁在 K 区? 我想我什么都看过了。

数组比较

我对新的交易栏很失望,没有交易的巧合,由于某些我不清楚的原因,没有打印,即没有触发或串联快速栏,或者只是时间上的滞后,我的 ping 很高(140),也许这就是原因。

我试过很多 newbar 的变体,到处都是卡顿,在一台电脑的 3 个终端上测试过。

我删除了 newbar,几天来所有终端都能在服务器上 100% 进行交易。

 
Fast235 #:

我想我什么都看过了。

阵列比较

我对新吧很失望,没有成交的巧合,原因我不明白,没有打印,即没有触发或串联lastbar或只是时间上的滞后,我有一个高ping(140),也许这就是原因。

在 K 参数中。

因为该功能在订单出错时不会有第二次尝试。

 

交易不是在 OnTick 中进行的,而是通过OnChartEvent(spy),并以最快的速度执行,只通过 id,其余的不传输

7 个符号,通过一个符号上的大量条件和计数,在美国时段,0.5-0.7% ryzen 3700x

尝试甚至通过一个新的酒吧从一个新的酒吧指标,也分歧的交易,5正常,然后在一个,然后在其他口吃。

 
我把它完全扔掉了,反正算法看的是最后一个 条形图,在这种情况下甚至还有一个好处,如果交易被取消,它就不会在点差和 "偏差 "限制的范围内进行任何交易。
 
Mihail Marchukajtes #:

顺便说一下,我也使用了这个代码,效果很好,只是它的范围更广一些,你可以将它用于任何 TF!

谢谢,米哈伊尔,我会把它添加到我的函数库中。

再见,弗拉基米尔。

 
Armen Shahinyan #:

我没有比这更简单的方法了。
跟踪当前条形图的开盘时间,并在每个刻度线进行比较。


从代码中删除第一个函数。生活就会变得更美好。

 

一般来说,有两种情况值得关注:

1.每个人都因某种原因被禁言。

2.新栏位的 时间总是与前栏位 不同。任何时间,因为它总是从左到右。取任何时间。如果它与前一栏不重合,那么这一栏就是新的。