
Strategi ini adalah sistem perdagangan yang berasaskan persilangan dua rata-rata, yang berdagang dengan memantau persilangan 9 kitaran dan 21 kitaran EMA. Strategi ini beroperasi dalam jangka masa 10 minit, menggunakan mod perdagangan tunggal, iaitu tidak membuka semula kedudukan semasa memegang kedudukan. Sistem ini menggunakan modal awal 100,000, setiap perdagangan menggunakan 10% daripada kepentingan akaun.
Prinsip teras strategi adalah memanfaatkan sensitiviti EMA jangka pendek terhadap perubahan harga pasaran yang lebih tinggi daripada EMA jangka panjang. Apabila EMA jangka pendek ((9 kitaran) ke atas melintasi EMA jangka panjang ((21 kitaran), menunjukkan peningkatan daya geser ke atas jangka pendek, sistem mengeluarkan banyak isyarat; Apabila EMA jangka pendek melintasi EMA jangka panjang ke bawah, menunjukkan peningkatan daya geser ke bawah jangka pendek, sistem mengeluarkan isyarat kedudukan.
Ini adalah strategi silang sejajar yang dirancang dengan logik yang logik dan logik. Dengan EMA silang, trend pasaran ditangkap, dengan mod perdagangan tunggal dan pengurusan kedudukan peratusan, keseimbangan risiko dan keuntungan dicapai. Walaupun terdapat beberapa batasan yang wujud, kestabilan dan kesesuaian strategi dapat ditingkatkan lagi dengan arah optimum yang disarankan. Dalam aplikasi praktikal, peniaga disarankan untuk membuat penyesuaian yang sesuai mengikut ciri-ciri pasaran tertentu dan keutamaan risiko peribadi.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("EMA Crossover Labels (One Trade at a Time)", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ==== User Inputs ====
// Set the testing timeframe (ensure the chart is on a 10-min timeframe)
testTimeFrame = input.timeframe("10", "Strategy Timeframe")
// EMA period inputs
emaPeriod9 = input.int(9, "EMA 9 Period", minval=1)
emaPeriod21 = input.int(21, "EMA 2q Period", minval=1)
// ==== Retrieve Price Data ====
// For simplicity, we use the chart's timeframe (should be 10-min)
price = close
// ==== Calculate EMAs ====
ema9 = ta.ema(price, emaPeriod9)
ema21 = ta.ema(price, emaPeriod21)
// ==== Define Crossover Conditions ====
// Buy signal: when EMA9 crosses above EMA21 AND no current position is open
buySignal = ta.crossover(ema9, ema21) and strategy.position_size == 0
// Sell signal: when EMA9 crosses below EMA21 AND a long position is active
sellSignal = ta.crossunder(ema9, ema21) and strategy.position_size > 0
// ==== Strategy Orders ====
// Enter a long position when a valid buy signal occurs
if buySignal
strategy.entry("Long", strategy.long)
alert("Long Signal: " + syminfo.tickerid + " - EMA9 crossed above EMA21", alert.freq_once_per_bar_close)
// Exit the long position when a valid sell signal occurs
if sellSignal
strategy.close("Long")
alert("Sell Long Signal: " + syminfo.tickerid + " - EMA9 crossed below EMA21", alert.freq_once_per_bar_close)
// ==== Plot Buy/Sell Labels ====
// Only plot a "Buy" label if there's no open position
plotshape(buySignal, title="Buy Label", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", textcolor=color.white)
// Only plot a "Sell" label if a position is active
plotshape(sellSignal, title="Sell Label", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", textcolor=color.white)
// ==== Plot EMAs for Visualization ====
plot(ema9, color=color.blue, title="EMA 21")
plot(ema21, color=color.orange, title="EMA 21")