BackTrader 中文文档(二十二)(1)

简介: BackTrader 中文文档(二十二)


原文:www.backtrader.com/

MACD 设置

原文:www.backtrader.com/blog/posts/2016-07-30-macd-settings/macd-settings/

RedditAlgotrading网站上发现了一个关于优化 MACD 设置的帖子。

由于《走向财务自由的交易》- 亚马逊链接,我开始了backtrader的探索,我别无选择,只能发布答案并制作一个示例。

该策略的方法在某种程度上基于该书中提出的一些观点。没有新鲜事。参数已经快速设置。没有过度拟合,没有优化,什么都没有。大致:

  • 如果macd线向上穿过signal线,并且控制Simple Moving Average在最后的 x 个周期内具有净负方向(当前SMA值低于 x 个周期前的值),则进入市场
  • 设置stop价格,即比close价格远N x ATR
  • 如果close价格低于stop价格,则退出市场
  • 如果仍然在市场上,则仅在stop价格高于实际价格时更新

下注由以下方式完成:

  • 通过Sizer分配可用现金的百分比给操作。策略赢得越多,押注就越大… 而策略输得越多,押注就越小。

包含了佣金。因为测试将使用股票进行,所以选择了百分比佣金,其值为0.0033(即每往返交易的0.33%)。

为了付诸实施,将进行 3 次运行,每次运行 3 个数据(共 9 次运行)

  1. 手动选择的标准参数
  2. 将现金分配百分比从0.20增加到0.50
  3. 将 ATR 距离从3.0增加到4.0,以尝试避免被鞭打

为策略手动选择的参数:

params = (
    # Standard MACD Parameters
    ('macd1', 12),
    ('macd2', 26),
    ('macdsig', 9),
    ('atrperiod', 14),  # ATR Period (standard)
    ('atrdist', 3.0),   # ATR distance for stop price
    ('smaperiod', 30),  # SMA Period (pretty standard)
    ('dirperiod', 10),  # Lookback period to consider SMA trend direction
)

并且系统范围内:

parser.add_argument('--cash', required=False, action='store',
                    type=float, default=50000,
                    help=('Cash to start with'))
parser.add_argument('--cashalloc', required=False, action='store',
                    type=float, default=0.20,
                    help=('Perc (abs) of cash to allocate for ops'))
parser.add_argument('--commperc', required=False, action='store',
                    type=float, default=0.0033,
                    help=('Perc (abs) commision in each operation. '
                          '0.001 -> 0.1%%, 0.01 -> 1%%'))

日期范围将从2005-01-012014-12-31,共 10 年。

分析器

为了获得一些客观数据,将向系统添加 3 个分析器:

  • 两个用于整个时期的TimeReturn
  1. 对于策略本身
  2. 用作基准操作的数据
  • 将策略与资产进行有效的基准比较
  • 一个用于测量年度回报率TimeReturn
  • 一个SharpeRatio用于查看策略相对于无风险资产的表现如何
    该值设置为1%,可通过示例选项更改
  • 一个用于分析交易质量的SQN系统质量数),使用 Van K. Tharp 定义的性能指标

此外,将添加一个DrawDown观察器到混合中。

Run 1:标准参数

YHOO

$ ./macdsystem.py --plot --dataset yhoo
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.07118518868
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.316736183525
===============================================================================
TimeReturn:
  - 2005-12-31: 0.02323119024
  - 2006-12-31: -0.0813678018166
  - 2007-12-31: -0.0144802141955
  - 2008-12-31: -0.142301023804
  - 2009-12-31: 0.0612152927491
  - 2010-12-31: 0.00898269987778
  - 2011-12-31: -0.00845048588578
  - 2012-12-31: 0.0541362123146
  - 2013-12-31: 0.0158705967774
  - 2014-12-31: 0.0281978956007
===============================================================================
SharpeRatio:
  - sharperatio: -0.261214264357
===============================================================================
SQN:
  - sqn: -0.784558216044
  - trades: 45

ORCL

$ ./macdsystem.py --plot --dataset orcl
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.24890384718
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 2.23991354467
===============================================================================
TimeReturn:
  - 2005-12-31: -0.02372911952
  - 2006-12-31: 0.0692563226579
  - 2007-12-31: 0.0551086853554
  - 2008-12-31: -0.026707886256
  - 2009-12-31: 0.0786118091383
  - 2010-12-31: 0.037571919146
  - 2011-12-31: 0.00846519206845
  - 2012-12-31: 0.0402937469005
  - 2013-12-31: -0.0147124502187
  - 2014-12-31: 0.00710131291379
