
この戦略は,複数の指数移動平均 ((EMA) と実際の波幅指標 ((ATR) に基づくトレンド追跡取引システムである. 戦略は,複数の均線の配列形状を判断することによって,トレンドの方向性を確認し,上昇傾向で回転買い機会を探し,ATRのダイナミクスを利用して止損と利益の目標を設定する. この方法は,トレンド追跡の安定性を保証するとともに,ATRによって市場の変動にダイナミクスの適応を実現する.
戦略の中核となるロジックには、次の重要な要素が含まれます。
これは,構造的に整った,論理的に厳格なトレンド追跡戦略である. 多重平均線によるトレンド確認,リターン入場,ATRのダイナミックリスク管理の組み合わせにより,戦略の安定性も確保され,優れた適応性も備えている. いくつかの固有のリスクがあるにもかかわらず,推奨された最適化の方向によって,戦略の安定性と収益性をさらに向上させることができる. この戦略は,中長期のトレンドを追跡するのに特に適しており,トレンド市場で安定した収益を期待するトレーダーにとって良い選択である.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover and ATR Target Strategy", overlay=true)
// Input parameters
emaShortLength = 20
emaMidLength1 = 50
emaMidLength2 = 100
emaLongLength = 200
atrLength = 14
// Calculate EMAs
ema20 = ta.ema(close, emaShortLength)
ema50 = ta.ema(close, emaMidLength1)
ema100 = ta.ema(close, emaMidLength2)
ema200 = ta.ema(close, emaLongLength)
ema21 = ta.ema(close, 21)
// Calculate ATR
atr = ta.atr(atrLength)
// Conditions for the strategy
emaCondition = ema20 > ema50 and ema50 > ema100 and ema100 > ema200
pullbackCondition = close <= ema21 and close >= ema50 //and close >= ema21 * 0.99 // Near 21 EMA (within 1%)
// Initialize variables for stop loss and take profitss
var float stopLossLevel = na
var float takeProfitLevel = na
// Check conditions on each bar close
if (bar_index > 0) // Ensures there is data to check
if emaCondition and pullbackCondition and strategy.position_size == 0 // Only buy if no open position
stopLossLevel := close - (1.5 * atr) // Set stop loss based on ATR at buy price
takeProfitLevel := close + (3.5 * atr) // Set take profit based on ATR at buy price
strategy.entry("Buy", strategy.long)
// Set stop loss and take profit for the active trade
if strategy.position_size > 0
strategy.exit("Take Profit", from_entry="Buy", limit=takeProfitLevel, stop=stopLossLevel)
// Plot EMAs for visualizationn
plot(ema20, color=color.blue, title="20 EMA")
plot(ema50, color=color.red, title="50 EMA")
plot(ema100, color=color.green, title="100 EMA")
plot(ema200, color=color.orange, title="200 EMA")
plot(ema21, color=color.purple, title="21 EMA")