CrossOver/CrossUnder 运算规则求解 [开拓者 TB]
- 咨询内容:
有 Ma1/Ma2 是序列变量;
问题1:CrossOver(Ma1,Ma2),编译提示警告,说函数内有序列变量可能有错误是什么意思?
CrossOver不能用序列变量? 还是什么意思?应该怎么用?
问题2:CrossOver(Ma1,Ma2) 和 ( Ma1[1] < Ma2[1] && Ma[0]>Ma2[0]) 等价么?
实测两个不等价,为什么?
问题3:CrossOver(Ma1,Ma2) 和 CrossOver(Ma1[1], Ma2[1]) 运算结果是不是应该相差1根K线?
实测两个不等价(期望是相差1根K线,实际运结果不同),为什么? - TB技术人员:
本帖最后由 小米 于 2013-7-17 15:10 编辑
首先,要确认一下,你下述三个问题的代码在校验过程中,都出了可能有逻辑错误的警告吗??
如果有出,那你的上述这些测试结果基本上没有什么参考价值。
1. crossover( ),crossunder()等函数的运算中,计算的参数是需要序列值的。
如果这类函数的赋值运算放在条件里或是受限制,那么可能会因为取值范围的限制而不能得正确的计算结果。
遇到这类的函数,请尝试加上一个中间变量,在条件外赋值,再代入条件内的判断使用。例如:- vars
- bool aa;
- begin
- aa = crossover(ma1,ma2);
- if(aa) ......
略有不同,是在等到ma1[1]==ma2[1]时,crossover会顺延到下一个bar判断,若下一个bar的ma1[1]<ma2[1]成立,则crossover满足(具体运算规则可见系统内建函数的代码)。而你所写的 Ma1[1] < Ma2[1] && Ma[0]>Ma2[0]则会在ma1[1]==ma2[1]时将这个布尔为否了。。
3. 在前面所说的正确方式下进行的运算,这两个写法的结果应该是相差一个K线的。- vars
- bool aa;
- bool bb;
- begin
- aa = crossover(ma1,ma2);
- bb = crossover(ma1[1],ma2[1]);
- ....
- vars
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容