アルゴリズム取引におけるPython - ページ 20

 

Python 戦略バックテストでトレイル ストップをコーディングする方法



Python 戦略バックテストでトレイル ストップをコーディングする方法

今日は、Python でのエキサイティングなコーディング チュートリアルをご紹介します。私たちは、トレーディングストップをトレーディング戦略に実装し、それが自己資本と収益に与える影響を分析する方法を学びます。このチャンネルを初めて利用する場合は、このプレイリスト内の以前のビデオ、特に戦略について詳しく説明した最後の 2 つまたは 3 つを視聴することをお勧めします。 Jupiter ノートブックにも Python コードがあり、説明内のリンクからダウンロードできます。これにより、パラメータを微調整して自分で実験できるようになります。

コーディング部分に入る前に、使用する戦略を簡単にまとめてみましょう。簡単に言うと、サポートとレジスタンスのレベルの検出と、これらのレベルの周囲で発生するローソク足パターンの識別を自動化しました。これらのシグナルに基づいて、取引注文を実行します。たとえば、強い拒絶ローソクが先行する強気の巻き込みパターンなどの買いシグナルを特定した場合、ロングポジションに入ります。リスクを管理するには、許容できる最大損失を決定するストップロス注文を設定する必要があります。伝統的に、ストップロスはエントリー価格から一定の距離に固定されています。ただし、このチュートリアルでは、これをトレーリング ストップに置き換えます。

トレーリングストップは収益性の高い方向への価格の動きを追跡するため、上昇トレンド中により多くの利益を獲得することができます。この例では、買いポジションにあるため、トレーリングストップは価格が上昇するにつれて、その背後に一定の距離を保ちながら追従します。ただし、価格が反転しようとしてストップロスレベルに達した場合、さらなる損失を防ぐために取引は終了します。このトレーリング ストップ メカニズムは、潜在的な利益を制限する可能性がある固定のテイクプロフィット レベルを使用する代わりに、特に長期にわたる価格トレンド中に利益を最大化するのに役立ちます。

次に、この概念を以前に説明した戦略に適用してみましょう。以前に説明したのと同じプログラムを使用します。よくわからない場合は、プレイリストを参照し、ローソク足パターンとサポートとレジスタンス レベルの検出の自動化について説明している最後の 2 ~ 3 つのビデオをご覧ください。今回の唯一の違いは、固定のストップロスまたはテイクプロフィットレシオを使用する代わりに、トレーリングストップを実装することです。このチュートリアルの終わりに向けて、戦略をバックテストし、このトレーリング ストップ手法で達成できる潜在的なリターンを実証します。

まず、2003 年から 2021 年までの EUR/USD 通貨ペアの日次ローソク足チャートであるデータを読み込みます。サポートとレジスタンスのレベル、および巻き込みパターンなどのさまざまなローソク足パターンの検出に役立つ一連の関数があります。流れ星と拒否パターン。これらの機能の実装の詳細に興味がある場合は、以前のビデオを参照してください。

次に、取引シグナルを生成します。買いシグナルは値 2 で示され、売りシグナルは 1 で示されます。シグナルがない場合、値は 0 に設定されます。この情報はデータ フレームの新しい列として追加されます。データ フレームは次のようになります。始値、高値、安値、終値、出来高 (この戦略では使用しません)、およびシグナル列の列があります。

戦略をバックテストするために、このプレイリストの最後のビデオで紹介されているバックテスト パッケージを利用します。バックテスト パッケージによって提供される "Strategy" クラスを継承する "MyCandleStrategy" というクラスを定義します。 「initialize」と各ローソク足で呼び出される次の関数の 2 つの関数をオーバーライドします。初期化関数では、トレーリングストップの距離 (ピップ単位) を表す変数「stop_loss_trail」を定義します。この値を実験して、戦略に最適なトレーリング ストップ値を見つけることができます。

次の関数では、トレーリングストップのロジックを実装します。まずはオープンポジションがあるかどうかを確認します。その場合、ポジションを入力してからの最高価格からトレーリング ストップ値を差し引いて、現在のストップロス レベルを計算します。これにより、ストップロスのレベルが価格の上昇に追従するようになります。次に、現在の価格がストップロスレベルに達しているか、ストップロスレベルを下回っているかを確認します。そうなった場合は、ポジションを決済し、取引統計を更新します。

トレーリング ストップ ロジックを実装したので、バックテストの実行と結果の分析に進むことができます。バックテストを実行して株価曲線を印刷する方法の例を次に示します。これにより、トレーリング ストップが適用された戦略の株価曲線を示すプロットが生成されます。バックテスト パッケージによって提供される他のパフォーマンス メトリクスや統計にアクセスして、戦略のパフォーマンスを評価することもできます。

最後に、トレーリング ストップ値を微調整するには、値の範囲を反復処理し、複数のバックテストを実行して結果を比較します。これは、収益を最大化する最適なトレーリング ストップ値を見つけるのに役立ちます。

これで、トレーリング ストップをトレーディング戦略に実装するためのチュートリアルは終わりです。実際の取引に適用する前に、さまざまな値を試して戦略を徹底的にテストすることを忘れないでください。ご質問がある場合、またはさらにサポートが必要な場合はお気軽にお問い合わせください。コーディングとトレーディングを楽しんでください!

How To Code A Trail Stop In Python Strategy Backtesting
How To Code A Trail Stop In Python Strategy Backtesting
  • 2021.10.22
  • www.youtube.com
Trailing stop, or stop loss strategy is presented and coded in python for algorithmic trading methods. The strategy is Backtested showing high profitability...
 

Python で取引戦略をバックテストする方法



Python で取引戦略をバックテストする方法

皆さん、こんにちは。また別のビデオへようこそ。今日は、私たちのトレーディング戦略にとって非常に重要なトピックであるバックテストについてお話したいと思います。これまで、さまざまな戦略を提示し、取引におけるモデルの推定の信頼性をチェックするために統計的なカウントのみに依存してきました。ただし、戦略をバックテストすると、一定時間内に得られる利益の額という追加情報が得られます。

戦略に何らかの投資を検討している場合、この利益率を定義することが重要です。続行する前に、いつものように、コードは Jupyter Python ノートブックであり、このビデオの説明にあるリンクからダウンロードできます。このトピックはあなたのメッセージの 1 つによって提案されたものです。ご意見を共有していただきありがとうございます。皆様からのフィードバックから、本当に興味深いアイデアをいただいております。提案されたアイデアすべてについて議論する時間がなかったら申し訳ありませんが、リストを作成しており、将来的には取り上げるつもりです。

さて、バックテストツールについて話しましょう。オンラインでは利用可能なライブラリが多数ありますが、私は個人的には独自の関数をコーディングすることを好みます。こうすることで、特にバックテストの場合に、コード内で何が起こっているかを正確に知ることができます。信頼性が高く堅牢なものが必要です。しかし、提案されたパッケージの中には 2 つの選択肢がありました。 1 つは「vectorbt」と呼ばれるパッケージを使用することでしたが、これを数時間以内に習得して自分の戦略に使い始めるのは少し難しいと感じました。ドキュメントが不足していたので、多くの詳細を見つけるためにフォーラムやオンラインの例を検索する必要がありました。これには大きな可能性があり、多くのオプションが用意されていますが、1 つの単純な戦略をテストするためだけに、必要な機能に慣れるのに 1 か月も費やすことはしたくありませんでした。

したがって、このビデオでは、2 番目の選択肢である「backtesting.py」というパッケージを選択しました。私の意見では、それはよりシンプルなアプローチを提供します。それでは早速、私たちの戦略がどれだけの利益をもたらすかを見てみましょう。この例では、レジスタンスで説明した以前の戦略をテストし、自動検出とローソク足パターン検出のビデオをサポートします。このビデオではこれら 2 つのインジケーターを組み合わせて使用します。

まず、データをロードしてクリーンアップします。次に、検出用のサポート関数とレジスタンス関数を適用します。このチャンネルを初めて視聴する場合は、サポート機能とレジスタンス機能を検出する方法に関する以前のビデオに戻ってチェックすることをお勧めします。また、飲み込みパターン、流れ星、ぶら下がっている男、他のローソク足パターン。

次に、前述のアプローチに基づいて、買いシグナルか売りシグナルか、またはシグナルがまったくないかどうかにかかわらず、シグナルを計算します。両方の信号にラベルを付けて、データ フレームの 1 つの列を埋めます。関数が適切に動作していることを確認するために、取得した信号の数をチェックできます。

ここで、backtesting.py パッケージと互換性があるように列のタイトルを変更します。この手順では大文字と小文字が区別されるため、名前が正確に一致していることを確認する必要があります。次に、作業する一連の行を選択します。

