
Strategi ini adalah sistem perdagangan trend-tracking berdasarkan purata bergerak dua indeks ((EMA)). Strategi ini menggunakan dua garis EMA 44 dan 200 kitaran, digabungkan dengan isyarat harga untuk menentukan arah perdagangan. Ia juga mengintegrasikan mekanisme pengurusan risiko, termasuk pengiraan kedudukan dinamik dan berhenti bergerak.
Logik teras strategi ini adalah berdasarkan interaksi harga dengan garis EMA ganda. EMA 44 kitaran digunakan untuk membentuk saluran naik dan turun harga tertinggi dan terendah, dan EMA 200 kitaran digunakan sebagai penapis trend jangka panjang. Apabila harga penutupan menembusi EMA atas dan memenuhi syarat penapis 200 EMA, sistem menghasilkan banyak isyarat. Apabila harga penutupan jatuh dari EMA atas dan memenuhi syarat penapis 200 EMA, sistem menghasilkan isyarat kosong.
Ini adalah strategi pengesanan trend yang lengkap dan logik yang jelas. Ia menyediakan isyarat perdagangan melalui saluran EMA ganda dan penapisan trend jangka panjang, dengan mekanisme pengurusan risiko yang baik, dan mempunyai kepraktisan yang baik. Ruang pengoptimuman strategi adalah terutamanya dalam pengesahan isyarat, penyesuaian parameter dinamik dan pengoptimuman mekanisme pengurusan risiko. Dalam aplikasi praktikal, disarankan untuk menguji kepekaan parameter dengan penuh dan mengoptimumkan sasaran dengan ciri-ciri varieti perdagangan tertentu.
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RENTABLE Dual EMA Breakout TSLA ", overlay=true)
// Inputs for EMA lengths and risk per trade
length = input(44, title="EMA Length")
longTermLength = input(200, title="Long-Term EMA Length")
riskPerTrade = input.float(1.0, title="Risk per Trade (%)", minval=0.1, maxval=10.0)
// Additional inputs for strategy customization
useFilter = input.bool(true, title="Use 200 EMA Filter")
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"])
// EMAs based on the high and low prices and long-term EMA
emaHigh = ta.ema(high, length)
emaLow = ta.ema(low, length)
ema200 = ta.ema(close, longTermLength)
// Plotting EMAs on the chart
plot(emaHigh, color=color.green, title="High EMA")
plot(emaLow, color=color.red, title="Low EMA")
plot(ema200, color=color.blue, title="200 EMA")
// Entry conditions with optional EMA filter
longCondition = close > emaHigh and (useFilter ? close > ema200 : true)
shortCondition = close < emaLow and (useFilter ? close < ema200 : true)
// Calculating stop-loss and position size
longStop = emaLow
shortStop = emaHigh
riskPerShareLong = close - longStop
riskPerShareShort = shortStop - close
equity = strategy.equity
// Ensure risk per share is positive for calculations
riskPerShareLong := riskPerShareLong > 0 ? riskPerShareLong : 0.01
riskPerShareShort := riskPerShareShort > 0 ? riskPerShareShort : 0.01
positionSizeLong = (equity * riskPerTrade / 100) / riskPerShareLong
positionSizeShort = (equity * riskPerTrade / 100) / riskPerShareShort
// Ensure position sizes are positive before entering trades
if (longCondition and (tradeDirection == "Long" or tradeDirection == "Both") and positionSizeLong > 0)
strategy.entry("Long", strategy.long, qty= positionSizeLong)
if (shortCondition and (tradeDirection == "Short" or tradeDirection == "Both") and positionSizeShort > 0)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
// Applying the stop-loss to strategy
strategy.exit("Exit Long", "Long", stop=longStop)
strategy.exit("Exit Short", "Short", stop=shortStop)
////Usar en 1,2 3 4 HRS TSLA