VAR1:4*SMA((CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100,5,1)-3*SMA(SMA((CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100,5,1),3.2,1);
同花顺的这段我转译到TB 怎么不行啊,老师能帮我看看哪里错了吗?
AA=CLOSE-L[N];
BB=H[N]-L[N];
CC=AA/BB*100;
VAR1=4*SMA(CC,5,1)-3*SMA(SMA(CC,5,1),3.2,1);
没有报错,编译成功了。就是副图不显示指标
在TB里面,凡是用到除法,就需要加倍小心。
BB=H[N]-L[N];
上面这句,在某些特别的情况下,BB会等于0。
然后你再把BB拿去做除数,TB就不知道该怎么办了,然后就撂挑子不画了。
所以你要考虑BB等于零的时候怎么办。比如
if(BB==0)
BB = 0.01;
顺便说一下,你这个改写有个小错误
LLV(LOW,N),在TB里面对应的不是L[N],应该是 Lowest(L,N);
HHV同理。
谢谢大佬解答,我去改改
Params
Numeric lots1(1);
Numeric N(5);
//Numeric LengthL(100);
//Numeric LengthOS(30);
vars
Series<Numeric> AA;
Series<Numeric> BB;
Series<Numeric> CC;
Series<Numeric> VAR1;
Events
OnInit()
{
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
}
onBar(ArrayRef<Integer> indexs)
{
AA=CLOSE-L[N];
BB=H[N]-L[N];
CC=AA/BB*100;
VAR1=4*SMA(CC,5,1)-3*SMA(SMA(CC,5,1),3.2,1);
PlotNumeric("VAR1",VAR1);
}
把这个公式源码都贴出来,编译的时候的报错也贴出来