
Strategi ini ialah sistem perdagangan frekuensi tinggi berdasarkan isyarat silang jangka pendek purata bergerak eksponen (EMA). Ia menggabungkan mekanisme penjejakan turun naik adaptif dengan pengurusan kedudukan dinamik dan kawalan risiko yang ketat untuk menangkap turun naik pasaran jangka pendek dengan cepat. Strategi ini berjalan pada rangka masa yang lebih pendek seperti 1 minit atau 5 minit, dan sesuai untuk pedagang aktif yang mencari peluang dagangan yang kerap.
Logik teras strategi adalah berdasarkan isyarat silang EMA pantas (3-tempoh) dan EMA perlahan (8-tempoh). Apabila garis cepat melintasi di bawah garis perlahan, isyarat panjang dijana apabila garis cepat melintasi di bawah garis perlahan, isyarat pendek dihasilkan. Strategi ini menggunakan penunjuk ATR untuk mengukur turun naik pasaran dan secara dinamik menetapkan sasaran henti rugi dan keuntungan sewajarnya. Sistem ini menyokong dua mod: perdagangan kuantiti kontrak tetap dan pengurusan kedudukan dinamik berdasarkan ekuiti akaun. Dalam mod kedudukan dinamik, risiko setiap transaksi dikawal dalam 0.5% daripada ekuiti akaun. Strategi ini menggunakan nisbah risiko-ganjaran sebanyak 1.2 kali dan menggabungkan 1.5 kali ATR sebagai jarak penjejakan untuk henti rugi bergerak.
Strategi ini membina sistem perdagangan frekuensi tinggi yang lengkap dengan menggabungkan isyarat silang EMA jangka pendek dan pengurusan risiko dinamik. Kelebihan strategi ini ialah tindak balas yang cepat dan kawalan risiko yang ketat, tetapi ia juga perlu memberi perhatian kepada isu seperti isyarat palsu dan kos transaksi. Melalui pengoptimuman berterusan dan pelarasan parameter, strategi boleh menyesuaikan diri dengan lebih baik kepada persekitaran pasaran yang berbeza dan meningkatkan kecekapan dan kestabilan dagangan.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("High-Frequency EMA Scalping Strategy - Adjustable Contracts", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Input parameters
fastEmaLength = input.int(3, title="Fast EMA Length", minval=1)
slowEmaLength = input.int(8, title="Slow EMA Length", minval=1)
atrLength = input.int(10, title="ATR Length", minval=1)
riskRewardRatio = input.float(1.2, title="Risk/Reward Ratio", minval=1)
useDynamicPositionSizing = input.bool(false, title="Use Dynamic Position Sizing?")
fixedContracts = input.int(1, title="Number of Contracts (if Fixed)", minval=1) // Fixed number of contracts
// Calculate EMA values
fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)
// Calculate ATR for dynamic stop-loss and take-profit
atr = ta.atr(atrLength)
// Dynamic position sizing (if enabled)
capital = strategy.equity
riskPerTrade = capital * 0.005 // Risk 0.5% per trade
dynamicTradeQty = riskPerTrade / (atr * 1.5)
// Use fixed or dynamic position sizing
tradeQty = useDynamicPositionSizing ? dynamicTradeQty : fixedContracts
// Entry conditions
longCondition = ta.crossover(fastEma, slowEma)
shortCondition = ta.crossunder(fastEma, slowEma)
// Long trade execution
if longCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Long", strategy.long, qty=tradeQty)
strategy.exit("Trailing Stop Long", from_entry="Long", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Long", limit=close + reward, stop=close - risk)
// Short trade execution
if shortCondition
risk = atr * 1.0
reward = risk * riskRewardRatio
strategy.entry("Short", strategy.short, qty=tradeQty)
strategy.exit("Trailing Stop Short", from_entry="Short", trail_points=atr * 1.5, trail_offset=atr * 1.0)
strategy.exit("Take Profit", from_entry="Short", limit=close - reward, stop=close + risk)
// Plot EMA lines for reference
plot(fastEma, color=color.blue, title="Fast EMA")
plot(slowEma, color=color.red, title="Slow EMA")