本文主要是介绍商品期货套利 - 多品种网格对冲模型 注释版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
商品期货套利 - 多品种网格对冲模型 注释版
- #### 代码:
// 商品期货套利 - 多品种网格对冲模型 注释版
function Hedge(q, e, positions, symbolA, symbolB, hedgeSpread) { // 对冲对象 生成函数, 参数q 为最开始调用 商品期货交易类库模板 的 导出函数 生成的 交易队列控制对象, 参数e 为交易所对象,positions 为初始仓位// symbolA 为第一个合约类型, symbolB 为第二个合约类型, hedgeSpread 为对冲 交易量控制表 字符串。var self = {} // 声明一个 空对象 用于给空对象 初始化 后返回 (即对冲对象)self.q = q // 给对冲对象 添加 属性 q ,并用参数的q 初始赋值。self.symbolA = symbolA // 给对冲对象self 添加属性 symbolA ,储存 第一个合约类型self.symbolB = symbolB // ...self.name = symbolA + " & " + symbolB // 对冲对象的 名称 即对冲组合self.e = e // 对冲对象 中储存交易所对象 的引用 self.isBusy = false // 繁忙 标记 初始为 不繁忙。self.diffA = 0 // 差价A , 即 symbolA买一 - symbolB卖一 self.diffB = 0 // 差价B , 即 symbolB卖一 - symbolA买一self.update = _D() // 记录 更新时间var arr = hedgeSpread.split(';') // 把传入的 交易量控制表 字符串 按照 ';' 字符 分割。self.dic = [] // 网格节点 对象 数组var n = 0 // var coefficient = 1 // 系数 初始1for (var i = 0; i < positions.length; i++) { // 遍历持仓信息。if (positions[i].ContractType == symbolA) { // 如果遍历当前的 持仓信息 的合约类型 和 当前对冲对象的 第一个合约类型 相同n += positions[i].Amount // 累计 类型为 symbolA 的合约的持仓量if (positions[i].Type == PD_LONG || positions[i].Type == PD_LONG_YD) { // 如果 持仓类型是 多仓 , coefficient 赋值为 -1 ,即 代表 反对冲: 多 symbolA 空 symbolBcoefficient = -1}}}_.each(arr, function(pair) { // 把 控制表字符串 数组的 每一个单元 迭代传递到 匿名函数 作为参数 pairvar tmp = pair.split(':'); // 把每个 网格节点的 单元 按照':'字符 分割成 参数 数组 tmpif (tmp.length != 3) { // 由于 格式 是 30:15:1 即 开仓差价: 平仓差价: 下单量 ,所以 用 ':' 分割后 tmp长度 不是3的 即 格式错误throw "开仓表不正确"; // 抛出异常 格式错误}var st = { // 每次迭代的时候 构造一个对象 open: Number(tmp[0]), // 开仓 把 tmp[0] 即 30:15:1 按 ':' 分割后 生成的数组中的 第一个元素 30 , 通过 Number 函数 转换为数值cover: Number(tmp[1]), // 平仓..amount: Number(tmp[2]), // 量..hold: 0 // 持仓 初始为0}if (n > 0) { // 如果 n 大于0 ,即 开始的时候 有持仓。var m = Math.min(n, st.amount) // 取 当前合约组合中 symbolA的 持仓量 和 网格节点 中的开仓量 二者的
这篇关于商品期货套利 - 多品种网格对冲模型 注释版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!