wps的官网最新的下载地方在哪里

  上次,我们简单地用Python 和 backtrader 使用最简单的买入卖出策略进行了一次量化投资分析:

  这一次,让我们把策略变得复杂一点,使用MACD策略的信号线交叉交易法:

  MACD指标之5+1交易策略

  本系列教程源代码Github仓库: https://github.com/Ckend/pythondict-quant

  为了解释MACD的原理,我们需要先了解指数移动平均线(下称EMA), 指数移动平均线是移动平均线的一种,能够根据数据点的新旧程度分配不同的权重,其更重视近期价格,减轻对往期价格的权重 ,而普通的移动平均线在所有价格上权重都一致,这是二者最大的不同。

  EMA线还有周期上的不同,长期投资者通常选择50、100、200周期来追踪数月、甚至是年的价格趋势。而12天和26天的时间周期短,则广受短期投资者欢迎。而大部分股票软件wps的的官网的下载的地方是什么的MACD线也是按照12天EMA和26天EMA进行计算的。

  好了,接下来开始从上图讲起,上图可以看出两个基本wps官网最新下载入口在哪里规律:

  蓝线上穿信号线(橙色)的时候看涨。

  蓝线下穿信号线(橙色)的时候看跌。

  蓝线是什么呢?是MACD线,它通过将一个价格短期EMA和价格长期EMA相减得到,在大部分股票软件中是EMA(12) – EMA(26).

  信号线是什么呢?它其实是MACD线的EMA,周期一般为9.

  总结公式如下:

  MACD=价格EMA(12) – 价格EMA(26).信号线=MACD的EMA(9)

  而图中那些一个个的方块,则是由MACD线 – 信号线得到的差值,正值在上,负值在下。

  明白了这些,我们就能够开始构建回测脚本了:

  买入:

  当 MACD线在前一天的值 < 信号线前一天的值

  且 当天MACD线的值 > 当天信号线的值 时

  说明发生了金叉,此时看涨,第二天买入。

  卖出:若已盈利10%,则卖出;若已亏损10%,则卖出。

  这个策略在股票 603186 上,每次交易100股的情况下,年回报率为26.9%.

  开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

  Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

  当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Pythonwps官网最新下载的网站是什么(wps下载电脑版怎么下载安装) 编程的最好搭档—VSCode 详细指南。

  在终端输入以下命令安装我们所需要的依赖模块:

  pip install backtrader

  看到 Successfully installed xxx 则说明安装成功。

  Backtrader基本使用请看我们前一篇文章:

  backtrader教程—量化投资原来这么简单(1)

  本文全部代码,请在Python实用宝典后台回复:量化投资2 进行下载。

  如果你没看第一篇文章,可能不知道如何构建这个策略,一脸懵逼也正常,所以推荐先阅读 backtrader教程—量化投资原来这么简单(1) ,当然,如果你只希望跑起来,修改一些参数,可以 Python实用宝典后台回复:量化投资2 下载全部源代码。

  从MACD的原理中我们知道,MACD由EMA线计算而来,因此我们需要构建一个短期EMA和一个长期EMA,常规的选择是周期分别为12和26的EMA线:wps的免费版下载地址怎么找

  from backtrader.indicators import EMA

  me1 = EMA(self.data, period=12)

  me2 = EMA(self.data, period=26)

  self.macd = me1 – me2

  根据前面的分析我们知道,信号线是MACD线周期为9的EMA:

  self.signal = EMA(self.macd, period=9)

  这样我们就构建完这两条重要的线了,是不是特别简单?接下来和第一篇文章一样,在策略wps office 的官方下载的地方的next函数中,编写买入卖出逻辑:

  # Python 实用宝典

  def next(self):

  self.log('Close, %.2f' % self.dataclose[0])

  if self.order:

  return

  ​

  if not self.position:

  # 如果没有持仓,若前一天MACD < Signal, 当天 Signal < MACD,则第二天买入

  condition1 = self.macd[-1] – self.signal[-1]

  condition2 = self.macd[0] – self.signal[0]

  if condition1 < 0 and condition2 > 0:

  self.log('BUY CREATE, %.2f' % self.dataclose[0])

  self.order = self.buy()

  ​

  else:

  # 若已盈利10%,则卖出;若已亏损10%,则卖出。

  condition = (self.dataclose[0] – self.bar_executed_close) / self.dataclose[0]

  if condition > 0.1 or condition < -0.1:
WPS office的官网最新的下载的地方

  self.log('SELL CREATE, %.2f' % self.dataclose[0])

  self.order = self.sell()

  买入逻辑就是我们在原理中提到的,若前一天MACD < Signal, 当天 Signal < MACD,则第二天买入。

  卖出逻辑则简单许多, 若已盈利10%,则卖出;若已亏损10%,则卖出。

  设置佣金为千分之五,每次交易为100股,初始资金为10000元:

  cerebro.broker.setcash(10000)

  cerebro.addsizer(bt.sizers.FixedSize, stake=100)

  cerebro.broker.setcommission(commission=0.005)

  在命令行中运行脚本:

  python macd.py

  得到回测结果如下:

  

  其实结果好得出乎意料,因为这是一个不算复杂的策略,在代码最后加上一句

  cerebro.plot()

  能看到整个策略的回测情况如图:

  

  用红色的框标记策略交易成功上涨部分,绿色的框标记下跌部分。

  

  可以看到,8次操作中盈利了7次。为什么能有这么好的结果呢?首先, 603186 是一个业绩不错的股票,其本身基本面不差,回测的前期也处于上涨状态,因此其回测效果极佳也就在意料之中wps官网最新的下载的网站在哪里。