有什么好用的股票回测接口?
回测是一个股票接口的最基础功能了,一般只要不是做的很差,基本上都靠谱,只不过有的比较难以理解罢了,但有的有一定的技术优势。比如第一报错:可能行情没有这么久,返回了None,直接引用就会出错。这些编程语言往往需要自己考虑好各种错误,而麦语言这种,语法简单,但可定制化的程度不强,有时候会编程的用着感觉会更麻烦。
当然,再好的工具也不及自己写,我们拿到数据接口以后,完全可以自己写回测函数,,定的策略是如果买入,则会购买半成仓位,如果卖出,同样是卖出半成仓位。对应的回测代码如下:
import datetimefrom quantitative.data_process import get_day_name_data
from quantitative.rsrs import sell_or_buyclass BackTrader:def __init__(self,cash: float = 50000,stock: str = "000001",reverso: float = 0):"""构造回测对象。根据输入的股票代码,然后给定资金池,模拟买入卖出。:param cash: 初始资金数量 float:param stock: 股票代码 str:param reverso: 每次交易手续费率 float"""# 利用数据,初始化交易所对象和策略对象。self.stock = stock # 股票代码self.init_cash = cash # 初始投入资金self.cash = cash # 当前现金持有量self.lst = [] # 股票池self.buy_num = 0 # 总计买入的股票数量self.sell_num = 0 # 总计卖出的股票数量def sell(self, close, closeout=False):price = close * 100 # 一手的价格sell_num = len(self.lst) // 2if closeout: # 强制平仓,self.cash += len(self.lst) * priceself.lst = [] # 股票池没有股票了self.sell_num += len(self.lst)elif len(self.lst) == 0: # 这个表示没有持仓print(f'没有持仓哦,无法卖出股票')passelif len(self.lst) == 1: # 只有一手股票self.cash += priceself.lst.pop()self.sell_num += 1else: # 多于两手股票#for i in range(sell_num):self.cash += priceself.lst.pop()self.sell_num += 1print(f'卖出了{sell_num}手股票,当前持有股票量{len(self.lst)},当前现金持有量{self.cash}')def buy(self, close):price = close * 100 # 一手的价格try:num = int(self.cash // price)if num == 0:print("Oh,sorry,没有现金了")passif num == 1:self.buy_num += 1self.lst.append(price)print(f'现金不多了,仅可以买入1手哦')else:buy_num = num // 2print(f'金主,你可以买入{num}手,买入了{buy_num}手')for i in range(buy_num):self.lst.append(price)self.cash -= priceself.buy_num += buy_numprint(f'当前现金持有量{self.cash},股票持有量{len(self.lst)}')except:print(f'{price} 是不可以运算的')def run(self, begin, end):"""运行回测,迭代历史数据,执行模拟交易并返回回测结果。"""begin_date = datetime.datetime.strptime(begin, "%Y-%m-%d")end_date = datetime.datetime.strptime(end, "%Y-%m-%d")days = (end_date - begin_date).daysclose = 0for i in range(days):date_str = (begin_date + datetime.timedelta(days=i)).strftime("%Y-%m-%d")flag = sell_or_buy(self.stock, date_str)close = get_day_name_data(self.stock, date_str, "收盘价")if isinstance(close, str):continueif flag == "BUY":self.buy(close)elif flag == "SELL":self.sell(close)if i == days - 1: # 最后一天强制平仓self.sell(close)# print(self.cash)self.cash += len(self.lst) * closeprint(self.cash)print("收益率", (self.cash - self.init_cash) / self.init_cash)print(self.lst)print("购买次数", self.sell_num)print("出售次数", self.buy_num)# 每日数据更新,寻找股票数据,需要判断当日的数据是否已经写入到数据库中了
def get_stock_code():from database import MGfrom database import MONGO_STOCKclient = MG(MONGO_STOCK)stock_code = client.db['stock_code']# 查找整个中国所有的股票res = stock_code.find({})for i, item in enumerate(res):yield item['证券简称'], item['code']if __name__ == '__main__':for item in get_stock_code():bt = BackTrader(cash=50000, stock=item[1])begin = "2022-01-10"end = "2022-06-30"bt.run(begin, end)print(item)
好了,所以什么样数据接口适合使用呢?这里有一个大家可以了解一下的:获取比较简单,https://gitee.com/l2gogogo就可以找到,也支持Python语言,拿到账号就可以订阅,然后我们自己再做二次开发就可以对接写策略了,
有什么好用的股票回测接口?相关推荐
- 导致股票回测接口回测效果差的原因有哪些?
股票回测接口实盘回测效果就很差,这算是量化界当中比较常见的现象,可能的原因咱来从头到尾捋一下. 一.回测是否正确 首先,回测效果非常好,实盘要复现出八九不离十的收益,那就要首先评估自己的回测是不是正确 ...
- 用Python徒手撸一个股票回测框架
通过纯Python完成股票回测框架的搭建. 什么是回测框架? 无论是传统股票交易还是量化交易,无法避免的一个问题是我们需要检验自己的交易策略是否可行,而最简单的方式就是利用历史数据检验交易策略,而回测 ...
- 【聚宽本地数据JQData】一个简单的股票回测策略
点击查看jqdata sdk 详细内容 打开聚宽,https://www.joinquant.com/ 注册登录 策略 新建股票策略 填入下面代码: 利用凯利公式进行投资测试,基准为沪深300 def ...
- 基于MT5的沪深股票回测四--回测
1.首先在菜单-查看里面找到 策略回测 或者快捷键ctrl+R 打开回测界面 选择指定策略--系统自带Moving average.ex5 选择合约 002594 选择测试周期,起始时间 然后点击开始 ...
- python 股票回测书籍推荐_python实现马丁策略回测3000只股票
python实现马丁策略回测3000只股票 批量爬取股票数据 这里爬取数据继续使用tushare,根据股票代码来遍历,因为爬取数据需要一定时间,不妨使用多线程来爬取,这里要注意tushare规定每分钟 ...
- python股票回测_Python量化交易-回测简单的交易策略
这篇文章主要介绍如何使用Python对一些简单的交易策略进行回测,对这块比较感兴趣的朋友可以看一看. 1.获取证券数据 本文以A股市场为例,先获取A股近10年的数据并保存到数据库. 1.1.安装数据库 ...
- 基于MT5的沪深股票回测三 自动化加载历史数据
历史数据来源大概分为几类: 1. 券商股票API,获取tick数据,数据需要经过清洗,剔除了无效数据,生成不同周期的K线数据,整理后放入数据库或者文件,供导入MT5历史.缺点,需要自己清洗数据,存储, ...
- python tushare backtrader股票回测双均线策略
前言: 在前面学了点机器学习知识后,发现自己还没有一个回测框架,找了短时间学习资料,还是决定使用backtrader,至于聚宽优米那些平台感觉使用起来好像没那么自由,还是先学习下backtrader, ...
- python股票回测源码_Python爬虫回测股票的实例讲解
股票和基金一直是热门的话题,很多周围的人都选择不同种类的理财方式.就股票而言,肯定是短时间内收益最大化,这里我们需要用python爬虫的方法,来帮助我们获取一些股票的数据,这样才能更好的买到相应的股票 ...
最新文章
- 思念水饺吃成泡沫水饺(图)思念质量门
- jdbc链接oracle报错ORA-12505解决办法
- centos7修改密码
- JAVA虚拟机运行数据区
- 对于 APM 用户的一次真实调查分析(下)
- enumerate_Java Thread类的static int enumerate(Thread [] th)方法与示例
- Linux学习-RPM 软件管理程序: rpm
- Confluence(wiki)配置数据库及修改数据库地址
- Fantastic-Matplotlib 第一回
- GitHub数据库榜单第一:Redis核心原理实践PDF,点赞已过百万+
- 强推Markdown神器,一秒钟拯救微信公众号排版
- 点乘/内积/数量积;叉乘/向量积;矩阵乘法;哈达马积;克罗内克积;卷积
- DiskGenius 5.4.6.1441 Portable
- Chromium for mac(谷歌浏览器)V89.0.4336.0官方最新版
- 理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)
- python程序设计丁亚涛版_Scribus(出版设计软件)中文免费版
- 计算机制作表格英语怎么说,表格用英语怎么说
- Latex中的狄拉克算符
- 跳楼梯--递归--动态规划--过渡
- IAP_1_几种下载程序的方式
热门文章
- 暨南大学计算机专业考研录取目录,21考研必备 暨南大学2020计算机类研究生招生情况汇总...
- 小程序创业会有哪些坑
- gh-ost封装脚本
- 建立基于IP地址访问的网站
- QT 怎么获取linux本机的IP地址?
- ESD(静电释放)上半部分
- 老毛挑U盘系统工具——ghost系统安装教程
- cdlinux 0.9.8_Cdlinux的GNU / Linux发行版0.9.6.1版
- C++/MFC 面试题(一)
- 项目配置不当引发了数据泄露,人已裂开!!(建议收藏)