renjiming 发表于 2017-5-28 20:40:23

请教老师关于赋值语句数据类型问题

老师好。我编的程序中的赋值语句 Concrossunder = crossunder(close,downline);中的 Concrossunder和downline都已经定义为数值型序列值,可是编译时老说数据类型不一致,调整了多次,这个问题就是解决不了拉。源代码如下:Params   
  Numeric 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
恳请高手指点。先谢了!

renjiming 发表于 2017-5-30 09:16:44

把几个变量由数值型序列变量改为数值型变量后,赋值语句 两边数据类型不一致的问题没有了,可以编译了。不明白为什么定义为数值型序列变量就不行呢?TB教材有可以的例子。现在又出现了新问题:要比较K线两次下穿布林下轨时所在bar的收盘价大小,用If( close(barsseccrsund)>close(barsfstcrsund)),其中barsseccrsund是最近的倒数第二次下穿离现在的bar数,barsfstcrsund是最近的一次下穿离现在的bar数,可是编译时老说函数调用时的参数数目与声明不符合(太多的调用)。barsseccrsund、barsfstcrsund都是在变量声明里声明过的啊。就是通不过编译了。真郁闷,恳请高手指教。

renjiming 发表于 2017-5-30 10:14:14

把If( close(barsseccrsund)>close(barsfstcrsund))中的园括号改为方括号,问题解决了。还是不明白为什么定义为数值型序列变量就不行呢?
页: [1]
查看完整版本: 请教老师关于赋值语句数据类型问题