> 策略名称

Python版商品期货跨期布林对冲策略

> 策略作者

Hukybo

> 策略描述

参考文章:https://www.fmz.com/bbs-topic/5726

> 策略参数

|参数|默认值|描述|

|----|----|----|

|SA|rb2010|合约A|

|SB|rb2101|合约B|

|OpAmount|true|开仓手数|

|CoverAll|false|启动时平掉所有仓位|

|MAPeriod|20|布林周期参数|

|ATRRatio|2|布林乘数参数|

> 源码 (python)

``` python

'''backtest

start: 2020-02-17 09:00:00

end: 2020-06-12 15:00:00

period: 1d

basePeriod: 1m

exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]

args: [["ATRRatio",3]]

'''

class Hedge:

def __init__(self, q, e, initAccount, symbolA, symbolB, maPeriod, atrRatio, opAmount):

self.q = q

self.initAccount = initAccount

self.status = 0

self.symbolA = symbolA

self.symbolB = symbolB

self.e = e

self.isBusy = False

self.maPeriod = maPeriod

self.atrRatio = atrRatio

self.opAmount = opAmount

def poll(self):

if (self.isBusy or not exchange.IO("status")) or not ext.IsTrading(self.symbolA):

Sleep(1000)

return

exchange.SetContractType(self.symbolA)

recordsA = exchange.GetRecords()

exchange.SetContractType(self.symbolB)

recordsB = exchange.GetRecords()

if not recordsA or not recordsB:

return

if recordsA[-1]["Time"] != recordsB[-1]["Time"]:

return

minL, rA, rB = min(len(recordsA), len(recordsB)), recordsA.copy(), recordsB.copy()

rA.reverse()

rB.reverse()

arrDiff = []

for i in range(minL):

arrDiff.append(rB[i]["Close"] - rA[i]["Close"])

arrDiff.reverse()

if len(arrDiff) < self.maPeriod:

return

boll = TA.BOLL(arrDiff, self.maPeriod, self.atrRatio)

ext.PlotLine("上轨", boll[0][-2], recordsA[-2]["Time"])

ext.PlotLine("中轨", boll[1][-2], recordsA[-2]["Time"])

ext.PlotLine("下轨", boll[2][-2], recordsA[-2]["Time"])

ext.PlotLine("收盘价差价", arrDiff[-2], recordsA[-2]["Time"])

LogStatus(f"{_D()}\n上轨:{boll[0][-1]}\n中轨:{boll[1][-1]}\n下轨:{boll[2][-1]}\n当前收盘差价:{arrDiff[-1]}")

action = 0

if self.status == 0:

if arrDiff[-1] > boll[0][-1]:

Log("开仓 A买B卖", ",A最新价格:", recordsA[-1]["Close"], ",B最新价格:", recordsB[-1]["Close"], "#FF0000")

action = 2

elif arrDiff[-1] < boll[2][-1]:

Log("开仓 A卖B买", ",A最新价格:", recordsA[-1]["Close"], ",B最新价格:", recordsB[-1]["Close"], "#FF0000")

action = 1

elif self.status == 1 and arrDiff[-1] > boll[1][-1]:

Log("平仓 A买B卖", ",A最新价格:", recordsA[-1]["Close"], ",B最新价格:", recordsB[-1]["Close"], "#FF0000")

action = 2

elif self.status == 2 and arrDiff[-1] < boll[1][-1]:

Log("平仓 A卖B买", ",A最新价格:", recordsA[-1]["Close"], ",B最新价格:", recordsB[-1]["Close"], "#FF0000")

action = 1

if action == 0:

return

self.isBusy = True

tasks = []

if action == 1:

tasks.append([self.symbolA, "sell" if self.status == 0 else "closebuy"])

tasks.append([self.symbolB, "buy" if self.status == 0 else "closesell"])

elif action == 2:

tasks.append([self.symbolA, "buy" if self.status == 0 else "closesell"])

tasks.append([self.symbolB, "sell" if self.status == 0 else "closebuy"])

def callBack(task, ret):

def callBack(task, ret):

self.isBusy = False

if task["action"] == "sell":

self.status = 2

elif task["action"] == "buy":

self.status = 1

else:

self.status = 0

account = _C(exchange.GetAccount)

LogProfit(account["Balance"] - self.initAccount["Balance"], account)

self.q.pushTask(self.e, tasks[1][0], tasks[1][1], self.opAmount, callBack)

self.q.pushTask(self.e, tasks[0][0], tasks[0][1], self.opAmount, callBack)

def main():

while not exchange.IO("status"):

Sleep(1000)

initAccount = _C(exchange.GetAccount)

q = ext.NewTaskQueue()

p = ext.NewPositionManager()

if CoverAll:

p.CoverAll()

t = Hedge(q, exchange, initAccount, SA, SB, MAPeriod, ATRRatio, OpAmount)

while True:

q.poll()

t.poll()

```

