JavaScript怎么实现商品期货移仓类库
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"JavaScript怎么实现商品期货移仓类库"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"JavaScript怎么实现商品期货移仓类库"文章
千家信息网最后更新 2026年11月01日JavaScript怎么实现商品期货移仓类库
这篇文章主要介绍"JavaScript怎么实现商品期货移仓类库"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"JavaScript怎么实现商品期货移仓类库"文章能帮助大家解决问题。
设计实现
编写商品期货策略的时候,经常有移仓的需求。那么如何实现这样的操作呢?在商品期货多品种主力自动移仓海龟交易策略中我们看到了相关移仓操作的实现。借鉴策略中的移仓机制,我们设计一个「商品期货移仓类库」。
移仓操作其实并不复杂,只是在需要移仓的时候,把当前仓位平掉再到需要移动到的合约开出新仓位即可。具体设计出两种使用场景。
A合约 -> B合约
待策略中编写的条件触发,执行一次A合约到B合约的移仓操作。
例如一次按钮交互操作触发:var q = $.NewTaskQueue() // 生成用于具体下单操作的对象,源自商品期货交易类库var t = $.NewTransfer(exchange, q, $.IsTrading) // 生成处理移仓操作的对象...var cmd = GetCommand() // 获取交互命令if(cmd) { // 接收到任何交互命令t.process("rb2010", "rb2101") // 执行移仓}...切换主力合约
检测系统中主力合约变更,进行当前旧主力合约到新主力合约的移仓操作。
该模板类库不设计参数。
// 导出函数(接口)$.NewTransfer = function (e, taskQueue, IsTrading) {var self = {}self.currSymbol = ""self.e = eself.q = taskQueueself.IsTrading = IsTradingself.arrAction = [] self.process = function(symbolA, symbolB) {if((typeof(symbolB) == "undefined" && !self.IsTrading(symbolA)) || (typeof(symbolB) != "undefined" && !self.IsTrading(symbolA) && !self.IsTrading(symbolB))) {return } self.arrAction = []// 检测参数是否有symbolB , 没有即为检测主力合约 , 有则为移仓具体合约if(typeof(symbolB) == "undefined") {// 检测symbolA合约是否为XX888 或者 XX000if(symbolA.indexOf("888") == -1 && symbolA.indexOf("000") == -1) {throw "缺少symbolB参数!"}// 检测是否触发移仓var insDetail = nullif(self.currSymbol == "") {insDetail = _C(self.e.SetContractType, symbolA)self.currSymbol = insDetail.InstrumentID}insDetail = _C(self.e.SetContractType, symbolA)if(self.currSymbol != insDetail.InstrumentID) {var oldSymbol = self.currSymbolvar pos = self.q.GetPosition(self.e, oldSymbol)if(pos && pos.Amount > 0) {// 移仓self.arrAction = [oldSymbol, insDetail.InstrumentID, pos]Log("开始移仓:", self.arrAction[0], "->", self.arrAction[1], self.arrAction, "#FF0000") } else {self.currSymbol = insDetail.InstrumentID} } } else {// 检测是否有symbolA持仓var pos = self.q.GetPosition(self.e, symbolA)if(pos && pos.Amount > 0) {// 移仓self.arrAction = [symbolA, symbolB, pos]Log("开始移仓:", self.arrAction[0], "->", self.arrAction[1], self.arrAction, "#FF0000") } else {Log("没有检测到", symbolA, "的仓位,pos:", pos, "#FF0000") } }if(self.arrAction.length == 3) {self.q.pushTask(self.e, self.arrAction[0], (self.arrAction[2].Type == PD_LONG || self.arrAction[2].Type == PD_LONG_YD ? "closebuy" : "closesell"), self.arrAction[2].Amount, function(task, ret){if(!ret) {Log(self.arrAction[0], "移仓平仓失败!", self.arrAction[0], "->", self.arrAction[1], "#FF0000")return }Log("移仓进度平仓成功,开始开仓!", self.arrAction[1], "数量:", self.arrAction[2].Amount, "#FF0000")self.q.pushTask(self.e, self.arrAction[1], (self.arrAction[2].Type == PD_LONG || self.arrAction[2].Type == PD_LONG_YD ? "buy" : "sell"), self.arrAction[2].Amount, function(task, ret){if(!ret) {Log(self.arrAction[1], "移仓开仓失败!", self.arrAction[0], "->", self.arrAction[1], "#FF0000")return }Log("移仓成功!", self.arrAction[0], "->", self.arrAction[1], "#FF0000") }) }) }while(self.q.size() > 0) {self.q.poll()Sleep(500) } }return self}// 测试函数,在主策略中执行function main() {var q = $.NewTaskQueue()var t = $.NewTransfer(exchange, q, $.IsTrading)var isTransfer = falsevar isFirst = truevar n = 0while(true) {if(exchange.IO("status")) {LogStatus(_D(), "已经连接!")if(isFirst) {isFirst = false exchange.SetContractType("rb1905")exchange.SetDirection("buy")var ticker = exchange.GetTicker()exchange.Buy(ticker.Last + 10, 1)Log(exchange.GetPosition()) } // 检测主力合约移仓t.process("rb888") // 模拟触发一次/* if(n == 20) { t.process("rb1905", "rb1910") } */// 检测条件触发移仓/* var cmd = GetCommand() if(cmd) { isTransfer = true } if(isTransfer) { t.process("rb2010", "rb2101") isTransfer = false } */} else {LogStatus(_D(), "未连接!") }n++Sleep(1000) }}该模板类库中的main函数即为在主策略中的测试代码,例如下图:
回测测试
测试代码在开始时,开出一个仓位,随后使用主力合约检测的方式移仓。
或者使用具体条件触发一次移仓,进行测试。
只进行一次具体的移仓操作。
关于"JavaScript怎么实现商品期货移仓类库"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
合约
检测
主力
商品
期货
策略
测试
设计
仓位
函数
参数
条件
知识
成功
代码
命令
对象
平仓
时候
模板
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海睿民互联网科技有限公司
重生之互联网科技帝国
深圳恒合互联网络科技有限公司
科技互联网政务服务
互联网科技的
平安科技 互联网
互联网 的科技创新
互联网科技的英文
美国互联网黑科技
互联网科技视频素材
安控科技rtu产品工业互联网
互联网为啥属于高科技
未来五年的互联网科技
互联网新科技动漫ppt素材
滨湖区互联网智能科技产品有哪些
互联网时代的科技公司
黑云互联网科技有限公司
广州燕处互联网科技有限公司
亚光科技低轨卫星互联网
科技发展第三阶段互联网时代
未来的互联网科技
广州互联网络科技有限公司
湖南诚度互联网科技有限公司
佳云科技和互联网广告
互联网公司科技股
互联网科技与大数据专业
亳州好赞互联网科技有限公司
四川慕妮娅互联网科技有限公司
广州有谷有贝互联网科技有限公司
马化腾互联网科技教学