除了在「策略交互」栏中设计交互控件,还可以在策略状态栏中设计交互控件。目前支持的交互控件种类仅有按钮类型,可以参考「语法手册」中LogStatus
函数章节。
状态栏中的按钮控件可以分为:
普通按钮控件 数据结构举例为:
{"type": "button", "name": "按钮1", "cmd": "button1", "description": "这是第一个按钮"}
带一个输入数据的按钮控件
使用input
属性设置输入控件选项,数据结构举例为:
{"type": "button", "name": "按钮2", "cmd": "button2", "description": "这是第二个按钮", "input": {"name": "开仓数量", "type": "number", "defValue": 1}}
{
"type": "button",
"cmd": "test1",
"name": "test1",
"input": {
"type": "selected",
"name": "selected",
"label": "下拉框",
"description": "description",
"default": 100,
"settings": {
"multiple": true,
"customizable": true,
"options":[{"name": "A", "value": 100}, {"name": "B", "value": 200}]
}
},
}
带一组输入数据的按钮控件
使用group
属性设置一组输入控件的选项,数据结构举例为:
{
"type": "button",
"cmd": "open",
"name": "开仓",
"group": [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "市价单|挂单"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "是/否|boolean", "type": "boolean", "defValue": True}
]
}
{
"type": "button",
"cmd": "test2",
"name": "test2",
"group": [{
"type": "selected",
"name": "selected",
"label": "下拉框",
"description": "description",
"default": 200,
"group": "group1",
"settings": {
"multiple": true,
"options":[{"name": "A", "value": 100}, {"name": "B", "value": 200}]
}
}, {
"type": "string",
"name": "string",
"label": "输入框",
"description": "description",
"default": "ABC",
"group": "group1"
}],
}
将这些按钮控件JSON数据编码为JSON字符串,然后使用`
字符包裹住,在状态栏输出。以JavaScript语言为例:
function main() {
var btn = {"type": "button", "name": "按钮1", "cmd": "button1", "description": "这是第一个按钮"}
LogStatus("`" + JSON.stringify(btn) + "`")
}
这些按钮控件也可以写入状态栏表格中,详细例子可以查看语法手册。
input
字段结构与group
字段中单个控件结构一致,以下为详细说明:
{
"type": "selected", // 控件类型(必要字段),支持设置为:number, string, selected, boolean
"name": "test", // 名称(group中使用时,为必要字段)
"label": "topic", // 标题(必要字段)
"description": "desc", // 组件的提示
"default": 1, // 默认值;当前JSON结构中如果不设置settings字段,兼容defValue,可以用defValue代替default
"filter": "a>1", // 选择器,不设置该字段表示不过滤(显示控件);设置该字段时,当表达式为真时不过滤(显示控件)。当表达式为假时过滤(不显示控件)
// 对于选择器,以当前例子中表达式a>1为例,a指的是type=button的结构中group字段下name为a的控件值,根据此数值判断是否过滤
"group": "group1", // 分组
"settings": { ... }, // 组件配置
}
组件配置settings
各个字段详细说明:
settings.required
:是否必选。settings.disabled
:是否禁用。settings.min
:type=number
时有效,表示最小值或字符串最小长度。settings.max
:type=number
时有效,表示最大值或字符串最大长度。settings.step
:type=number
,render=slider
时有效,表示步长。settings.multiple
:type=selected
时有效,表示支持多选。settings.customizable
:type=selected
时有效,表示支持自定义;用户可以直接在下拉框控件中编辑添加新选项,如果选中新编辑的选项,在触发交互时使用该选项的名称而不是选项代表的值。settings.options
:type=selected
时有效,表示选择器的选项数据格式:["选项1","选项2"]
、[{'name':'xxx','value':0}, {'name':'xxx','value':1}]
。settings.render
:渲染组件类型。
type=number
时,settings.render
不设置(默认数字输入框),可选:slider
(滑动条)、date
(时间选择器返回时间戳)。
type=string
时,settings.render
不设置(默认单行输入框),可选:textarea
(多行输入)、date
(时间选择器返回yyyy-MM-dd hh:mm:ss)、color
(颜色选择器返回#FF00FF)。
type=selected
时,settings.render
不设置(默认下拉框),可选:segment
(分段选择器)。
type=boolean
时,目前只有默认复选框。支持双语设置,例如:'选项|options'
文本内容会根据当前语言环境适配;以group
字段中单个控件为例,完整的例子:
{
type:'selected',
name:'test',
label:'选项|options',
description:'描述|description',
default:0, // 这里default默认值设置0,表示{name:'xxx|yyy',value:0}选项中的value值
filter:'a>1&&a<10',
group:'分组|group',
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
}
组件配置
商品期货