> 策略出处

https://www.fmz.com/strategy/231803

> 更新时间

2020-10-21 16:35:32

一键复制

编辑

Web IDE

原始数据

按行查看

历史

python 期货策略_Python版商品期货跨期布林对冲策略.md相关推荐

  1. python 期货策略_Python版商品期货跨期布林对冲策略 (教学)

    classHedge:'对冲控制类' def __init__(self, q, e, initAccount, symbolA, symbolB, maPeriod, atrRatio, opAmo ...

  2. python 期货策略_Python版商品期货多品种均线策略

    '''backteststart: 2019-07-01 09:00:00end: 2020-03-25 15:00:00period: 1dexchanges: [{"eid": ...

  3. 策略 python_Python版商品期货多品种均线策略

    完全移植自「CTP商品期货多品种均线策略」,由于Python版本商品期货策略还没有一个多品种的策略,所以就移植了JavaScript版本的「CTP商品期货多品种均线策略」.提供一些Python商品期货 ...

  4. python数据分析及可视化(十七)聚宽(双均线分析、因子选股策略、多因子选股策略、均值回归理论、布林带策略、PEG策略、权重收益策略)

    聚宽 聚宽是一个做金融量化的网站,https://www.joinquant.com,登录注册,如果你写的文章.策略被别人采纳,增加积分,积分用于免费的回测时长.在我的策略,进入策略列表,里面有做好的 ...

  5. python 网格策略_Python版简单网格策略

    Python版简单网格策略 策略广场上的Python策略不多,这里编写了一个Python版本的网格策略.策略原理十分简单,在一个价格区间内固定价格距离产生一系列的网格节点,当行情变化时,价格到达一个网 ...

  6. python全局变量定义_Python 3 实现定义跨模块的全局变量和使用

    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...

  7. python对话框大小_Python 版 AR 对话框

    周末了,用 Python 代码给大家带来一个好玩的视频特效:Python 版 AR 对话框https://www.zhihu.com/video/1110617264784699392 摄像头拍摄的视 ...

  8. python rm 条件_python版rm命令

    安全的linux rm 命令 -- python版rm命令 众所周知 linux 下 大杀器之一 rm 是多么恐怖的东西存在 众多系统管理员 对此命令是又爱 又恨, 基于本人也是一枚系统管理员, 写下 ...

  9. python容器装水_Python版LeetCode11. 盛最多水的容器

    本文转载自[微信公众号:机器学习算法与Python精研,ID:AITop100]经微信公众号授权转载,如需转载与原文作者联系 题目: 给定 个非负整数 1,2,...,n,每个数代表坐标中的一个点 ( ...

  10. python显示倒计时_python版春节倒计时实时显示

    昨天写了个计算距离今年春节还有几天的脚本,今天在群里看到可以实时刷新的一个脚本,利用flush()函数清空输出的功能,我把昨天的脚本修改了以下,下面直接上代码:[root@localhost prog ...

最新文章

  1. android 通知取消折叠_三星折叠屏手机发布会取消背后-折叠屏真的是用户想要的吗...
  2. 科学家研发多模态生物识别系统,基于脑纹独特性来防范身份欺骗
  3. java 二叉堆_二叉堆(三)之 Java的实现
  4. Jenkins 设置镜像_Windows Docker Agent 镜像可以常规使用了
  5. mysql修改表结构大表_在线修改MySQL大表的表结构
  6. An example of using Pandas for regression
  7. 电脑上有一个程序一直在按向上_HUAWEI Matebook 九个超牛电脑快捷键
  8. C#调用C++DLL的小总结8---C++Dll中函数返回字符串指针
  9. 一个古怪的VISTA网络问题解决的坎坷经历
  10. new/delete和malloc/free的区别一般汇总
  11. selenium 定位方式3-css_selector
  12. 遍历字典时用与不用iter的区别
  13. Web***系列教程之跨站脚本***和防范技巧详解
  14. access与sqlserver数据转换
  15. [原]ASP.NET MVC 3 Razor + jqGrid 示例
  16. 电子万年历——沐雨先生
  17. python-can库基于PCAN-USB使用方法
  18. 面包板的使用-----看板子反面即可
  19. python+ffmpeg视频转码转格式
  20. qiankun 2.x 运行时沙箱 源码分析

热门文章

  1. Unity 2D人物移动实现
  2. python获取标准的北京时间的源码
  3. python地理位置聚类_python实现地理位置的聚类
  4. 计算机协会副会职责,计算机协会规章制度解答.doc
  5. lgv30刷android10,记一次LG V30系列手机完美刷入MIUI12系统和Flyme刷机教程
  6. 第六章 选择语句、循环语句、Debug
  7. The PyTorch-Kaldi Speech Recognition Toolkit
  8. pycharm备份还原
  9. ionic + angular开发篇之踩坑集
  10. 手势识别(一)--手势基本概念和ChaLearn Gesture Challenge