Strategi ini menggunakan persilangan dua purata bergerak indeks ((EMA) dari dua kitaran yang berbeza sebagai isyarat perdagangan, sambil menetapkan titik-titik berhenti dan berhenti yang tetap. Apabila EMA jangka pendek dari bawah ke atas melintasi EMA jangka panjang, posisi dibuka lebih banyak; apabila EMA jangka pendek dari atas ke bawah melintasi EMA jangka panjang, posisi dibuka kosong. Apabila perdagangan ditetapkan dengan titik-titik berhenti dan berhenti untuk mengawal risiko dan mengunci keuntungan.
Strategi berhenti berhenti dua hala adalah strategi perdagangan yang mudah digunakan, menghasilkan isyarat perdagangan melalui EMA silang, sambil menetapkan beberapa titik berhenti berhenti untuk mengawal risiko. Kelebihan strategi ini adalah bahawa logiknya jelas, mudah dilaksanakan, dan dapat menangkap tren pasaran dengan lebih baik. Tetapi ada juga risiko seperti isyarat palsu, kelewatan trend, pasaran penarikan dan berhenti tetap. Arah pengoptimuman termasuk memperkenalkan lebih banyak parameter pengoptimuman indikator, kehilangan dinamik, pengurusan kedudukan dan penapis tambahan.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA5 Cross EAM200 && SL/TP 50 and 200 Point Target", overlay=true)
// Define input parameters for EMA lengths
ema_5 = input.int(5, title="Fast EMA Length")
ema_200 = input.int(200, title="Slow EMA Length")
// Define input parameters for stop loss and profit target in points
stopLossPoints = input.float(50, title="Stop Loss (Points)")
profitTargetPoints = input.float(200, title="Profit Target (Points)")
// Calculate EMAs
price = close
emafast = ta.ema(price, ema_5)
emaslow = ta.ema(price, ema_200)
// Plot EMAs on chart
plot(emafast, title="5-period EMA", color=color.black)
plot(emaslow, title="200-period EMA", color=color.blue)
// Extra lines if needed
ema_13 = input.int(13, title="13 EMA")
ema_13_line = ta.ema(price, ema_13)
plot(ema_13_line, title="13-period EMA", color=color.rgb(156, 39, 176, 90))
ema_20 = input.int(20, title="20 EMA")
ema_20_line = ta.ema(price, ema_20)
plot(ema_20_line, title="20-period EMA", color=color.red)
// Define entry conditions
longCondition = ta.crossover(emafast, emaslow)
shortCondition = ta.crossunder(emafast, emaslow)
// Counter to keep track of the number of bars since the entry
var int barCount = na
// Reset counter and enter long trade
if (longCondition)
strategy.entry("Long", strategy.long, comment="Long")
barCount := 0
// Reset counter and enter short trade
if (shortCondition)
strategy.entry("Short", strategy.short, comment="Short")
barCount := 0
// Increment counter if in trade
if (strategy.opentrades > 0)
barCount += 1
// Calculate entry price
entryPrice = strategy.position_avg_price
// Exit long trade if stop loss, profit target hit, or 200 points have been reached
if (strategy.position_size > 0)
strategy.exit("Take Profit/Stop Loss", "Long", stop=entryPrice - stopLossPoints, limit=entryPrice + profitTargetPoints)
// Exit short trade if stop loss, profit target hit, or 200 points have been reached
if (strategy.position_size < 0)
strategy.exit("Take Profit/Stop Loss", "Short", stop=entryPrice + stopLossPoints, limit=entryPrice - profitTargetPoints)