データ フレームを設定したら、最も興味深い部分、つまり戦略の定義とバックテストに進みます。 「戦略」モジュールを含む必要なライブラリをインポートし、低速移動平均と高速移動平均のクロスオーバーの例を削除します。

次に、「Strategy」クラスを拡張し、その 2 つの抽象メソッド __init__ と next をオーバーライドする「MyCandlesStrategy」という新しいクラスを定義します。 __init__ メソッドは、ストラテジの開始時に最初の変数または関数を初期化するために使用されます。戦略が依存するインジケーターやシグナルを事前に計算するために、理想的には 1 回だけ実行されます。

全体として、バックテストは、特定の期間における戦略の潜在的な収益性に関する貴重な情報を提供するため、トレーディング戦略の重要な側面です。このビデオでは、バックテストとそのトレーディング戦略における重要性について詳しく説明します。

先に進む前に、いつものように、このディスカッションのコードは Jupyter Python ノートブックとして入手でき、ビデオの説明にあるリンクからダウンロードできます。バックテストのトピックは、視聴者の 1 人によって提案されました。皆さんから受け取った興味深いアイデアやフィードバックに感謝しています。提案されたすべてのアイデアをすぐに説明する機会はないかもしれませんが、リストを管理し、将来のビデオで取り上げるように努めています。

バックテスト ツールに関しては、オンラインで利用できるライブラリが多数あります。私はそれらすべてに精通しているわけではありませんが、個人的には独自の関数をコーディングすることを好みます。このアプローチにより、コードの内部動作を完全に制御し、理解することができます。これはバックテストにとって特に重要です。取引モデルを評価するための堅牢で信頼性の高いソリューションが必要です。

提案されたパッケージの中には 2 つの選択肢がありました。 1 つ目は「Vectorbt」と呼ばれるパッケージで、強力で機能が豊富ですが、学習曲線が急峻でした。このパッケージのドキュメントはある程度限られていたため、必要な情報を収集するにはフォーラムやオンラインのサンプルを検索する必要がありました。 Vectorbt には計り知れない可能性がありますが、このビデオの単純な戦略をテストするためだけに、その機能を理解するために過度の時間を費やすことは望ましくありませんでした。

したがって、私は 2 番目の選択肢である「backtesting.py」というパッケージを選択しました。私の考えでは、このパッケージはバックテストへのよりシンプルなアプローチを提供し、私たちのニーズにより適したものになっています。そうは言っても、それを深く掘り下げて、私たちの戦略がどれだけの利益を生み出すかを見てみましょう。

この例では、レジスタンス レベルとサポート レベルの自動検出、およびローソク足パターン検出を含む、以前に説明した戦略をテストします。これら 2 つの指標を組み合わせて戦略を形成します。サポートとレジスタンスのレベル、およびローソク足パターンの検出に関する詳細な説明については、当社のチャンネルで対応するビデオを視聴することをお勧めします。

まず、通常どおりデータをロードしてクリーンアップします。次に、検出のためのサポート関数とレジスタンス関数を実装します。このチャンネルを初めて使用する場合は、サポートとレジスタンスの検出およびローソク足パターンの識別に関する以前のビデオを確認して、よりよく理解することをお勧めします。

買い、売り、またはシグナルなしの状況を判断するシグナルを計算したら、シグナルの数を数えて、機能が正しく動作していることを確認します。

今後は、「backtesting.py」パッケージと互換性があるように DataFrame の列名を調整する必要があります。パッケージで要求される大文字と小文字の区別と命名規則を尊重することが重要です。さらに、一連の行を選択し、必要な列の変更を加えます。

要約すると、DataFrame には次の列が含まれています: 時間、始値、高値、安値、終値、出来高 (現時点では使用しません)、および前に計算したシグナル列です。

次に、DataFrame からシグナル列を返すシグナル関数を定義します。この関数は、後で戦略クラスを定義するときに必要になります。

ここで、戦略を定義してバックテストを実行する、最も興味深い部分に到達します。これを達成するために、backtesting.py ドキュメントに記載されているガイドラインに従います。彼らは、新しい戦略は Strategy クラスを拡張し、その 2 つの抽象メソッド (init と next) をオーバーライドする必要があると提案しています。

init メソッドは、ストラテジーに必要な変数と関数を初期化する役割を果たします。これは戦略が実行される前に呼び出され、通常は戦略が依存するインジケーターやシグナルを事前計算するために使用されます。この関数をオーバーロードすることで、通常の Python 関数と backtesting.py ドキュメントで提供されている例を使用して、必要なインジケーターを定義できます。

init メソッドでは、戦略に必要な指標を定義します。この場合、前に作成したシグナル関数を使用して、データフレームからシグナル列を取得します。この例では取引手数料を考慮しないため、手数料もゼロに設定します。

次の方法が私たちの戦略の核心です。これは取引バーごとに呼び出され、現在の市場状況に基づいて取引の決定を下す責任があります。私たちの実装では、買いシグナル (シグナルが 1 に等しい) があるかどうかを確認しますが、現在ポジションはありません。これらの条件が満たされた場合、ロングポジション(買い)をエントリーします。

同様に、売りシグナル (シグナルが -1 に等しい) があり、ロングポジションがある場合は、ポジションを終了します (売り)。この例ではショートポジションを考慮していないため、買いシグナルと売りシグナルのみが存在します。

戦略を定義したら、そのインスタンスを作成し、DataFrame と signal 関数を引数として渡します。次に、backtesting.py パッケージから Backtest クラスのインスタンスを作成し、戦略インスタンスと DataFrame を引数として渡します。

最後に、Backtest インスタンスで run メソッドを呼び出してバックテストを実行します。このメソッドは戦略を実行し、結果を生成します。

結果には、トータルリターン、年率リターン、最大ドローダウンなどのさまざまなパフォーマンス指標が含まれます。これらのメトリクスには、Backtest インスタンスの対応する属性を使用してアクセスできます。

パフォーマンス メトリクスに加えて、Backtest インスタンスは結果を視覚化するためのさまざまなプロット関数を提供します。時間の経過に伴う取引口座の成長を示す資産曲線や、ドローダウンや取引ログなどのその他の有用なプロットをプロットできます。

この例では、資産曲線をプロットし、パフォーマンス指標を含むバックテスト結果の概要を出力します。

コードを実行すると、時間の経過に伴う取引口座の成長を示す資産曲線プロットを観察できます。バックテスト結果の概要は、戦略のパフォーマンスに関する貴重な情報を提供します。

戦略をバックテストすることで、その収益性を評価し、そのパフォーマンスを評価することができます。このプロセスにより、取引モデルの有効性についての洞察が得られ、実際の取引シナリオでの潜在的な使用について情報に基づいた意思決定が可能になります。

以上で、backtesting.py パッケージを使用したバックテストについての説明を終わります。このビデオが有益であり、取引戦略をバックテストするための実践的なアプローチを提供したことを願っています。さまざまな戦略、インジケーター、パラメータを試して、取引目標に最適なものを見つけることを忘れないでください。

いつものように、今後のビデオに関するコメント、質問、提案をお気軽に残してください。皆様のご意見をお待ちしております。ご視聴いただきありがとうございます。次のビデオでお会いしましょう!

How To Backtest A Trading Strategy in Python
How To Backtest A Trading Strategy in Python
  • 2021.10.07
  • www.youtube.com
In this video I am presenting a backtesting method using the backtesting.py package. We will backtest a winning strategy using python, we already detailed th...
 

Python による自動プライスアクション取引戦略



Python による自動プライスアクション取引戦略

このビデオでは、ローソク足パターンとサポートレベルとレジスタンスレベルを利用した取引戦略について説明します。この戦略の主な目的は、価格変動パターンを検出するプロセスを自動化し、それをユーロ対米ドルの過去のデータに適用することです。

まず、この戦略の主要なコンポーネントを見てみましょう。ローソク足パターンは、価格変動をバーまたはローソク足の形でグラフィカルに表現したものです。これらのパターンは、市場センチメントと潜在的なトレンド反転に関する貴重な情報を提供します。これらのパターンを分析することで、トレーダーは、いつ取引を開始または終了するかについて情報に基づいた決定を下すことができます。

一方、支持線と抵抗線は、歴史的に市場が反転または失速する傾向を示してきた特定の価格点です。これらのレベルはトレーダーにとって心理的な障壁として機能し、潜在的なエントリーポイントとエグジットポイントを特定するために使用できます。

