暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

移动平均策略

量化分析之路 2020-03-24
376

在炒股过程中我们经常听到均线(MA510日 月线 半年线 等等

 

均线MAmoving average) 通常是值股票的收盘价的多日平均价。

5日均线为例,0为回测日 为了防止未来数据,我们取前五日的收盘价价求均值


某股票的前5日价格为 10 10.5 11 10.5 10 那么它在第0日的五日均价就为10.5.

 

普遍的方法有:移动平均法 指数移动平均法  加权移动平均法 等。

 

:方法一   当股价上穿X日均线时 买入

 当股价下穿X日均线时 卖出

 

方法二 :  当股价X日均线 上穿Y日均线时 买入

  股价X日捐献 下穿Y日均线时 卖出

如图中所示  白线为MA5  黄线为MA10 在第一块红色部分 MA5上穿MA10 并在第三红色部分MA5才下穿MA10,收取到了巨大的涨幅。


下面我们来做一下代码讲解。第一部分 预备工作  我在这以002397的股票为例子。回测一下  是持股不动的收益比较高 还是采用策略的收益比较高

import talib as ta 
import pandas as pd
import numpy as np






start = '2017-01-01' # 回测起始时间
end = '2018-01-01' # 回测结束时间
universe = ['002397.XSHE']       #  以 002397为例 证券池,支持股票、基金、期货、指数四种资产
benchmark = '002397.XSHE' # 策略参考标准
freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 1 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟

 第二部分 配置账户信息 

# 配置账户信息,支持多资产多账户
accounts = {
'fantasy_account': AccountConfig(account_type='security', capital_base=10000000)}




def initialize(context):
context.short_term = 5 #参数 5日
    context.long_term = 20        #参数 10 20日等
    context.window = 30            #滑动窗孔 > 5+20


第三部分 执行操作

def handle_data(context):
 # 获取账户信息和股票信息
account = context.get_account('fantasy_account')
universe = context.get_universe()

     # 获取股票全部数据
data = context.history(universe, time_range=context.window, attribute='closePrice', freq='d', style='sat',retype='frame ')


     # 股票数据包含很多 收盘价 换手率 量比 PE PB等 我们只需要它的收盘价
close_price = np.array(data[universe[0]]['closePrice'])
    log.info(close_price)
    
    # 调用ralib 计算均线数据 5日均线 和15日平均线
short_ma = ta.MA(close_price, context.short_term)
long_ma = ta.MA(close_price, context.long_term)
log.info(data)

# 获得持仓信息
position = account.get_position(universe[0])
# 检测是否有持仓
    # 5日均线上穿20日均线 没持仓 买入
if not position:
if(short_ma[-2] < long_ma[-2]) and (short_ma[-1] > long_ma[-1]):
account.order_pct_to(universe[0], 1)
    # 5日均线下穿20日均线 有持仓 ,卖出
else:
if (short_ma[-2] > long_ma[-2]) and (short_ma[-1] < long_ma[-1]):
account.order_pct_to(universe[0], 0)

这是我跑了一下回测,蓝色线为移动均线策略的收益。黑色线benchmark为持股不动的收益。看到操作的收益时略高于持股不动的收益。

我们看到 还有一些夏普率 贝塔 回撤等数据 后面再讲解

 



文章转载自量化分析之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论