blackcat1402

大道至简:六分仪座策略回测框架正式发布

SZSE:000001   PING AN BANK
技术指标和策略进行回测是了解一个量化策略最常见的方法。但是,对于很多量化工具回测繁复的配置和适配工作,让很多并不了解代码的交易者望而生畏。况且虽然我写了不少的策略,仍旧对于回测配置和编写效率并不十分的满意。所以,我一直思索如何搭建一套能够快速简单评估任何一个具有“买卖点”指标回测性能的回测框架,也就是“傻瓜式的回测工具”。性能要求要稳定,操作要简单方便,最好就是"复制",“黏贴”,“点几下鼠标”就可以完成一个新指标的快速回测和评估。

回测框架构思
 幸运的是,最近我意识到TradingView提供了“Indicator on Indicator”的功能,这简直是做“热插拔”回测的完美基础。我的基本构思就是采用双层设计。第一层为需要嵌入的技术指标信号源,只用来提供自定义策略的买卖信号;第二层为交易系统,用于接收第一层的输出信号,并且以统一的规范,进行信号筛选滤波,止盈,止损,绘制买卖信号和成本线,定义和发送自定义的买卖告警消息到手机,社交软件或者交易接口上。总的来说,这个双层设计是“一死一活”的灵活搭配,可以满足大多数交易者要快速评估某个技术指标性能需求。这里第一层是灵活的,用户按照我的模板插入自己的策略代码,就可以绘制买卖信号和输出到第二层。第二层是固定死的,整体框架固化保证了交易系统的稳定性,统一性,方便以相同的条件对比不同或者相似的策略,最终将所有的交易信号绘制在图表上上,并且输出策略回测报告。这个回测框架需要自定义指标作为第一层和第二层交易策略控制层同时工作,才能够实现回测的功能。第一层能够单独显示运行,而第二层不能够独立使用,必须依赖第一层运行。

双层架构的主要功能
图表先导入第一层。第一层:"{Sextan} Your Indicator Source", 脚本提供个性化策略输入的模板,而信号和定义接口保证了和第二层的完全兼容,只要你按照格式进行输入,就一定能够在第二层的回测框架中稳定地进行回测。第一层的这个脚本也相对简单:在突出显示的自定义脚本区域输入你的脚本,保证最终的买卖信号 long = bool condition, short = bool condition后,就认为完成了第一层的设计工作。将其输入到TradingView的PINE脚本编辑器保存并添加到图表,可以在副图上看到以黄色(买),紫色(卖)的脉冲序列,对应主图,可以主观判断策略的买卖点质量好坏。

图表导入第二层。第二层:"{Sextan} PINEv4 Sextans Backtest Framework". 这个脚本就是标准化的交易系统策略执行和告警,用于生成策略回测最终的报告和我自定义的一些觉得有用的关键指标,例如:胜率,赔率,赢面,凯利比例,根据凯利公式评估止盈和止损门限值,交易频率等。要使用第二层,首先将其加载到TraingView图表中,这时图表上不会显示任何标记,因为你还没有指定任何策略源信号,点击"{Sextan} PINEv4 Sextans BTFW" 标题边上齿轮状设置按钮,就可以打开回测设置,第一项就是选择你的自定义策略源。因为上一步我们已经将策略源添加到了图表中,所以,你可以很容易的在列表最下面发现一个选项"{Sextan} Your Indicator Source: Signal",这就是我们需要的策略源输入,选择并确定,就可以在主图上看到各种标记,并且快速生成回测收益图和回测报告列表了,你可以生成文件,并下载回测报告到本地。你也可以在回测图表界面点击齿轮,对回测的一些条件进行自定义设置,这些包括:初始资金数量,货币类型,每次下单百分比,金字塔加仓数量,佣金手续费,滑点等配置。注意:在界面对话框中的配置会覆盖回测脚本中的代码实现的相同配置。


  在第一层和第二层建立联系共同工作后如何读图呢?第一层:"{Sextan} Your Indicator Source", 这个脚本的输出就是黄色和紫色的脉冲值,黄色+1表示买,紫色-1表示卖。
    第二层:PINEv4 Sextans Backtest Framework".  这个脚本输出有些复杂,毕竟是整个交易系统,信息量很大:
    1. 蓝红字箭头。蓝色向上箭头表示做多, 红色向下箭头表示做空,紫色箭头末端有横杠的表示止盈或者止损退出。
    2. 红绿线。这是策略的持仓成本线,绿色表示多头持仓成本,红色表示空头持仓成本。成本线是连续的实线和价格走势比较接近。
    3. 绿黄做多止盈止损区域和绿黄做多止盈止损叉叉。一旦多头持仓,就有止盈止损的条件单,绿色横线为做多止盈比例线,黄色为做多止损比例线;绿色叉叉表示做多止盈价位,黄色叉叉表示做多止损价位。值得注意的是,叉叉和线不一定在一起。因为算法优化,对于强势的行情,止盈会发生在突破止盈线后,直到价格回落时候再止盈。
    4. 紫红做空止盈止损区域和紫红做空止损叉叉。一旦空头持仓,就有止盈止损条件单,红色为做空止盈比例线,紫色为做空止损比例线;红色叉叉表示做空止盈价位, 紫色叉叉表示做空止损价位。
    5. 除了以上标识,还有文字和数字表示做多和做空的盈亏数值。"L"表示做多;“S”表示做空;“XL”表示平多;“XS”表示平空。
  第一层自定义指标模块非常简单,代码如下,只要替换相关部分即可快速评估这个指标的回测性能。


TradingView策略测试器面板:
1. 概览图是将所有回测期间蓝色(收益)和红色(亏损)曲线绘制在一起表示的直观图表,并且注有:净利润绝对值和百分比,所有已经平仓的数量,胜率,盈利因子, 最大交易亏损,平均交易盈亏绝对值和比例,全部交易的平均持仓K线根数。
 2. 另外一个就是绩效总结。这是以列表形式展现回测所有做多,做空统计指标,例如:净利润,毛利润,夏普比率,最大持仓,佣金,盈亏次数等。
3. 最后是交易清单是以交易序号为索引的表格,展现了信号方向,日期时间,价格,盈亏,累计盈亏,最大交易获利,交易亏损等数值。

这只是这个模式的开始,我会不断优化第二层的交易系统,欢迎提供各种优化反馈和建议,对于有价值的反馈,我愿意提供L4/L5免费订阅权限的奖励。

Avoid losing contact!Don't miss out! The first and most important thing to do is to join my Discord chat now! Click here to start your adventure: discord.com/invite/ZTGpQJq 防止失联,请立即行动,加入本猫聊天群: discord.com/invite/ZTGpQJq
Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.