===============================================================================
SharpeRatio:
  - sharperatio: 0.359712552054
===============================================================================
SQN:
  - sqn: 1.76240859868
  - trades: 37

NVDA

$ ./macdsystem.py --plot --dataset nvda
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.0178507058999
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.177604931253
===============================================================================
TimeReturn:
  - 2005-12-31: 0.0773031957141
  - 2006-12-31: 0.105007457325
  - 2007-12-31: 0.015286423657
  - 2008-12-31: -0.109130552525
  - 2009-12-31: 0.14716076542
  - 2010-12-31: -0.0891638005423
  - 2011-12-31: -0.0788216550171
  - 2012-12-31: -0.0498231953066
  - 2013-12-31: -0.0119166712361
  - 2014-12-31: 0.00940493597076
===============================================================================
SharpeRatio:
  - sharperatio: -0.102967601564
===============================================================================
SQN:
  - sqn: -0.0700412395071
  - trades: 38

Run 1 的分析

  • YHOO
    第 1^(st)和第 2^(nd)个TimeReturn分析器(策略和资产本身)表明,策略损失了7.11%,而所涉及的资产则升值了31.67%
    甚至都不值得去看其他的分析器
  • ORCL
    策略为 24.89%,但被资产本身的 223.99% 回报所淡化。
    SharpeRatio0.35,仍然远离通常的最低目标1
    SQN 返回了 1.76,至少在 Van K. Tharp 尺度上获得了评分:1.6 - 1.9 低于平均水平
  • NVDA
    在这种情况下,策略为 -1.78%,资产为 -17.76%。 SharpeRatio 为 -0.10,表明即使策略表现优于资产,选择 1% 的银行账户也更好。
    SQN 显然甚至没有达到尺度的底部。

第 1 次运行的结论

  • 1 次巨大的损失,一次平局和一次表现不佳的胜利。并不成功。

第 2 次运行:现金分配为 0.50

YHOO

$ ./macdsystem.py --plot --dataset yhoo --cashalloc 0.50
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.20560369198
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.316736183525
===============================================================================
TimeReturn:
  - 2005-12-31: 0.05517338686
  - 2006-12-31: -0.195123836162
  - 2007-12-31: -0.0441556438731
  - 2008-12-31: -0.32426212721
  - 2009-12-31: 0.153876836394
  - 2010-12-31: 0.0167157437151
  - 2011-12-31: -0.0202891373759
  - 2012-12-31: 0.13289763017
  - 2013-12-31: 0.0408192946307
  - 2014-12-31: 0.0685527133815
===============================================================================
SharpeRatio:
  - sharperatio: -0.154427699146
===============================================================================
SQN:
  - sqn: -0.97846453428
  - trades: 45

ORCL

$ ./macdsystem.py --plot --dataset orcl --cashalloc 0.50
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.69016747856
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 2.23991354467
===============================================================================
TimeReturn:
  - 2005-12-31: -0.0597533502
  - 2006-12-31: 0.176988400688
  - 2007-12-31: 0.140268851352
  - 2008-12-31: -0.0685193675128
  - 2009-12-31: 0.195760054561
  - 2010-12-31: 0.0956386594392
  - 2011-12-31: 0.018709882089
  - 2012-12-31: 0.100122407053
  - 2013-12-31: -0.0375741196261
  - 2014-12-31: 0.017570390931
===============================================================================
SharpeRatio:
  - sharperatio: 0.518921692742
===============================================================================
SQN:
  - sqn: 1.68844251174
  - trades: 37

NVDA

$ ./macdsystem.py --plot --dataset nvda --cashalloc 0.50
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.128845648113
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.177604931253
===============================================================================
TimeReturn:
  - 2005-12-31: 0.200593209479
  - 2006-12-31: 0.219254906522
  - 2007-12-31: 0.0407793562989
  - 2008-12-31: -0.259567975403
  - 2009-12-31: 0.380971100974
  - 2010-12-31: -0.208860409742
  - 2011-12-31: -0.189068154062
  - 2012-12-31: -0.122095056225
  - 2013-12-31: -0.0296495770432
  - 2014-12-31: 0.0232050942344
===============================================================================
SharpeRatio:
  - sharperatio: -0.0222780544339
===============================================================================
SQN:
  - sqn: -0.190661428812
  - trades: 38

第 2 次运行的结论

  • 将每次操作中现金分配的百分比从20%增加到50%,已增加了先前结果的影响
  • YHOONVDA 上的策略比以前损失更多
  • 而在 ORCL 上的策略赢得了比以前更多,但仍然不接近资产的超过 220%

第 3 次运行:ATR 距离为 4.0