さて、Python でのこの戦略の実装に移りましょう。さまざまな金融データ ソースまたは API から取得できるユーロ対米ドルの履歴データを使用します。この例では、必要なデータがすでに収集され、前処理されていると仮定します。

Python といくつかの人気のあるライブラリを使用して戦略を自動化します。最初のステップは、データ操作用の pandas、プロット用の matplotlib、テクニカル分析指標用の talib など、必要なライブラリをインポートすることです。 Talib は、ローソク足パターン認識を含むテクニカル分析関数のコレクションを提供する、広く使用されているライブラリです。

ライブラリがインポートされたら、履歴データを pandas DataFrame にロードできます。 DataFrame には、日付、始値、高値、安値、終値、出来高などの必要な列が含まれている必要があります。これらの列はテクニカル分析で一般的に使用され、インジケーターとパターンの計算に必要です。

次に、ローソク足パターンを検出する関数を定義できます。この例では、単純なパターンである強気の巻き込みパターンに焦点を当てます。このパターンは、小さな弱気のローソク足の後に、前のローソク足を完全に飲み込む大きな強気のローソク足が続くときに発生します。この関数は DataFrame を反復処理し、強気の巻き込みパターンのインスタンスを識別します。

戦略を強化するために、サポートとレジスタンスのレベルを組み込むこともできます。これらのレベルは、過去の価格チャートを分析するか、テクニカル分析手法を使用することによって手動で特定できます。この例では、関連するサポートレベルとレジスタンスレベルをすでに特定し、それらを別のデータフレームに保存していると仮定します。

ローソク足のパターンとサポートとレジスタンスのレベルを取得したら、戦略の自動化に進むことができます。データフレームを反復処理し、現在の足が強気の飲み込みパターンの条件を満たしているかどうか、および現在の価格がサポートレベルに近いかどうかを確認します。これらの条件が満たされた場合、買いシグナルが生成されます。

逆に、現在のバーが弱気の飲み込みパターンの条件を満たし、現在の価格がレジスタンスレベルに近い場合は、売りシグナルを生成します。これらのシグナルは、ライブ取引環境で買い注文または売り注文をトリガーするために使用されます。

戦略の結果を視覚化するために、特定されたローソク足パターンとサポートおよびレジスタンスレベルを使用して過去の価格チャートをプロットできます。これは、戦略の有効性を理解し、改善の余地がある領域を特定するのに役立ちます。

最後に、過去のデータに基づいてバックテストを行うことで、戦略のパフォーマンスを評価できます。バックテストには、過去のデータに基づいて取引をシミュレーションし、戦略の収益性とリスクを評価することが含まれます。トータルリターン、年率リターン、最大ドローダウンなど、さまざまなパフォーマンス指標を計算できます。

戦略をバックテストすることで、そのパフォーマンスに関する洞察が得られ、実際の取引シナリオでの潜在的な使用について情報に基づいた意思決定を行うことができます。バックテストは、アプローチの実行可能性と収益性を評価するのに役立つため、戦略開発における重要なステップであることに注意することが重要です。

このビデオでは、ローソク足パターンとサポートレベルとレジスタンスレベルを組み合わせたシンプルな取引戦略を紹介しました。この戦略は、ユーロ対米ドルの過去のデータを使用して Python で自動化され、テストされました。これらのテクニカル分析手法を活用することで、トレーダーは収益性の高い取引機会を特定し、金融市場で情報に基づいた意思決定を行うことができる可能性があります。

Automated Price Action Trading Strategy In Python
Automated Price Action Trading Strategy In Python
  • 2021.09.09
  • www.youtube.com
This video presents a simple trading strategy using candlestick patterns and support and resistance values. The strategy can be automated for price action d...
 

Python での自動サポートと抵抗検出



Python での自動サポートと抵抗検出

みなさん、こんにちは。このビデオへようこそ。このビデオでは、Python を使用してサポートとレジスタンスのレベルの検出を自動化する方法について詳しく説明します。このアイデアはコメントの 1 つによって提案されたもので、大変感謝しています。いつものように、プログラムは以下の説明のリンクからダウンロードできることを忘れないでください。これは、独自の実験に使用できる Jupyter Notebook ファイルです。これを別の通貨や別の時間枠で試してみたり、コードで提供される変数を変更したりすることもできます。

価格変動チャートを見ることでサポートとレジスタンスのレベルを視覚的に特定するのは簡単ですが、それらをプログラムで定義するのは複雑に思えるかもしれません。ただし、適切なアルゴリズムを使用すれば、プロセスを自動化できます。このビデオで紹介するアルゴリズムは、サポートとレジスタンスのレベルを検出するための唯一のアルゴリズムではないことに注意することが重要です。さまざまなアプローチがありますが、コードでの実装が比較的簡単なアプローチを選択しました。

ここに表示されている図は、これから説明するコードを使用して生成されたもので、ご覧のとおり、サポート レベルとレジスタンス レベルがプログラムによって正しく検出されました。このアプローチは、どの通貨でも、どのような市場状況でも機能します。ただし、これは完璧なアルゴリズムではないため、一部のレベルが検出されないことに気付く場合があります。これについてはビデオの後半で説明します。

サポートとレジスタンスのレベルを定義する基本的な考え方は、戦略に含めるレベルの数に応じて、1 ~ 2 か月などの特定の期間内に振り返ることです。データが多ければ多いほど、より多くのレベルを発見できます。たとえば、ここに示したような日足チャートを検討していて、特定の日に取引を進めたい場合は、1 か月などの特定の期間内を振り返って、支持線と抵抗線を見つけます。その期間中に発生した。これは、レベル検出の限られた時間を考慮してプログラムでシミュレートするものです。利用可能なすべてのデータを使用してサポートとレジスタンスのレベルを検出しようとすると、多数のレベルが存在することになり、これはトレーディング戦略にとって現実的ではありません。したがって、現在の日付より数か月前に焦点を当てるのが最善です。

それでは、アルゴリズム自体を見てみましょう。サポートレベルについては、対象のローソク足に先行する特定の数の減少する安値を探します。対象のローソク足は、他のローソク足よりも低い値を持つ必要があります。さらに、対象のローソク足の後に 3 つの安値が増加する必要があります。ローソク足のグループに対してこれらすべての条件が満たされると、これらのローソク足の中での最低価格として定義されるサポート レベルを特定できます。同じ原理が抵抗レベルにも当てはまります。対象のローソク足の前の高値が増加し、対象のローソク足の高値がさらに高くなる必要があります。そうすれば、注目のローソク足の後に高値が減少するはずです。これにより、これらのローソク足の中で最も高い価格である抵抗レベルを見つけることができます。

この段階での興味深いパラメータは、対象のローソクの前後に何本のローソクを考慮する必要があるかです。これはユーザーの好みに基づいてカスタマイズできるので、さまざまな値を試してみるのも良いでしょう。私たちのプログラムでは、これらを n1 と n2 という 2 つの変数として定義します。対象のローソク足のインデックスは変数 l で表されます。

ここで、このアルゴリズムを Python で実装する方法を見てみましょう。このデモでは Jupyter Notebook を使用します。まず、データ操作用のパンダなど、必要なライブラリをインポートします。 read_csv 関数を使用してデータを読み込みます。この例では、2003 年から 2021 年までの EUR/USD の日足チャートを使用しています。これは約 18 年間のデータです。

次に、ss リストと rr リストに保存されているサポート レベルとレジスタンス レベルを使用して、ローソク足チャートに線をプロットします。 ss の各サポート レベルをループし、その価格レベルでチャートに水平線を追加します。同様に、rr の各抵抗レベルをループし、各レベルに水平線を追加します。これにより、価格変動に関連したサポートとレジスタンスのレベルを視覚化しやすくなります。

コードを実行すると、サポートレベルが紫の破線で表示され、レジスタンスレベルが青の破線で表示されるローソク足チャートが生成されます。チャートは検出されたサポートとレジスタンスのレベルを視覚的に表現するため、取引の決定において重要な価格レベルを特定しやすくなります。

ここで紹介するアルゴリズムは、サポートとレジスタンスのレベルを検出するためのいくつかのアプローチのうちの 1 つであることに注意してください。 n1 と n2 のさまざまな値を試して、レベルの検出と結合にどのような影響を与えるかを確認できます。さらに、コード内のしきい値を調整することで、レベルを結合する条件を変更できます。

サポートとレジスタンスのレベルの自動検出は便利なツールですが、情報に基づいて取引の意思決定を行うには、他のテクニカル分析手法や市場の洞察と組み合わせて使用する必要があることに留意してください。

Automated Support and Resistance Detection in PYTHON
Automated Support and Resistance Detection in PYTHON
  • 2021.08.19
  • www.youtube.com
