// 也可以构造一个按钮在表格中, 策略用GetCommand接收cmd属性的内容
var table = {
type: 'table',
title: '持仓操作',
cols: ['列1', '列2', 'Action'],
rows: [
['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': '平仓'}],
]
};
LogStatus('`' + JSON.stringify(table) + '`')
// 或者构造一单独的按钮
LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': '平仓'}) + '`')
// 可以自定义按钮风格(bootstrap的按钮属性)
LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': '平仓'}) + '`')
API文档可以看到在策略状态栏中显示 表格、字符串、图片、图表 等内容 都是通过调用 API 函数:
LogStatus
实现的。 我们还可以 通过 构造一个 JSON数据 来设定一个可交互的按钮。 - #### DEMO 源码:function test1(p) { Log("调用自定义函数,参数:", p); return p; } function main() { while (true) { var table = { type: 'table', title: '持仓操作', cols: ['列1', '列2', 'Action'], rows: [ ['a', '1', { 'type': 'button', // 显示按钮 必须要 把 type 设置为 button 类型 'cmd': "CoverAll", // 字符串,发送的 数据,由GetCommand()函数接受。 'name': '平仓' // 按钮上显示的名字 }], ['b', '1', { 'type': 'button', 'cmd': 10, // 数值 'name': '发送数值' }], ['c', '1', { 'type': 'button', 'cmd': _D(), // 函数 策略运行 期间会一直调用 'name': '调用函数' }], ['d', '1', { 'type': 'button', 'cmd': 'JScode:test1("ceshi")', // 字符串, 用于执行的 JS 代码。 'name': '发送JS代码' }] ] }; LogStatus('`' + JSON.stringify(table) + '`') var str_cmd = GetCommand(); if (str_cmd) { Log("接收到的交互数据 str_cmd:", "类型:", typeof(str_cmd), "值:", str_cmd); } if (str_cmd && str_cmd.split(':', 2)[0] == "JScode") { // 判断是否有消息 var js = str_cmd.split(':', 2)[1]; // 分割 返回的消息 字符串, 限制返回2个, 把索引为1的 元素 赋值给 名为js 的变量 Log("执行调试代码:", js); // 输出 执行的代码 try { // 异常检测 eval(js); // 执行 eval函数, 该函数执行传入的参数(代码)。 } catch (e) { // 抛出异常 Log("Exception", e); // 输出错误信息 } } Sleep(500); } }
### 我们来实际运行一下,策略运行如图:
### 我们可以点击 状态栏 上表格内的按钮 触发交互,我们依次点击 “平仓”、“发送数值” 这两个按钮。
点击 “平仓” 按钮的时候可以正常发送出消息:
> 但是点击 “发送数值” 的时候就不行了,原因是[ ```'cmd': 10, // 数值``` ]这里是 10 。不能发送数值类型。

# 已经优化 兼容了 数值,返回的 为数值形式的 字符串。
### 接下来我们点击 “调用函数” 按钮, 用来测试被调用的函数是 _D() 函数,_D()函数会不停的返回当前的时间字符串,所以这里如果写函数调用,会不停的调用。
日志中会打印接收到的数据:
### 最后我们来点击 “发送JS代码” 按钮,我们可以执行我们代码中用来测试的自定义函数
function test1(p) {
Log("调用自定义函数,参数:", p);
return p;
}
点击按钮:
可以看到 执行了函数 test1 中的
Log("调用自定义函数,参数:", p);
语句。
- #### 代码中插入'class': 'btn btn-xs btn-danger',
样式可以改变按钮的外观。
赶快动手练练吧!