把文化财经的指标转换成TB,显示不正常。在日线显示都正常,在某些品种其他周期有时就不显示了,咋回事,不知道问题出在哪里
Vars
//此处添加变量
series<numeric> D1;
series<numeric> D2;
Events
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
D1=xaverage(3*SMA((CLOSE-lowest(LOW,27))/(Highest(HIGH,27)-Lowest(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-Lowest(LOW,27))/(Highest(HIGH,27)-Lowest(LOW,27))*100,5,1),3,1),5);
D2=D1[1];
PLOTNUMERIC(\"D\",80,80,RED);
PLOTNUMERIC(\"M\",50,50,WHITE);
PLOTNUMERIC(\"DI\",15,15,RED);
PlotKline(D2,D2,D1,D1);
IF(D2<15 AND CROSSOVER(D1,D2)) PLOTSTRING(\"MAI\",\"买\",5,RED);
IF(D2>80 AND CROSSunder(D1,D2)) PLOTSTRING(\"卖\",\"卖\",90,green);
}
后来改成这样,还是不正常。
Vars
//此处添加变量
series<numeric> D1;
series<numeric> D2;
Events
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
IF(CURRENTBAR<26)
{
NUMERIC I=CURRENTBAR+1;
D1=xaverage(3*SMA((CLOSE-lowest(LOW,I))/(Highest(HIGH,I)-Lowest(LOW,I))*100,5,1)-2*SMA(SMA((CLOSE-Lowest(LOW,I))/(Highest(HIGH,I)-Lowest(LOW,I))*100,5,1),3,1),5);
D2=D1[1];
}
Else
{
D1=xaverage(3*SMA((CLOSE-lowest(LOW,27))/(Highest(HIGH,27)-Lowest(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-Lowest(LOW,27))/(Highest(HIGH,27)-Lowest(LOW,27))*100,5,1),3,1),5);
D2=D1[1];
}
PLOTNUMERIC(\"D\",80,80,RED);
PLOTNUMERIC(\"M\",50,50,WHITE);
PLOTNUMERIC(\"DI\",15,15,RED);
PlotKline(D2,D2,D1,D1);
IF(D2<15 AND CROSSOVER(D1,D2)) PLOTSTRING(\"MAI\",\"买\",5,RED);
IF(D2>80 AND CROSSunder(D1,D2)) PLOTSTRING(\"卖\",\"卖\",90,green);
}
你公式里面用到了除法。
当出现涨停跌停的情况,在较小的周期上,你公式里面的分母会是 0 .
数学上,不允许分母为 0 ,TB没有对这种情况做处理,所以你需要对这种情况自己做个处理。
谢谢!怎么处理呢?
把分母当1处理?
怎么处理应该没有标准答案,我个人倾向于当分母为0的时候,把给分母赋值一个很小的数字,比如0.0001之类的。因为在行情逼近涨停或者跌停的过程中,这个分母本身就是在逐渐趋向0的。