5评论

0收藏

指标编程中容易犯的几个典型错误

avatar 赵四 | 3543 人阅读 | 5 人评论 | 2013-02-20

这些小问题往往很困扰开发人员,且很难发现,现列举几个:
   1、增加Buffer以后容易忘记修改关联代码。必须时刻牢记一个Buffer的成功定义需要3个部分:
      (1) 修改指标buffer总数
          #property indicator_buffers 5
      (2) 定义buffer数组,要求double类型;
          double ExtEABuffer[];  //专门用来给EA传送信号,返回值1-4跟上面4个Buffer作用相同。
      (3) 绑定buffer到一个序列上,并设置输出形式
          SetIndexBuffer(4,ExtEABuffer);
          SetIndexStyle(4,DRAW_NONE);
    2、很多时候需要比较两个均线之间的距离为7点,很容易写成ma5-ma10>10。而正确的写法应该为ma5-ma10>10*Point
    3、容易把检查是否相等写成赋值,例如
       if(a==true)写成了if(a=true),避免的方式可以写为if(true==a),因为true是不能作为变量所赋值的,但是却可以放在==的左边。
    很多时候,我们仅需要输出2-3个bar相关的数据来进行验证编程中是否出现了错误。怎么做呢?这里有一个测试的小技巧,既控制打印的开始和结束时间来实现。
  1. ---------------------------------------------------------------------------------
  2.   int currentTime = Hour() * 100 + Minute();
  3.   int targetTime = 17*100 + 32;
  4.   int targetEndTime = 17*100 + 36;
  5.   
  6.   if(currentTime>targetTime && currentTime<targetEndTime)
  7.   {
  8.     Print("currentTime=" + DoubleToStr(Hour(), 0) +":"+DoubleToStr(Minute(),0));
  9.     Print("ma5x=" + DoubleToStr(ma5x, 4));
  10.     Print("ma10x" + DoubleToStr(ma10x, 4));
  11.     Print("ma5y=" + DoubleToStr(ma5y, 4));
  12.     Print("ma10y=" + DoubleToStr(ma10y, 4));
  13.   }
  14. ---------------------------------------------------------------------------------
复制代码
""
还没有人打赏,支持一下

评论|共 5 个

waihuibuluo

发表于 2013-2-25 14:43:38 | 显示全部楼层

顶一下

waihuibuluo

发表于 2013-2-25 18:22:28 | 显示全部楼层

{:soso_e129:}

zengds

发表于 2015-5-1 10:47:01 | 显示全部楼层

是个好东西。

mgcboy

发表于 2015-5-5 14:53:49 | 显示全部楼层

帮你顶一下 一起学习

炎凉

发表于 2015-5-16 00:44:22 | 显示全部楼层

多谢分享 看看是什么

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则