1.加权移动平均线定义

加权移动平均线 (Weigted Moving Average,WMA ) 将过去某特定时间内的价格取其平均值,它比重以平均线的长度设定,愈近期的收市价,对市况影响愈重要。计算方式是基于加权移动平均线日数,将每一个之前日 数比重提升。每一价格会乘以一个比重,最新的价格会有最大的比重,其之前的每一日的比重将会递减。

2.加权移动平均线的加权方式

加权的原因是基于移动平均线中,最近一日的收盘价对未来价格波动的影响最大,因此赋予它较大的权值。加权方式分为四种:

a.末日加权移动平均线:

计算公式:

b.线性加权移动平均线:

计算公式:

  =(c11+c22+…+cn*n)/((1+n)*n/2)=2/((1+n)*n)

'''#加权移动平均线策略(线性加权移动平均线)公式:2/((1+n)*n)*(c1*1+c2*2+....+cn*n)- weights = range(1, period + 1)- coef = 2 / (period * (period + 1))=- movav = coef * Sum(weight[i] * data[period - i] for i in range(period))'''def __init__(self):#wma源码位于indicators\wma.py#指标必须要定义在策略类中的初始化函数中#加权移动平均线self.wma=bt.ind.WeightedMovingAverage(period=15)def next(self):#self.data.close是表示收盘价#收盘价大于wma,买入if self.data.close>self.wma:self.buy()#收盘价小于等于wma,卖出if self.data.close<=self.wma:self.sell()
c.梯型加权移动平均线:

计算方法(以5日为例):
[(第1日收盘价+第2日收盘价)×1+(第2日收盘价+第3日收盘价)×2+(第3日收盘价+第4日收盘价)×3+(第4日收盘价+第5日收盘价)×4]/(2×1+2×2+2×3+2×4),即为第五日的阶梯加权移动平均线。

d.平方系数加权移动平均线:

公式(以5日为例):
MA=[(第1日收盘价×1×1)+( 第2日收盘价×2×2)+( 第3日收盘价×3×3)+( 第4日收盘价×4×4)+( 第5日收盘价×5×5)]/(1×1+2×2+3×3+4×4+5×5)

3.加权移动平均线的公式


W(t)=weight factor Close(t)=收盘价

4.加权移动平均线案例
# -*- coding: utf-8 -*-
"""
Created on Wed May 13 14:37:09 2020@author: 觉醒2020
"""from __future__ import (absolute_import, division, print_function,unicode_literals)import datetime
import backtrader as bt # 引入backtrader框架#加权移动平均线策略
#买入与卖出算法:
#   收盘价大于wma,买入
#   收盘价小于等于wma,卖出class StrategyClass(bt.Strategy):'''#加权移动平均线策略(线性加权移动平均线)公式:2/((1+n)*n)*(c1*1+c2*2+....+cn*n)- weights = range(1, period + 1)- coef = 2 / (period * (period + 1))=- movav = coef * Sum(weight[i] * data[period - i] for i in range(period))'''def __init__(self):#wma源码位于indicators\wma.py#指标必须要定义在策略类中的初始化函数中#加权移动平均线self.wma=bt.ind.WeightedMovingAverage(period=15)def next(self):#self.data.close是表示收盘价#收盘价大于wma,买入if self.data.close>self.wma:self.buy()#收盘价小于等于wma,卖出if self.data.close<=self.wma:self.sell()cerebro=bt.Cerebro()
datapath=".\\datas\\test\\000001.XSHE"
data=bt.feeds.GenericCSVData(dataname=datapath,fromdate = datetime.datetime(2018, 1, 1),todate = datetime.datetime(2020, 3, 20),nullvalue=0.0,dtformat=('%Y-%m-%d'),datetime=0,high=3,low=4,open=1,close=2,volume=5,openinterest=-1)
cerebro.adddata(data)cerebro.addstrategy(StrategyClass)
#设置金额,默认是100000
cerebro.broker.set_cash(200000)
cerebro.run(maxcpu=1)
cerebro.plot()

运行结果

