
この戦略は,指数移動平均 ((EMA) と,実際の波動幅 ((ATR) に基づくストップメカニズムを組み合わせたトレンド追跡取引システムである.この戦略は,9周期と21周期のEMAを使用して,市場トレンドを識別し,ATRを利用してストップポジションを動的に調整し,トレンド追跡とリスク制御の有機的な組み合わせを実現する.
戦略の核心的な論理は,トレンド判断とリスクコントロールの2つの主要な部分で構成されている.トレンド判断の面で,急速なEMA (第9サイクル) と慢性的なEMA (第21サイクル) の交差を監視することによって市場のトレンドを決定する.快線上でのゆっくりとした線を突破すると,多信号を触発し,快線下でのゆっくりとした線を突破すると,空信号を触発する.リスクコントロールの面で,戦略は,ATR指標を用いて動的な止損位置を計算する.具体的には,多頭位ポジションの止損位置は,入場価格の1.5倍をATR値から減算し,空頭位ポジションの止損位置は,入場価格の1.5倍をATR値に追加する.
この戦略は,均線交差判断トレンドとATRダイナミックストップを組み合わせて,完全なトレンド追跡取引システムを構築している.この戦略の優点は,標準的な客観性,リスク管理の柔軟性である.しかし,震動市場のリスクと信号遅延の問題にも注意する必要がある.トレンドの強さを追加し,ストップの設定などを最適化することで,戦略の改善には大きな余地がある.全体的に,これは,より複雑な取引システムの基礎を建設するのに適した,基礎が堅牢で,論理が明確なトレンド追跡戦略である.
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)