In this video, you'll learn how to use Python to implement the Price Channel Breakout Indicator and how it can be used to identify profitable trading opportu...
In this video, we will be exploring the use of ChatGPT in generating a profitable trading strategy. The goal of this strategy is to beat the performance of a...
Learn how to enhance your FOREX grid trading with an Automated Hedging Strategy using Python!📈💻 In this video, we'll delve into the concept of grid trading...
Welcome ! In this video we test the grid trading strategy, a simple approach that doesn't require any technical indicators. We use python to test and trade, ...
最後に、このコードをライブ取引に実装する方法について説明します。これまでに開発したコードは、バックテストや履歴データに基づいた戦略のテストに適しています。これをライブ取引用に実装するには、ブローカーまたは取引所が提供するリアルタイム データ フィードと取引 API に接続する必要があります。これには、データ ストリーミングの処理と、取引ボットによって生成されたシグナルに基づいたリアルタイムの取引注文の作成が含まれます。
リアルタイム データ フィードへの接続や、Alpaca、Binance、Interactive Brokers API などの取引 API に役立つ、さまざまな Python ライブラリとパッケージが利用可能です。自分の要件に最も適合し、選択した取引所またはブローカーとうまく統合できるものを調査して選択する必要があります。
This video shows how to use APIs in python to build a live trading bot. The market is scanned by the bot and the prices are downloaded for analysis. A simple...
This video shows a profitable scalping strategy fully backtested in python, this strategy uses the VWAP, Bollinger Bands and the RSI indicators for confirmat...
今日は、Python で Hiken Ashi キャンドルを追加するプロセスを詳しく調べ、これらのキャンドルを使用した 2 つの関連戦略を検討します。 Hiken Ashi ローソク足は、通常取引で使用される通常のローソク足から派生しています。各 Hiken Ashi ローソクは特定の計算式を使用して計算されます。平均足の終値は、現在のローソク足の始値、高値、安値、終値を平均することで得られます。平均足の始値は、以前に計算された平均足ローソク足の終値から得られます。平均足の高値は、通常のローソク足の高値、平均足ローソクの始値、または平均足ローソクの終値のうちの最大値です。同様に、平均足の安値は、現在のローソク足の最低価格、現在の平均足ローソク足の始値、または現在の平均足ローソク足の終値のうちの最小値です。
Heiken Ashi candlesticks are popular candlestick in technical analysis. In this video, I will show you how to use Heiken Ashi candles for trading systems in ...
This video tests an automated trading strategy backtest for long positions on stocks, the rules are simple using RSI and the ADX indicators on stock market v...
前のビデオのように RSI または EMA 信号を使用する代わりに、プレゼンターは EMA 信号と呼ばれる新しい信号を紹介します。これは 2 つの移動平均間の関係に基づいています。速い EMA が遅い SMA を上回っている場合、EMA シグナルは 2 に設定され、上昇傾向を示します。より速い EMA がより遅い SMA を下回っている場合、EMA シグナルは 1 に設定され、下降傾向を示します。
This video is a continuation of the previous 2 videos describing the Rayner Teo Bollinger Bands Strategy. Here we present an optimized version leading to hig...
This is a continuation of the previous video on the Bollinger Bands Winning Trading Strategy published by Rayner Teo. The backtest optimization is done in Py...
Pythonのチャネルブレイクアウトインジケーター
Pythonのチャネルブレイクアウトインジケーター
やあ!今日は、アルゴリズムによって生成された価格チャネルのブレイクアウトの例を詳しく見ていきます。後でコードを紹介します。このコードは、以下の説明のリンクから無料でダウンロードできます。まずは、価格チャネルのブレイクアウトとは何かを理解することから始めましょう。
プライス チャネル ブレイクアウトは、トレーダーが価格のブレイクアウトの可能性を特定するために使用するテクニカル分析ツールです。これは、価格変動の周囲にチャネルをプロットすることで機能し、特定の期間における価格の高値と安値を表します。価格がこのチャネルを抜け出すと、潜在的なトレンドの変化または市場機会を示す可能性があります。
興味深いのは、Python を使用してチャネルと潜在的なブレイクアウトを特定するプロセスを自動化できることです。このビデオでは、アルゴリズムの手順を説明し、取引の好みや使用する資産に応じて変更および微調整できるコードを提供します。
チャートに示されている例を分析してみましょう。黒い星は、アルゴリズムによって検出されたブレイクアウトを表します。ローソク足の下の星は将来の上昇トレンドを示し、ローソク足の上の星は将来の下降トレンドを示します。これらのブレイクアウトは、アルゴリズムによって識別されたチャネルに基づいています。
アルゴリズムを説明するために、最初の例を考えてみましょう。下降トレンドがあり、その後特定のチャネルを下回るブレイクアウトが続きます。ローソク足の下の星は、将来の下降トレンドを示します。この特定のチャネルはチャートに表示されているチャネルとは異なることに注意することが重要です。このアルゴリズムは、以前のローソク足に基づいてチャネルを検出します。
別の例は、将来の上昇トレンドを示唆するチャネルを超えるブレイクアウトです。これらのブレイクアウトと、アルゴリズムによって検出されたチャネルとの関係を観察できます。このアルゴリズムでは、ピボット ポイント、チャネル検出、ブレイクアウト検出の 3 つの検出ポイントを使用します。
まず、ピボット ポイント (隣接するローソク足と比較して高い値を持つローソク足、または隣接するローソク足と比べて低い値を持つローソク足) を検出します。アルゴリズムは、ピボット高値または安値として両側の 2 つのローソク足をチェックします。これらのピボット ポイントは、チャネルを定義するためのフィッティング ラインの基準点として機能します。
次に、アルゴリズムはピボットの高値と安値にラインを適合させ、チャネルを作成します。このステップでは、チャネルの上限と下限を特定します。チャネルは、価格変動の潜在的な範囲を表します。
3 番目のフェーズはブレークアウトの検出です。アルゴリズムは、現在のローソク足とチャネルを比較することによって、ブレイクアウトが発生したかどうかを判断します。ブレイクアウト条件は、チャネルに対する始値と終値の位置に基づいて定義されます。このビデオでは、チャネルの上部と下部のブレイクアウトについて考察します。
Python では、取引の好みや取引する資産に基づいて、ブレイクアウト条件を変更し、独自のパターンを定義する柔軟性があります。リンクで提供されているコードは、実験の開始点として機能します。
このアルゴリズムは、日次時間枠とユーロ/米ドル価格を使用して示された例に基づいてうまく機能しているようです。ただし、さらなるテストと分析が必要です。それでは、コードを詳しく見てみましょう。
Jupyter Notebook ファイルでは、必要なライブラリ (pandas、numpy、plotly、scipy.stats) をインポートします。また、2003 年から 2023 年までのユーロ/米ドルの毎日のローソク足価格を含む CSV データ ファイルもインポートします。
コードは、ローソク足がピボット ポイントであるかどうかを検出する関数を定義することから始まります。テストするローソク足のインデックスと、考慮する隣接するローソク足の数を決定するウィンドウ パラメーターの 2 つの引数を取ります。この関数は、現在のローソク足の高値と安値が、隣接するローソク足の高値と安値よりも高いか低いかをチェックします。ピボット タイプ (高、低、または両方) に基づいてラベル (0、1、2、または 3) を割り当てます。
ローソク足チャートで価格チャネルのブレイクアウトを検出するには、次の手順に従います。
一般的な考え方は、指定されたバックローソク足の数内の価格変動を含むトレンドラインを特定することです。これらのチャネルからのブレイクアウトを検出することで、重大な価格変動を特定し、情報に基づいた取引の意思決定を行うことができる可能性があります。
前に提供したコードは簡略化された例であり、特定の取引要件に応じて、ニーズに合わせてコードを変更および微調整する必要がある場合があることに注意することが重要です。さらに、実際の取引目的でチャネルブレイクアウト手法を使用する場合は、リスク管理戦略、その他の指標、および取引アプローチに関連する要素を組み込むことを検討してください。
ChatGPT 取引戦略チャレンジ
ChatGPT 取引戦略チャレンジ
こんにちは。私たちの最新の実験へようこそ。このビデオでは、AI を実際の人間のトレーダーの経験と対比させて、AI の力を紹介します。価格チャネルのブレイクアウト戦略を詳しく掘り下げ、AI モデルである ChatGPT に挑戦して、そのパフォーマンスを確認します。何か興味深いことが見つかったら、次のビデオで独自のアルゴリズムを作成し、パフォーマンスの結果を比較する予定です。後ほど、このビデオで使用する Python コードも共有します。興味があり、実験して戦略を拡張したい場合は、以下の説明のリンクからダウンロードできます。それでは、座ってリラックスして、これを楽しみましょう。
チャネルブレイクアウトインジケーターについて話すとき、私たちは通常、ローソク足チャートのパターンとフラクタルポイントを考慮します。通常、ブレイクアウトは価格がチャネルを超えたときに発生し、ブレイクアウト後は、少なくともしばらくはトレンドが同じ方向に続くと予想されます。今日は、ChatGPT に、特に価格チャネルのブレイクアウト戦略用のコードを生成させてみます。
ChatGPT を使った実験に入る前に、次のビデオで同じ戦略、価格チャネルのブレイクアウトを私なりにプログラムしてみます。これにより、結果を比較し、プログラムのあらゆる詳細を制御できることを強調することができます。それでは、楽しみに待って、始めましょう。
それでは、価格ブレイクアウト戦略を定義することから始めましょう。この取引アプローチには、トレンドラインやチャート パターンなどのテクニカル分析ツールを使用して、主要なサポートとレジスタンスのレベルを特定することが含まれます。過去に何度かテストされたレベルに細心の注意を払い、そのレベルでの価格動向を観察してください。主要なレベルを特定したら、エントリとエグジットのルールを設定できます。
参入ルールと退出ルールの設定は、戦略の中で最も困難な部分です。これには、どの価格レベルで取引を開始するか、利益確定または潜在的な損失を制限するためにいつ取引を終了するかを決定することが含まれます。ポジションをオープンしたら、資産の価格変動を監視することが重要です。取引が当社に不利な場合に備えて、ストップロス注文を使用して潜在的な損失を制限する必要があります。
エントリールールを設定して取引を管理した後は、オープントレードを監視する必要があります。価格が予想された方向に動き続ける場合は、追加の利益を獲得するために出口戦略を調整することを検討できます。これには、変化する市場状況に基づいた継続的な監視と適応が必要です。
戦略の内訳は次のとおりです。
サポートとレジスタンスの主要なレベルを特定する: トレンドラインやチャート パターンなどのテクニカル分析ツールを使用して、過去に複数回テストされたレベルを特定します。これらのレベルはサポートまたはレジスタンスとして機能し、チャネルを形成します。
ブレイクアウト レベルを定義する: チャネルを特定したら、ブレイクアウト レベルを決定します。これは、価格がチャネル境界を越えて移動する価格レベルです。潜在的なトレンド継続を示しています。
エントリーとエグジットのルールを設定する: ブレイクアウトが発生したときに取引にエントリーするための基準を決定します。これは、価格が強気のブレイクアウトの場合はチャネルの上限を上回って終了する場合、または弱気のブレイクアウトの場合はチャネルの下限の境界を下回って終了する場合です。さらに、特定の目標レベルで利益を得る、または不利な価格変動から保護するためにトレーリングストップロスを使用するなど、取引を終了するための基準を設定します。
オープン取引を監視する: 取引が開始されたら、価格の動きを注意深く監視します。価格が引き続き有利に推移する場合は、出口戦略を調整します。これには、利益を保護するためにストップロスを追跡したり、追加の利益を獲得するために新しい目標レベルを設定したりすることが含まれる可能性があります。
リスクの管理: リスク管理手法を導入して、潜在的な損失を制限します。これには、価格が予想される傾向に反して動いた場合に取引を終了するために、所定のレベルでストップロス注文を設定することが含まれます。
継続的な適応: 変化する市場状況に基づいて戦略を適応させます。価格チャネルのブレイクアウト戦略では、最良の取引機会を捉えるために継続的な監視と調整が必要です。
これらの手順に従い、取引している特定の市場と時間枠に適用することで、価格チャネルのブレイクアウト戦略を実装できます。戦略の有効性はさまざまな要因によって異なる可能性があり、リアルタイム取引に適用する前に戦略をバックテストして検証することが重要であることに注意してください。
Python を使用した自動ヘッジ戦略で FOREX グリッド取引をマスターする
Python を使用した自動ヘッジ戦略で FOREX グリッド取引をマスターする
前回のビデオでは、外国為替市場でグリッド取引システムをテストし、高いリターンと卓越したシャープレシオという良い結果が得られることがわかりました。ただし、皆様のコメントに基づいて、より正確なバックテストを実施するにはいくつかの詳細を修正する必要があることがわかりました。その結果、提案された変更をアルゴリズムに加えました。
グリッド戦略について詳しく説明した前回のビデオをまだ見ていない場合は、戦略をより深く理解できるため、最初にそれをチェックすることをお勧めします。以下の説明にそのビデオへのリンクがあります。さらに、提供されたリンクから Python コードの更新バージョンをダウンロードできます。
コード変更を実装した後も、使用されるパラメーターのセットによっては、潜在的に望ましいシステムが得られます。パラメータの最適化にはあまり時間を費やしていないので、コードをダウンロードして好みに合わせて調整して実験してみてください。これにより、好みに応じてリスクレベルを調整できます。シャープレシオを下げる代わりにリスクを増やすことも、シャープレシオを上げながらリスクとリターンを下げることもできます。
ここで、以前のバージョンのコードに加えられた具体的な変更について説明します。まず、テイクプロフィット/ストップロス比率に関連するパラメーターの 1 つを削除しました。この比率は戦略自体の中で変更する必要があることがわかったので、この時点で設定する必要はありません。前バージョンで使用していた機能はそのままです。
最初の重要な変更はロットサイズに関連したものでした。以前のバージョンでは、ロット サイズは現在の株式のパーセンテージを示す 1 未満の値に設定されていました。しかし、異なるロットサイズで両方向に取引していたため、これはグリッド戦略のルールに違反していました。これを修正するために、ロット サイズを固定値 (この例では 50) に設定します。
2 番目の重要な変更は、バックテスト機能に関連しています。以前は、取引を開始してから反対の取引または反対方向の取引を開始しようとすると、バックテスト機能によって前の取引が終了していました。これは、最初に売り、次に同じ金額を購入した場合、バックテスト機能によって売りポジションがクローズされることを意味します。バックテストで 2 つの取引を独立して反対方向にオープンできるようにするために、true に設定されたヘッジ パラメーターを使用しました。これにより、同じ資産上で同時に反対方向のポジションが可能になります。さらに、排他的注文パラメータを false に設定します。これは、1 つの注文が前の注文をキャンセルしないことを意味します。
ストップロス値はグリッド距離の 1.5 倍に設定し、テイクプロフィットはグリッド距離の 0.5 倍に設定します。テイクプロフィット/ストップロス比率は0.5に設定されています。これらは例で使用されるランダムなパラメーターであることに注意してください。実際のシステムでは、戦略は利益を生み出すために市場の不安定さに依存しているため、ストップロスがテイクプロフィットよりも遠いことを確認することが重要です。
これらのパラメータ、現金口座 500 ドル、マージン 1 対 10 を使用して、2 か月のデータから次の結果が得られました。収益率は 13.49、シャープ レシオは 3.8、勝率は 72% でした。資産曲線は、いくつかのドローダウン領域を伴い、傾きが増加していることを示しています。
リスクを軽減し、シャープレシオを高めるには、追加の現金から始めるか証拠金を調整することを検討できます。たとえば、1,000 ドルから開始して 1 対 10 のマージンを維持すると、2 か月後のリターンは 1.7% に減少しましたが、シャープ レシオは 4.9 に増加しました。これは、このパラメータの変更によりリスクが減少したことを示しています。
このシステムでは操作するパラメータが多数あり、適切なバランスを見つけることが重要であることに留意してください。ストップロスとテイクプロフィットの比率を変更して実験することもできます。
すべてのブローカーがヘッジ取引を許可しているわけではないことに注意することが重要です。つまり、同じ資産に対して同時に反対のポジションを持つことを許可していない場合があります。これはブローカーとあなたの所在地によって異なります。米国からの一部の視聴者は、コメントの中で、これは自分たちの地域では許可されていないと述べました。したがって、この戦略を実装する前にブローカーと話し合って、ブローカーのポリシーと一致していることを確認することをお勧めします。
最後に、バックテストはシステムを研究するための最初のステップですが、それだけでは十分ではないことを覚えておいてください。紙の口座を使用して市場で戦略をライブでテストすることが重要です。これには、取引される通貨のスプレッドが含まれ、期待される結果に影響を与える可能性があるためです。
Python での取引のためのヘッジ戦略
Python での取引のためのヘッジ戦略
皆さん、こんにちは。今日はグリッド取引戦略をテストします。この戦略はそのシンプルさで知られており、トレンドを判断するためにテクニカル指標を必要としません。これは、傾向を事前に推測する必要がないことを意味します。グリッド取引では長方向と短方向の両方で同時に取引するため、アルゴリズム取引に適しています。
この戦略を評価するために、Python 言語を使用してバックテストを実施します。 5 分の時間枠で 2 か月にわたる履歴データを使用します。バックテストの結果は、テスト期間中資産が着実に増加していることを示しており、この戦略により優れたパフォーマンス率が得られます。リスク調整後のリターンを測定するシャープ・レシオのスコアは約 5.7 です。
コーディング部分に興味がある場合は、以下の説明にあるリンクから Jupyter Notebook ファイルをダウンロードできます。この戦略は著者にとって個人的な重要性を持っており、最初に趣味として取引を始めたときにこのシステムを使用して少額の口座をかなりの金額に変えたことを思い出します。
グリッド取引戦略の背後にある概念は、チャート上に価格レベルのグリッドを作成することです。価格がこれらのグリッドラインを横切るたびに、ロングポジションとショートポジションの両方をオープンします。テイクプロフィットレベルは、各ポジションの次のグリッドラインに設定されます。サンプル チャートに示されているように、この戦略には最初のロング ポジションとショート ポジションをオープンし、次に次のグリッド レベルで勝ちポジションをクローズすることが含まれます。その後、グリッド線を横切るたびに、ロングとショートの 2 つの追加ポジションがオープンされます。
この戦略の課題の 1 つは、グリッドの端で開いたままの負けトレードを管理することです。一部のポジションはテイクプロフィット値に決して到達しない可能性があり、システムに問題が発生します。この状況に対処するには、さまざまなアプローチを使用できます。一部のトレーダーは取引日の終わりに残りの取引を閉じることを選択するかもしれませんが、他のトレーダーは数時間ごとに全体的な利益状況にあるかどうかを計算し、すべてを閉じて新しいグリッドで新たに始めるかもしれません。解決策は、時間枠、並行取引の最大許容数、グリッド距離などの追加パラメータによって異なります。
コーディング部分では、著者はアベレージ トゥルー レンジ (ATR) を使用して各取引にストップロス値を適用します。このストップロス値は、最初はグリッド距離に基づいて計算されますが、その後、ATR を使用して調整されます。 ATR は、取引を行う際の市場のボラティリティを考慮します。著者は、これが最良のアプローチではない可能性があると述べ、戦略に最適なシナリオを見つけるためにさまざまなパラメーターを試してみることを推奨しています。
このシステムが多くの場合に機能する理由は、市場のノイズを利用しているためです。市場がグリッドの周りで変動している限り、この戦略は価格変動の恩恵を受け、ロング方向とショート方向の両方でポジションをオープンします。このシステムは、価格変動が大きいため、より高い利益が得られる可能性がある短い時間枠でより優れたパフォーマンスを発揮すると予想されます。
この戦略には 2 つの利点があります。まず、特定の傾向に従わないため、傾向を推測する必要がなくなります。第 2 に、負けているオープン取引の管理に重点を置くことで、取引プロセスを簡素化します。この戦略では調整可能なパラメータが 1 つだけあり、それはグリッド距離です。ただし、取引される特定の資産に対して適切な時間枠とグリッド距離を選択することが重要です。
提供されている Jupyter Notebook ファイルは、Python での戦略の実装を示しています。このコードは、データ取得用の yfinance、データ操作用の pandas と numpy、ATR の計算などのテクニカル分析機能用の pandas_ta など、さまざまなライブラリをインポートします。 EUR/USD ペアのデータは、特定の時間枠を使用してダウンロードされます。
グリッドの距離、テイクプロフィット/ストップロスの比率、グリッドの仲値は変数として定義されます。中間価格は、グリッドが構築される際の平均価格として機能します。 generate_grid() 関数は、中間価格とグリッド距離に基づいてグリッド レベルを生成するように定義されています。この関数は、ループを使用してグリッドの上位レベルと下位レベルを計算します。
次に、戦略ロジックが実装されます。バックテストは、初期残高、ポジションサイズ、ストップロスレベルなどの変数を初期化することから始まります。 for ループは、履歴データの各バーを反復処理するために使用されます。
ループ内で、現在の価格がチェックされ、グリッド レベルのいずれかを超えているかどうかが判断されます。クロスが発生すると、ロング方向とショート方向の両方に新しいポジションがオープンされます。テイクプロフィットとストップロスのレベルは、グリッドレベルとストップロスの距離に基づいて設定されます。
このループは、オープンポジションがテイクプロフィットまたはストップロスのレベルに達しているかどうかもチェックします。ポジションがいずれかのレベルに達するとクローズされ、対応する損益が記録されます。
バックテストの最後に、資産曲線がプロットされ、時間の経過に伴う口座残高の増加が示されます。総利益、取引回数、勝率、シャープレシオなどのパフォーマンス指標が計算され、表示されます。
グリッド取引戦略はバックテストで有望な結果を示した可能性がありますが、実際の取引に導入する前に取引戦略を徹底的に評価および検証することが重要であることに注意することが重要です。バックテストは過去のパフォーマンスを評価するのに役立ちますが、将来の収益性を保証するものではありません。
実装の詳細を完全に理解し、コードを探索するには、説明に記載されている Jupyter Notebook ファイルをダウンロードすることをお勧めします。ノートブックには、プロセスをガイドする詳細なコメント付きの完全なコードが含まれています。
取引にはリスクが伴うことを忘れないでください。投資に関する決定を下す前に、常に専門のファイナンシャルアドバイザーに相談することをお勧めします。
Python で取引ボットを構築する方法
Python で取引ボットを構築する方法
こんにちは、このビデオでは、Python を使用して取引戦略を自動化する方法を説明します。言い換えれば、特定の戦略に従って、ユーザーに代わって自動的に取引を実行できる独自の無料取引ボットを構築するプロセスをガイドします。私が使用するコードは、以下の説明のリンクからダウンロードできるので、ビデオに従って、ファイルをダウンロードして、お好みに合わせて使用できます。
このビデオで説明する内容は、Python 関数として実装できるあらゆる取引戦略に適用できます。これは、単に過去のデータに基づいて戦略をバックテストするのではなく、ライブ市場データに基づいて戦略をテストする優れた方法となります。将来のデータまたはライブデータで戦略をテストしたい場合は、このビデオで紹介されているテクニックを利用できます。
まず、Jupyter Notebook ファイルを開いてみましょう。まず、テスト目的で履歴データをダウンロードします。このデータはライブ取引には使用されないことに注意することが重要です。これは主に信号機能をテストするためのものです。データをダウンロードするために、YFinance モジュールを使用し、2 つの特定の日付間の 15 分の時間枠でユーロから米ドルへの為替データを取得します。
注意すべき点の 1 つは、15 分間隔などの短い時間枠でデータをダウンロードする場合、Yahoo Finance では過去 60 日間のデータしかダウンロードできないことです。したがって、一度に 60 日を超えてダウンロードすることはできません。これらは現在の日付から過去 60 日間である必要があります。ダウンロードしたファイルで問題が発生した場合は、指定された開始日と終了日を再確認してください。
データをダウンロードしたら、ダウンロードした行を確認してテストできます。コード内の「-1」を削除すると、約 3973 行で構成されるデータ フレーム全体を表示できます。データ フレームには、日付、時刻、始値、高値、安値、終値、調整終値の列が含まれています。このビデオではボリューム データを使用しませんが、必要に応じて自由に戦略に組み込んでください。
次のステップは、取引シグナルを生成する関数であるシグナル ジェネレーターを定義することです。この関数は入力としてデータ フレームを受け取ります。これは、取引ボットのライブ データをストリーミングするときに、データ フレームを取得してこの関数にフィードするためです。次に、この関数は、買いシグナル、売りシグナルなどのシグナルが存在するかどうか、または明確なパターンがないかどうかを判断します。この例では、巻き込みローソク足パターンの検出に焦点を当てますが、これは完全な取引戦略ではないことに注意してください。これはこのビデオの目的を果たしており、この関数内に独自の信号発生器戦略を挿入できます。
シグナル ジェネレーター関数は、インデックス -1 と -2 をそれぞれ使用して、現在のローソク足と前のローソク足の始値と終値を読み取ります。弱気の飲み込みパターンや強気の飲み込みパターンの検出など、関数で定義された条件に基づいて、売りの場合は 1、買いの場合は 2、またはシグナルなしの場合は 0 のシグナル値を返します。関数が正しく動作していることを確認するには、数行のコードを使用してテストします。データ フレーム行をループし、シグナル ジェネレーター関数を使用して各行の飲み込みパターンをチェックすることで、生成されたシグナルをリストに保存できます。次に、このリストをテスト データ フレームの追加列として追加できます。データ フレームを印刷すると、追加された列が表示され、値のカウントを実行すると、データ セット内に存在する各信号タイプの数がわかります。
これはこのビデオの目的のために簡略化された例であり、特定のニーズに基づいて包括的な取引戦略を開発することが不可欠であることに注意してください。
シグナル ジェネレーター関数が準備できたので、次のステップは取引ボットを定義することです。取引ボットは、生成されたシグナルに基づいて取引を実行する責任があります。この例では、シグナル値 2 (買いシグナルを示す) を受信すると買い、シグナル値 1 (売りシグナルを示す) を受信すると売る単純な取引ボットを作成します。繰り返しますが、これは単なる基本的な例であり、特定の取引戦略に従って取引ボットを変更できます。
取引ボット関数は、データ フレームと生成されたシグナルを入力として受け取ります。ポートフォリオ残高を初期化し、現在オープンなポジションがあるかどうかを追跡するためにポジション フラグを保持します。次に、データ フレームの各行をループしてシグナル値を確認し、対応する買いまたは売りアクションを実行します。
購入シグナルを受信し、オープンポジションがない場合、トレーディングボットは指定された量の資産を購入し、ポートフォリオ残高からコストを差し引きます。また、オープンポジションがあることを示すポジションフラグも設定します。売りシグナルを受信し、オープンポジションがある場合、トレーディングボットはポジション全体を売却し、ポートフォリオ残高に売却額を追加します。次に、ポジション フラグをリセットして、オープン ポジションがないことを示します。
取引ボットをテストするには、テスト データ フレームと生成されたシグナルを使用して関数を呼び出すことができます。初期ポートフォリオ残高と売買する資産の金額を指定することもできます。取引ボット機能を実行した後、最終的なポートフォリオ残高を印刷して結果を確認できます。
この例では、実際の取引シナリオに影響を与える可能性のある取引コスト、スリッページ、その他の要因は考慮していません。独自の取引ボットと戦略を開発するときは、これらの要素を考慮することが重要です。
最後に、このコードをライブ取引に実装する方法について説明します。これまでに開発したコードは、バックテストや履歴データに基づいた戦略のテストに適しています。これをライブ取引用に実装するには、ブローカーまたは取引所が提供するリアルタイム データ フィードと取引 API に接続する必要があります。これには、データ ストリーミングの処理と、取引ボットによって生成されたシグナルに基づいたリアルタイムの取引注文の作成が含まれます。
リアルタイム データ フィードへの接続や、Alpaca、Binance、Interactive Brokers API などの取引 API に役立つ、さまざまな Python ライブラリとパッケージが利用可能です。自分の要件に最も適合し、選択した取引所またはブローカーとうまく統合できるものを調査して選択する必要があります。
ライブ取引には実際のお金が関係するため、コードと戦略をライブ取引に導入する前に、シミュレートされた環境で徹底的にテストすることが重要であることを忘れないでください。小さなポジションから始めて、取引ボットのパフォーマンスに自信が持てるようになったら、徐々に露出を増やしてください。
このビデオはここまでです! Python を使用して取引戦略を自動化する方法を理解するのに役立つことを願っています。説明内のリンクからコードをダウンロードし、特定のニーズと戦略に応じてコードを変更してください。ご質問がございましたら、お気軽に以下のコメント欄に残してください。ご覧いただきありがとうございます。楽しい取引をしてください。
Python バックテスト: VWAP、ボリンジャーバンド、RSI インジケーターを使用した収益性の高いスキャルピング戦略
Python バックテスト: VWAP、ボリンジャーバンド、RSI インジケーターを使用した収益性の高いスキャルピング戦略
こんにちは、みんな!本日、勝者が決定したことを発表できることを嬉しく思います。このビデオでは、確認のためにV-WAP(出来高加重平均価格)ボリンジャーバンドとRSI(相対力指数)を使用したスキャルピング戦略を共有します。この戦略を共有する前に、その有効性を確認するために徹底的にバックテストを行いました。
まず最初に、これがこのチャンネルで紹介する最初のスキャルピング戦略であることを述べておきたいと思います。より低いタイムフレームではデータにノイズが多いため、アルゴリズムにとってスキャルピングは困難になる可能性があります。しかし、私はこの戦略がそれらの課題を克服すると信じています。
このチャンネルを初めて使用する場合は、説明内のリンクから Python コードをダウンロードできます。ぜひ購読して、共有したいアイデアをコメントして私たちをサポートしてください。あなたのフィードバックは貴重です。
3 年間のバックテストの後、この戦略のトータルリターンは約 300% になります。この戦略で私が特に気に入っているのは、平均取引時間が約 51 分であることです。これにより、これはこれまでに実証した最速の取引成立戦略になります。迅速な取引終了の利点は、実行された取引の結果をすぐに確認できるため、夜間手数料が削減され、ストレスが軽減されることです。
コメントセクションで、誰かがシャープレシオについて質問しました。この戦略にはそれを含めておりますが、約 1.65 です。ただし、Python コードのパラメーターを変更すると、この値が変わる可能性があることに注意してください。さまざまなパラメーター値を試して、シャープ レシオを最大化できます。
戦略の詳細を見ていきましょう。私は5分足のタイムフレームとV-WAPカーブを使用しています。トレンドを判断するために、青い線で表される V-WAP 曲線を常に上または下にある 15 本のローソク足を探します。 15 本のローソク足が V-WAP カーブの上にある場合、上昇トレンドを示します。 V-WAP 曲線を下回っている場合は、下降トレンドであると考えます。
エントリーポジションには、長さ14、標準偏差2のボリンジャーバンドを使用します。V-WAPカーブを超える上昇トレンドでは、ローソク足がボリンジャーバンドの下側を下回って終了するときに買いポジションを探します。下降トレンドでは、V-WAP カーブの下で、ローソク足が売りシグナルとしてボリンジャーバンドの上部で閉じるのを待ちます。
信号を確認するにはRSIを使用します。 RSIが45を下回っている場合、買いシグナルが確認されます。 RSIが55を超えている場合、売りシグナルが確認されます。
テイクプロフィットとストップロスのレベルを設定するには、ATR (Average True Range) を利用します。過去 7 つのローソク足を振り返り、ATR 値を計算し、それに係数を乗じてストップロス距離を決定します。テイクプロフィットは、リスクリワード比率を表すテイクプロフィットとストップロスの距離にストップロス距離を乗じることによって計算されます。
ご覧のとおり、Python コードで調整できるパラメーターがいくつかあります。 ATRの長さ、係数、テイクプロフィットストップロス比率、その他の指標パラメーターを変更して、3年間のバックテスト期間にわたってストラテジーのパフォーマンスにどのような影響を与えるかを確認できます。自由にコードをダウンロードして、ご自身で実験してください。
Python コードでは、データのロード、クリーニング、テクニカル指標 (V-WAP、RSI、ボリンジャー バンド) の追加、合計シグナルの計算、価格チャートでのシグナルの視覚化に必要なすべての手順を提供しました。このコードには、ATR を計算し、ストップロスとテイクプロフィットのレベルを設定し、取引を実行するバックテスト部分も含まれています。
バックテストの結果では、197% の収益と 313 ドルのピーク資本を達成しました。初期資本 10,000 ドルから開始したこの戦略は 19,700 ドルの利益を生み出し、最終的な資本は 29,700 ドルに達しました。
次に、この戦略の主要なパフォーマンス指標について説明します。利益のある取引の割合を表す勝率は約 56% です。これは、実行されたすべての取引のうち 56% が利益をもたらしたことを意味します。取引あたりの平均利益は約 33.10 ドルですが、取引あたりの平均損失は約 23.45 ドルです。
この戦略に関連するリスクを評価するには、バックテスト期間中の資本の山から谷までの最大の減少を測定する最大ドローダウンを確認します。この戦略の最大ドローダウンは約 9% であり、中程度のレベルのリスクを示しています。
これらのパフォーマンス指標は履歴データに基づいており、過去のパフォーマンスは将来の結果を保証するものではないことに注意することが重要です。市場の状況は変化する可能性があるため、継続的に監視し、戦略を現在の市場の動向に適応させることが重要です。
要約すると、V-WAP、ボリンジャーバンド、RSI を利用したこのスキャルピング戦略は、バックテスト期間中に、トータルリターンが 300%、平均取引時間が 51 分という有望な結果を示しました。ただし、戦略を実際の取引に適用する前に、徹底的にテストして検証し、取引コスト、スリッページ、市場状況などの要素を考慮することが重要です。
取引には固有のリスクが伴うことを忘れないでください。実際の取引を行う前に、常に知識を身につけ、リスク管理を実践し、専門家のアドバイスを求めることを検討することをお勧めします。この戦略が有益であると感じていただければ幸いです。説明に記載されている Python コードを自由にダウンロードして、さらに探索して好みに合わせてカスタマイズしてください。
ご質問がある場合、またはさらに詳しい説明が必要な場合は、お気軽にお問い合わせください。楽しい取引を!
取引システム用の Python の平均足ローソク足
取引システム用の Python の平均足ローソク足
今日は、Python で Hiken Ashi キャンドルを追加するプロセスを詳しく調べ、これらのキャンドルを使用した 2 つの関連戦略を検討します。 Hiken Ashi ローソク足は、通常取引で使用される通常のローソク足から派生しています。各 Hiken Ashi ローソクは特定の計算式を使用して計算されます。平均足の終値は、現在のローソク足の始値、高値、安値、終値を平均することで得られます。平均足の始値は、以前に計算された平均足ローソク足の終値から得られます。平均足の高値は、通常のローソク足の高値、平均足ローソクの始値、または平均足ローソクの終値のうちの最大値です。同様に、平均足の安値は、現在のローソク足の最低価格、現在の平均足ローソク足の始値、または現在の平均足ローソク足の終値のうちの最小値です。
要約すると、平均足ローソク足は、高値と安値とは別に、平均値で構成されているため、通常の足チャートに比べて滑らかな外観が得られ、一部のトレーダーはノイズが少ないと感じるかもしれません。ただし、平均足ローソク足は市場の実際の値ではないため、実際の市場値に基づいた取引や戦略のバックテストには使用しないでください。
このチュートリアルの目的は、勝てる平均足システムを紹介することではなく、Python でこれらのローソク足を構築し、結果をバックテストするためのアルゴリズム戦略を開発する方法を示すことです。平均足ローソクを使用した 2 つの戦略を検討します。
最初の戦略では、高速移動平均と低速移動平均の 2 つの移動平均を利用します。トレンドはこれらの移動平均の相対的な位置に基づいて決定されます。高速移動平均が低速移動平均を上回っている場合は上昇傾向を示し、高速移動平均が低速移動平均を下回っている場合は下降トレンドを示しています。この戦略は、平均足ローソク足がトレンド方向の高速移動平均を横切るときに取引シグナルを生成します。たとえば、高速移動平均が低速移動平均を下回っており、平均足のローソク足が高速移動平均の上から下にクロスした場合、売りシグナルがトリガーされます。逆に、上昇トレンドでは、緑色の平均足ローソク足が高速移動平均を下から上に横切ると、買いシグナルがトリガーされます。
この戦略の 2 番目のバリエーションでは、条件を追加します。トレンドの方向にあるドージローソク足に続いてテールの短いローソク足を探します。たとえば、下降トレンドにおいて、同地ローソクの後に短い尾のローソクが高速移動平均より上で始まり、それより下で閉じると、売りシグナルがトリガーされます。これらのローソク足に長い芯や尾がないことは、分析対象のトレンドに応じて、強い下降または上昇の勢いを示しています。
どちらの戦略にも、最適な時間枠の決定、適切なストップロスポジションの定義、効果的なエグジット戦略の設計など、独自の課題があります。これらの側面は、戦略の収益性と成功に大きな影響を与える可能性があります。
これらの戦略を Python で実装するには、Jupyter Notebook を使用します。まず、必要なライブラリをインポートし、2012 年から 2022 年までのラッセル 1000 インデックスの株価データをダウンロードします。不要な列を削除した後、次の情報に基づいて、平均足の終値と始値、および平均足の高値と安値を計算します。先ほど説明した式。これらの列をデータ フレームに追加します。
次に、pandas テクニカル分析パッケージを使用して、移動平均や相対力指数 (RSI) などの追加のテクニカル指標を追加できます。これにより、平均足ローソク足と関連するインジケーターをチャート上で視覚化することができます。取引シグナルとストップロスレベルを定義したので、バックテストプロセスに進むことができます。次のステップは、エントリーポイントとエグジットポイントに基づいて各取引のリターンを計算することです。
リターンを計算するには、まず各取引のエントリー価格とエグジット価格を決定する必要があります。買いポジションの場合、エントリー価格は、買いシグナルがトリガーされたときのローソク足の終値です。エグジット価格は、ストップロスレベルによって決定される、現在のローソク足と前の 2 つのローソク足の間の最低価格です。
同様に、売りポジションの場合、エントリー価格は売りシグナルがトリガーされたときのローソク足の終値であり、エグジット価格は現在のローソク足と前の 2 つのローソク足の間の最高価格です。
エントリー価格とエグジット価格がわかったら、次の式を使用してリターンを計算できます。
リターン = (出口価格 - 参入価格) / 参入価格
さらに分析するために、返品を「trade_returns」というリストに保存します。次に、戦略の全体的なパフォーマンスを長期にわたって追跡するために、累積収益を計算する必要があります。これは、各取引のリターンに前の累積リターンを乗算し、1 を加算することによって行われます。累積リターンの計算式は次のとおりです。
累積収益 = 累積収益 * (1 + 収益)
累積収益を「cumulative_returns」というリストに保存します。最後に、累積リターンをプロットして、バックテスト期間にわたる戦略のパフォーマンスを視覚化できます。
バックテストプロセスを実行し、取引収益と累積収益を計算した後、結果を分析して取引戦略のパフォーマンスを評価できます。考慮すべき重要な指標の 1 つは、戦略の全体的な収益性です。最終的な累積収益値から 1 を引くことで、合計収益率を計算できます。たとえば、累積収益率が 1.2 の場合、初期投資に対する収益率は 20% であることを意味します。
さらに、取引ごとの平均リターン、勝った取引の数、負けた取引の数、勝った取引の割合、最大ドローダウンなど、他のパフォーマンス指標を計算することもできます。取引ごとの平均リターンは、すべての取引リターンの合計を取引の合計数で割ることによって取得できます。この指標は、各取引の平均収益性を示します。
勝ちトレード数と負けトレード数を計算するには、0 以上のトレード リターンの数 (勝ちトレード) と 0 未満のトレード リターンの数 (負けトレード) を数えます。勝ちトレードの割合は、勝ちトレード数を総トレード数で割って 100 を掛けることで計算できます。
最大ドローダウンは、バックテスト期間中の累積収益の山から谷までの最大の減少を測定します。これにより、戦略の潜在的なリスクと下方変動性についての洞察が得られます。これらのパフォーマンス指標を分析することで、取引戦略の有効性について貴重な洞察を得ることができ、将来の使用や変更の可能性に関して情報に基づいた意思決定を行うことができます。
バックテストは履歴シミュレーションであり、将来の結果を保証するものではないことに注意してください。現実世界のシナリオにトレーディング戦略を適用する前に、さまざまな要因を考慮し、徹底的な分析を行うことが不可欠です。
Python の自動取引で株式取引戦略に革命を起こす
Python の自動取引で株式取引戦略に革命を起こす
今日は、相対力指数 (RSI) と平均方向指数 (ADX) を使用して、ロングポジション向けに特別に設計された取引戦略を検討します。シンプルであるにもかかわらず、この戦略は有望な結果を示しています。このアイデアはコメント セクションで誰かによって提案されたもので、パラメーターは見覚えがあり、説得力があるように思えました。そこで、これをテストして結果を共有することにしました。結果は非常に満足できるものでした。
バックテストによって生成された資産曲線は、テスト期間を通じてほぼ一貫した増加を示し、ピーク リターン 360 に達しました。このチャネルを初めて使用する場合は、説明でダウンロードできるコードを見つけることができます。購読してコメントを残して私たちをサポートすることを忘れないでください。このビデオのような新しいアイデアを聞いていただければ幸いです。
では、戦略そのものについて見ていきましょう。日足の時間枠を使用し、2 つの条件が満たされたときにロング ポジションを入力します。1 つ目は 2 日間の RSI が 25 を下回っている場合であり、売られ過ぎの状態を示しています。2 つ目は、ADX (14) が 20 を超えており、売られ過ぎの状態を示している場合です。トレンド市場。 RSIが75を超えたらロングポジションを終了します。
RSI が 75 のしきい値を下回る場合に誤ったシグナルを回避し、取引が長時間行われないようにするために、2 つの追加条件を追加しました。最初の条件には、ローソク足が単純な移動平均曲線を上回って取引されているかどうか、つまり上昇傾向を示しているかどうかを確認することが含まれます。この場合にのみ、ロングポジションを取ることが許可されます。 2 番目の条件には、ストップロス値の設定が含まれます。これは、最後の 2 つのローソク足の最低価格から特定のパーセンテージを差し引いたものと見なされます。このバックテストでは、ストップロスの割合を 2% に設定しました。この値は、好みに基づいて、または別のデータでテストするときに調整できます。
これらの条件を Python で実装するために、必要なコードを記述し、バックテストを実施しました。コードでは、データをロードし、動きのない日を削除してクリーンアップし、データ フレームを出力してその内容を確認します。次に、トレンド検出のために長さ 200 の指数移動平均 (EMA)、長さ 2 の RSI および長さ 14 の ADX を計算します。 データ フレームを再度クリーンアップし、スライスを出力します。使用する列を確認してください。
次に、add_ema_signal という関数を実装しました。この関数は、移動平均曲線の上または下で取引されているローソク足の数に基づいてトレンドを決定します。以前のビデオではうまく機能していたので、この数値を 6 に設定しました。次に、ロングポジションをエントリーするためのシグナルを計算する total_signal という関数を作成しました。データ フレームの各行を反復処理し、RSI が 25 以下であるか、ADX が 20 を超えているか、EMA シグナルが 2 (上昇傾向を示している) であるかどうかを確認します。これらの条件が満たされると、信号値 2 がデータ フレームに保存されます。
データ フレームを印刷すると、信号を棒グラフで視覚化できます。紫色の点は購入シグナルを表します。コードの各行の詳細については説明しませんが、包括的な説明は、このチャンネルの以前のビデオ、特に Python for Algorithmic Trading プレイリストで見つけることができます。
バックテストの部分に移りますが、backtesting.py パッケージを利用しました。詳細には立ち入りませんが、ストップロスのパーセンテージを 2% に設定し、特定の日数が経過した取引、または RSI が 75 を超えた場合に取引を終了するための追加条件を含めました。 コードには依然として関連する行が含まれていることは注目に値します。この戦略はロング ポジションのみに焦点を当てていますが、ショート ポジションにも適用されます。ショート ポジションを含めるように戦略を拡張する場合は、これらのラインを変更または削除できます。
シグナルが 2 に等しく、オープンな取引がない場合は、ストップロス値を使用してロングポジションで市場に参入します。取引規模は現在の株式の99%に設定されています。バックテストは、現金 1,000 ドルとレバレッジ 1:5 (マージン 1/5) で開始します。以前の戦略と比較するために手数料は考慮されていません。
バックテストの結果は、リターンが 200 ドル、ピーク資産が 3,595 ドルであることを示しています。勝率は 73% で、10 年間のテスト期間中に合計 102 回の取引が実行されました。これは、毎日の時間枠で年間平均 10 回の取引が行われることになります。資産曲線をプロットすると、特定の期間にわずかなドローダウンを伴うものの、価値が一貫して増加していることがわかります。
コメント セクションで提案されたパラメーターは一切変更していないことに注意してください。 RSI の長さは 2 のまま、ADX の長さは 14 で、EMA の長さは 200 のままです。ただし、これらの値を微調整し、さまざまな株式や市場で実験して、結果を改善し、より満足のいく構成を見つけることができる可能性があります。
この戦略は、ロングポジションに対してシンプルかつ効果的なアプローチを提供します。説明内のリンクからコードをダウンロードして試してみることをお勧めします。コードは比較的短く、初心者向けです。この戦略を楽しんで探索し、次のビデオを楽しみにしていてください。安全にお取引ください。また次回お会いしましょう!
ハイリターンを実現するために最適化された自動化された Rayner Teo ボリンジャー バンド戦略
ハイリターンを実現するために最適化された自動化された Rayner Teo ボリンジャー バンド戦略
こんにちは、みんな!このビデオでは、取引システムに対する特定のパラメーターの影響を示す極端な最適化アプローチを紹介できることを嬉しく思います。私たちは、これがこれまでに達成した最高の最適化であると信じています。ご覧のとおり、当社は一貫して増加する自己資本曲線とともに、約 3,000% という素晴らしい収益を達成しています。取引内容もグラフで表示されますので、動画で解説していきます。すべての取引を価格チャートにプロットしましたので、それらについても順を追って説明します。それでは、乞うご期待!
先に進む前に、この戦略で 30,000% のリターンを達成した方法は、実際の取引にとって最も安全なアプローチではないことを強調したいと思います。実際の取引シナリオでこれらのパラメーターを使用することはお勧めしません。しかし、戦略自体はしっかりしており、大きな可能性を秘めていると考えています。初めての方のために、この戦略はトレンド市場向けの Rhino Theo ボリンジャー バンド戦略に依存しています。以前にビデオでテストしましたが、優れた結果が得られ、リスクは最小限に抑えられました。まだ見ていない場合は、説明にある最初のバックテスト ビデオへのリンクと、必要に応じて Python コードを見つけることができます。
このビデオでは、極端なパラメータを適用して比較的大きな利益を生み出すことを試みます。これは主に、Python コードをテストして遊んで楽しむために行っています。さらに、そのプロセス中に貴重な洞察を得て、現実的に高い利益をもたらす可能性のあるセットアップを発見できる可能性を期待しています。
それでは、コードに飛び込んで、すべてがどのように展開するかを見てみましょう。 Jupyter ノートブック ファイルの最初のセルは、データのロード専用です。 「yfinance」モジュールを使用しています。これは、データベースから毎日の履歴データをロードする便利な方法です。たった 1 行のコードで、例として 2011 年から 2021 年のラッセル 1000 指数など、特定の銘柄のデータをロードできます。週末や祝日など値動きのない日を削除してデータをクリーンアップします。次に、インデックスをリセットし、データ フレームの先頭を出力して、データが正しくフォーマットされていることを確認します。
次に、「pandas_ta」(パンダテクニカル分析)モジュールを利用して、さまざまなテクニカル指標を計算します。この場合、200 日指数移動平均 (EMA) と 150 日単純移動平均 (SMA) の 2 つの移動平均を計算します。高速移動平均 (EMA2) と低速移動平均 (EMA) を比較することで、市場が上昇トレンドにあるか下降トレンドにあるかを判断できます。同じモジュールを使用して、12 日間の相対強度指数 (RSI) も計算します。さらに、長さを (20 ではなく) 14 に、標準偏差を (2.5 ではなく) 2.0 に設定して、ボリンジャー バンドのパラメーターを変更します。これらの変更は、システムの選択性を低くすることを目的としており、その結果、バックテスト中の取引シグナルがより頻繁になり、取引数が増加します。
前のビデオで説明した RDMI 信号または指数移動平均信号を使用する代わりに、2 つの EMA 信号を使用します。これは、2 つの移動平均 (1 つは速いもの、もう 1 つは遅い) を考慮することを意味します。高速移動平均が低速移動平均を上回っている場合、上昇傾向であると判断されます。逆に、高速移動平均が低速移動平均を下回っている場合は、下降トレンドと認識されます。 EMA 信号と呼ばれるこの信号を、データ フレームの新しい列として追加します。
取引シグナルを生成する関数は前のビデオと似ています。終値がボリンジャーバンドの下限を下回っているかどうか、またEMAシグナルが買いシグナルをトリガーする上昇トレンド(2に等しい)を示しているかどうかを確認します。
このビデオでは、プレゼンターが極端な最適化アプローチを実演して、取引システムにおけるさまざまなパラメーターの影響を示しています。目標は、極端なパラメータを適用することで高いリターンを達成することですが、これらのパラメータはリスクが伴うため実際の取引には推奨されないことに注意することが重要です。しかし、発表者は、慎重に使用すれば、この戦略自体に大きな可能性があると信じています。
採用されている戦略は、トレンド市場向けの Rhino Theo ボリンジャー バンド戦略に基づいています。発表者は、この戦略をテストして優れた結果が得られ、比較的リスクが低い以前のビデオについて言及しています。最適化プロセスの最初のステップは、Y Finance モジュールを使用して必要なデータをロードすることです。発表者は、2011 年から 2021 年までの 10 年間にわたる Russell 1000 指数データをロードします。
データがロードされると、プレゼンターは週末や休日など、価格変動のない日を削除してデータをクリーンアップします。データは、pandas_ta (パンダテクニカル分析) モジュールを使用してテクニカル指標を計算することによって準備されます。 200 日の指数移動平均 (EMA) と 150 日の単純移動平均 (SMA) の 2 つの移動平均が計算されます。これらの移動平均は傾向を判断するのに役立ちます。より速い EMA がより遅い SMA を上回っている場合は上昇傾向を示し、その逆も同様です。
プレゼンターは、pandas_ta モジュールを使用して 12 日間の相対強度指数 (RSI) も計算します。さらに、ボリンジャー バンドの長さと標準偏差のパラメーターが変更されます。以前のビデオのように長さ 20、標準偏差 2.5 を使用する代わりに、プレゼンターは長さ 14、標準偏差 2.0 を使用します。この変更は、システムの選択性を低くし、より頻繁な取引シグナルを生成することを目的としています。
前のビデオのように RSI または EMA 信号を使用する代わりに、プレゼンターは EMA 信号と呼ばれる新しい信号を紹介します。これは 2 つの移動平均間の関係に基づいています。速い EMA が遅い SMA を上回っている場合、EMA シグナルは 2 に設定され、上昇傾向を示します。より速い EMA がより遅い SMA を下回っている場合、EMA シグナルは 1 に設定され、下降傾向を示します。
エントリー戦略は以前のビデオと同様です。プレゼンターは、終値がボリンジャー バンドの下限を下回っているかどうか、および EMA シグナルが上昇傾向を示しているかどうか (EMA シグナル = 2) を確認します。この場合、買いシグナルは現在のローソク足の終値で生成されます。終値がボリンジャーバンドの上部を上回っており、EMA シグナルが下降トレンドを示している場合 (EMA シグナル = 1)、現在のローソク足の終値で売りシグナルが生成されます。
取引を終了するために、プレゼンターは追加の基準を導入します。長期の取引は望ましくないため、取引が 10 日以上開かれている場合は取引が終了します。さらに、ロングトレードで RSI が 75 を超えた場合、またはショートトレードで RSI が 25 を下回った場合、取引は終了します。RSI の条件だけではエグジットをトリガーするのに十分でない場合は、ストップロスが使用されます。という仕組みが実装されています。
ストップロスは、ローソク足の現在の安値と前のローソク足の安値の間の最小値に (1 - 特定のパーセント) を乗算して計算されます。このパーセンテージはユーザーによって決定され、ストップロスをトリガーする前の許容損失を表します。たとえば、パーセンテージ 2 は、ストップロスが最後の 2 つのローソク足の間の最低点より 2% 下に設定されていることを意味します。さらに、テイクプロフィットレベルはストップロスの距離の2倍に設定されます。
プレゼンターは、最適化されたパラメーターを使用してバックテストを実行することで戦略を評価します。価格チャート上に取引をプロットし、各取引について詳細な説明を提供します。バックテストの結果は、約 3,000 パーセントという驚異的なリターンを示し、資産曲線は一貫して増加しています。
最後に、発表者は、この極端な最適化アプローチはバックテストでは高いリターンをもたらしますが、リスクが伴うため実際の取引には推奨されないことを強調しました。この演習の目的は、さまざまなパラメーターの影響を調査し、戦略の動作についての洞察を獲得することです。
より良い結果を得るために Rayner Teo のボリンジャーバンド戦略を最適化する
より良い結果を得るために Rayner Teo のボリンジャーバンド戦略を最適化する
今日は、以前にビデオでバックテストしたライナー テオ ボリンジャー バンド戦略の最適化について詳しく説明します。前のビデオをまだ視聴していない場合は、この最適化部分に進む前に視聴することをお勧めします。ビデオには簡単にアクセスできるように説明にリンクが含まれています。さらに、コーディングの側面に興味がある場合は、説明内のリンクから Python コードをダウンロードすることもできます。
最適化された戦略は、10 年間のバックテストで 91% の勝率と一貫して増加する資産曲線により、有望な可能性を示しています。ただし、この最適化の背後にある動機の 1 つは、バックテスト中に観察された取引数が少ないことです。 10 年間で実行された取引は 23 件のみで、平均すると年間約 2 件の取引でした。これに対処するために、2 つの考えられる解決策が提示されています。 1 つ目は、複数の銘柄に対してプログラムを同時に実行し、年間約 20 回の取引を目標とします。ただし、このアプローチでは、相関市場やその他の関連問題に関する懸念が生じます。 2 番目の解決策には、時間枠を短縮して取引数を増やすことが含まれます。
この戦略には、エントリーシグナルとエグジットシグナルを生成するためのいくつかのテクニカル指標が組み込まれています。移動平均インジケーター (コード内では EMA、指数移動平均と呼ばれます) とボリンジャーバンドをエントリーシグナルに使用し、相対強度指数 (RSI) がエグジットシグナルに使用されます。ビデオでは実行プロセスの詳細が説明されていますが、ここでは繰り返しません。
プログラム自体に移ると、分析の 4 時間の時間枠に焦点を当てて、データが最初のセルにロードされます。最適化には 2 つの異なるストックが使用されます。データは、高値と安値が等しい、動きのないローソク足を削除することによってクリーン化されます。移動平均 (指数または単純) や RSI などのテクニカル指標が追加され、その長さを変更できます。この特定のケースでは、移動平均の長さが 900 ローソク足に設定され、RSI 長さが 12 に設定されます。日足チャートの場合、200 日 EMA と 2 日 RSI が出口シグナルに使用されます。ボリンジャーバンドのパラメーターは日足チャートと同じで、長さは 20、標準偏差は 2.5 です。
このプログラムには、ローソク足が移動平均を上回っているか下回っているかをチェックする機能も含まれています。この場合、数値は 6 に設定され、移動平均曲線の上または下にある 6 本の連続するローソク足を表します。 4 時間の時間枠で作業しているため、6 × 4 は 24 時間に相当します。したがって、価格が 24 時間連続で移動平均を上または下で取引されている場合は、上昇トレンドまたは下降トレンドと結論付けることができます。実行される取引の数を増やすために、市場での注文のポジションのパーセンテージのパラメーターは 0 パーセントに設定されます。
プログラムの視覚化部分には、ボリンジャー バンド、移動平均曲線、および上昇トレンドとして決定されるトレンドの方向が表示されます。エントリーシグナルはチャート上の紫色の点で表され、買いシグナルを示します。このビデオでは、これらのエントリー ポイントのいくつかを紹介し、トレンディな市場におけるその有効性を強調しています。チャート内のさまざまなランダムな位置を選択することで、さまざまなエントリー ポイントを調べることができ、その実行可能性を分析できます。
プレゼンターは、エントリーシグナルに関連するボリンジャーバンドパラメーターがうまく機能しているため、この時点で変更する必要はないと指摘しています。最適化の焦点はアルゴリズムの他の部分にあります。このビデオではバックテスト プロセスの詳細をすべて掘り下げているわけではありませんが、特定のパラメーターは注目に値します。
この最適化プロセスでは、エグジットの RSI しきい値は 45 に設定されています。この低いしきい値は、より迅速なエグジットを可能にすることで、より短く、より頻繁な取引を捕捉することを目的としています。発表者は、RSI 閾値の選択は主観的なものであり、個人の好みやリスク許容度に基づいて調整できると述べています。
戦略のパフォーマンスを評価するために、プログラムは合計取引数、勝率、平均取引期間、資産曲線などのさまざまな指標を計算します。これらの指標は、戦略の有効性と収益性についての洞察を提供します。
最適化プロセスには、高い勝率を維持しながら取引回数を最大化する最適な組み合わせを見つけるために戦略のパラメーターを調整することが含まれます。最適化されるパラメータには、移動平均長、RSI 長、RSI 終了しきい値が含まれます。
このビデオでは、ネストされたループを使用してさまざまなパラメーターの組み合わせを反復し、組み合わせごとに戦略のパフォーマンスを評価する方法を示します。このプログラムは、最もパフォーマンスの高いパラメータの組み合わせを追跡し、対応する指標と資本曲線を表示します。
最適化プロセスを実行すると、発表者は、移動平均長 700、RSI 長さ 4、RSI 終了しきい値 45 を使用すると最良の結果が得られることがわかりました。これらのパラメーター値により、高い勝率を維持しながら取引数が増加します。このビデオでは、最適化された戦略によって生成された資産曲線を紹介しています。これは、元のバージョンと比較して、より頻繁な取引でより滑らかな上昇軌道を示しています。
発表者は最後に、トレーディング戦略のパフォーマンスを向上させる上での最適化の重要性を強調しました。体系的なテストとパラメーターの調整を通じて、戦略の収益性と効率を向上させることができます。ただし、過去のデータへの過剰適合など、最適化に関連する制限とリスクを考慮し、注意を払うことが重要です。
ここで提供される詳細はビデオの概要であることに注意することが重要です。より包括的な理解のためには、視覚的なデモンストレーションと最適化プロセスの詳細な説明が含まれる元のビデオを視聴することをお勧めします。