商品期货量化交易类库 (注释版)

Author: 扫地僧, Created: 2017-03-16 10:49:32, Updated: 2020-03-19 09:34:31

                                  // 执行回调函数。把 task 任务 对象  和 交易的结果  ret 对象 传入回调函数。 
    }

    if (task.onFinish) {                                                         // 处理 任务的回调函数
        task.onFinish(task, ret);
    }
    return self.ERR_SUCCESS;
}

self.poll = function() {                                                         // 迭代执行 弹出 tasks 中的任务 ,并调用 pollTask 执行任务。
    var processed = 0                                                            // 未执行完成的任务计数 ,每次初始0
    _.each(self.tasks, function(task) {                                          // 迭代  可以搜索 _.each 的用法
        if (!task.finished) {                                                    // 如果 任务不是完成状态,
            processed++                                                          // 未完成任务 计数 累计
            self.pollTask(task)                                                  // 执行弹出的任务
        }
    })
    if (processed == 0) {                                                        // 如果没有未完成的任务,即 所有任务队列内的任务完成 ,执行清空 队列对象中 tasks 数组.
        self.tasks = []
    }
}

self.size = function() {                                                         // 给队列对象添加 函数 size 获取 任务队列 中 任务个数
    return self.tasks.length
}

return self                                                                      // 返回构造好的队列对象

}

$.AccountToTable = AccountToTable; // 把 AccountToTable 引用传递给 导出函数 (接口)

// 测试用 主函数 function main() { var p = $.NewPositionManager(); p.OpenShort(“MA701”, 1); p.OpenShort(“MA705”, 1); Log(p.GetPosition(“MA701”, PD_SHORT)); Log(p.GetAccount()); Log(p.Account()); Sleep(60000 * 10); p.CoverAll(); LogProfit(p.Profit()); Log($.IsTrading(“MA701”)); // 多品种时使用交易队列来完成非阻塞的交易任务 var q = $.NewTaskQueue(); q.pushTask(exchange, “MA701”, “buy”, 3, function(task, ret) { // 最后一个参数 function(task,ret){…} 就是一个 匿名函数作为回调函数传入任务对象task Log(task.desc, ret) // 回调函数中 输出了该任务的描述, 和任务完成的返回值,这些是预设,并不会马上执行。 if (ret) { q.pushTask(exchange, “MA701”, “closebuy”, 1, 123, function(task, ret) { // 在第一个压入队列的任务的回调函数中,压入匹配的任务到任务队列。用来实现配对交易。 // 只要第一个任务交易完成就会触发回调函数中的匹配操作。 Log(“q”, task.desc, ret, task.arg) }) } }) while (true) { // 在空闲时调用poll来完成未完成的任务 q.poll() Sleep(1000) } }


- ### 商品期货交易类库现已内置,点击既可以在策略中引用。最新的源码可以点击下图箭头位置获取。

 ![img](/upload/asset/1d23bb24089bf91c48d.jpg)  

如有错误,欢迎斧正。
QQ:359706687

相关内容

更多内容

期货程序化 python的呢