1.【vn.py学习笔记(八)】vn.py utility、回测回测BarGenerator、源码源码ArrayManager源码阅读
2.Backtrader来啦:可视化篇(重构)
3.量化回测终极指南,回测回测以backtrader为例
4.股票量化分析工具QTYX使用攻略——回测评估形态选股收益(更新v2.7.0)
5.Backtrader-系列教程-01-介绍
6.股票里的源码源码源码是什么意思
【vn.py学习笔记(八)】vn.py utility、BarGenerator、回测回测ArrayManager源码阅读
在量化投资的源码源码java关联源码探索中,作者对vn.py产生了浓厚的回测回测兴趣,并投身于相关学习。源码源码目前,回测回测作者主要专注于vn.py在A股市场量化策略的源码源码学习,面临的回测回测主要技术难点包括获取和维持日线数据、实现自动下单交易、源码源码开发全市场选股程序、回测回测编写选股策略回测程序,源码源码以及运用机器学习进行股票趋势预测。回测回测作者计划通过阅读vn.py源码,深入了解其架构机制,并通过分享形式记录学习心得,以便更好地理解vn.py。
相关github仓库地址:github.com/PanAndy/quan...
如有收获,请关注公众号以支持作者。同时,作者也收集了一些量化投资和技术相关的视频及书籍资源,欢迎关注公众号亚里随笔获取。
本文将重点探讨vn.py/trader/utility.py中的内容,主要包括工具函数、BarGenerator和ArrayManager。工具函数部分相对容易理解,主要是对通用功能进行封装。BarGenerator是K线合成器,负责根据实时tick数据合成1分钟K线,并进一步合成n分钟K线。ArrayManager是指标计算辅助类,负责维护一定量的历史数据,以供计算sma、ema、atr等常见指标。BarGenerator和ArrayManager是本次学习的重点。
工具函数部分主要提供合约代码转换、路径读取、json文件读写、数值位数设置、日志等功能,主要是对基本功能进行封装,没有复杂的图片修补源码算法。
BarGenerator类用于从tick数据中生成1分钟bar数据,也可以用于从1分钟的bar数据中合成x分钟或x小时的bar。BarGenerator的主要函数包括update_tick、update_bar、update_bar_minute_window、update_bar_hour_window、on_hour_bar和generate。
ArrayManager是一个时间序列容器,用于按时间序列缓存bar数据,提供技术指标的计算。ArrayManager提供的函数分为四类:init函数、update_bar、@property函数和技术指标函数。
Backtrader来啦:可视化篇(重构)
量化投资与机器学习公众号为全网读者带来的Backtrader系列,深受欢迎,我们致力于提供免费、最清晰的Bt教程。QIML官方Github已上线,相关数据、代码一并同步,欢迎大家关注和星标。公众号希望为国内量化投资圈贡献一份力量,影响更多人了解和学习量化投资,找到适合自己的道路。如需分享内容,欢迎在评论区留言。
今天的《可视化篇》将介绍Backtrader观测器模块observers与自带的绘图函数plot()。我们将通过修改图形样式,基于回测返回的收益序列TimeReturn,结合pyfolio和matplotlib工具,自定义可视化图形。获取完整代码+数据,见文末链接。
observers模块用于统计回测信息,并在plot()的帮助下实现可视化展示。最常用的观测器包括:
- Broker观测器:记录经纪商中各时间点的可用资金和总资产。可视化时,会同时展示cash和values曲线,若需单独展示,可分别使用Cash和Value观测器。
- BuySell观测器:记录回测过程中的买入和卖出信号。可视化时,会在价格曲线上标注买卖点。
- Trades观测器:记录回测过程中每次交易的pancakeswap夹子源码盈亏。可视化时,会绘制盈亏点。
- TimeReturn观测器:记录回测过程中的收益序列。可视化时,会绘制收益曲线。
- DrawDown观测器:记录回测过程的回撤序列。可视化时,绘制回撤曲线。
- Benchmark观测器:记录业绩基准的收益序列,必须事先通过数据添加函数添加至大脑cerebro中。可视化时,同时绘制策略本身的收益序列和业绩基准的收益曲线。
如何添加观测器?observers通过addobserver()添加给大脑cerebro,参数obscls对应观测器类,args和kwargs对应观测器支持的设置参数。
如何读取观测器数据?观测器属于lines对象,可以通过self.stats对象在Strategy中读取数据。观测器的数据在所有指标计算完后、执行Strategy的next方法后运行并统计数据,因此读取的最新数据[0]相对与next的当前时刻晚一天。
如何自定义观测器?自定义观测器遵循继承bt.observer.Observer类,指定要统计的数据为相应的line,随着回测进行依次存入数据。作为Lines对象的Observers和Indicator类,内部都有plotinfo和plotlines属性,用于回测结束后通过cerebro.plot()方法进行可视化展示。
plot()图形绘制支持回测的三大内容:Data Feeds、Indicators和Observers。Data Feeds在回测开始前导入大脑,Indicators有的与Data Feeds一起绘制在主图上,有的以子图形式绘制,Observers通常绘制在子图上。
plot()中的参数用于系统性配置图形,如修改图形样式、主题颜色等。若需系统性修改图形样式,可以重新定义PlotScheme类,或直接在plot()中修改参数。关于主题颜色,Backtrader提供多种主题色,可通过复制源码中定义的颜色并结合tab_index进行修改。
局部绘图参数设置通过类内部的plotinfo和plotlines属性控制,plotinfo主要对图形整体布局进行设置,plotlines主要对具体line的照片编辑源码样式进行设置。
基于收益序列进行可视化,Backtrader自带的绘图工具方便实用。此外,结合pyfolio和matplotlib,根据回测返回的分析器TimeReturn、pyfolio、matplotlib可以得到可视化图形。不同主题下绘制效果也有所不同。
关于回测结果的可视化,需求不同对应不同的可视化内容。Backtrader回测框架提供了友好的绘图接口,对于额外数据,可结合Backtrader分析器Analyzers返回的指标,选用Python绘图工具如Matplotlib、Seaborn、Plotly等进行可视化展示。
量化投资与机器学习微信公众号专注于量化投资、对冲基金、Fintech、人工智能、大数据等领域,是业内主流自媒体,拥有来自公募、私募、券商、期货、银行、保险、高校等行业W+关注者,曾荣获AMMA优秀品牌力、优秀洞察力大奖,连续4年被腾讯云+社区评选为“年度最佳作者”。公众号致力于提供专业、全面的内容,帮助读者深入学习量化投资知识和技能。
量化回测终极指南,以backtrader为例
这篇文章提供了一个深入的量化回测指南,尤其以backtrader为例,旨在帮助那些寻求在量化交易领域取得成功的人。
backtrader是一个开源的回测框架,其源代码可在GitHub上获取,进行深入学习。首要步骤是准备行情数据,无论是call hook源码付费还是免费资源,这将对后续步骤产生影响,但在此处我们暂且不讨论。
对于初学者,如果你的目标是学习回测框架的编写,可以直接从GitHub下载源码进行实践。回测的主要目的是检验和优化交易策略,backtrader因其知名度而广受关注,网络上有许多相关教程。
然而,作者强烈建议避免使用现有的回测框架,因为它们往往功能受限,无法提供基本的交易功能,导致测试结果不准确。除非你的策略简单,否则这些框架可能无法提供有用的数据。为了获得精确有效的结果,你可能需要从零开始自己编写框架,或者借助少数成熟量化基金内部的专属工具。
接下来,作者通过实例解释了为什么选择一个强大的回测框架至关重要。例如,一个好的框架应能支持用户在任何可行的价格点下单,无论历史K线走势如何。此外,作者列举了几个场景,展示了现有框架在处理交易策略中的局限性,如订单执行、跳空等情况,这些都揭示了现有工具的不足。
最后,作者指出,回测的微小误差可能对最终结果产生重大影响,而现有的回测框架往往无法准确模拟交易细节,导致策略测试结果偏差。尽管有人可能觉得自己有能力自建框架,但在数据处理阶段,仍可能遇到各种挑战,这表明完全掌握量化回测并非易事。
股票量化分析工具QTYX使用攻略——回测评估形态选股收益(更新v2.7.0)
QTYX股票量化分析工具,专为学习和实战投资者设计,提供源代码供用户自定义开发。最新的V2.7.0版本不断升级,文档同步更新。它强调通过合理的赔率管理而非单一的高胜率来实现长期盈利,如利用形态选股策略锁定大牛股。
回测评估是QTYX的关键功能,通过分析自选股符合形态条件后至最新交易日的盈亏情况,如年8月日选出的股票,截至年8月日的评估结果,能直观展现盈利和回撤。回测步骤包括导入选股结果csv文件,如“均线多头排列分析结果”或“单针探底回升分析结果”,系统会统计出持有期间的价格波动、收益比例和持有天数等关键指标。
例如,"单针探底回升分析结果"回测显示,平均最大收益为9.9%,但平均最大回撤高达-.%,这意味着策略适合短线操作,强调盈利后的快速退出。回测报告会提供策略的客观评估,以及详细的盈亏明细,便于投资者进行深入分析和复盘。
通过调整“选股日期”至历史日期,历史的选股结果也能进行回测,帮助你持续优化和改进你的交易策略。QTYX的回测评估功能,是提升交易决策效率和风险控制的有效工具。
Backtrader-系列教程--介绍
Backtrader是一个由Daniel Rodriguez在年1月日在GitHub上开源的Python框架,主要支持股票、期货、期权和加密货币等资产的量化回测与实盘交易,主要用于国外市场,国内用户可能需要定制化支持。Backtrader的第一个正式版本1.0.0.于年6月3日发布,至今已更新至1.9..版本,指标数量从最初的个增长到个,结合TA-Lib等第三方库,其指标计算能力非常强大。
Backtrader的成功源于作者的项目设计和持久努力,以及详实的文档支持和活跃的社区。官网backtrader.com提供了详细的文档和讨论区community.backtrader.com,供用户交流使用经验和量化策略。选择量化框架时,开源性、文档、社区活跃度和适应个人水平是关键,通过学习框架可以提升交易和编程理解。
对于量化投资爱好者,Backtrader是入门工具,从数据获取、清洗到策略编写和模拟交易,都能体验量化投资流程。但其源码复杂,涉及到元类和Python 2/3兼容性,以及代码风格问题。此外,由于开发者主要在国外,其一些功能设计可能与国内用户习惯不符,比如K线颜色的设置。对于新手,中文资源可能不够完整,笔者将通过AKShare和公众号数据科学实战提供Backtrader使用教程,结合AKShare数据接口实现策略,还会在知识星球数据科学家进行视频直播,欢迎关注和参与。
下面是一个利用AKShare数据和Backtrader进行回测的示例代码,更多内容将在后续文章中逐步介绍,包括面向对象编程、多股票回测、多时间粒度分析等内容,以及自定义指标和订单编写等深度讲解。
股票里的源码是什么意思
股票中的源码通常指的是用于分析、交易或获取股票市场数据的编程代码。这些代码可能由各种编程语言编写,如Python、C++、Java等,并通常用于构建算法交易系统、量化交易策略、技术指标分析工具等。
详细来说,源码在股票领域的应用主要体现在以下几个方面:
1. 数据获取与处理:源码可以用来从股票交易所、财经数据提供商等处获取实时或历史股票数据。例如,使用Python的pandas库,我们可以方便地获取、清洗和处理股票数据。
2. 策略开发与回测:量化交易者会编写源码来开发交易策略,并通过历史数据进行策略回测。这样可以在实际投入资金前评估策略的有效性和风险。例如,一个简单的移动平均交叉策略可以通过比较短期和长期移动平均线的位置来确定买入和卖出点。
3. 技术指标计算:源码可用于计算各种技术指标,如RSI、MACD、布林带等,这些指标有助于交易者分析股票价格的动量和趋势。
4. 自动化交易:一旦策略经过验证并被认为是有利可图的,源码可以被用来构建自动化交易系统。这些系统可以实时监控市场,并在满足特定条件时自动执行交易。
5. 风险管理与优化:源码还可用于开发风险管理工具,如止损和止盈算法,以及用于优化投资组合配置的算法。
举例来说,一个Python源码片段可能用于从网络API获取股票数据,计算某只股票的简单移动平均线,并根据移动平均线的交叉点生成买入或卖出信号。这样的源码不仅有助于交易者做出更明智的投资决策,还可以通过自动化减少人为错误和情绪干扰。
量化交易-vnpy_efinance-VeighNa框架数据服务接口
我们之前对vnpy_ctastrategy相关回测源码进行了解析:
回首凡尘不做仙:VNPY源码分析1-vnpy_ctastrategy-运行回测
回首凡尘不做仙:VNPY源码分析2-vnpy_ctastrategy-撮合成交
回首凡尘不做仙:VNPY源码分析3-vnpy_ctastrategy-计算策略统计指标
相关历史数据可以通过各类数据服务的适配器接口(datafeed)下载,目前vn.py支持以下接口:
然而,上述接口需要注册或付费才能获取数据。
为了帮助初学者更好地理解和学习量化交易以及vn.py框架,我开发了基于efinance数据接口的vn.py的datafeed。
开源地址为:github.com/hgy/vnpy...
编译安装:
下载源代码后,解压并在cmd中运行:
dist目录下vnpy_efinance-x.x.x-py3-none-any.whl包
使用:
安装完成后,在vn.py框架的trader目录中的setting.py中进行配置:
注意:此处只需配置datafeed.name,username和password无需配置。
配置完成后,可以通过以下示例进行调用:
同时,这里分享一个efinance数据下载及入库方法:
然而,efinance在获取分钟级别数据方面并不友好。对于需要获取分钟级别数据的初学者来说,我们可以使用天勤免费版的数据接口:
回首凡尘不做仙:量化交易-数据获取-vnpy_tqsdk免费版
我朋友有一个股票稳定交易系统,请问怎么验证?
首先这报表回测信息太少,又不值观回测报表最直观的就是资金曲线
例如通达信回测会自动生成很比较直观报表
这策略都已经用通达信回测了,
为什么直截那么点截图,连个个资金曲线都没有
再有就是策略不能只看胜率,也要看最大回撤,等等很多信息
再有就是这回测是如何设置的,例如回测的周期,滑点是多少,以什么价格计算,手续费的设置开平仓信号等等这些都没有
再有这个策略回测的时间段太短了
如果这是一个日线策略,回测的时段怎么的也得在年左右这样才能看出这个策略在,牛市,熊市,盘整等各种行情下的表现
再有就是回测的品种,是回测所有股票,还是沪深,或者中小版,创业板,是否剔除st等等
就算历史回测可以盈利,还要模拟交易观察
就算回测模拟都通过了,模拟的环境和真实交易环境也是有很大差别的
既然这策略能用通达信回测说明这策略已经能写成选股公式,或者专家指标了
其实很简单你想验证这个策略好不好用,找个看得懂公式代码的,一看就明白这策略的交易思路了
在股票市场中,有哪些交易止损的方法?
n1 1 3
n2 1
m1 1 5
m2 1
VAR1:=REF(CLOSE,2);
A2:SMA(MAX(CLOSE-VAR1,0),7,1)/SMA(ABS(CLOSE-VAR1),7,1),COLORFF,LINETHICK2;
超卖1:IF(A2
VAR2:=REF(CLOSE,1);
VAR3:=SMA(MAX(CLOSE-VAR2,0),7,1)/SMA(ABS(CLOSE-VAR2),7,1);
超卖2:IF(VAR3
逢高派发:STICKLINE(A2>,A2+1,A2-1,8,0),COLORRED,LINETHICK2;
跑吧:IF(A,A2,0);
这是通达信的,不知道你用什么软件,不能通过再找我,无未来,副图公式
股票源码公式中的FILTER函数是未来函数吗?会有漂移吗?为什么加入后准确率大大提高?
在股票下跌时,未来的情况还不够清楚的时候,我们需要一个合理的止损,避免出现资金亏损的情况。股市中,有很多方法可以止损,这里介绍四个方法。第一种:最大止损法。这是阻止损失的最简单的方法。当股票的漂移达到一定的百分点时就会停止交易。百分比取决于风险偏好、交易策略和操作周期,例如每天最大损失2%,中长期最大损失5-%。这个百分点是确定的,不能轻易改变,必须坚决执行。
第二种:横向止损法。在一定的水平时间区间内,在价格上涨后设定止损目标。例如,止损可以在进场后5到分钟内设置。一般情况下,横向止损法应与最大止损法结合使用,以充分控制风险。在一个横向移动的末端,有必要突破,所以一般来说,应该小心突破一个波动期,不管盈亏,先观察,然后找机会投资。
第三种: 移动止损,移动止损又叫“跟踪止损”,是跟随最新价格,设置一定数量的止损点。它仅在价格变化有利于持仓时才被触发,并且是进入盈利阶段时的指令集。移动止损是一个很好的交易工具,尤其是在价格波动的时候,可以保证利润。当持仓变得更有利可图时,提高止损触发价格,交易者可以确保如果市场向相反的方向移动,大部分的账面收益仍然可以实现。
第四种: 关键的价格止损心理方法,心理水平包括整数、历史高点和低点、近期大量大额订单的价格以及一段时间内的最高和最低仓位可能成为关键心理水平。通常需要做一个回顾,关注历史高点,封闭区域,重要的指数目标,这些都是重要的参考。我们需要在白天注意这些事情,通常是在这些点上我们转弯,或者是在这些点上我们真正突破并形成了一种趋势。在这种情况下,必须先承担损失,而不是在达到或打破某一点之后才去做,那么,冲击成本就会比较大。止损方法都有对有错,在我们主观交易的每个阶段,我们对市场有了新的理解,对止损有了不同的看法。能适应不同阶段的能力和需求。
股票软件的公式、指标的未来函数是什么意思?
filter不是未来函数,是在上一个信号出现后,在多长时间不再提示
比如kdj的金叉,如果今天金叉,用filter过滤5天,那5天内再出现金叉就不提示了。所以filter很安全
未来函数指的是,如果在指标公式的源码,使用了未来函数,那么可能信号会漂移,比如今天开盘是涨的,显示涨的信号,结果第二天发现上一天跌了,就变成跌的信号了,信号就会一直调整,让人觉得这个指标百分比准确。
但是不是说有未来函数的指标一无是处,用好了也是一个利器。
如果你不知道你的指标是不是包含未来函数可以去检测一下:
在这里给您提供一下未来函数的列表:
ZIG - 之字转向
PEAK - 前M个ZIG转向波峰值
PEAKBARS - 前M个ZIG转向波峰到当前距离
TROUGH - 前M个ZIG转向波谷值
TROUGHBARS - 前M个ZIG转向波谷到当前距离
FLATZIG - 归一化之字转向
FLATZIGA - 归一化之字转向
PEAKA - 前M个ZIG转向波峰值
PEAKBARSA - 前M个ZIG转向波峰到当前距离
TROUGHA - 前M个ZIG转向波谷值
ZIGA - 之字转向
FFT - 傅立叶变换函数
BACKSET - 将当前位置到若干周期前的数据设为1
WINNER - 获利盘比例
LWINNER - 近期获利盘比例
PWINNER - 远期获利盘比例
COST - 成本分布情况
CAPITAL - 当前流通股本
DYNAINFO - 即时行情数据
FINANCE - 财务函数
XMA - 返回偏移移动平均
#MONTH - 跨周期引用
#WEEK - 跨周期引用
#YEAR - 跨周期引用
DHIGH - 返回该不定周期最高价
DOPEN - 返回该不定周期开盘价
DLOW - 返回该不定周期最低价
DCLOSE - 返回该不定周期收盘价
DVOL - 返回该不定周期成交量价
BARSNEXT - 下一次条件成立到当前的周期数
REFX - 引用若干周期后的数据(平滑处理)
REFXV - 引用若干周期后的数据(未作平滑处理)
PEAK - 前M个ZIG转向波峰值
PEAKBARS - 前M个ZIG转向波峰到当前距离
DRAWLINE - 绘制直线段用到日后数据