全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
不是所有控件路径都返回值
airwaves 分享到
2021-06-16 14:02

TB能编译通过的函数,但移植到TBQ编译出错,提示:不是所有控件路径都返回值 (图1)

在函数末尾,增加 return 0 ,函数编译虽然通过(图2),

但相关公式编译又出错(图3),

请问函数末尾该如何修改?

(函数大致功能为,设置了4种止损模式,除此以外,就 return 0 。)

NumericRef flag;                  //多空仓位

Numeric ratio_atr(2);            //atr的系数,默认为2倍

kyover

这是两个问题。

第一个返回路径的问题,你定义了flag>0怎么处理,flag<0怎么处理,但是没有flag==0怎么处理,导致未构成全部集合,可能存在隐患。

第二个是参数定义的问题,需要你把函数定义时的参数类型,以及公式调用时,对应变量的类型都展示一下才能确认问题。

2021-06-16 14:23
airwaves
@kyover

在函数里增加了上述两段,还是报错。

 

 

函数的相关参数定义:

Params
    Series<Numeric> my_exitprice(0);    
    
    NumericRef flag;                //对应调用该函数时的第二个参数,这里为MarketPosition 
    
    Numeric ratio_atr(2);            //atr的系数,默认为2倍
    Numeric ratio_loss(0.01);       //亏损1%
    Numeric jump(50);               //亏损固定多少跳价位
    Numeric mode_stop_loss(0);        //增加不同的止损方式,参数名任意,例如:情况0,采取移动止损;情况1,回撤固定值后止损;等等    
    
Vars
    Numeric atr;
    Numeric Num;

 

公式的相关参数定义:


Params
    Numeric n1(10);
    Numeric n2(20);
    Numeric ratio_atr(2);                    //atr的系数,默认为2倍
    Numeric flag(0);
    Numeric mode_stop_loss(0);
    
Vars
    Bool golden(False);
    Bool ending(False);
    Series<Numeric> ma1;
    Series<Numeric> ma2;
    Series<Numeric> my_exitprice(0);
    Numeric atr;
    Numeric n;
 

2021-06-16 15:31
riv
@airwaves

1.最有一个路径不用else if要用else 即else { return 0;} 或者直接return 0;

2.函数中flag参数是一个引用类型,在传递参数的时候不能用公式的参数直接传递

2021-06-16 17:29
airwaves
@riv

图1就是在函数末尾加的return 0;

公式编译出错(图3)。

flag这个引用参数,怎么传回去,不能是数字?

2021-06-16 20:12
kyover
@airwaves

上一级的分支结构呢?只要最高一级的分支结构覆盖全集 都不会有这个问题

2021-06-17 08:57
kyover
@airwaves

flag在公式里应该定义成变量 而不是参数

移到vars里就可以了

 

2021-06-17 08:58
airwaves
@kyover

是的,flag 都改为numeric变量就编译通过了,感谢!

2021-06-17 13:33
您未登录,请先 登录注册 后发表评论
顶部