Loading ...

2.9 策略机器人运行中调试(JS - eval 函数的巧用)

Author: 小小梦, Created: 2016-11-15 14:54:40, Updated: 2017-10-11 10:21:40

交互 – 策略机器人运行中调试(JS eval 函数的巧用)

  • 我们先来看一下JS 中 eval 函数的介绍:

    w3school img img

    对eval函数了解后,看看在策略交互方面的代码实现吧!

  • 策略交互中的实现:

    策略交互需要用户处理 API GetCommand 函数的返回值。

var cmd = GetCommand();             // 调用API  获取界面交互控件的消息。 
if (cmd) {                          // 判断是否有消息
    var js = cmd.split(':', 2)[1];  // 分割 返回的消息 字符串, 限制返回2个, 把索引为1的 元素 赋值给 名为js 的变量 
    Log("执行调试代码:", js);         // 输出 执行的代码
    try {                           // 异常检测
        eval(js);                   // 执行 eval函数, 该函数执行传入的参数(代码)。
    } catch(e) {                    // 抛出异常
        Log("Exception", e);        // 输出错误信息
    }
}

下面我们把这个代码段写入策略,并配置好交互界面控件。 完整的测试代码:

var price = 0;
var amount = 0;
function main() {
    Log("初始 price:", price, "初始 amount", amount);
    while(true){
        var cmd = GetCommand();             // 调用API  获取界面交互控件的消息。 
        if (cmd) {                          // 判断是否有消息
            var js = cmd.split(':', 2)[1];  // 分割 返回的消息 字符串, 限制返回2个, 把索引为1的 元素 赋值给 名为js 的变量 
            Log("执行调试代码:", js);         // 输出 执行的代码
            try {                           // 异常检测
                eval(js);                   // 执行 eval函数, 该函数执行传入的参数(代码)。
            } catch(e) {                    // 抛出异常
                Log("Exception", e);        // 输出错误信息
            }
        }
        Sleep(1000);
    }
}

添加交互控件: img

  • 运行一下:

    img 我们修改一下全局变量 price 、 amount 。 img 如果是错误的代码会抛出异常: img

More

syxchina 为什么不停止了重新运行,Command有什么优势?

小小梦 GetCommand API 函数 可以 在策略程序运行中获取 策略 交互设置 发送来的 信息 ,实现 对策略的实时调整。