前一篇介绍了回测类的设计,我们这篇简单介绍一下回测程序设计。
我们以5日均线和20日均线的交叉作为买卖点策略,来计算对一只股票交易的收益情况。这里仅仅是一个双均线策略演示的例子。读者可以在此基础上,修改为自己的策略。
程序test_df01.py 是双均线回测程序,用户自己修改为自己的策略。里面有完整的说明信息,我们不再介绍设计原理了。我们给出全部程序代码和结果。
我们使用了聚宽数据,用户需要修改为自己的用户和密码。

##修改为自己的聚宽用户或密码
x=auth('电话号码,'密码')

程序test_df01.py全部代码如下。

import pandas as pd
import numpy  as np
import datetime as dt
import time
import matplotlib.pyplot as plt
import math
from jqdatasdk import *
import HP_lib as mylib
from HP_sys import *##修改为自己的聚宽用户或密码
x=auth('18578755056','??????')code=normalize_code('000001')
ds='2017-01-01'
de=time.strftime('%Y-%m-%d',time.localtime(time.time()))
df1 = get_price(code,start_date=ds,end_date=de, frequency='daily') # 日线数据##数据规格化
df1.dropna(inplace=True)
df2=df1
df2.insert(0,'date',df2.index)
df2=df2.reset_index(level=None, drop=True ,col_level=0, col_fill='')  ##双均线交易策略
df2=mylib.MA(df2,'close',5,'C5') #把5日均线存放到C5列中
df2=mylib.MA(df2,'close',20,'C20') #把20日均线存放到C20列中
df2=mylib.CROSS(df2,'C5','C20','B1') #把5日均线上穿20日均线,存放列B1,买入信号
df2=mylib.CROSS(df2,'C20','C5','S1') #把5日均线下穿20日均线,存放列S1,卖出信号##回测
tt=hpQuant()   ##初始化类#下面是用户可设置信息。
#        self.money2=1000000.00  #总资金
#        self.code=""   #证券代码
#        self.stamp_duty=0.001   #印花税 0.1%
#        self.trading_Commission=0.0005    #交易佣金0.05%
#        self.stop_loss_on=True #允许止损
#        self.stop_loss_max=50 #止损3次,就停止交易
#        self.stop_loss_range=0.05   #止损幅度tt.code=code   #证券代码,必须输入
tt.stop_loss_on=False    #关闭自动止损
df3=tt.Trade_testing(df2,'B1','S1','HL')   #开始回测
print('\n打印交易过程')
tt.PrintTrade()    #打印交易过程
print('\n打印持仓信息')
tt.PrintSecurity()   #打印持仓信息
print('\n 打印内部交易记录信息')
print(tt.text)     #打印交易信息######下面是绘图
# 开启一个双图例的窗口,定义为211和212
plt.figure(2, figsize=(12,8), dpi=80)
ax1 = plt.subplot(211)
ax2 = plt.subplot(212)
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
# ax1(211窗口)
plt.sca(ax1)
plt.title(code+'  价格均线')
# 显示网格:grid='on'
df3.close.plot(color='red', grid='on')
df3['C20'].plot(color='blue', grid='on')
ax2.axhline(0, color='blue')# ax2(212窗口)
plt.sca(ax2)
df3.HL.plot(color='orange', grid='on')
df3.B1.plot(color='red')
df3.S1.plot(color='blue')
#添加标题
plt.title(code+'  获利')
plt.show()

程序运行结果如下:


如果读者有什么问题咨询,可加我QQ:2775205,或着加我的QQ群:524949939
进行交流。

自己做量化交易软件(7)通通量化回测设计2-双均线策略回测相关推荐

  1. 自己做量化交易软件(6)通通量化历史交易回测设计1

    前面我们介绍的通通量化软件的一些程序设计. 自己做量化交易软件(1)通通量化分析环境安装使用 https://blog.csdn.net/hepu8/article/details/81866694 ...

  2. 自己做量化交易软件(10)通通量化AI框架的数据获取与格式

    自己做量化交易软件(10)通通量化AI框架的数据获取与格式 我与2018年07月08日开始学习python编程和设计通通量化AI框架,到昨天晚上2018年10月30日,基本框架已经完成.能够显示K线图 ...

  3. 自己做量化交易软件(12)通通量化AI框架的使用1-与通通AI对话聊天

    自己做量化交易软件(12)通通量化AI框架的使用1-与通通AI对话聊天 到今天为止,通通AI量化框架基本完成了.下来要做的工作是进行完善,另外打算做macbook版本软件,我对macbook不熟悉,有 ...

  4. 自己做量化交易软件(15)通通量化AI框架的选股器设计1

    自己做量化交易软件(15)通通量化AI框架的选股器设计 前面我们学会了单只股票的分析,回测功能.下面我们开始设计选股器和量化分析的功能. 在设计选股器之前,我们先要学习一些python基本操作技巧. ...

  5. 自己做量化交易软件(11)通通量化AI框架的核心--框架结构

    自己做量化交易软件(11)通通量化AI框架的核心–框架结构 既然我说了要开源通通量化AI框架,就算大家得到了代码,也不清楚怎么去改进和修改.因此我在最后完善框架的空闲,逐步介绍框架的核心设计思想,大家 ...

  6. 自己做量化交易软件(9通通量化框架的雏形建立

    自己做量化交易软件(9通通量化框架的雏形建立 前面我们做了各种学习尝试,现在开始逐步搭建一个通通量化框架.我做了一部分工作,但是很多朋友有python知识,也想自己能快速搭建程序.因此我放出了全部的开 ...

  7. 自己做量化交易软件(1)通通量化分析环境安装使用

    自己做量化交易软件(1) 通通量化分析环境安装使用 (独狼荷蒲 QQ:2775205) 一.安装python Anaconda包含有超过720个关于科学,数据,工程和数据分析的Python和R包,如果 ...

  8. 自己做量化交易软件(4)通通量化分析框架构成2

    自己做量化交易软件(4)通通量化分析框架构成2 通通股票量化分析框架采用模块化设计,每个模块存放在不同的py文件中. 我们接着上一篇介绍. 五.基础窗口画面框架 HP_view.py HP_view. ...

  9. 自己做量化交易软件(3)通通量化分析框架构成1

    自己做量化交易软件(3)通通量化分析框架构成1 通通股票量化分析框架采用模块化设计,每个模块存放在不同的py文件中. 通通股票量化分析框架下载: https://download.csdn.net/d ...

  10. 自己做量化交易软件(5)通通量化中创作的布林指标BOLL线

    自己做量化交易软件(5)通通量化中创作的布林指标BOLL线 我们读者下载了通通量化演示框架的源代码.在这个代码中没有发现BOLL指标线的算法和绘图函数,我在这篇文章中,假设用户自己创作了新指标BOLL ...

最新文章

  1. mac vscode 配置golang
  2. rhel5之sendmail、dovecot配置
  3. SpringCloud微服务注册中心如何承载大型系统的千万级访问?源码及原理分析
  4. less及编译工具介绍
  5. 【Deep Learning笔记】神经网络基础
  6. vim 多行注释消除注释,多行删除
  7. lucene的丰富的各种查询
  8. jquery获取父级元素和子级元素
  9. 人工智能将是人类最后的需要 | 大咖来了
  10. jmeter插件下载
  11. iOS AFNetWorking源码详解(一)
  12. opencv+python 霍夫圆检测原理
  13. JavaSE 计算机基础知识 Java语言概述 JDK的下载,安装 HelloWorld案例 环境变量的配置 注释 关键字 标识符
  14. 基于以太网为基础的POE供电温湿度变送器解决方案
  15. 【蜻蜓Dragonfly】client部署
  16. U3D里UI相关逻辑和文件的组织关系的各种形式的比较
  17. 对曲面的积分求椭圆的面积_此题是关于数学考研的曲面积分题∫∫(xdydz+ydzdx+zdxdy)/(x2+y2+z2)3/2,曲面是上半椭圆球面...
  18. java.lang.VerifyError: Verifier rejected class 问题解决
  19. uniapp(js)处理过去时间对比现在时间的时间差如几分钟前,几小时前,几个月前(仿照cnode社区)
  20. Matplotlib contours 等高线图

热门文章

  1. 在C++与python间传视频帧
  2. 国外服务器使用CDN加速怎么样
  3. mysql 时区时间_MySql的时区(serverTimezone)引发的血案
  4. 浏览器缓存机制 过期机制和验证机制
  5. Java Web项目中使用Freemarker生成Word文档
  6. 专访 PMC,开源项目 Apache Pulsar 如何挑战 Kafka?
  7. android中view手势滑动冲突的两种解决方法
  8. python图像拼接_python实现图像拼接
  9. html图片左右无缝拼接,Photoshop无缝拼接全景风光照片教程
  10. 命令行连接mongo数据库