
この戦略は,価格行動に基づく機関取引戦略と呼ばれる.これは,機関トレーダーの特定の取引パターン,特に特定のの注文ブロックの近くで注文する傾向を利用する.この戦略は,市場への入場と退出のタイミングを決定するために,公正な価値,流動性,価格行動の要素を組み合わせている.
この戦略の核心は,多くの機関取引活動が過去に発生した価格領域であるの注文ブロックを識別することです.これらの領域は,有意な流動性に関連しています.注文ブロックは,価格構造を使用して決定され,通常,重要な技術価格レベルに関連しています.
公正価値は,移動平均などの指標に基づくツールの合理的な値として定義される.現在の価格が公正価値から遠く離れている場合,これは市場の不均衡の信号と見なされる.
流動性も重要な要因であり,機関トレーダーは流動性の高い地域で取引を行う傾向がある.
この戦略は,単純移動平均を計算して公正価値を決定する。その後,20周期の長さの潜在的な注文ブロックを識別する。閉じる価格と公正価値の間の差が注文ブロックの総高さの38.2%未満であれば,注文ブロックを決定する。
多頭注文ブロックは買い信号とみなされる.空頭注文ブロックは売り信号とみなされる.
この戦略の主要な優点は,機関トレーダーの取引モデルを利用していることであり,これは,より機械化された指標に基づく戦略を上回る可能性がある.注文流と価値領域に焦点を当てることで,いくつかの異なるタイプの分析を組み合わせている.
他の利点には以下のものがある.
この戦略にはいくつかの潜在的リスクがあります.
これらのリスクを軽減するために,以下のようなことを検討することをお勧めします.
この戦略の潜在的最適化には以下のものがある.
全体として,この戦略は,機関トレーダーの取引行動を活用するためのユニークな方法を提供します. それは複数の要素を融合し,いくつかの利点があります. しかし,ほとんどの取引戦略と同様に,市場が変化し,予期せぬ価格行動が発生したときにリスクがあります.
/*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)