記事「MQL5での取引戦略の自動化(第41回):ローソク足レンジ理論(CRT)-蓄積・操作・分配(AMD)」についてのディスカッション

 

新しい記事「MQL5での取引戦略の自動化(第41回):ローソク足レンジ理論(CRT)-蓄積・操作・分配(AMD)」はパブリッシュされました:

MQL5で動作するローソク足レンジ理論(CRT)取引システムを開発します。このシステムは、指定した時間足での蓄積のレンジを特定し、操作の深さフィルタリングを用いてブレイクを検知し、分配フェーズにおける反転確認を経てエントリーをおこないます。また、リスクリワード比に基づく動的または静的なストップロスとテイクプロフィット設定、任意のトレーリングストップ、方向ごとのポジション上限設定などによるリスク管理にも対応しています。

ローソク足レンジ理論(CRT)は、ローソク足のレンジ内に存在する重要なフェーズを特定することに焦点を当て、高確率の反転トレードを狙うプライスアクション戦略です。CRTでは、市場の動きを蓄積、操作、分配という3つの主要なフェーズに分類します。蓄積フェーズでは、価格が特定のレンジ内で落ち着き、機関投資家のポジション構築がおこなわれることを示唆します。操作フェーズでは、価格がレンジの上下限を一時的に超え、トレーダーを誘い込み弱いポジションを振るい落とす動きが発生します。分配フェーズでは、価格がレンジ内に反転して戻った後、本来の方向性に沿った大きな値動きが展開されます。このアプローチは、重要なブレイクの多くが流動性を作るための偽の動きであり、その後に反対方向への強い値動きが続くという考えに基づいています。

強気のレンジセットアップでは、終値が上方向に位置するローソク足レンジを特定し、下方向への一時的なブレイクを操作フェーズとして捉え、安値を上抜けて反転したタイミングで買いエントリーをおこない、上方向の分配を狙います。逆に、弱気のレンジセットアップでは、下方向に終値が位置するローソク足レンジを確認し、高値を上抜けるブレイクを操作として捉え、高値を下抜けて反転したタイミングで売りエントリーをおこない、下方向の分配を狙います。最小操作深度やローソク足の終値による反転確認などのフィルタを組み込むことで、低品質なセットアップを避け、より信頼度の高い取引に注力できます。 

ローソク足レンジ理論(CRT)セットアップ

本システムでは、ユーザー指定の時間足で蓄積レンジを定義します。ブレイクを検知した際には、オプションで設定された操作深度の閾値に基づき検証をおこないます。反転確認は、確認用の時間足における一定本数のローソク足終値で判断します。エントリーは方向ごとのポジション上限を適用して実行されます。ストップロスおよびテイクプロフィットは、リスクリワード比に応じて動的または静的に設定可能です。利益閾値到達後には任意でトレーリングストップも導入できます。すべてのフェーズは、チャート上に矩形、レベル線、ラベルとして可視化され、状態を直感的に把握できるようになっています。以下に想定されるビジュアル表示の例を示します。

作者: Allan Munene Mutiiria

 
ありがとう。
 
新しい蓄積フェーズの開始をどのように検出するのか説明していない。
 
Christian Gomez #:
ありがとう。
ありがとう
 
Stanislav Korotky #:
あなたは、それぞれの新しい蓄積段階の開始がどのように検出されるかを説明していませんでした。

それは可視化されたようにろうそくの範囲です。

      double prevMax = iHigh(_Symbol, RangeTF, 1);                //--- 前の高値を取得する
      double prevMin = iLow(_Symbol, RangeTF, 1);                 //--- 前安値を取得する
      double prevStart = iOpen(_Symbol, RangeTF, 1);              //--- 前のオープンを取得する
      double prevEnd = iClose(_Symbol, RangeTF, 1);               //--- 前のクローズを取得する
      rangeMax = prevMax;                                         //--- 範囲の最大値を設定する
 
Allan Munene Mutiiria #:

これが可視化されたローソク足の範囲だ。

これは質問の答えになりません - どのように蓄積フェーズ(チャートの異なるセクションでフェーズが何度も発生するため、それぞれ、すべて)の開始を見つけるのですか?これは時間の問題であり、価格帯の問題ではない。視覚化についても同様である。

 
このトピックに関係のないコメントは、「オフトピック・ポスト」に移動しました。
 
私の見解では、新たな蓄積フェーズの始まりに関する疑問は、依然として未解決のままである。

直前の終値ローソク足のハイとローを取得することは、次のレンジの価格範囲を決定するに過ぎない:

iHigh(_Symbol, RangeTF, 1);
iLow(_Symbol, RangeTF, 1);

しかし、これだけでは、新しいCRTサイクルがいつ開始されるべきかまでは決定されません。

もし新しいバーごとに前のローソク足が自動的に新しいレンジとなるのであれば、レンジは絶えず移動することになります。そこでいくつかの疑問が生じます:

— 操作開始後、レンジは固定されるのか;
— 前のセットアップはいつ完了またはキャンセルされたとみなされるのか;
— 古いレンジがまだ「Manipulation」または「Distribution」の状態にある間、新しいレンジを作成できるか;
— リセット条件とは何か:ポジションへのエントリー、TP/SLの到達、レンジへの復帰、設定されたバー数の経過、あるいは新しい基準ローソク足の出現か;
— 複数のCRTレンジが同時にアクティブになることは許容されるか。

明確な自動化を行うには、ここでステートマシンが必要となります。例えば:

WAITING_FOR_RANGE
→ RANGE_ACTIVE
→ MANIPULATION_DETECTED
→ REVERSAL_CONFIRMED
→ DISTRIBUTION / TRADE_ACTIVE
→ COMPLETED または INVALIDATED
→ WAITING_FOR_NEW_RANGE

COMPLETED/INVALIDATEDから新しいRANGE_ACTIVEへの移行に関する明確なルールがない場合、その戦略は視覚的には理解しやすいように見えるかもしれませんが、そのプログラム上の挙動やテスト結果は、記述されていない仮定に依存することになります。

したがって、重要な問いはまさにこれです:どのような具体的なイベントが現在のCRTサイクルを終了させ、次のレンジの作成を許可するのでしょうか?