自己做量化交易软件(7)通通量化回测设计2-双均线策略回测
前一篇介绍了回测类的设计,我们这篇简单介绍一下回测程序设计。
我们以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-双均线策略回测相关推荐
- 自己做量化交易软件(6)通通量化历史交易回测设计1
前面我们介绍的通通量化软件的一些程序设计. 自己做量化交易软件(1)通通量化分析环境安装使用 https://blog.csdn.net/hepu8/article/details/81866694 ...
- 自己做量化交易软件(10)通通量化AI框架的数据获取与格式
自己做量化交易软件(10)通通量化AI框架的数据获取与格式 我与2018年07月08日开始学习python编程和设计通通量化AI框架,到昨天晚上2018年10月30日,基本框架已经完成.能够显示K线图 ...
- 自己做量化交易软件(12)通通量化AI框架的使用1-与通通AI对话聊天
自己做量化交易软件(12)通通量化AI框架的使用1-与通通AI对话聊天 到今天为止,通通AI量化框架基本完成了.下来要做的工作是进行完善,另外打算做macbook版本软件,我对macbook不熟悉,有 ...
- 自己做量化交易软件(15)通通量化AI框架的选股器设计1
自己做量化交易软件(15)通通量化AI框架的选股器设计 前面我们学会了单只股票的分析,回测功能.下面我们开始设计选股器和量化分析的功能. 在设计选股器之前,我们先要学习一些python基本操作技巧. ...
- 自己做量化交易软件(11)通通量化AI框架的核心--框架结构
自己做量化交易软件(11)通通量化AI框架的核心–框架结构 既然我说了要开源通通量化AI框架,就算大家得到了代码,也不清楚怎么去改进和修改.因此我在最后完善框架的空闲,逐步介绍框架的核心设计思想,大家 ...
- 自己做量化交易软件(9通通量化框架的雏形建立
自己做量化交易软件(9通通量化框架的雏形建立 前面我们做了各种学习尝试,现在开始逐步搭建一个通通量化框架.我做了一部分工作,但是很多朋友有python知识,也想自己能快速搭建程序.因此我放出了全部的开 ...
- 自己做量化交易软件(1)通通量化分析环境安装使用
自己做量化交易软件(1) 通通量化分析环境安装使用 (独狼荷蒲 QQ:2775205) 一.安装python Anaconda包含有超过720个关于科学,数据,工程和数据分析的Python和R包,如果 ...
- 自己做量化交易软件(4)通通量化分析框架构成2
自己做量化交易软件(4)通通量化分析框架构成2 通通股票量化分析框架采用模块化设计,每个模块存放在不同的py文件中. 我们接着上一篇介绍. 五.基础窗口画面框架 HP_view.py HP_view. ...
- 自己做量化交易软件(3)通通量化分析框架构成1
自己做量化交易软件(3)通通量化分析框架构成1 通通股票量化分析框架采用模块化设计,每个模块存放在不同的py文件中. 通通股票量化分析框架下载: https://download.csdn.net/d ...
- 自己做量化交易软件(5)通通量化中创作的布林指标BOLL线
自己做量化交易软件(5)通通量化中创作的布林指标BOLL线 我们读者下载了通通量化演示框架的源代码.在这个代码中没有发现BOLL指标线的算法和绘图函数,我在这篇文章中,假设用户自己创作了新指标BOLL ...
最新文章
- mac vscode 配置golang
- rhel5之sendmail、dovecot配置
- SpringCloud微服务注册中心如何承载大型系统的千万级访问?源码及原理分析
- less及编译工具介绍
- 【Deep Learning笔记】神经网络基础
- vim 多行注释消除注释,多行删除
- lucene的丰富的各种查询
- jquery获取父级元素和子级元素
- 人工智能将是人类最后的需要 | 大咖来了
- jmeter插件下载
- iOS AFNetWorking源码详解(一)
- opencv+python 霍夫圆检测原理
- JavaSE 计算机基础知识 Java语言概述 JDK的下载,安装 HelloWorld案例 环境变量的配置 注释 关键字 标识符
- 基于以太网为基础的POE供电温湿度变送器解决方案
- 【蜻蜓Dragonfly】client部署
- U3D里UI相关逻辑和文件的组织关系的各种形式的比较
- 对曲面的积分求椭圆的面积_此题是关于数学考研的曲面积分题∫∫(xdydz+ydzdx+zdxdy)/(x2+y2+z2)3/2,曲面是上半椭圆球面...
- java.lang.VerifyError: Verifier rejected class 问题解决
- uniapp(js)处理过去时间对比现在时间的时间差如几分钟前,几小时前,几个月前(仿照cnode社区)
- Matplotlib contours 等高线图