商品期货套利 - 多品种网格对冲模型 注释版

商品期货套利 - 多品种网格对冲模型 注释版

  • #### 代码:
// 商品期货套利 - 多品种网格对冲模型 注释版
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                                          // 系数 初始1
    for (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  空 symbolB
                coefficient = -1
            }
        }
    }
    _.each(arr, function(pair) {
   
                                    // 把 控制表字符串 数组的  每一个单元  迭代传递到 匿名函数 作为参数 pair
        var tmp = pair.split(':');                               // 把每个 网格节点的 单元 按照':'字符 分割成 参数 数组 tmp
        if (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)                       // 取 当前合约组合中 s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值