
Strategi ini adalah sistem perdagangan automatik yang berdasarkan teori penembusan dua garis rata, digabungkan dengan fungsi pengurusan risiko. Inti strategi menggunakan purata bergerak indeks 21 dan 50 kitaran ((EMA) sebagai penunjuk isyarat, menilai perubahan trend pasaran dengan menyeberangi garis rata dan melakukan perdagangan secara automatik. Sistem ini mengintegrasikan fungsi stop loss ((Stop Loss) dan stop loss ((Take Profit), yang dapat mengawal risiko dan matlamat keuntungan setiap perdagangan dengan berkesan.
Logik teras strategi ini adalah berdasarkan kepada teori persilangan linear klasik dalam analisis teknikal. Apabila EMA (21 hari) jangka pendek melintasi EMA (50 hari) jangka panjang, sistem mengiktirafnya sebagai isyarat bullish dan membuka lebih banyak kedudukan. Apabila EMA (21 hari) jangka pendek melintasi EMA (50 hari) jangka panjang, sistem mengiktirafnya sebagai isyarat bearish dan membuka posisi kosong.
Ini adalah strategi perdagangan automatik yang direka dengan logik yang logik dan logik. Dengan menggabungkan isyarat silang linear dan pengurusan risiko yang ketat, strategi ini menyediakan kerangka teknikal yang boleh dipercayai untuk menangkap peluang trend pasaran sambil memastikan keselamatan perdagangan. Walaupun terdapat ruang untuk pengoptimuman, infrastruktur strategi ini utuh, sesuai untuk pengembangan dan penyempurnaan lanjut sebagai modul asas sistem perdagangan kuantitatif.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy with SL & TP", overlay=true, default_qty_type=strategy.percent_of_equity)
// Input settings for SL and TP (ticks)
slTicks = input.int(40, title="Stop Loss (ticks)", minval=1)
tpTicks = input.int(80, title="Take Profit (ticks)", minval=1)
// Define EMA periods
ema21 = ta.ema(close, 21)
ema50 = ta.ema(close, 50)
// Detect crossovers
bullishCross = ta.crossover(ema21, ema50)
bearishCross = ta.crossunder(ema21, ema50)
// Plot the EMAs
plot(ema21, color=color.green, linewidth=2, title="EMA 21")
plot(ema50, color=color.red, linewidth=2, title="EMA 50")
// Calculate tick size in points
var float tickSize = syminfo.mintick
// Calculate stop loss and take profit prices for long and short positions
longSL = close - slTicks * tickSize
longTP = close + tpTicks * tickSize
shortSL = close + slTicks * tickSize
shortTP = close - tpTicks * tickSize
// Execute trades on crossover signals
if (bullishCross)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP)
if (bearishCross)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP)
// Plot arrows on crossovers
plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Optional: Background coloring
bgcolor(bullishCross ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(bearishCross ? color.new(color.red, 90) : na, title="Bearish Background")