【整理】框架来源:《7天学会Python量化交易》Day2:3种策略教你如何把握趋势行情良机
我来啦,首先推荐一下我的量化导师 罗勇 老师的微信公众号“十点洞见”和“量化交易策略集萃” (๑•̀ㅂ•́)و✧
文中策略都尽可能的附了代码或调参后的回测结果,鄙人还没能力写深入的策略思路改进,可以一起探讨 ᕕ( ᐛ )ᕗ
论坛的保存机制不是很好,中途丢了好几次草稿,快整疯了(´༎ຶД༎ຶ`)
一、趋势跟踪策略原理与特点
1、三大假设
- 股价短期不可预测(布朗运动)
《上》关于布朗运动、BS公式可以先看这两篇,后续可能发一篇“机器学习期权定价”,到时候再详解
《布朗运动、伊藤引理、BS 公式下》 - 市场信息的不对称性,导致股价的上涨存在动量效应
( 根据经验,股票收益中似乎存在着某种“惯性”,称为动量效应,即未来收益与过去的收益呈正相关。因此价格动量策略相当于购买表现最佳的股票,卖出表现最差的股票,其中表现可以用价格、价值、收益来衡量 ) - 趋势一旦形成,有很大的概率会维持一段时间
2、传统趋势的刻画—趋势线
- 一系列更高的高点和更高的低点,构成上升趋势
- 一系列更低的低点和更低的高点,构成下跌趋势
一篇技术分析的趋势线全解,其中的趋势线修正等原则可以在优化时做调整准则
3、趋势线出入场规则
- 买入点:下跌后上涨,突破更低的高点构成的上轨
- 卖出点:上涨后下跌,跌破更高的低点构成的下轨
4、缺点
- 无法准确量化定义(很难用程序来实现)
- 事后分析头头是道,实战运用困难
5、趋势跟踪策略的特点
- 买高(行情启动位置),卖更高
- 交易周期长(A股市场大涨大跌短,一般处于震荡)
- 胜率较低, 40% - 50%
- 靠盈亏比取胜,大赚、小亏
- 注重风险管理,设定利润目标、严格止损
二、均线策略
核心逻辑:以均线作为支撑或者阻力线作为买入卖出依据
常用指标:双均线,多均线,MACD
1、单均线策略
- 简单移动平均线SMA(N)= N日收市价之和 / N
- 指数平滑移动平均线(区别于SMA,EMA考虑到之前的每一天,离当前越远时间的值响应程度越小)
其中Pi-1表示前一天的收盘价
- 入场:上一收盘价高于25日均线
出场:上一收盘价低于25日均线 - 代码:用的是聚宽JoinQuant策略列表自带的策略,这里就给出核心函数块
详细使用看API文件哦,各个量化平台大同小异
## 开盘时运行函数
def market_open(context):
security = g.security
# 获取股票的收盘价
close_data = get_bars(security, count=26, unit='1d', fields=['close'])
# 取得过去25天的平均价格
MA25 = close_data['close'].mean()
# 取得上一时间点价格
current_price = close_data['close'][-1]
# 取得当前的现金
cash = context.portfolio.available_cash
# 如果上一时间点价格高出25天平均价, 则全仓买入
if (current_price > MA25) and (cash > 0):
order_value(security, cash)
# 如果上一时间点价格低于25天平均价, 则空仓卖出
elif current_price < MA25 and context.portfolio.positions[security].closeable_amount > 0:
# 卖出所有股票,使这只股票的最终持有量为0
order_target(security, 0)