不是所有控件路径都返回值
TB能编译通过的函数,但移植到TBQ编译出错,提示:不是所有控件路径都返回值 (图1) 在函数末尾,增加 return 0 ,函数编译虽然通过(图2), 但相关公式编译又出错(图3), 请问函数末尾该如何修改? (函数大致功能为,设置了4种止损模式,除此以外,就 return 0 。) NumericRef flag; //多空仓位 Numeric ratio_atr(2); //atr的系数,默认为2倍
TB能编译通过的函数,但移植到TBQ编译出错,提示:不是所有控件路径都返回值 (图1) 在函数末尾,增加 return 0 ,函数编译虽然通过(图2), 但相关公式编译又出错(图3), 请问函数末尾该如何修改? (函数大致功能为,设置了4种止损模式,除此以外,就 return 0 。) NumericRef flag; //多空仓位 Numeric ratio_atr(2); //atr的系数,默认为2倍
这是两个问题。 第一个返回路径的问题,你定义了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变量就编译通过了,感谢!