This video describes an algorithm to detect support and resistance levels in python language. 🍓 If you want to follow structured courses with more details a...
 

Python による自動価格行動パターン分析


Python による自動価格行動パターン分析

このビデオでは、Python でローソク足分析パターンを組み合わせ、シグナルの数と価格変動予測の精度を確認する方法について説明します。この方法は自動取引と互換性があります。価格変動の動き、ローソク足分析、巻き込みパターン、価格変動分析から比較的強いシグナルを探すのに適した方法です。

00:00 プライスアクションキャンドルの紹介
00:35
流れ星、ハンマー、ぶら下がっている男、飲み込むパターン
03:10  Python 価格アクションの検出
12:13 価格変動分析結果
18:45  Python で価格ローソク足をプロットする

Automated Price Action Patterns Analysis In Python
Automated Price Action Patterns Analysis In Python
  • 2021.08.05
  • www.youtube.com
This video provides an explanation on how to combine Candlestick Analysis Patterns in Python and check the number of signals as well as the accuracy of the p...
 

Python で自動化された値動きパターンの飲み込み



Python で自動化された値動きパターンの飲み込み

みなさん、こんにちは。このビデオへようこそ。今日の議論では、ローソク足の飲み込み、特に強気と弱気の飲み込みパターンに焦点を当てます。すでにこれらのパターンに精通している人は、トレーディングにおける指標としての重要性を理解しているでしょう。

これらのパターンの妥当性を分析するために、約 10 年間にわたる EUR/USD 通貨ペアの履歴データを利用します。私たちの目的は、Python で単純な統計手法を適用して、これらのパターンが統計的に有意性を持っているか、それとも単なる神話にすぎないかを判断することです。この情報は、特にローソク足パターンをインジケーターとして取引戦略に組み込むことを検討している場合に重要です。

便宜上、以下の説明にあるリンクをクリックすると、この分析で使用された完全なコードを見つけることができます。コードは Jupyter Notebook ファイルとして利用できるため、コードを探索しながらリラックスしてこのビデオを楽しむことができます。

飲み込みパターンは 2 つの異なる形式で観察できます。強気のパターンは、複数の下降トレンドのローソク足の後に単一の上昇トレンドのローソク足が続く場合に発生します。この上昇トレンドのローソクは、最後の下降トレンドのローソクの終値以下で始まり、前のローソクの始値より高く終了します。このパターンは通常、市場が今後上昇傾向にあることを示しています。

一方、弱気の巻き込みパターンは強気のパターンとは対称的です。これは、上昇トレンドのローソク足の後に弱気の巻き込みローソク足が続くときに発生します。弱気巻き込みローソク足は、前のローソク足の終値以上で始まり、同じローソク足の始値以下で終了します。このパターンは、今後の価格の下落を示しています。

このビデオでは、これらの主張が真実であるかどうかを検証することが私たちの目的です。私たちは、これらのパターンが本当に特定の市場の動きを示しているかどうかを判断することを目的としています。通常、強気の飲み込みパターンは市場で買い手が売り手よりも強いことを示唆し、弱気の飲み込みパターンはその逆を示唆します。この検証を行うために、強気と弱気の巻き込みローソク足を検出するための Python コードを作成します。次に、次のいくつかのローソク足 (1 ~ 3 本以上のローソク足) を分析して、価格が予想した方向に動くかどうかを確認します。

より正確には、最後に巻き込んだローソク足の終値を考慮します。強気の巻き込みパターンの場合、後続のローソク足の高値を考慮し、巻き込みローソク足の高値と終値の差を計算します。これにより 3 つの異なる値が得られ、これらを「d」と表記します。次に、これらの差のいずれかが、これから定義する変数で表される特定の制限を超えるかどうかをテストします。この制限は、好みに応じて 20、30、または 40 ピップスに設定できます。次に、この差が pip 制限を超える回数の割合を計算します。

同様に、弱気の飲み込みパターンでは、後続のローソク足の低い値を考慮します。巻き込みローソク足の終値とこれらの安値との差を変数 X で比較します。もう一度、この差が X を超える例を探します。本質的に、価格が強気か弱気かを評価しています。飲み込みパターンに従って、2 ~ 3 本のローソク足以内に閾値が設定されます。これらのパターンが発生した後に価格が予想どおりに動作するインスタンスの割合を計算します。

これらの差のうち 1 つだけが変数 X を超える必要があることに注意することが重要です。3 つの差すべてが同時にこの pip 制限を超える必要はありません。したがって、価格が巻き込みローソク足の終値を特定のピップ数下回った場合、このパターンの予測は成功したとみなされます。同じ原理が強気の巻き込みパターンにも当てはまりますが、それは上向きです。

次に、Python コードをチェックしてその動作を観察してみましょう。

トレンドが 1 に等しい場合、つまり弱気の巻き込みパターンと下降トレンドの予測に対してこれを行う場合、トレンドが 1 に等しい結果列の値を合計し、合計数で割ることで精度を計算できます。弱気巻き込みパターンのシグナル。同様に、強気の巻き込みパターンと上昇トレンドの予測の精度を計算できます。

ここで、データ フレームを入力として受け取り、両方のパターンの精度を計算する「calculate_precision」という新しい関数を作成しましょう。まず、変数「bearish_signals」と「bullish_signals」を初期化して、各パターンのシグナルの総数をカウントします。次に、データ フレームを反復処理し、信号値に基づいて対応する信号カウンターをインクリメントします。

次に、トレンドが 1 に等しい結果列の値を合計し、それを弱気シグナルの総数で割ることにより、弱気巻き込みパターンの精度を計算します。強気の巻き込みパターンと上昇トレンドの予測についても同じことを行います。

最後に、両方のパターンの精度値を返します。ここで、データ フレームでこの関数を呼び出して、精度を計算しましょう。

精度を計算した後、結果を印刷して、予測が実際の傾向とどの程度一致しているかを確認できます。これらの精度の値は、コード内で設定した特定のパラメーターと条件に基づいていることに注意することが重要です。さまざまなパラメーターや条件を試して、特定の取引戦略の精度を最適化できます。

結論として、このビデオはトレーディングにおけるローソク足のパターンに焦点を当て、これらのパターンに統計的な有意性があるのか、それとも単なる神話に過ぎないのかを判断することを目的としていました。 Python を使用して EUR/USD 通貨ペアの履歴データを分析することで、弱気と強気のローソク足のパターンを検出し、指定された数のローソク足内でのその後のトレンドの動きを調べました。精度の計算を通じて、予測の精度についての洞察が得られました。この分析の限界を忘れずに考慮し、自分の好みや目標に基づいて取引戦略を改良し続けてください。

ご視聴いただきありがとうございます。ビデオの説明にあるリンクを確認して、Jupyter Notebook 形式で完全なコードをダウンロードすることを忘れないでください。トレーディングの旅をお楽しみください。ご成功をお祈りします。

Engulfing Price Action Patterns Automated in Python
Engulfing Price Action Patterns Automated in Python
  • 2021.07.08
  • www.youtube.com
This video describes the Engulfing Candlestick Patterns, bullish and bearish engulfing candles and statistics are carried out in python to check if these pat...
 

Python での自動ローソク足戦略 |流れ星のテスト



Python での自動ローソク足戦略 |流れ星のテスト

今日のセッションでは、ローソク足パターンの魅力的な世界を掘り下げ、Python でプログラムする方法を学びます。私たちの目標は、特定のパターンを識別し、価格トレンドの反転を潜在的に検出できるコードを作成することです。さらに、ローソク足シグナルを利用する戦略のバックテストを実行し、シンプルな統計的アプローチを採用して、ローソク足予測に基づいて勝利する自動ボットを開発する可能性を評価します。このコンテンツに興味がある場合は、以下の説明にあるリンクからプログラム ファイルをダウンロードできます。この有益なセッションをお楽しみいただければ幸いです。

先に進む前に、このビデオではローソク足パターンについてある程度の知識があることを前提としていることを明確にしておきます。最もよく知られている形式に焦点を当てるため、各パターンの詳細については説明しません。他にも多くのパターンがあるため、このリストがすべてを網羅しているわけではないことに注意してください。とりあえずは基本を押さえていきます。未決定の市場を表す Doji についてはすでにご存知かもしれません。もう 1 つの重要なパターンは、ローソク足の実体の上にある長い尾を特徴とする流れ星です。 2つの形態で現れることができますが、最も重要なのは長い尾の存在です。上昇トレンド中に流れ星に遭遇した場合、それはトレンドの反転を示し、下降トレンドへの移行を示唆している可能性があります。同様に、Shooting Star に似ていますが反転した Hammer パターンもあります。これは、上昇トレンド中の拒絶点を意味し、長い下尾を伴います。このパターンは、上昇トレンドが終わりに近づき、下降トレンドのリトレースメントが続く可能性があることを示唆しています。

