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

 
laplacianlab:

好文章,感谢分享!所有内容都非常有用!

无论如何,我使用了你的 isNewBar 函数,但在编译时出现了以下信息:"类型转换可能 导致数据丢失"。

因此,我将 var 类型从 datetime 改为 long:

现在编译时没有任何提示,而且似乎可以正常工作了。谢谢!


这样改可能更清楚:

   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

    在新柱线的第一种请求方式中,不明白新柱的数量为什么可以直接赋值为1,请指教;

   

 //--- 检查新柱线:
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // 新柱线的数量
      m_lastbar_time=newbar_time; // 记住最后柱线时间
      return(true);
     }
   //--- //--- 检查新柱线:
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // 新柱线的数量
      m_lastbar_time=newbar_time; // 记住最后柱线时间
      return(true);
     }
   //---
 

根据对象建模的规则,称其为 CIsNewBar 是名不副实的。

让我们看看,如果汽车是一个类,我就可以创建/拥有一个汽车对象。但是,如果我的类是 "ÉUmCarroNovo",我们就可以拥有一个 "ÉUmCarroNovo"。

作者应该把它叫做 CNewBarChecker。有人可能会发明一个 "新车检查器 " 并创建它(我们的类将是 NewCarChecker。

[删除]  
你使用的不是时间,而是条形图
 
文章中有很多代码变化,但最终还是不清楚,在 MT4 上使用哪种功能更正确,至少能增加一点测试人员绘制的交易对应关系。给我一点提示吧!
 
Pavel Komarovsky:
文章中有很多代码变化,但最终还是不清楚,在 MT4 上使用哪种功能更正确,至少能增加一点测试人员绘制的交易对应关系。给我一点提示吧!
datetime counted_bar = 0;

int OnInit()
{
   counted_bar = 0; // 如果您希望在重新启动时分析最后一个条形图
   ...

void OnTick()
{
   // 如果有新的条形图
   if ( iTime( _Symbol, _Period, 0 ) > counted_bar )
   {
      counted_bar = iTime( _Symbol, _Period, 0 );

      // 分析指标
      ...
   }
 
Andrey Khatimlianskii:

安德烈,谢谢你。请告诉我为什么现在要使用iTime,我记得之前所有的函数和示例中,大部分都是基于iBars 的。

iTime 能更准确地工作吗?

 
Pavel Komarovsky:

安德烈,谢谢你。请告诉我为什么现在要使用iTime,我记得之前所有的函数和示例中,大部分都是基于iBars 的。

iTime 是否更精确?

我从来没用过iBars,所以不知道。
 
我想知道为什么这个示例无法获取时间序列数据?复制...总是-1,Bars() 总是 0。
 

这篇文章非常出色,甚至被用于MQL5 编程 课程,包括评论、协作和错误修复。祝贺你们。