指标编程中容易犯的几个典型错误
这些小问题往往很困扰开发人员,且很难发现,现列举几个: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相关的数据来进行验证编程中是否出现了错误。怎么做呢?这里有一个测试的小技巧,既控制打印的开始和结束时间来实现。---------------------------------------------------------------------------------
int currentTime = Hour() * 100 + Minute();
int targetTime = 17*100 + 32;
int targetEndTime = 17*100 + 36;
if(currentTime>targetTime && currentTime<targetEndTime)
{
Print("currentTime=" + DoubleToStr(Hour(), 0) +":"+DoubleToStr(Minute(),0));
Print("ma5x=" + DoubleToStr(ma5x, 4));
Print("ma10x" + DoubleToStr(ma10x, 4));
Print("ma5y=" + DoubleToStr(ma5y, 4));
Print("ma10y=" + DoubleToStr(ma10y, 4));
}
--------------------------------------------------------------------------------- 顶一下 {:soso_e129:} 是个好东西。 帮你顶一下 一起学习 多谢分享 看看是什么
页:
[1]