次に、強気の巻き込みパターンについて説明します。これは下降トレンド中に発生し、最後の赤いローソク足がより大きな上向きのローソク足で完全に覆われます。この反転パターンは、下降トレンドの終わりと上昇トレンドの始まりを示します。逆に、強気の巻き込みパターンの逆である弱気の巻き込みパターンがあります。これは上昇トレンド中に発生し、上昇するローソク足の後により大きなローソク足が続き、前のローソク足をカバーします。これは上昇トレンドの終わりと下降トレンドの始まりを示します。ここでは詳しく説明しませんが、特に Three Crows など、他にもいくつかのローソク足パターンがあることに注意してください。ただし、このビデオでは、特に下降トレンドが上昇トレンドに反転するときの、流れ星とハンマーのパターンに焦点を当てます。

シューティング スター パターンとハンマー パターンは、上昇トレンドに対する市場の反応を明確に示しているため、私の個人的なお気に入りです。売り手が特定の価格水準を拒否して市場に参入したことは明らかです。これが、私が他のパターンよりもこれらのパターンを信頼する傾向がある理由です。もちろん、これらのパターンをどのように利用し、他の指標や戦略と組み合わせるかによって、個人の好みは異なる場合があります。このビデオの目的として、このローソク足に独特の形を与えている価格拒否と売り手の強い反応の説得力のある例としてシューティング スターを考えてみましょう。このパターンを Python でコーディングし、そのようなパターンを認識するようにボットに教えることに焦点を当てます。これから説明する概念を興味のある他のパターンに拡張することもできますが、私たちの主な焦点は流れ星とハンマーです。

ローソク足のパターンのみに依存するだけでは、正確な売買シグナルを生成するには不十分であることに注意することが重要です。これらのパターンは、お気に入りのインジケーターと組み合わせる必要があります。この例では、それらを相対強度指数 (RSI) と組み合わせます。ローソク足パターンと並行して、さまざまなテクニカル指標やファンダメンタルズ分析を組み込むこともできます。ローソク足だけを使用することは包括的ではありません。

予測アプローチの成功率を評価するには、信号に追加の確認を追加するローソク足パターンと組み合わせて RSI を使用する必要があります。 RSI 値が高いほど買い圧力が強いことを示しており、これは流れ星のパターンが示唆するトレンド反転の可能性と一致しています。

すべての条件が満たされれば、買いシグナルを生成できます。データ フレーム内の対応する行の信号列に値 1 を割り当てます。それ以外の場合は、信号がないことを示す値 0 を割り当てます。このプロセスはデータ フレーム内の行ごとに繰り返され、データセット全体を効果的にスキャンして潜在的な購入シグナルを特定します。

次に、特定された買いシグナルのストップロスとテイクプロフィットのレベルの定義に進みます。購入価格から平均トゥルーレンジ (ATR) を差し引いてストップロス値を計算します。 ATR はボラティリティの尺度を提供し、ストップロスの適切な距離を決定するのに役立ちます。 ATRが広いほど市場のボラティリティが高く、より大きなストップロスが必要であることを示します。一方、ATRが小さいほど、市場のボラティリティが低く、より厳しいストップロスが可能であることを示しています。

テイクプロフィットレベルについては、テイクプロフィット対ストップロスの比率(2に設定)にATRを乗算し、それを購入価格に追加します。これにより、テイクプロフィットレベルがストップロスレベルの 2 倍、購入価格から離れていることが保証されます。テイクプロフィットレベルは、取引の潜在的な利益目標を表します。

買いシグナルと、それに対応するストップロスとテイクプロフィットのレベルがわかったので、戦略のバックテストに進むことができます。データ フレームの各行を反復処理し、生成されたシグナルに基づいて取引をシミュレートします。

価格が最初にストップロスレベルに達した場合、それは負け取引とみなされます。逆に、価格が最初にテイクプロフィットレベルに達した場合、それは勝ち取引であると見なされます。私たちは勝った取引と負けた取引の数を追跡します。

戦略のパフォーマンスを評価するために、取引合計のうち勝った取引の割合として勝率を計算します。この場合、テイクプロフィットとストップロスの比率を 2 に設定しているため、それぞれの勝ちトレードが 2 つの負けトレードを補うことになります。したがって、勝てるシステムを実現するには、少なくとも 34% の確率で正しいことが必要です。

この評価には、手数料や翌日物スワップ価値などの取引コストが考慮されていないことに注意することが重要です。さらに、これは簡略化された例であり、実際の取引では、市場の状況、リスク管理、市場全体の分析など、他の要素を考慮することが不可欠です。

ローソク足パターン、RSI、および取引管理への体系的なアプローチを組み合わせることで、収益性の高い取引を生み出す可能性のある取引戦略を開発することを目指しています。ただし、過去のデータを使用して戦略を徹底的にテストおよび検証し、変化する市場状況に適応するために継続的な市場分析を検討することが重要です。

結論として、このビデオ チュートリアルでは、Python でローソク足パターンをプログラミングする方法を紹介し、特定のパターンを認識する方法を示し、これらのパターンに基づいて戦略のパフォーマンスを評価するバックテスト アプローチの概要を説明します。これは、価格トレンドの反転を予測し、自動取引ボットを開発するためのツールとしてのローソク足パターンの可能性を探る機会です。

Automated Candlestick Strategy in Python | testing the shooting star
Automated Candlestick Strategy in Python | testing the shooting star
  • 2021.04.21
  • www.youtube.com
This video is a walkthrough coding the candlestick patterns in Python language. After a general introduction we focus mainly on the shooting star rejection p...
 

アルゴリズム取引と機械学習でよくある間違いを回避する



アルゴリズム取引と機械学習でよくある間違いを回避する

あなたが寝ているときや自由時間を楽しんでいるときに、あなたに代わって収益性の高い取引を実行してくれる、勝ち組の取引ボットがいたらどうなるだろうかと考えたことはありますか?おそらく、あなたはコードを解読して、あなたのライフスタイルに革命をもたらす可能性のあるとらえどころのないプログラムを見つけるために、何時間、何か月、あるいは何年も費やしたことがあるのではないでしょうか。

機械学習に関しては、マーケティングや販売などのさまざまな分野で驚異的な効果を発揮する力があると多くの人が信じています。ただし、機械学習がまだ苦戦している分野が 2 つあります。それは、気象データの予測と価格市場の予測です。これらの分野の数値はランダム性が高いため、機械学習のみを使用して価格を正確に予測することが困難になります。

ただし、ここに落とし穴があります。機械学習を使用して価格を予測することは可能ですが、それは適切な取引戦略と組み合わせた場合に限ります。これは、行う予測の種類が採用する取引戦略と一致している必要があることを意味します。

ここで、取引モデルの成功を妨げる可能性のあるよくある間違いと、それらを回避するために何ができるかを見てみましょう。

間違い #1: 価格値をリグレッサーとして機械学習モデルに当てはめる。価格値を機械学習リグレッサーに直接入力して次の市場価格を予測しようとすることは、初心者にありがちな間違いです。このアプローチは、表面積に基づいて住宅価格を予測するなどの相関値にはうまく機能する可能性がありますが、株式市場や為替市場には適用できません。これらの市場は時間変数だけでは明確な相関関係を示さないため、直接回帰は効果的ではありません。

間違い #2: モデルの入力として絶対値を使用します。生の価格やテクニカル指標の値を入力として使用することは、もう 1 つの落とし穴です。単に始値、終値、高値、安値を移動平均やその他の指標とともに提供するだけでは、正確な将来の価格予測は保証されません。私たちの脳は情報を異なる方法で処理し、個々の値ではなく全体像と価格変動の傾きに焦点を当てます。同様に、モデルでは、個々のデータ ポイントではなく、全体的な傾向とパターンを考慮する必要があります。

間違い #3: ランダムなトレーニングとテストのデータ分割を使用してデータをサンプリングしました。ランダムなトレーニングとテストの分割は機械学習では一般的な手法ですが、時系列分析を扱う場合、特に価格市場では問題が発生する可能性があります。トレーニングとテストのためにデータをランダムに分割すると、テスト セットがトレーニング セットに酷似する状況が発生する可能性があります。この類似性により、バックテスト中にモデルが正確であるように見えても、新しいライブ データでは適切に動作しない可能性があります。

