如何在TB中正确编写及使用文华中的SUM函数的功能
老师,好!请教下,文华中的SUM函数在TB中如何正常编写及使用。如:SUM(X,0) 看过论坛中很多有关的帖子,老师建议参考summation 内在函数,但使用些函数后好像与文华中的SUM还是不一样。请老师指教!!感谢
老师,好!请教下,文华中的SUM函数在TB中如何正常编写及使用。如:SUM(X,0) 看过论坛中很多有关的帖子,老师建议参考summation 内在函数,但使用些函数后好像与文华中的SUM还是不一样。请老师指教!!感谢
具体说明怎么不一样一个求和函数,简单到不能再简单了
回复:VAR1=(C+L+H)/3; VAR2=Summation(((VAR1-L[1])-(H-VAR1))*V/100000/(H-L),0); VAR3=XAverage(VAR2,1); JCS=VAR3; JCM=Average(VAR3,12); JCL=Average(VAR3,26); Commentary("JCS="+Text(JCS)); Commentary("JCM="+Text(JCM)); Commentary("JCL="+Text(JCL));按这个计算出来,JCS,JCM,JCL 数值都是0.但在文华中使用SUM函数是有数值的。
回复:summation这个函数的第二个参数不支持0,也就是所谓的从图表第一根bar开始累积如果要从图表第一个bar开始累积series<numeric> var2; var2 = var2 + ((VAR1-L[1])-(H-VAR1))*V/100000/(H-L); 这样写就行了
回复:按您指导的这样写,测试发现使用日线有数据,可以正常实现功能。但使用1小时,或是30分钟,15分钟等级别的没有数据。不知是哪的问题,请指教。
回复:没有?
回复:老师,我找到原因了!在行情报价的K线图上加载公式,显示数据正常。我之前是加载到策略单元中,从策略交易中打开K线图表,显示不正常。请教老师什么问题!感谢!
回复:???不正常???
回复:老师,我也是晕了,实在搞不懂问题出哪了!发现不同的商品,在策略交易中起始日期不同,测试的结果也不同。也没发现有什么规律。举例说明:1、IF888,起始日期从2022年1月1日起至今,测试各个周期都有数据。但起始日期修改为2020年1月1日起,测试时15分钟周期无数据。如下图:2、ic888,起始日期不管从什么时间开始,测试只有周线、日线有数据,30分钟、15分钟、5分钟都无数据。3、al888,起始日期从2022年1月1日起,5分钟没数据,15分钟,30分钟,日线,周线都有数据。起始日期从2020年1月1日起,5分钟,15分钟 都没数据,30分钟、日线、周线有数据。4、RB888,起始日期从2019年9月15日起,只有日线,周线有数据,30分钟,15分钟,5分钟都没问题。但将起始日期修改为2025年1月1日,所有周期就都有数据了。请老师指教!
回复:大概知道原因了,因为你没有对H-L做异常处理。如果样本中包含哪一根bar是停板价格,H和L相同,那么除数为0就会造成结果变成无穷大。然后你又是要累积值,那么其中一个元素无穷大以后,累计值就变成无穷大,显示成无效值了。你必须自己定义以下HL相同的时候这个算法要怎么计算才行。
回复:Vars numeric macddiff; numeric avgmacd; series<numeric> var1; numeric var3; numeric jcs; numeric jcm; numeric jcl; series<numeric> var2; Events OnBarOpen(ArrayRef<Integer> indexs) { VAR1 = (C + L + H) / 3; if(H<>L)//如果H和L不等,按照这个计算 { VAR2 = var2[1] + ((VAR1 - L[1]) - (H - VAR1)) * V / 100000 / (H - L); }Else//下面写如果H和L相等时怎么计算 { var2 = var2[1] + var1[1];//举个例子直接用上一根bar的var1值代替 } VAR3 = XAverage(VAR2, 1); JCS = VAR3; JCM = Average(VAR3, 12); JCL = Average(VAR3, 26); Commentary("JCS=" + Text(JCS)); Commentary("JCM=" + Text(JCM)); Commentary("JCL=" + Text(JCL)); }
回复:还真是这个问题,已解决,感谢!