公式参数中数组变量必须使用列表初始化
定义参数时,编译提示“公式参数中数组变量必须使用列表初始化”例如:Params Numeric aaaa(0.1); Numeric bbbb(0.1); Array<Numeric> ccccc(0); //止损策略编号请问要如何写?如果把三个默认参数都去掉的话,编译提示会变为:“参数缺少初始值”
定义参数时,编译提示“公式参数中数组变量必须使用列表初始化”例如:Params Numeric aaaa(0.1); Numeric bbbb(0.1); Array<Numeric> ccccc(0); //止损策略编号请问要如何写?如果把三个默认参数都去掉的话,编译提示会变为:“参数缺少初始值”
代码复制进去有点问题,截个图
@jiushiceshi @byyfish这种参数值类似数组元素的,如果定义在公式的参数里,是必须给初始值的,所以要定义为枚举类型(或者叫列表类型),我给个示例,两位体会下用法吧。代码如下://------------------------------------------------------------------------ // 简称: Q13747 // 名称: 社区问题13747 // 类别: 公式应用 // 类型: 用户应用 // 输出: Void //------------------------------------------------------------------------ Params Enum<Numeric> Para1([1,-1]); //数值类型枚举参数 Enum<String> Para2([1m,5m,15m,30m,1h,1d]); //字符串类型枚举参数 Enum<Bool> Para3([True,False]); //布尔类型枚举参数 Events OnBar(ArrayRef<Integer> indexs) { If(CurrentBar==0) { Print(Para1 = + Text(Para1)); Print(Para2 = + Para2); Print(Para3 = + IIFString(Para3, True, False)); } } 运行如下图:
回复:老师,能不能把教程里面的内容更正下,教程里面可以把数组定义在参数下面,而实际不能。
回复:这个教程说的参数应该是用户函数的参数。公式应用的参数是有些不一样
请管理员解惑。这种数组作为“公式应用”的Params的情况; 以及它的默认参数的问题
我试了下,好像数组的确不能放在parms下面,只能放在vars下面
另外,手册里写:“使用参数之前,必须对参数进行声明,TB公式使用关键字\"Params\"进行参数声明,并指定参数类型。可以选择赋默认值,也可以不赋默认值。”但是我发现,如果不给初始值,编译会提示:“参数缺少初始值”。是我哪里没有设置吗?