设为首页收藏本站

 找回密码
 注册
查看: 1892|回复: 2
打印 上一主题 下一主题

请教老师关于赋值语句数据类型问题 [复制链接]

Rank: 1

精华
0
UID
225852
积分
11
帖子
8
主题
3
阅读权限
10
注册时间
2015-12-28
最后登录
2017-10-21
跳转到指定楼层
1#
发表于 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[1];
    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[1]<MyEntryPrice-7)
{
     sell(0,open);


                }
        }
        
End
恳请高手指点。先谢了!

Rank: 1

精华
0
UID
225852
积分
11
帖子
8
主题
3
阅读权限
10
注册时间
2015-12-28
最后登录
2017-10-21
2#
发表于 2017-5-30 09:16:44 |只看该作者
把几个变量由数值型序列变量改为数值型变量后,赋值语句 两边数据类型不一致的问题没有了,可以编译了。不明白为什么定义为数值型序列变量就不行呢?TB教材有可以的例子。现在又出现了新问题:要比较K线两次下穿布林下轨时所在bar的收盘价大小,用If( close(barsseccrsund)>close(barsfstcrsund)),其中barsseccrsund是最近的倒数第二次下穿离现在的bar数,barsfstcrsund是最近的一次下穿离现在的bar数,可是编译时老说函数调用时的参数数目与声明不符合(太多的调用)。barsseccrsund、barsfstcrsund都是在变量声明里声明过的啊。就是通不过编译了。真郁闷,恳请高手指教。

使用道具 举报

Rank: 1

精华
0
UID
225852
积分
11
帖子
8
主题
3
阅读权限
10
注册时间
2015-12-28
最后登录
2017-10-21
3#
发表于 2017-5-30 10:14:14 |只看该作者
把If( close(barsseccrsund)>close(barsfstcrsund))中的园括号改为方括号,问题解决了。还是不明白为什么定义为数值型序列变量就不行呢?

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-6 08:05

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部