请教编程问题 [开拓者 TB]
-
咨询内容:
Params
Numeric Length1(10);
Numeric Length2(30);
Numeric Length3(60);
Vars
//此处添加变量
Numeric Dea;
Numeric Diff;
Numeric MACD;
Numeric MA10;
Numeric MA30;
Numeric MA60;
Numeric Peakval;
Numeric Vallyval;
Numeric ExtreV;
Numeric EVP;
Numeric Peak_s;
Numeric Vally_s;
BOOL SIT_P;
BOOL SIT_v;
BOOL TEST1;
BOOL TEST2;
BOOL TEST3;
BOOL TEST4;
Events
OnBar(ArrayRef<Integer> indexs)
{
Diff = XAverage( Close, 12) - XAverage( Close,26) ;
Dea = XAverage(Diff,9);
MACD = 2*(Diff - Dea);
MA10 = AverageFC(Close,Length1);
MA30 = AverageFC(Close,Length2);
MA60 = AverageFC(Close,Length3);
PlotNumeric("MA10",AverageFC(Close,Length1),red);
PlotNumeric("MA60",AverageFC(Close,Length3),blue);
SIT_P = ((NthCon(Dea<0 && MA10<MA60,1) == 0 && NthCon(Dea<0 && MA10<MA60,2)>1 && CountIf(Dea>0 && MA10>MA60,NthCon(Dea<0 && MA10<MA60,2))>1));
TEST1 = ((NthCon(Dea<0 && MA10<MA60,1) == 0) && (NthCon(Dea<0 && MA10<MA60,2)>1));
test2 = NthCon(Dea<0 && MA10<MA60,2)>1;
test3 = NthCon(Dea<0 && MA10<MA60,1) == 0;
test4 = test2 && test3;
COMMENTARY("nthcon"+text(NthCon(Dea<0 && MA10<MA60,1)));
COMMENTARY("nthcon"+text(NthCon(Dea<0 && MA10<MA60,2)));
COMMENTARY("VALLYVAL="+text(Vallyval)); PlotBool("TEST2",TEST2);
PlotBool("TEST3",TEST3);
PlotBool("TEST4",TEST4);
}
以上程序中,当test2 为true, test3为true,写成test4也是ture。但是test1的表达式却是false。为什么?请教了。有知道的指点下,不胜感谢!来源:CXH99.COM
-
TB技术人员:
小米版主,能帮忙指点一下吗?谢谢了。
-
TB客服:
hill_Luo 发表于 2019-11-8 12:01
小米版主,能帮忙指点一下吗?谢谢了。
正确的写法就是test2,test3,test4这个步骤。。。
nthcon的计算判断并非只要当前bar的数据就可以计算出来的,也需要历史K线上的相关数据才能计算出来。
在Test1语句中,前一个判断的满足与否会影响后一个判断式是否进行计算。如果前一个判断为否,则后一个根本不计算了。如果历史中的相关值没有计算到,那也没法在当前K线得出正确的结果。。
所以,只test234的写法才能确保每一个必要的数据都有被正确计算。
有思路,想编写各种指标公式,交易模型,选股公式,还原公式的朋友
可联系技术人员 QQ: 262069696 或微信号:cxh99cxh99 进行 有偿收费 编写!
(注:由于人数限制,QQ或微信请选择方便的一个联系我们就行,加好友时请简单备注下您的需求,否则无法通过。谢谢您!)
相关文章
-
没有相关内容