请教老师关于赋值语句数据类型问题
老师好。我编的程序中的赋值语句 Concrossunder = crossunder(close,downline);中的 Concrossunder和downline都已经定义为数值型序列值,可是编译时老说数据类型不一致,调整了多次,这个问题就是解决不了拉。源代码如下:ParamsNumeric validbars1(50);//两次下穿之间保持有效的bar数
Numeric validbars2(3);//满足开仓条件后的有效bar数
Vars
NumericSeries midline;//布林中轨
NumericSeries upline;//布林上轨
NumericSeries refClose;//前收盘价
NumericSeries concrossunder;//当前bar是否下穿下轨
NumericSeries downline;//布林下轨
NumericSeries concrossover;//当前bar是否上穿上轨
Numeric barsfstcrsund;//最近倒数第二次下穿离现在的bar数
Numeric barsseccrsund;//最近的一次下穿离现在的bar数
Numeric MyEntryPrice;//开仓价格
Numeric MyExitPrice;//平仓价格
Boolseries entryflag(false);//开仓标志
NumericSeries entrypoint;//开仓价格
NumericSeries entrycount;//满足开仓条件的bar计数
Begin
If(BarStatus==0)
{
Return;
}
If(CurrentBar>20)
{
refClose=Close;
midline=Average(refClose,20);
downline=midline-2*StandardDev(refClose,20);
upline=midline+2*StandardDev(refClose,20);
Concrossunder = crossunder(close,downline);
//计算最近两次下穿发生的bar离当前bar的根数
Barsfstcrsund=nthcon(concrossunder==true,2);
barsseccrsund=nthcon(concrossunder==true,1);
}
//设置开仓标志
If(concrossunder and barsseccrsund-Barsfstcrsund<=50 and open>close(Barsfstcrsund))
{entryflag=true;
Entrypoint=open;
Entrycount=0;
}
//开仓
If(marketposition==0 and Entrycount<=validbars2)
{
If(entryflag and vol>0)
{ MyEntryPrice=open;
buy(0,open);
}
}
If(MarketPosition==1)
{ Concrossover=crossover(close,upline);
If(concrossover)
{
sell(0,open);
}
}
If(MarketPosition==1)
{
If(close<MyEntryPrice-7)
{
sell(0,open);
}
}
End
恳请高手指点。先谢了! 把几个变量由数值型序列变量改为数值型变量后,赋值语句 两边数据类型不一致的问题没有了,可以编译了。不明白为什么定义为数值型序列变量就不行呢?TB教材有可以的例子。现在又出现了新问题:要比较K线两次下穿布林下轨时所在bar的收盘价大小,用If( close(barsseccrsund)>close(barsfstcrsund)),其中barsseccrsund是最近的倒数第二次下穿离现在的bar数,barsfstcrsund是最近的一次下穿离现在的bar数,可是编译时老说函数调用时的参数数目与声明不符合(太多的调用)。barsseccrsund、barsfstcrsund都是在变量声明里声明过的啊。就是通不过编译了。真郁闷,恳请高手指教。 把If( close(barsseccrsund)>close(barsfstcrsund))中的园括号改为方括号,问题解决了。还是不明白为什么定义为数值型序列变量就不行呢?
页:
[1]