間違い #4: テクニカル分析のみに依存している。テクニカル指標は機械学習モデルにおいて重要な役割を果たしますが、それだけに頼るだけでは長期的な成功には十分ではありません。経済カレンダーや主要イベントなど、市場の行動に大きな影響を与える可能性のある外部要因を考慮することが重要です。これらの要因を無視すると、結果が悪くなり、健全なモデルの信用が失墜する可能性があります。

間違い #5: モデルの精度に合った戦略を考慮していない。モデルの精度だけで収益性が決まるわけではありません。モデルの精度と、有利なテイクプロフィット対ストップロスの比率などの最適化された取引戦略を組み合わせることで、一見負けそうなモデルを収益性の高いモデルに変えることができます。適切な戦略と組み合わせれば、33% を超える精度で十分です。

間違い #6: エントリー戦略をスキップし、モデルの予測のみに依存します。モデルが正確な予測を提供する場合でも、いつ市場に参入して取引を実行するかを知ることが重要です。利益を最大化するには、モデルの予測を補完する市場参入戦略を定義することが不可欠です。間違ったタイミングで市場に参入し、目標を達成する前にストップアウトしてしまうと、正しいトレンド予測だけでは十分ではありません。

間違い #7: 取引手数料や手数料を考慮していない。手数料や手数料を無視すると、取引戦略の収益性に重大な影響を与える可能性があります。勝利戦略にはわずかな利点があるかもしれませんが、取引手数料によってその利益が損なわれる可能性があります。戦略を立てる際には、夜間や週末の手数料を避けるためにその日のうちに取引を終了するなど、手数料を考慮することが重要です。

次に、モデルを長期間にわたってバックテストすることが重要です。モデルの有効性を確認するには、さまざまな市場条件でモデルをテストすることが不可欠です。モデルの長期的な実行可能性を反映していない可能性があるため、短期的なパフォーマンスだけに依存しないでください。モデルを少なくとも 6 か月間バックテストし、一貫してプラスの利益が得られるかどうかを評価することを目指します。

最後に、焦って取引に干渉しないようにしてください。高精度モデルは、取引を実行する前に強いシグナルを待つ傾向があります。これによりいくつかの機会を逃す可能性がありますが、モデルの決定に干渉しないことが重要です。焦りに基づいて新しい取引を開始したり、既存の取引を終了したりしないでください。場合によっては、取引がゼロのほうが、損失の取引を行うよりも優れている場合があります。

結論として、これらの洞察は取引体験の向上に役立つはずです。アルゴリズムがまだ市場に投入できる状態にない場合は、それに過度に注目しないことが最善であることに注意してください。休憩を取って、温かいピザを注文して、楽しい時間を過ごしましょう。

 

パンダを使用して取引するためのテクニカル指標を計算する方法



パンダを使用して取引するためのテクニカル指標を計算する方法

みなさん、こんにちは。このビデオへようこそ。今日は、Python を使用して外国為替市場価格を分析し、統計によってテクニカル指標と将来の価格の方向性との間の相関関係が明らかになるかどうかを探っていきます。これを理解するためにトレーディングやプログラミングの専門家である必要はありませんが、移動平均や相対強度指標 (RSI) などの基本的なテクニカル指標にある程度の知識があると役に立ちます。トレーディングにおける機械学習アプリケーションを簡単に紹介したいと思ってここに来ているのであれば、物事を簡単に説明するので、ここは正しい場所です。

このビデオでは、次のトピックについて説明します。

  1. 為替データのダウンロード: cascope.com Web サイトにアクセスし、特に USD/CHF (米ドル対スイス フラン) 通貨ペアの履歴データ フィードを選択します。データには 1 時間ごとのローソク足の時間枠を選択します。

  2. pandas を使用して Python にデータをロードする: pandas ライブラリの read_csv 関数を使用して、ダウンロードしたファイルを pandas DataFrame にロードします。また、DataFrame の最後の 5 行を検査して、データが正しく読み込まれているかどうかを確認します。

  3. データ クリーニングと初期分析: データを理解することが重要であるため、ボリュームがゼロの行を削除し、欠損値をチェックすることでデータをクリーニングします。さらに、短い統計分析を実行して、データ内のパターンや相関関係を特定します。

  4. テクニカル指標の追加: さまざまなテクニカル分析指標を提供する numpy や pandas_ta (パンダテクニカル分析) など、必要なライブラリをインポートします。アベレージ トゥルー レンジ (ATR)、RSI、移動平均などのいくつかのインジケーターをデータフレームに追加し、それらの傾きを計算します。

  5. ターゲットの定義: テクニカル指標に基づいて予測を行うには、ターゲットを定義する必要があります。将来の平均価格を予測するのは困難な場合がありますが、その代わりに、傾向を上昇、下降、明確な傾向なしの 3 つのカテゴリに分類します。

  6. ヒストグラムのプロット: ヒストグラムを使用して、さまざまな特徴の分布を視覚化します。これには、出来高、ATR、RSI、仲値、移動平均、傾き、ターゲット カテゴリが含まれます。ヒストグラムはデータの概要を簡単に示し、外れ値を特定するのに役立ちます。

  7. RSI の分析: トレンド指標として RSI に焦点を当て、3 つのターゲット カテゴリ (上昇トレンド、下降トレンド、不明確なトレンド) に対して個別のデータフレームを作成します。各カテゴリの RSI 値のヒストグラムをプロットして、区別できる違いがあるかどうかを確認します。

ただし、RSI のみに依存するだけでは、価格トレンドを正確に予測するのに十分ではない可能性があることに注意してください。価格傾向を予測する際に有利になるように、他のテクニカル指標や指標の組み合わせを検討することをお勧めします。

以上でこの動画の内容は終わりです。情報がお役に立てば幸いです。特定の質問がある場合、またはさらに説明が必要な場合は、コメント欄でお気軽にお問い合わせください。コーディングを楽しんでください!

How To Calculate Technical Indicators For Trading Using Pandas
How To Calculate Technical Indicators For Trading Using Pandas
  • 2021.02.22
  • www.youtube.com
If you're a beginner looking to learn how to calculate technical indicators and download price history, then you don't want to miss this video! These indicat...
 

Backtesting.py - Python のフルコース



Backtesting.py - Python のフルコース

チュートリアル中、インストラクターは取引戦略をバックテストするためのライブラリとして backtesting.py を使用することの良い点と悪い点について説明します。このライブラリはバックテストの本質のみに焦点を当てるように設計されており、インジケーター ライブラリやブローカーや他のプラットフォームとの統合などの機能は省略されています。このシンプルさにより、ライブラリは軽量で簡単に使用できるようになります。提供されるドキュメントは明確で理解しやすいため、ユーザーはライブラリの概念と機能をすぐに理解できます。

backtesting.py の大きな利点の 1 つは、特に単一の戦略をテストする場合の速度です。このライブラリはパフォーマンスが最適化されているため、ユーザーはバックテストを効率的に実行し、タイムリーに結果を取得できます。この速度は、複数の戦略またはパラメーターの組み合わせを反復して最適な設定を見つける場合に有益です。

ただし、backtesting.py を使用する場合には考慮すべき制限がいくつかあります。まず、ライブラリは複数の資産の取引をサポートしていません。これは主に、単一の資産または証券に関する戦略をテストするために設計されています。さらに、backtesting.py は端株をサポートしていません。これは、より小さなポジションサイズでの取引に関心のあるユーザーにとっては欠点になる可能性があります。

これらの制限にもかかわらず、backtesting.py は、取引戦略のバックテストのみに集中したい人にとって依然として優れた選択肢です。そのシンプルさと軽量さにより、理解しやすく、既存のワークフローに簡単に統合できます。

このチュートリアルでは、インストラクターが仮想環境を作成し、必要な依存関係をインストールする手順を段階的に説明することで、backtesting.py の使用法を示します。 2006 年から 2013 年までの Google 株価のテスト データなど、必要なコンポーネントをインポートすることで、インストラクターはバックテストを実行するための準備を整えます。

次に、インストラクターは 2 つの必須関数 __init__ と next が定義された戦略クラスの作成に進みます。 __init__ 関数では、インストラクターは相対強度指数 (RSI) の指標値を計算します。次の関数は、RSI 値に基づいて購入基準を評価するために使用されます。

次に、インストラクターは、次の関数に入力される事前計算された値を使用して、単純なクロスオーバー戦略を実装する方法を説明します。 backtesting.py のクロスオーバー ライブラリがインポートされ、RSI を上限値と下限値と比較します。 RSIが特定の値を超えると売りシグナルが生成され、別の値を下回ると買いシグナルがトリガーされます。インストラクターは上限値と下限値を定義し、次の関数でアクセスできるようにそれらをクラスに割り当てます。

