
これは,指数移動平均 (EMA) の交差と平均実際の波幅 (ATR) のフィルターを組み合わせた量化取引戦略である. この戦略は,強度のトレンドを認識し,波動が高い市場環境で取引することで,戦略のシャープ比率と全体的なパフォーマンスを効果的に向上させる. この戦略は,50サイクルと200サイクルのEMAを使用して,中長期のトレンドを捉え,同時にATR指標を使用して,市場の波動性を評価し,波動が特定の値を超えた場合にのみ取引する.
戦略の核心的な論理には,トレンド判断と波動率フィルターという2つの主要な部分が含まれている.トレンド判断の面で,戦略は50サイクルEMAを快線として,200サイクルEMAをスローラインとして使用し,快線がスローラインを横切るときに多信号を生じ,横切るときに空信号を生成する.波動率フィルターの面で,戦略は14サイクルATRの値を計算し,それを価格のパーセントに変換し,ATRのパーセントが予期値のを超えた場合にのみポジションを開くことを許可する.この設計は,戦略が十分な波動性のある市場環境でのみ取引することを保証し,揺れ動いている市場の偽信号を効果的に低減する.
これは,クラシックな技術指標と近代的なリスク管理理念を組み合わせた戦略である.EMAのクロスキャプチャトレンドを介して,ATRフィルターを使用して取引のタイミングを制御する一方で,戦略はシンプルさを保ちながら,強力な実用性をもっている.いくつかの固有のリスクがあるが,合理的な最適化とリスク管理措置によって,この戦略は依然として優れた応用価値を有している.実際のアプリケーションでは,特定の市場特性と自身のリスク好みに応じて適切なパラメータ調整を行うことをトレーダーに推奨している.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Inputs for Moving Averages
fastLength = input.int(50, title="Fast EMA Length")
slowLength = input.int(200, title="Slow EMA Length")
// Inputs for ATR Filter
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrThreshold = input.float(0.02, title="ATR Threshold (%)")
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Calculate ATR
atr = ta.atr(atrLength)
// Convert ATR to a percentage of price
atrPct = atr / close
// Define Long Condition (Cross and ATR filter)
longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100
// Define Short Condition
shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100
// Define Exit Conditions
exitConditionLong = ta.crossunder(fastEMA, slowEMA)
exitConditionShort = ta.crossover(fastEMA, slowEMA)
// Long Entry
if (longCondition)
strategy.entry("Long", strategy.long)
// Short Entry
if (shortCondition)
strategy.entry("Short", strategy.short)
// Long Exit
if (exitConditionLong)
strategy.close("Long")
// Short Exit
if (exitConditionShort)
strategy.close("Short")
// Plot EMAs for visual reference
plot(fastEMA, title="50 EMA", color=color.blue)
plot(slowEMA, title="200 EMA", color=color.red)
// Plot ATR for reference
plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line)
hline(atrThreshold / 100, "ATR Threshold", color=color.green)