仍然保持先前将现金分配增加到 50%。 这个想法是避免过早离开市场。

YHOO

$ ./macdsystem.py --plot --dataset yhoo --cashalloc 0.50 --atrdist 4.0
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.01196310622
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.316736183525
===============================================================================
TimeReturn:
  - 2005-12-31: 0.06476232676
  - 2006-12-31: -0.220219327475
  - 2007-12-31: -0.0525484648039
  - 2008-12-31: -0.314772526784
  - 2009-12-31: 0.179631995594
  - 2010-12-31: 0.0579495723922
  - 2011-12-31: -0.0248948026947
  - 2012-12-31: 0.10922621981
  - 2013-12-31: 0.406711050602
  - 2014-12-31: -0.0113108751022
===============================================================================
SharpeRatio:
  - sharperatio: 0.0495181271704
===============================================================================
SQN:
  - sqn: -0.211652416441
  - trades: 33

ORCL

$ ./macdsystem.py --plot --dataset orcl --cashalloc 0.50 --atrdist 4.0
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.21907748452
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 2.23991354467
===============================================================================
TimeReturn:
  - 2005-12-31: -0.06660102614
  - 2006-12-31: 0.169334910265
  - 2007-12-31: 0.10620478758
  - 2008-12-31: -0.167615289704
  - 2009-12-31: 0.17616784045
  - 2010-12-31: 0.0591200431984
  - 2011-12-31: -0.100238247103
  - 2012-12-31: 0.135096589522
  - 2013-12-31: -0.0630483842399
  - 2014-12-31: 0.0175914485158
===============================================================================
SharpeRatio:
  - sharperatio: 0.144210776122
===============================================================================
SQN:
  - sqn: 0.646519270815
  - trades: 30

NVDA

$ ./macdsystem.py --plot --dataset nvda --cashalloc 0.50 --atrdist 4.0
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: 0.48840287049
===============================================================================
TimeReturn:
  - 9999-12-31 23:59:59.999999: -0.177604931253
===============================================================================
TimeReturn:
  - 2005-12-31: 0.246510998277
  - 2006-12-31: 0.194958106054
  - 2007-12-31: -0.123140650516
  - 2008-12-31: -0.246174938322
  - 2009-12-31: 0.33121185861
  - 2010-12-31: -0.0442212647256
  - 2011-12-31: 0.0368388717861
  - 2012-12-31: -0.048473112136
  - 2013-12-31: 0.10657587649
  - 2014-12-31: 0.0883112536534
===============================================================================
SharpeRatio:
  - sharperatio: 0.264551262551
===============================================================================
SQN:
  - sqn: 0.564151633588
  - trades: 29

第 3 次运行的结论

  • 鸡,鸡,赢家的晚餐!!该策略在这 3 个资产上赚了钱
  • YHOO1.19% 对比资产本身的31.67% 回报
  • ORCL21.90% 对比资产的223.99%
  • 在这种情况下,增加ATRDist参数已经降低了 第 2 次运行 的先前收益,即 69.01%
  • NVDA48.84% 对比资产的-17.76%
  • 这里令人惊讶的是 SharpeRatioSQN 表明


BackTrader 中文文档(二十二)(2)https://developer.aliyun.com/article/1505426

相关文章
|
5天前
|
存储 Python
BackTrader 中文文档(二十二)(3)
BackTrader 中文文档(二十二)
18 0
|
5天前
|
测试技术
BackTrader 中文文档(二十二)(4)
BackTrader 中文文档(二十二)
14 0
|
5天前
|
存储 测试技术 Python
BackTrader 中文文档(二十二)(2)
BackTrader 中文文档(二十二)
14 0
|
5天前
|
编解码 索引
BackTrader 中文文档(二十三)(2)
BackTrader 中文文档(二十三)
7 0
|
5天前
|
编解码 API Windows
BackTrader 中文文档(二十三)(3)
BackTrader 中文文档(二十三)
12 0
|
5天前
BackTrader 中文文档(二十三)(4)
BackTrader 中文文档(二十三)
11 0
|
5天前
|
Oracle 测试技术 编译器
BackTrader 中文文档(二十三)(1)
BackTrader 中文文档(二十三)
10 0
|
5天前
|
测试技术
BackTrader 中文文档(二十六)(2)
BackTrader 中文文档(二十六)
10 0
|
5天前
|
Oracle 数据可视化 关系型数据库
BackTrader 中文文档(二十六)(3)
BackTrader 中文文档(二十六)
10 0
|
5天前
BackTrader 中文文档(二十六)(1)
BackTrader 中文文档(二十六)
12 0