Crypto Quant:使用 Binance 和 Backtrader 进行 BTC 程序化交易 — PlatoBlockchain Data Intelligence 2 的第 3 部分。 垂直搜索。 哎。

Crypto Quant:使用 Binance 和 Backtrader 的 BTC 程序化交易 - 第 2 部分,共 3 部分


Crypto Quant:使用 Binance 和 Backtrader 进行 BTC 程序化交易 — PlatoBlockchain Data Intelligence 2 的第 3 部分。 垂直搜索。 哎。

在这部分 w我想安装 反向交易者 并根据我们在上一节中收集的 Binance 数据回测一些交易模型。

有许多关于 Backtrader 及其设置的文章和视频。 这个流行的 Python 库促进了使用历史数据回测交易策略的量化工作,回答了典型的问题 “使用给定的买入/卖出策略进行交易会有多有利可图”. 乍一看,这感觉像是数学炼金术,但必须记住,历史数据是历史数据! 昨天奏效的交易策略今天不太可能奏效……但我们很快就会回到这一点。

Backtrader ('bt') 安装说明是 相关信息. 注意:3.2.0 以上的 mapplotlib 版本存在已知问题,因此请注意这一点。

快速入门指南值得一读,找到它 相关信息.

RSI

我们将在这里尝试使用 Backtrader 进行回测 RSI (相对强度指标) 今年早些时候历史加密数据(BTC)的交易策略。

RSI动量指标解释 相关信息. 它测量给定交易资产的相对超卖和超买条件以及“周期”参数,即向后的刻度数(交易间隔)。

period 参数默认为 14,因此如果间隔为分钟,则公式将包含 14 个间隔刻度的数据。 正如我们接下来要探讨的那样,每个技术指标都有参数,这些参数是我们“调整”市场状况的方式; 这些参数对策略中任何给定指标的盈利能力都有巨大影响。

回测.py

我们的回测设置: 回测.py 是共享的 相关信息. 这将为我们的回测运行提供回测结构,接下来要定义。 这是一个相当标准的“bt”设置。 让我们回顾一下这段代码, 请注意,网上有大量关于 Python 回测的示例和视频教程可供学习.

在类定义中,我们为 RSI 策略建立参数。

  • 详细: 如果我们想在回测期间输出日志数据
  • 主周期:移动平均周期,要考虑的刻度数
  • 数量:要买/卖的股票数量
  • : 超买指标的上限阈值
  • 降低: 超卖指标的下限
  • 止损: 卖出的止损设置

下一个() Backtrader 策略类中的函数是在数据的每个间隔“滴答”之后发生的事情。 根据数据,这里是buy() 或sell(),在这种情况下是RSI 指标和我们的阈值。

这里我们定义 运行回测() 将被我们的代码调用的函数。 前面提到的 RSI 策略函数被添加到 大脑 实例。

所有相当标准的 Backtrader 的东西。 让我们看看如何针对我们的数据运行它。

回测我们的数据

请务必获取 1 年 2 月 2021 日至 XNUMX 月 XNUMX 日的数据(使用最后一节的步骤),这将位于名为: BTCUSDT-20210101–20210102–1m.csv 有 1440 条 CSV 行,一天中的每一分钟一行。

这里 是比特币(BTC)这一天的每分钟交易日的代码和输出:

仔细看看:

参数很简单,我们要分析一天的交易,使用 RSI 指标,周期为 12 个刻度,没有止损,超买和超卖触发器的默认限制为 70,30。

1 月 XNUMX 日 bt 结果与标准 RSI 指标策略

最后一行输出总结了这次回测的结果:

/BTCUSDT-20210101-20210102-1m.csv,RSI (Pd 12) (SL 0.0%) (U70 L30) 净值 777.78 美元 (0.78%) WL 18/7 SQN 1.76

RSI周期12,0(无)止损,(U)上限70(L)下限30, 777.78 笔盈利交易和 18 笔亏损交易的净利润(在一天内)为 7 美元。

最后一个数字是 序列号, 一个“系统质量编号”(SQN),旨在帮助交易者确定交易系统的优势、可取性和质量。 优质策略被视为既可交易又高效的策略。*

以下 SQN 值表明以下“品质”:

  • 1.6–1.9 低于平均水平
  • 2.0–2.4 平均
  • 2.5–2.9 好
  • 3.0–5.0 优秀
  • 5.1–6.9 极好
  • 7.0 — 圣杯

SQN 公式:

SquareRoot(NumberTrades) * 平均值(TradesProfit) / StdDev(TradesProfit)

通常我们会坚持至少 30 次交易才能使该指标具有统计显着性,但我们现在会忽略这一点,因为我们正在短时间内测试我们的回测。

您可以放大绘图的各个部分,例如:

在这里,我们看到一个买入信号(绿色向上箭头),因为 RSI 值低于 30,然后是一个有利可图的卖出信号,当 RSI 达到 70 以上时,盈利标记(蓝色圆圈)。请参阅右下角的 RSI 值.

777.78 笔盈利交易和 18 笔亏损交易的利润(一天内)为 7 美元,相当不错,特别是对于相对较浅的交易日(+1.42%)。 想象一下,在高成交量的看涨日我们可以实现什么!

型号参数

您可以在不同的日期运行 get_data 并分别分析它们。 请注意不同的 RSI 参数如何影响盈利能力。

举个例子,在 BTC 交易的同一天,但 RSI 周期为 20 而不是 12,盈亏为 2/3 和 净利润 -$21.51 (包括交易费)。 这与上次回测有很大的不同!

您还可以尝试不同的 RSI 限制(默认 70/30 除外)和止损参数。 一旦价格低于相对于执行的买单的某个水平,止损是自动卖单。 顾名思义,这可以在进入波动性头寸后“止损”。

止损

我们在这里设置止损的方式如下:

  • 0 : 无止损设置,等待指标触发卖单
  • 0.00x : 止损在低于买入价的 % 值,0.001 是低于 0.1%
  • -0.0x : 随着价格上涨,追踪止损将跟随交易,0.01 是低于购买价格 1% 的追踪止损

这种止损是每笔交易的重要参数,并且可以对性能产生重大影响,这并不奇怪。 有关止损策略的更多信息,请参阅 相关信息.

在我们的 backtest.py 中,我们使用 backtrader 进行设置:

这是与我们刚刚分析的相同的运行,但跟踪止损为 0.1%

383.67 胜 12 负的净利润为 12 美元,比我们之前的亏损要好得多。 您可以在图中看到,作为等待卖出(超买)信号的指标,追踪止损保护了许多交易免于陷入亏损。

在单个指标中,在此设置中,我们有许多不同的可能排列:

  • 10 到 30 个间隔(20 个变体)之间的周期范围
  • 止损设置(让我们想象 5 种不同的实际变体)
  • 超买/超卖的阈值(让我们现在想象 5 个变体)

那将是 20x5x5,或者 每天 500 种不同的变化. 逐一检查这些参数是荒谬的,但我们想知道哪些参数最有利可图,交易质量最高,哪些不是。

量子炼金术!

这将我们带到了加密量化探索的下一步。 我们可以蛮力确定给定交易时期最有利可图和最高质量的交易策略参数,然后看看这些参数如何继续下去。

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

时间戳记:

更多来自