python 量化模型_量化策略 | Python tqsdk — GhostTrader模型!(附代码)
编辑 | Cowboy
校对 | 李明
来源 | 牛角财经
目的 | 量化策略 | Python tasdk — GhostTrader模型!(附代码)
本文将分享,量化策略 | Python tasdk — GhostTrader模型!(附代码)文章及策略代码仅用于学习交流,切勿用于任何商业用途。否则将追究一切竟可能的法律责任!
前言
GhostTrader (幽灵交易策略),其开仓原理非常简单,其核心原理:以最新一笔交易的盈亏作为是否进行下一笔交易。其实,行情的走势大致可以分为趋势和震荡,趋势过后大概率会遭遇震荡;而震荡久了之后大概率会出现趋势行情。
作者认为,原作者的思路很可能就是抓住此特征而编写的。这样写有什么好处?试想,如果目前正是震荡,那么策略很可能会遭遇反复止损,将模型的试错成本降到最低。而采用这种方法,优点是可以大大降低在震荡期间反复的止损次数,当然缺点那就是会遗漏掉某些大行情。没有办法,必须接受策略的“不完美”!
原理大致如下:连亏3比开仓,直到盈利一笔后停止,期间每亏损一次仓位就+1手。策略主要是以前3笔亏损视为震荡,将模型的试错成本降到最低。
而策略并没有用什么高深算法,只采用两条均线来测试。结果却让人惊讶!我想这就是类似这种思路的初衷吧。
01
策略原理
1.开仓:
(1)前一笔多单亏损,MA1>MA2,RSIValue=前一根最高价。开多
(2)前一笔空单亏损,MA1超卖,最低价<=前一根最低价。开空
2.平仓:
(1)最低价<=唐奇安通道下轨,平多。
(2)最高价>=唐奇安通道上轨,平空。
02
策略编写
1.设置参数和变量
我们的回测时间设置为2019-12-01 — 2020-03-02。
code:
"------------------------------------""牛角财经-官方策略案列:GhostTrader""声明:未经允许,代码切勿用于任何商业用途,否则将追究一切尽可能的法律责任!""来源:牛角财经""编辑:cowboy""------------------------------------"from tqsdk import TqApi,TqSim,TqBacktest,TargetPosTask,tafuncfrom datetime import datefrom datetime import timedeltafrom tqsdk.ta import EMA,RSIclass GhostTrader(): "GhostTrader-幽灵交易模型" def __init__(self,symbol = "SHFE.rb2005"): self.api = TqApi(TqSim(),backtest =TqBacktest(start_dt=date(2019,12,1),end_dt=date(2020,3,2)),web_gui=True) # 回测账户、区间设置 self.symbol = symbol self.kline = self.api.get_kline_serial(self.symbol,60*60,200) # k线数据 self.qoute = self.api.get_quote(symbol=self.symbol) # 最新价 self.target_pos = TargetPosTask(self.api, self.symbol) # 目标持仓 self.FastLength = 9 # 短期指数平均线参数 self.SlowLength = 19 # 长期指数平均线参数 self.Length = 9 # RSI参数 self.OverSold = 30 # 超卖 self.OverBought = 70 # 超买 self.AvgValue1 = 0 # 短期指数平均线 self.AvgValue2 = 0 # 长期指数平均线 self.Band_length = 20 # RSI参数 self.ExitHiBand = 0 # 唐奇安通道上轨 self.ExitLoBand = 0 # 唐奇安通道下轨 self.buy_EntryPrice = 0 # 多头进场价格 self.buy_ExitPrice = 0 # 多头出场价格 self.buy_Profit = 0 # 多头利润 self.sell_EntryPrice = 0 # 空头进场价格 self.sell_ExitPrice = 0 # 空头出场价格 self.sell_Profit = 0 # 空头利润 self.Position_flag = 0 # 多空标志
2.模型开平仓的数值计算。
计算出MA1、MA2、RSI、及唐奇安通道。
def set_vars(self): self.AvgValue1 = EMA(self.kline, self.FastLength)['ema'] # self.AvgValue2 = EMA(self.kline, self.SlowLength)['ema'] # RSI self.RSIValue = RSI(self.kline, self.Length)['rsi'] # RSI "通道上轨:前N个交易日的最高价" self.ExitHiBand = max(self.kline.high[-self.Band_length - 1:-1]) "通道下轨:前N个交易日的最低价" self.ExitLoBand = min(self.kline.low[-self.Band_length - 1:-1])
3.信息打印。
def set_info(self): "开仓指标数据" print("----------------------") print("RSIValue:", self.RSIValue.iloc[-2]) print("AvgValue1:", self.AvgValue1.iloc[-2]) print("AvgValue2:", self.AvgValue2.iloc[-2]) print("ExitHiBand:", self.ExitHiBand) print("ExitLoBand:", self.ExitLoBand)
4.开仓函数
code:
def entry(self): while self.Position_flag == 0: self.api.wait_update() if self.api.is_changing(self.kline.iloc[-1],'datetime'): self.set_vars() self.set_info() if self.api.is_changing(self.qoute,'last_price'): if self.AvgValue1.iloc[-2] > self.AvgValue2.iloc[-2] and self.RSIValue.iloc[-2] < self.OverBought and self.qoute.last_price > self.kline.high.iloc[-2]: self.buy_EntryPrice = max(self.kline.high.iloc[-2],self.kline.open.iloc[-1]) self.Position_flag = 1 "开多" if self.buy_Profit < 0: print("前一笔多单-------------------亏损") self.target_pos.set_target_volume(1) else: print("前一笔多单没有亏损") elif self.AvgValue1.iloc[-2] < self.AvgValue2.iloc[-2] and self.RSIValue.iloc[-2] > self.OverSold and self.qoute.last_price < self.kline.low.iloc[-2]: self.sell_EntryPrice = min(self.kline.low.iloc[-2],self.kline.open.iloc[-1]) self.Position_flag = -1 "开空" if self.sell_Profit < 0: print("前一笔空单-------------------亏损") self.target_pos.set_target_volume(-1) else: print("前一笔空单没有亏损")
5.平仓函数,相对简单点。
03
策略回测
品种:rb2005
周期:1小时
区间:2019-12-01 — 2020-03-02。
回测结果:
04
总结
分享的每一个策略,都有其核心的部分。学习并转化为自己的东西,融入到自己的模型中去!至此,已经将整个策略分享给大家了。
(天勤量化官网)
如对您有帮助,感谢分享和在看
粉丝可添加牛角财经官方群:
牛角财经-量化交易群4:975923183
如需文章案例代码,微信关注:‘牛角财经’,回复文章标题,即可领取!
近期原创
python 量化模型_量化策略 | Python tqsdk — GhostTrader模型!(附代码)相关推荐
- 树莓派python实例_使用Python实现树莓派WiFi断线自动重连实例(附代码)
实现 WiFi 断线自动重连,原理是用 Python 监测网络是否断线,如果断线则重启网络服务.接下来给大家分享实现代码,需要的朋友参考下 1.Python 代码 autowifi.py,放在 /ho ...
- python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书
如今Python语言的学习已经上升到了国家战略的层面上.Python语言是人工智能的基础语言,国家相关教育部门对于"人工智能普及"格外重视,不仅将Python列入到小学.中学和高中 ...
- 支持python的交易软件_能用python的期货交易软件,期货量化交易软件哪个好
Q1:期货量化交易软件哪个好 这种问题怎么回答,会被屏蔽的 市场还是有很多的,中金.和讯.同花顺.期获宝.新浪期货等,都有,自己去分别体验下 Q2:只为了自己遍自己用的炒期货软件,学Python还是C ...
- 随机森林模型_量化策略——短周期、单期货品种的随机森林预测模型
在前一篇"期货学习量化学习策略--随机森林模型"一文中(链接:https://mp.weixin.qq.com/s/IhcVZ9D-3cmB1GaAFinboQ),我们尝试了长周期 ...
- python计算均方根误差_如何在Python中创建线性回归机器学习模型?「入门篇」
线性回归和逻辑回归是当今很受欢迎的两种机器学习模型. 本文将教你如何使用 scikit-learn 库在Python中创建.训练和测试你的第一个线性.逻辑回归机器学习模型,本文适合大部分的新人小白. ...
- python股票交易模型_如何用Python建模GGM模型并对股票估值?
内容首发 乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech 用代码理解分析解决金融问题 首先我们快速了解一下什么是GGM模型. GGM模型又叫做"戈登增长模 ...
- python建立分析模型_《利用Python进行数据分析》13.2 使用Patsy创建模型描述
第十三章 Python建模库介绍 13.2 使用Patsy创建模型描述 Patsy(https://patsy.readthedocs.io/)是一个用于描述统计模型(尤其是线性模型)的Python库 ...
- 用python做股票智能投顾模型_如何用Python建模GGM模型并对股票估值?
内容首发 乐学偶得(http://lexueoude.com) 公众号: 乐学Fintech 用代码理解分析解决金融问题 首先我们快速了解一下什么是GGM模型. GGM模型又叫做"戈登增长模 ...
- python ctm 关联主题模型_面向特定划分的主题模型的设计与实现
面向特定划分的主题模型的设计与实现 * 周凯文,杨智慧,马会心,何震瀛,荆一楠 + ,王晓阳 [摘 要] 利用主题模型对文本数据进行处理.分析在如今的数据挖掘领域应用 十分广泛,其中 LDA ( la ...
- 华泰证券 python 自动交易_怎样用 Python 写一个股票自动交易的程序?(不包含交易算法)?...
前言 股票或期货的价格波动,总会有一些可以规律可以遵循的.其中,"背离"也算是其中的一种,并且可以作为判断趋势结束或阶段调整的预警信号. 通常情况下,我们所说的"背离&q ...
最新文章
- 未来十年是AI的黄金发展期
- linux shell read 从键盘或标准输入中读取文本
- android自动更新列表,Android数据库表结构自动升级
- Linux命令详解-mkdir
- jquery.validate动态更改校验规则
- Python实现样本类别的可视化(绘制饼图,展示各类别样本的比例)
- Git过程中遇到Enter passphrase for key '/c/Users/XXX/.ssh/id_rsa':
- 每日一题-12.30-三态数据总线
- idea切换工作空间_IDEA中如何在一个工作空间中管理多个项目
- php微信公众平台关注后欢迎语的设置,关注公众号的欢迎语怎么设置?公众号欢迎语怎么加链接?...
- 太飒了!这届乘风破浪的 IT 女神写得了代码、撕得掉年龄、跨得过行业!
- 文献综述是什么,该怎么写?
- Python与Julia结合使用的个人经验
- VBox 启动虚拟机失败 - NtCreateFile
- Spring 官方文档(中文翻译)
- Unity3D教程:手游开发常用排序算法 -下
- H3C恢复console登录密码
- 复旦微的FMQL10S400ZYNQ芯片的多核操作
- Ubuntu下点阵汉字的字模读取与显示
- postgresql Count estimate
热门文章
- swagger-ui多端口自动切换优化
- Hbase与传统关系型数据库对比
- 《机电传动控制》第三次作业
- How To Search and Restore files from Site Collection Recycle Bin
- linux pptp服务器安装
- Red5java.util.concurrent.RejectedExecutionExceptio
- 关于URL路径的基本使用
- jQuery简单好用的JavaScript代码库略解使用
- 此笔记只作为自身笔记,结构比较混乱,不建议参考,如有需要请访问其他文献,servlet的基础知识和使用
- JUC主要包含哪些功能?