打造属于自己的量化投资系统3——利用backtrader创建加权移动平均线策略相关推荐

  1. 打造属于自己的量化投资系统2——利用backtrader创建简单移动平均线策略

    1.移动平均线定义 移动平均线(Moving Average,简称MA)是利用统计分析的方法,将一定时期内的价格加以平均并将不同时间的平均值连接起来,便得到了移动平均线.移动平均线是用来观察价格波动趋 ...

  2. 打造属于自己的量化投资系统5——利用backtrader创建平滑异同移动平均线MACD策略

    1.平滑异同移动平均线定义 平滑异同移动平均线(Moving Average Convergence Divergence,简称MACD指标),也称移动平均聚散指标 DIF(蓝线): 计算12天平均和 ...

  3. 打造属于自己的量化投资系统9——支持向量机SVM算法在股票预测涨跌中应用

    1.支持向量机即SVM原理 支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于分类的范畴.它的原理就是求出"保证距离最近的点,距离它们最远的线&q ...

  4. Python 量化投资实战教程(3) —A股回测MACD策略

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

  5. 明汯投资-解环宇:打造高效迭代的量化投资AI框架

    量化投资与机器学习微信公众号,是业内垂直于量化投资.对冲基金.Fintech.人工智能.大数据等领域的主流自媒体.公众号拥有来自公募.私募.券商.期货.银行.保险.高校等行业30W+关注者,荣获202 ...

  6. Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】

    用python实现全功能动态交互式K线图 手把手用`python`一步步实现动态交互式K线图 ` mplfinance`的基本K线图 目标 实现自定义风格和颜色 图表尺寸调整.相关信息的显示 添加完整 ...

  7. 量化投资学习-15:散户与庄家共赢策略之价值长线策略

    散户的尴尬: 在前面的文章<量化投资学习-13:一张图残酷的展现了庄家.量化交易者.散户的盈利空间的对比>中分析过,如果散户追求短期利益.采用短期炒作的操作策略,实际的利润空间非常狭小,只 ...

  8. 【转】Python 量化投资实战教程(1) — Backtrader 教程

    都说 Python 量化投资 非常好用,但是很多人都不知道该怎么做,甚至觉得是非常高深的知识,其实并非如此,任何人都可以在只有一点Python的基础上回测一个简单的策略. Backtrader是一个基 ...

  9. python量化投资系统构建_零基础搭建量化投资系统 以Python为工具

    章 准备工作 1 1.1 Python简介 1 1.2 Python安装 3 1.3 Pip包管理工具 13 1.4 Python常用开发工具安装 19 1.5 Python集成开发环境Spyder的 ...

  10. 量化投资学习必读书目(九)——《期货交易策略》

    作者简介 作者:(美国)斯坦利·克罗(Stanley Kroll) 译者:陈瑞华.斯坦利·克罗(?-1999)是美国著名的期货专家,1960年进入全球金融中心华尔街.他在华尔街的33年之中,一直在期货 ...

最新文章

  1. Struts2学习小结
  2. ConfigParser-- 读取写入配置文件
  3. 前端学习(2140):webpack的安装
  4. python词云改颜色_一种用Python生成词云
  5. zookpeer实现对服务器动态上下线的监听
  6. rsync+sersync大数据T级以上进行同步方法
  7. nginx一键安装脚本
  8. C# 调用C++DLL注意事项
  9. deque python_python3 deque(双向队列)的详细介绍
  10. CATIA怎么约束快捷键_CATIA常用操作快捷键
  11. 一文搞懂CAN总线协议帧格式
  12. 【2022考石开正攵★氵台】思维导图
  13. AutoCAD 2004-2022 官方简体中文版下载直链
  14. 5700:还钱问题(贪心+思维)
  15. 共享汽车管理系统设计软便件研究
  16. win10注册mysql服务_win10下搭建MySQL服务
  17. 数智化转型赋能方法论与服务路径
  18. 升级 QPython OH 内核至 Python 3.9
  19. matlab中frame是什么意思,frame2time结果是什么含义?
  20. 运维 英文 日常 总结

热门文章

  1. xmind服务器维护,如何使用XMind组织您的待办事项?
  2. MATLAB点云重采样,PCL点云曲面重采样三种方法:上采样,下采样,均匀采样
  3. Linux的进程调度算法简介
  4. Struts2面试题大集合
  5. 三菱q系列plc 和电脑socket_三菱Q系列串口和台达变频器RTU通信
  6. Vmware WorkStation Pro 14 激活密钥
  7. oracle asm 日志,oracle 11g RAC 下ASM实例的alert日志告诉我们什么
  8. dubboX提供rest服务
  9. 宋宝华——Linux设备驱动开发详解:基于最新的Linux 4.0内核(第一章)
  10. stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256