
Strategi ini adalah sistem perdagangan pengesanan trend berdasarkan purata bergerak pelbagai indeks (EMA) dan penunjuk gelombang sebenar (ATR). Strategi ini mengesahkan arah trend dengan menilai bentuk susunan pelbagai garis rata, mencari peluang pembelian yang terbalik dalam trend menaik, dan menggunakan ATR untuk menetapkan sasaran berhenti dan keuntungan yang dinamik. Kaedah ini memastikan kestabilan trend dan menyesuaikan diri dengan pergerakan pasaran secara dinamik melalui ATR.
Logik teras strategi merangkumi elemen utama berikut:
Ini adalah strategi pengesanan trend yang berstruktur dan logik yang ketat. Kombinasi pengesahan trend dengan banyak garis rata, pengembalian masuk dan pengurusan risiko ATR dinamik memastikan kestabilan strategi, tetapi juga mempunyai kebolehpasaran yang baik. Walaupun terdapat beberapa risiko yang wujud, strategi ini dapat meningkatkan kestabilan dan keuntungan dengan arah pengoptimuman yang disyorkan.
/*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")