Crypto Quant:BinanceとBacktraderを使用したBTCのプログラムによる取引—2のパート3PlatoBlockchainデータインテリジェンス。 垂直検索。 愛。

Crypto Quant: Binance と Backtrader を使用した BTC のプログラムによる取引 — パート 2/3


Crypto Quant:BinanceとBacktraderを使用したBTCのプログラムによる取引—2のパート3PlatoBlockchainデータインテリジェンス。 垂直検索。 愛。

この部分では weインストールしたい バックトレーダー 前のセクションで収集したBinanceデータに対していくつかの取引モデルをバックテストします。

Backtraderとそのセットアップに関する多数の記事とビデオがあります。 この人気のあるPythonライブラリは、履歴データを使用して取引戦略をバックテストするQuant作業を容易にし、典型的な質問に答えます。 「与えられた買い/売り戦略を使用して取引することはどれほど有益だっただろうか」。 これは最初は数学的錬金術のように感じますが、履歴データはまあ、履歴であることを覚えておく必要があります。 昨日うまくいった取引戦略が今日うまくいく可能性は低いです…しかし、すぐにそれに戻ります。

バックトレーダー(「bt」)のインストール手順は次のとおりです。 こちら。 注:3.2.0以降のmapplotlibバージョンには既知の問題があるため、注意してください。

クイックスタートガイドは読む価値があります、それを見つけてください こちら.

RSI

ここでBacktraderを使用して試行するのは、バックテストです。 RSI (相対力指数) 今年の初めからの過去の暗号データ​​(BTC用)の取引戦略。

RSIモメンタムインジケーターについて説明します こちら。 これは、特定の取引資産の相対的な売られ過ぎと買われ過ぎの状態、およびティック数(取引間隔)である「期間」のパラメーターを逆方向に測定します。

期間パラメータのデフォルトは14であるため、間隔が分である場合、数式には14間隔ティックのデータが含まれます。 次に説明するように、各テクニカル指標には、市場の状況に合わせて「調整」する方法であるパラメーターがあります。 これらのパラメータは、戦略内の特定の指標の収益性に大きな影響を与えます。

バックテスト.py

バックテストのセットアップ: バックテスト.py 共有されています こちら。 これにより、次に定義するバックテスト実行のバックテスト構造が提供されます。 これはかなり標準的な「bt」設定です。 このコードのいくつかを確認してみましょう。 Pythonバックテストにはオンラインで学ぶべき例やビデオチュートリアルがたくさんあることに注意してください.

ここでクラス定義で、RSI戦略のパラメーターを確立します。

  • 詳細:バックテスト中にログデータを出力したい場合
  • マピリオド:移動平均期間、考慮すべきティック数
  • :売買する株式数
  • アッパー:買われ過ぎの指標の上限しきい値
  • 下側:売られ過ぎの指標の下限しきい値
  • ストップロス:売りのストップロス設定

  次() バックトレーダー戦略クラスの関数は、データの各間隔「ティック」の後に発生するものです。 これがデータに応じたbuy()またはsell()で、この場合はRSIインジケーターとしきい値です。

ここでは、 runbacktest() コードによって呼び出される関数。 前述のRSI戦略機能がに追加されます インスタンス。

すべてのかなり標準的なBacktraderのもの。 これをデータに対して実行する方法を見てみましょう。

データのバックテスト

1年2月2021日からXNUMX月XNUMX日までのデータを(最後のセクションの手順を使用して)必ず取得してください。これは、次の名前のファイルに含まれます。 BTCUSDT-20210101–20210102–1m.csv 1440日のXNUMX分ごとにXNUMXつずつ、XNUMXのCSV行があります。

ここに ビットコイン(BTC)のこのXNUMX日分の分単位の取引日のコードと出力は次のとおりです。

よく見る:

パラメータは単純です。12ティックの期間、ストップロスなし、買われ過ぎと売られ過ぎのトリガーのデフォルト制限70,30のRSIインジケーターを使用して、XNUMX日の取引を分析したいと思います。

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の純利益(XNUMX日)。

最後の図は SQN、「システム品質番号」(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)* Average(TradesProfit)/ StdDev(TradesProfit)

通常、このメトリックが統計的に有意であるためには少なくとも30の取引を要求しますが、短期間にバックテストをテストしているため、今のところそれを無視します。

次に、プロットのセクションを拡大できます。

ここでは、RSI値が30を下回ると買いシグナル(緑色の上矢印)が表示され、RSIが70を超えると収益性の高い売りシグナル(青い円)が表示されます。右下隅にあるRSIの値を参照してください。 。

777.78の勝ちトレードと18つの負けトレードで$ 7の利益(1.42日)は非常に良好で、特に比較的浅いアクション(+ XNUMX%)の取引日には適しています。 強気の日に大量に達成できることを想像してみてください!

モデルパラメータ

さまざまな日に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種類のバリエーション。 これらをXNUMXつずつ手作業で調べるのはばかげていますが、どのパラメーターが最も収益性が高く、最高の取引品質で、どれがそうでなかったかを知りたいと思います。

量子錬金術!

これにより、このCryptoQuant探索の次のステップに進みます。 与えられた取引期間で最も収益性が高く、最高品質の取引戦略パラメータをブルートフォースで決定し、それらがどのように繰り越されるかを確認できます。

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

タイムスタンプ:

より多くの M

BlueYard クリプト 1

ソースノード: 893616
タイムスタンプ: 2021 年 6 月 1 日