不是所有控件路径都返回值

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

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

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

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

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

NumericRef flag;                  //多空仓位

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

不是所有的控件路径都返回值,如何解决?
【软件故障】TBQ3 所有的公式编译都报错
sell(0,open),0是不是代表所有仓位
日志默认保存路径在哪里
SetTBProfileString的默认路径是哪?
DataSourceSize DataCount 这两个函数的返回值是不是总是一致的?
如何实现,不管什么周期,最后一分钟都平掉所有仓位
Fileappend的路径名该怎么写
怎么读取本地数据库, 块名下所有的键名?函数的第一个参数的路径要填什么? 求指教~请老师帮忙调试看看
TBQuan里 每次用了泛型替换,所有的编译都变成没有通过编译状态 怎么解决啊?

这是两个问题。

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

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

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

 

 

函数的相关参数定义:

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;
 

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

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

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

公式编译出错(图3)。

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

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

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

移到vars里就可以了

 

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