戦略をテストするために、インストラクターはデータを提供し、初期現金金額を選択し、統計を印刷することによってバックテストを設定します。インストラクターは、backtesting.py を使用してバックテスト結果をプロットするのが簡単であることを強調し、画面上の赤と緑のボックスがどのように月を示しているかを強調しました。

インストラクターは、backtesting.py ダッシュボードの概要を説明します。このダッシュボードでは、取引情報、損益、ポートフォリオの価値、指標、その他の有用な指標の包括的なビューが提供されます。インストラクターは、backtesting.py を使用して RSI ウィンドウの上限と下限に異なる範囲を定義することで、戦略の最適化をどのように達成できるかをデモンストレーションします。オプティマイザーは、シャープ比などの統計を生成し、さまざまな組み合わせをシミュレートして、最も価値のある関数を見つけます。インストラクターは、ユーザーがカスタム指標を定義し、制約を適用して最適化の結果を改善できることを強調しました。

さらに、インストラクターは、特定のパラメーターに基づいて true または false を返すラムダ関数を使用して、値のサブセットを選択する制約を適用する方法を説明します。このビデオでは、オプティマイザー関数を使用して戦略を最適化し、シャープ比を最大化する方法と、最適化関数を通常の Python 関数として定義する方法を示します。インストラクターは、市場で費やす時間を最小限に抑えながら利益を最大化するための指標の作成についても説明します。

チュートリアルでは、インストラクターは過剰適合を防ぐために、最適化関数に最小取引数フィルターを追加します。このフィルターを含めることにより、バックテスト機能は単一のスイング期間を超えて調べることを強制され、より収益性の高いパラメーターの組み合わせを発見する可能性が高まります。さらに、インストラクターは、バックテスト結果の HTML ファイルの作成方法を示します。これは、複数のバックテストを実行し、さまざまなパラメーターの組み合わせを追跡する必要がある場合に役立ちます。インストラクターは、作業ディレクトリが乱雑にならないように、生成されたファイルに名前を付けて整理する方法についても説明します。

このチュートリアルでは、考えられるすべての組み合わせをテストすることなく、戦略を効率的に最適化するための backtesting.py の optimize 関数の使用法をさらに検討します。最大試行回数を設定することにより、プログラムは組み合わせのランダム化されたグリッド検索を実行し、バックテストに費やす時間と過剰適合のリスクを削減します。インストラクターは、ヒートマップを生成して、上限と下限を変更することで戦略に対するさまざまな値の影響を視覚化する方法をデモンストレーションします。 pandas group by ステートメントを使用して列を上限と下限でグループ化し、平均を計算して各組み合わせの平均値を取得します。

講演者は、backtesting.py の関数が上限と下限など、指定された列の一意の組み合わせをすべて見つける方法を説明します。これらの組み合わせはグループ化され、平均などの集計関数が適用されます。結果として得られる出力は、Seaborn モジュールを使用してプロットできるヒートマップです。インストラクターは、シャープ比の最適化とヒートマップのカラーマップの変更を実演します。さらに、インストラクターは、組み込み関数plot_heat_mapsを使用して、3つ以上のパラメーターに対して複数のヒートマップをプロットする方法を示します。

インストラクターは、パラメータの最適化にヒートマップを使用する方法と、backtesting.py ライブラリのリサンプル適用関数を使用してマルチタイム フレーム戦略を実装する方法をデモンストレーションします。ヒートマップは、さまざまなパラメーターの変動が取引戦略にどのような影響を与えるかを視覚的に表現します。リサンプル適用機能を使用して異なる時間枠を組み合わせることで、トレーダーはさまざまな市場状況を考慮したより複雑な戦略を構築できます。

インストラクターは、backtesting.py ライブラリを使用して、取引戦略でさまざまな時間枠をどのように使用できるかを説明します。ダウンサンプリングして関数を適用することにより、ライブラリはフォワード フィルを実行し、より小さい時間フレームにインデックスを再作成できるため、さまざまな時間フレームの分析が容易になります。示されている例では、戦略には、日次および週次の RSI を使用して、クロスオーバーが発生し、RSI が特定のしきい値を上回るか下回る場合にのみ取引をトリガーすることが含まれます。インストラクターは、パラメーターを調整することで戦略を最適化できること、またライブラリーがストップロスやテイクプロフィットなどのさまざまな注文タイプの実験をサポートしていることについて述べています。

プレゼンターは、RSI が下限を下回ったときにショート ポジションを開始し、購入時にショート ポジションを閉じる方法を示します。同様に、プレゼンターは、RSI が上限を超えると、ロング ポジションを売却し、ショート ポジションを開始することを示します。しかし、プレゼンターは、プログラムが複数のポジションを取ることを防ぐコードはなく、プログラムが投資株式の 80 パーセントを失うことにつながると指摘しています。プレゼンターは、現在のポジションがない場合、またはポートフォリオにロング/ショート ポジションが存在する場合にのみ新しい取引を開始する条項を追加することで、この問題を解決する方法を説明します。

インストラクターは、backtesting.py でストップロス注文とテイクプロフィット注文を使用する方法をデモンストレーションします。現在の価格よりも低い特定のパーセンテージでストップロスを設定することで、この戦略は各取引の損失を制限することができ、一方、テイクプロフィットレベルを設定すると、特定の利益レベルで取引を終了することができます。インストラクターは、購入プロセスでサイズパラメーターを調整して、利用可能な資金の特定の割合を各取引に割り当てる方法も示します。この例の販売戦略にはいくつかの問題がありますが、ビデオでは取引戦略の構築とテストに backtesting.py を使用することについての有益な洞察が得られます。

このビデオでは、バックテストでポジションサイジングを実装するさまざまな方法について説明します。 1 つのアプローチは、利用可能な現金の割合ではなく、一度に 1 株を売買することです。このアプローチは、ポジションへのラダーリングやドルコスト平均法を含む戦略に役立ちます。このビデオでは、クロスオーバー戦略を RSI インジケーターに基づいた戦略に変更する方法を示します。この修正された戦略では、最新の RSI 値が下限より小さい場合に取引が実行されます。このビデオでは、エントリー日とエグジット日、その他の重要な指標を含む取引をパンダ データフレームとしてバックテストから抽出できることも強調しています。これらの取引データは、Excel や他の Python スクリプトなどの他の視覚化ツールにエクスポートして、さらに分析や検査を行うことができます。

backtesting.py の作成者は、戦略を最適化し、前日のデータを比較するために多数の if ステートメントを作成する必要性を回避するための強力なツールである「bars then」関数を導入しました。この関数を使用すると、ユーザーは特定の取引条件が最後に満たされてからのバーの数を判断できます。この機能は、特定の時間ベースの条件に基づいて戦略を最適化する便利な方法を提供します。さらに、作成者は backtesting.py のオープンソースの性質を強調し、ユーザーが特定のニーズや好みに応じてライブラリをカスタマイズすることを奨励しています。

結論として、backtesting.py に関するチュートリアルは、インストラクターが視聴者に質問や懸念がある場合は連絡するよう勧めて終了します。インストラクターはバックテストの成功を祈り、backtesting.py を使用してバックテストと取引戦略の最適化の可能性を探求しながら楽しむよう注意を促します。インストラクターは、詳細については backtesting.py ドキュメントを参照し、バックテスト インフラストラクチャの構築と最適化に利用できる追加機能を見つけることの重要性を強調しています。

