
Strategi ini adalah sistem perdagangan yang berasaskan indeks bergerak rata-rata jangka menengah dan panjang (EMA), yang menggabungkan pengurusan kedudukan dinamik dan mekanisme kawalan risiko. Strategi ini mengenal pasti trend pasaran melalui perpaduan EMA 21 kitaran dan 55 kitaran, sambil secara dinamik menyesuaikan saiz kedudukan perdagangan berdasarkan nisbah keuntungan risiko dan peratusan risiko yang disesuaikan oleh pengguna, yang mewujudkan kawalan tepat terhadap risiko.
Logik teras strategi ini adalah berdasarkan pada tanda silang EMA dua kitaran masa. Apabila EMA 21 kitaran melintasi EMA 55 kitaran ke atas, sistem mengenal pasti sebagai trend ke atas, mencetuskan sinyal berganda; Apabila EMA 21 kitaran melintasi EMA 55 kitaran ke bawah, sistem mengenal pasti sebagai trend ke bawah, mencetuskan isyarat kosong. Tetapan stop loss menggunakan titik terendah dalam dua garis K yang lalu ((membuat lebih) atau titik tertinggi ((membuat kosong), dan stop loss dihitung secara dinamik mengikut nisbah risiko pengguna yang ditetapkan.
Strategi ini membina sistem perdagangan yang lengkap dengan menggabungkan isyarat trend EMA dan pengurusan risiko dinamik. Kelebihan utama strategi ini adalah pengurusan kedudukan dan mekanisme kawalan risiko yang saintifik, tetapi masih memerlukan pengoptimuman parameter yang sesuai mengikut keadaan pasaran dan keutamaan risiko individu.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-07-11 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Carlos Humberto Rodríguez Arias
//@version=5
strategy("EMA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// EMA periods
MT_EMA = input.int(21, title="Medium Term EMA")
LT_EMA = input.int(55, title="Long Term EMA")
RR = input.float(2.0, title="Risk-Reward Ratio") // User-defined RR
RiskPercent = input.float(1.0, title="Risk Percentage") // User-defined risk percentage
// Calculate EMAs
Signal_MT_EMA = ta.ema(close, MT_EMA)
Signal_LT_EMA = ta.ema(close, LT_EMA)
// Plot EMAs
plot(Signal_MT_EMA, title="Medium Term EMA", color=color.orange, linewidth=2)
plot(Signal_LT_EMA, title="Long Term EMA", color=color.blue, linewidth=2)
// Determine trend conditions
uptrend = ta.crossover(Signal_MT_EMA, Signal_LT_EMA)
downtrend = ta.crossunder(Signal_MT_EMA, Signal_LT_EMA)
// Stop-Loss Calculations
longStopLoss = ta.lowest(low, 2) // SL for buy = lowest low of last 2 candles
shortStopLoss = ta.highest(high, 2) // SL for sell = highest high of last 2 candles
// Take-Profit Calculations
longTakeProfit = close + (close - longStopLoss) * RR
shortTakeProfit = close - (shortStopLoss - close) * RR
// Calculate Position Size based on Risk Percentage
capital = strategy.equity * (RiskPercent / 100)
longPositionSize = capital / (close - longStopLoss)
shortPositionSize = capital / (shortStopLoss - close)
// Execute Buy Order
if uptrend
strategy.entry("Long", strategy.long, qty=longPositionSize)
strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
// Execute Sell Order
if downtrend
strategy.entry("Short", strategy.short, qty=shortPositionSize)
strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)