【《深入浅出python量化交易交易实战》Python复现(第二章:(二)移动平均策略)】

本文深入探讨Python量化交易中的移动平均策略,包括单一和双移动平均线的实现,通过代码展示如何计算均线并进行回测。双移动平均策略在选定时间段内虽未实现盈利,但能有效控制风险,减少持仓时间。

第二章 回测与经典策略

2.2 移动平均线及双均线策略

2.2.1 单一移动平均指标

移动平均策略的核心思想非常简单,且十分容易理解

  • 当股价上升且向上穿过N日的均线时,说明股价在向上突破,此时下单买入;当股价下降且向下穿过N日的均线时,说明股价整体出现下跌的趋势,此时下单卖出
  • 当M日均价上升穿过N日的均线(M < N)时,说明股票处于上升的趋势,应下单买入;反之,当M日均价下降且穿过N日均线时,说明股票处于下降的趋势,应下单卖出
    实现N日的均线代码如下:
#codeing=utf-8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import mplfinance as mpf
from utils import wz_data

if __name__ == '__main__':
    #单独实现了去wz网获取数据的接口
    wz = wz_data()
    #股票代码,起始日期,结束日期,这里走的是前复权
    data = wz.get_stock_data_online('601318', '2020-01-01','2020-03-20')
    #返回的直接是一个DataFrame对象
    data.rename(columns={
   
   
        '交易时间': 'Date',
        '开盘价': 'Open',
        '最高价': 'High',
        '最低价': 'Low',
        '收盘价': 'Close',
        '成交量': 'Volume',
        '成交额': 'Money',
        '换手率': 'Turnover'
    }, inplace = True)
    data.index = pd.DatetimeIndex(data['Date'])
    #print(data.head())
    #计算10天均线
    period = 10
    avg_10 = []
    avg_value = []
    avg_value1 = []
    #保证avg_10最多只有10个数,然后计算均值放入avg_value,初始化的时候值为avg_10[0]
    for price in data['Close']:
        avg_10.append(price)
        if len(avg_10) > 10:
            del avg_10[0]
        avg_value.append(np.mean(avg_10))
    #或者直接用rolling函数计算
    avg_value1 = data['Close'].rolling(10,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值