全体として、このチュートリアルでは、backtesting.py の包括的な概要、その利点、制限事項、およびさまざまな機能を提供します。バックテスト環境の作成、戦略の実装、パラメータの最適化、分析のためのヒートマップの使用、複数のタイムフレームの組み込み、ポジションサイジング手法の適用のプロセスをユーザーにガイドします。チュートリアルに従うことで、視聴者は backtesting.py を使用して取引戦略を効果的にテストし、改良するのに役立つ貴重な洞察と実践的な知識を得ることができます。

  • 00:00:00 インストラクターが backtesting.py の長所と短所について説明します。このライブラリはバックテストの本質のみに焦点を当てており、インジケーター ライブラリやブローカーや他のプラットフォームとの統合は含まれていません。ドキュメントは単純で理解しやすいです。さらに、特に単一の戦略をテストする場合は非常に高速です。欠点としては、複数の資産や端数株での取引が許可されていないことです。全体的に、このライブラリは軽量でシンプルなので、バックテストのみに集中したい人にとっては優れた選択肢となります。インストラクターは、仮想環境を作成し、チュートリアルに必要な依存関係をインストールする手順も説明します。

  • 00:05:00 backtesting.py ライブラリの作成者が、2006 年から 2013 年の Google 株価のテスト データなど、バックテストの実行に必要なコンポーネントをインポートしていることがわかります。また、この 2 つの関数が機能する戦略クラスの作成も含まれています。 init と next が定義されています。 init では RSI の指標値を計算し、次の関数を使用して RSI の値の計算に基づいて購入の基準を評価します。

  • 00:10:00 インストラクターは、来年にフィードされる事前計算された値を使用して、単純なクロスオーバー戦略を実装する方法について説明します。 backtesting.py からクロスオーバー ライブラリをインポートして、RSI を上限値と下限値と比較します。 RSIが一定の値を超えると売り、下回ると買いになります。また、上限値と下限値を定義し、それらをクラスに割り当てて関数内でアクセスできるようにします。次に、インストラクターは戦略のバックテストを設定し、データを提供し、現金の金額を選択し、統計を印刷します。バックテストを簡単にプロットする方法と、画面上の赤と緑のボックスが月を示す方法について説明します。

  • 00:15:00 スピーカーは、backtesting.py を使用してバックテスト結果を視覚化するために使用できるダッシュボードの概要を提供します。ダッシュボードには、取引、損益、ポートフォリオの価値、指標などに関する情報が表示されます。講演者はまた、backtesting.py を使用して、上限と下限および RSI ウィンドウの値の異なる範囲を定義することにより、戦略の最適化をどのように達成できるかを示します。オプティマイザーは、シャープ比などの統計を生成し、さまざまな組み合わせをシミュレートして、最も高い値の関数を見つけます。講演者は、ユーザーがカスタム指標を定義して最適化し、制約を適用してより良い最適化結果を生成できると述べました。

  • 00:20:00 インストラクターは、制約を適用して値のサブセットを選択し、パラメーターに基づいて true または false を返すラムダ関数を作成する方法を説明します。このビデオでは、戦略を最適化する方法、オプティマイザー関数を使用してシャープ レシオを最大化する方法、最適化関数を通常の Python 関数として定義する方法を示します。インストラクターは、市場に最小限の時間滞在しながら最大限の収益を得る方法を把握する指標の作成方法についても説明します。

  • 00:25:00 インストラクターは、過剰適合を防ぐために最適化関数に最小取引数フィルターを追加する方法を説明します。このフィルターを追加することにより、バックテスト関数は単一のスイング期間を超えて調べることを強制され、より収益性の高いパラメーターの組み合わせを発見する可能性が高まります。インストラクターは、バックテスト結果の HTML ファイルを作成する方法も示します。これは、複数のバックテストを実行し、使用されたさまざまなパラメーターの組み合わせを追跡する必要がある場合に役立ちます。最後に、インストラクターは、作業ディレクトリの詰まりを避けるために、生成されたファイルに名前を付けて整理する方法について説明します。

  • 00:30:00 インストラクターは、考えられるすべての組み合わせを実行することなく戦略を迅速に最適化するために、backtesting.py の最適化関数を使用する方法を説明します。最大試行回数を設定することにより、プログラムは組み合わせのランダム化されたグリッド検索を実行し、バックテストにかかる時間を短縮し、過剰適合のリスクを軽減します。また、インストラクターは、ヒート マップを生成して、上限と下限を変更した場合のさまざまな値と戦略への影響を視覚化する方法も実演します。 pandas group by ステートメントを使用して列を上限と下限でグループ化し、平均を取得して各組み合わせの平均値を計算します。

  • 00:35:00 スピーカーは、関数が上限と下限など、言及された列の一意の組み合わせをすべて見つける方法を説明します。次に、関数はこれらの組み合わせをグループ化し、集計関数 (この場合は平均) を適用します。結果として得られる出力は、Seaborn モジュールを使用してプロットできるヒートマップです。講演者は、シャープ比を最適化し、ヒートマップのカラーマップを変更する方法をデモンストレーションします。最後に、スピーカーは、組み込み関数、plot_heat_maps を使用して、3 つ以上のパラメーターに対して複数のヒートマップをプロットする方法を示します。

  • 00:40:00 インストラクターは、パラメーターの最適化にヒート マップを使用する方法と、バックテスト ライブラリのリサンプル適用関数を使用してマルチタイム フレーム戦略を実装する方法をデモンストレーションします。ヒートマップを使用することで、ユーザーはさまざまなパラメータの変化が取引戦略にどのような影響を与えるかを視覚化できます。リサンプル適用機能を使用すると、データを週単位や日単位などの異なる時間フレームにリサンプリングして、複数の時間フレーム戦略で一緒に使用できます。異なる時間枠を組み合わせることで、トレーダーはさまざまな市場状況を考慮したより複雑な戦略を構築できます。

  • 00:45:00 インストラクターは、backtesting.py ライブラリを使用して、取引戦略でさまざまな時間枠を使用する方法を説明します。ダウンサンプリングして関数を適用することにより、ライブラリはフォワード フィルを実行し、より小さい時間フレームにインデックスを再作成できるため、さまざまな時間フレームの分析が容易になります。この例の戦略では、日次および週次の RSI を使用して、クロスオーバーが発生し、RSI が特定のしきい値を上回るか下回る場合にのみ取引をトリガーします。パラメーターを微調整することで戦略を最適化することができ、ライブラリを使用してストップロスやテイクプロフィットなどのさまざまな注文タイプを試すことができます。

  • 00:50:00 プレゼンターは、RSI が下限を下回ったときにショート ポジションを開始し、購入時にショート ポジションを閉じる方法を示します。同様に、RSI が上限を超えてロングポジションを売却すると、プログラムはショートポジションも開始することを示しました。ただし、プログラムが複数のポジションを取得することを停止するコードはなく、プログラムが投資されている株式の 80 パーセントを失うことになります。プレゼンターは、現在のポジションがない場合、またはポートフォリオにロング/ショート ポジションが存在する場合にのみ新しい取引を開始する条項を追加することでこれを修正する方法を説明します。

  • 00:55:00 インストラクターは、backtesting.py でストップロス注文とテイクプロフィット注文を使用する方法をデモンストレーションします。現在の価格よりも低い特定のパーセンテージでストップロスを設定することで、この戦略は各取引で一定の金額を超える損失を回避できますが、テイクプロフィットを設定すると、特定の利益レベルで取引を終了することができます。インストラクターは、購入プロセスでサイズパラメーターを調整して、利用可能な資金の特定の割合を各取引に割り当てる方法も示します。この例の販売戦略にはいくつかの問題がありますが、このビデオでは、取引戦略の構築とテストに backtesting.py を使用することについて有益な洞察が得られます。

  • 01:00:00 このビデオでは、バックテストでポジションサイジングを実装するさまざまな方法について説明しています。 1 つの方法は、利用可能な現金の一部ではなく、一度に 1 株ずつ売買することです。これは、ポジションを段階的に進めたり、ドルコスト平均法を行うのに役立ちます。このビデオでは、クロスオーバー戦略を RSI インジケーターに基づく戦略に変更する方法を示しています。RSI インジケーターは、最新の RSI 値が下位バンドよりも小さい場合に購入します。このビデオでは、エントリー日とエグジット日、その他の重要な指標を含む取引をパンダ データフレームとしてバックテストから抽出できることも示しています。取引は、Excel や他の Python スクリプトなどの他の視覚化ツールにエクスポートできます。

  • 01:05:00 作成者は、backtesting.py に「barssince」関数を導入しました。これは、特定の取引条件が最後に満たされてからの足の数を決定するために使用できます。この関数は、戦略を最適化し、前日のデータを比較するために多くの if ステートメントを作成する必要性を回避するための優れたツールとなります。作成者は、日次rsiが3日連続で上限を上回った場合にのみ売却する例を使用しています。さらに、さらなる分析のために生の取引データを抽出する方法と、backtesting.py のオープンソースの性質により、ユーザーが特定のニーズに合わせてライブラリをカスタマイズすることがどのように容易になるかについても説明します。チュートリアルの結論では、学習者が backtesting.py ドキュメントを調べて、バックテスト インフラストラクチャを構築および最適化するために利用できる詳細と機能を発見するように勧めています。

  • 01:10:00 スピーカーは視聴者に質問や懸念がある場合は彼に連絡するよう促して、backtesting.py に関するコースを終了します。また、バックテストの成功を祈り、楽しむよう思い出させてくれます。
Backtesting.py - Full course in python
Backtesting.py - Full course in python
  • 2022.04.26
  • www.youtube.com
A full course covering all you need to know about the backtesting.py python library. Backtesting.py is a lightweight backtesting framework in the style of Ba...