老师,好!
请教下,文华中的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));
}还真是这个问题,已解决,感谢!