定义参数时,编译提示“公式参数中数组变量必须使用列表初始化”
例如:
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\"进行参数声明,并指定参数类型。可以选择赋默认值,也可以不赋默认值。”
但是我发现,如果不给初始值,编译会提示:“参数缺少初始值”。
是我哪里没有设置吗?