価格アクションに基づく機関トレーダー戦略

作者: リン・ハーンチャオチャン開催日:2024年2月23日15時04分39秒
タグ:

img

概要

この戦略は"価格アクションに基づく機関トレーダー戦略"と呼ばれる.これは,機関トレーダーが使用する特定の取引パターン,特に特定の"オーダーブロック"の周りにオーダーを出す傾向を利用しようと試みる.この戦略は,市場からのエントリーと出口を決定するためにフェアバリュー,流動性,価格アクションの要素を組み込む.

戦略の論理

戦略の核心は,過去において重要な機関取引活動が行われた"注文ブロック"と"価格領域"を特定することである.これらの領域は,重要な流動性に関連している.注文ブロックは価格構造を使用して決定され,しばしば重要な技術価格レベルに関連している.

公正価値は,移動平均値などの指標に基づくツールの"合理的な価格"として定義されます.現在の価格が公正価値から遠く移動すると,これは市場の不均衡の兆候と見なされます.

流動性も重要な要因であり,機関取引者は高流動性領域で取引を行う傾向があります.

戦略は,単純な移動平均を計算することによって公正な価値を決定する.その後,長さ20期の潜在的なオーダーブロックを特定する.閉じる価格と公正な価値の差がオーダーブロック範囲の総高さの38.2%未満である場合,オーダーブロックが決定される.

ブライッシュ・オーダー・ブロックは買い・サイン,ベアッシュ・オーダー・ブロックは売り・サインとみなされます.

利点分析

この戦略の主な利点は,機関トレーダーの取引パターンを利用することで,よりメカニズム的な指標ベースの戦略を上回る可能性がある.注文フローと価値領域を観察することによって,いくつかの異なるタイプの分析を組み合わせます.

その他の利点は以下の通りです.

  • 流動性を利用してよりよい実行を達成する
  • 順序の流れのような視覚化しやすい概念に頼る
  • 図表で順序ブロックを視覚化しやすい
  • ブロック長などのパラメータを調整する柔軟性

リスク分析

この戦略には,以下のような潜在的リスクもあります.

  • 過去の価格行動に関する判断に頼る
  • オーダーフローがない市場では適切に機能しない可能性があります.
  • 誤った信号を生む可能性があります
  • 短期的な傾向を見逃すかもしれません

これらのリスクを軽減するために,以下を考慮することを推奨します.

  • 偽信号をフィルタリングするために他の指標と組み合わせる
  • ブロックの長さのようなパラメータを調整
  • 取引のために発行されたシグナルをフィルタリング

オプティマイゼーションの方向性

戦略の最適化の可能性は以下の通りです

  1. ブロックの長さやフェアバリュー偏差パーセントなどのキーパラメータ値をテストし最適化します
  2. 品質向上のために追加指標やフィルターを追加します
  3. ストップ・ロスのメカニズムを組み込み,利益を得ること
  4. 注文簿の活動などのより多くのデータソースを組み込む
  5. 異なる期間 (日中,多日間など) と市場における安定性をテストする
  6. フィルター信号に機械学習予測を追加する

概要

ストラテジーは,機関的なトレーダー行動を利用するためのユニークなアプローチを提供します.複数の要素を組み合わせ,特定の利点があります.しかし,ほとんどのトレーディング戦略と同様に,市場状況が変化したり,予想外の価格行動が発生した場合にリスクに直面します.継続的なテスト,最適化,リスク管理により,ストラテジーは貴重な定量的なトレーディングツールになることができます.


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ICT Strategy", overlay=true)

// Input variables
length = input.int(20, minval=1, title="Order Block Length")
fairValuePeriod = input.int(60, minval=1, title="Fair Value Period")

// Calculate fair value
fairValue = ta.sma(close, fairValuePeriod)

// Determine order blocks
isOrderBlock(high, low) =>
    highestHigh = ta.highest(high, length)
    lowestLow = ta.lowest(low, length)
    absHighLowDiff = highestHigh - lowestLow
    absCloseFairValueDiff = (close - fairValue)
    (absCloseFairValueDiff <= 0.382 * absHighLowDiff)

isBuyBlock = isOrderBlock(high, low) and close > fairValue
isSellBlock = isOrderBlock(high, low) and close < fairValue

// Plot fair value and order blocks
plot(fairValue, color=color.blue, title="Fair Value")
plotshape(isBuyBlock, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(isSellBlock, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy logic
if (isBuyBlock)
    strategy.entry("Buy", strategy.long)
    
if (isSellBlock)
    strategy.entry("Sell", strategy.short)


もっと