我要用python建造一个回测平台

简介: 我要用python建造一个回测平台

今天看了一下quantdigger,pyalgotrade的回测,瞬间陷入痛苦之中,对于不熟悉的人,估计需要花很长时间来学习。我决定自己建造一个回测系统,参考quantdigger,pyalgotrade的优点。这是写的一个简单的均线回测平台,但是效率太低,也没有考虑手续费等问题,还有很遥远的距离需要走。

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 22 15:57:36 2017
@author: Administrator
"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
########################################获取数据
data=pd.read_csv('C:/Users/Administrator/Desktop/rb00030.csv',encoding='gbk')
data=data.iloc[::,:7]
data.columns=['time','oepn','high','low','close','amt','opi']
data.head()
########################################确定交易信号
data['ma5']=data['close'].rolling(5).mean()
data['ma20']=data['close'].rolling(20).mean()
for i in range(len(data)):
    if i>1:
        if data.ix[i-1,'ma5']>data.ix[i-1,'ma20'] and data.ix[i,'ma5']<=data.ix[i,'ma20']:
            data.ix[i,'sk']=-1
        if data.ix[i-1,'ma5']<data.ix[i-1,'ma20'] and data.ix[i,'ma5']>=data.ix[i,'ma20']:
            data.ix[i,'sk']=1
'''
for i in range(len(data)):
    if i>0:
       if data.ix[i-1,'sk']==-1 and data.ix[i,'sk']!=1:
           data.ix[i,'position']=-1
       if data.ix[i-1,'sk']==-1 and data.ix[i,'sk']==1:
           data.ix[i,'position']=1   
       if data.ix[i-1,'sk']==1 and data.ix[i,'sk']!=-1:
           data.ix[i,'position']=1
       if data.ix[i-1,'sk']==1 and data.ix[i,'sk']==-1:
           data.ix[i,'position']=-1
'''
data['position']=''
for i in range(len(data)):
    if i>0:
        if data.ix[i,'sk']==1:
           data.ix[i,'position']=1
        if data.ix[i,'sk']==-1:
           data.ix[i,'position']=-1  
        if data.ix[i,'sk']!=1 and data.ix[i,'sk']!=-1:
           data.ix[i,'position']=data.ix[i-1,'position']
for i in range(len(data)):
    if i>0:
        if data.ix[i-1,'position']==1:
            data.ix[i,'profit']=data.ix[i,'close']-data.ix[i-1,'close']
        if data.ix[i-1,'position']==-1:
            data.ix[i,'profit']=-data.ix[i,'close']+data.ix[i-1,'close']  
data.profit.cumsum().plot()
目录
相关文章
|
1月前
|
Web App开发 数据采集 自然语言处理
python脚本抢各大平台大额优惠卷
python脚本抢各大平台大额优惠卷
73 0
|
1月前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
7月前
|
搜索推荐 算法 前端开发
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
188 0
|
1月前
|
机器学习/深度学习 算法 TensorFlow
【Python机器学习】梯度下降法的讲解和求解方程、线性回归实战(Tensorflow、MindSpore平台 附源码)
【Python机器学习】梯度下降法的讲解和求解方程、线性回归实战(Tensorflow、MindSpore平台 附源码)
116 0
|
7天前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
14 5
|
9天前
|
Java 开发工具 开发者
【编程语言】Python平台化为何比Java差?
【编程语言】Python平台化为何比Java差?
16 1
|
1月前
|
机器学习/深度学习 数据挖掘 开发工具
2024年最全0基础学python开发工具及学习平台推荐_python平台a,面试阿里巴巴客服
2024年最全0基础学python开发工具及学习平台推荐_python平台a,面试阿里巴巴客服
2024年最全0基础学python开发工具及学习平台推荐_python平台a,面试阿里巴巴客服
|
1月前
|
前端开发 JavaScript API
打造在线教育平台:Python后端与Vue前端的完美融合
【4月更文挑战第10天】本文探讨了如何利用Python后端与Vue前端构建功能强大、用户体验良好的在线教育平台。通过Python的Django或Flask框架搭建稳定API服务,结合Vue.js的组件化和数据驱动特性创建高效用户界面。步骤包括确定平台需求、构建后端、创建前端、前后端交互、实现认证授权、优化体验以及测试部署。这种技术融合为在线教育市场提供了一个高效、可扩展的解决方案,适应未来教育平台的智能化、个性化和多元化趋势。
|
1月前
|
Python
python实现股票策略回测案例
此Python代码演示了一个简单的股票策略回测,使用yfinance库获取AAPL股票2020年至2022年的数据。它计算每日收益率,并基于前一日收益率决定买卖:正则买入,负则卖出。通过模拟交易更新现金和股票余额,最终计算总收益。请注意,此示例未涵盖交易费用、滑点、风险管理等实际交易因素。
53 0
|
1月前
|
JavaScript 前端开发 关系型数据库
金融技术解决方案:用Python和Vue开发加密货币交易平台
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建加密货币交易平台。首先确保安装了Python、Node.js、数据库系统和Git。后端可选择Flask或Django框架,通过RESTful API处理交易。前端利用Vue.js、Vuex和Vue Router创建用户友好的界面,并用Axios与后端通信。这种架构促进团队协作,提升代码质量和平台功能。