
Momentum Indicator Crossover Strategy adalah strategi perdagangan yang menggabungkan indikator Moving Average Eksponensial (EMA) dan indikator Relative Strength Index (RSI) yang kuat. Strategi ini bertujuan untuk memanfaatkan persilangan dua garis EMA untuk menghasilkan sinyal beli dan jual, sehingga dapat diperdagangkan di pasar keuangan.
Inti dari strategi ini adalah EMA’s fast-slow line-crossing system. Strategi ini mendefinisikan tiga garis EMA dengan parameter yang berbeda:ema1、ema2Danema3Di antaranya,ema1Ini adalah tren jangka pendek.ema2Ini adalah tren jangka menengah.ema3Mewakili tren jangka panjang. Ketika tren jangka pendek melewati tren menengah, menghasilkan sinyal beli. Ketika tren jangka pendek melewati tren menengah, menghasilkan sinyal jual.
Untuk memfilter sinyal diagnostik yang salah, kebijakan ini juga mendefinisikan dua kondisi tambahan:bodybar1 > bodybar2Danclose > entrybar(Sinyal beli) atauclose < entrybar(Sell signal) 。 Ini memastikan bahwa hubungan panjang entitas dari dua garis K yang paling dekat sesuai dengan arah sinyal, dan bahwa harga menembus titik masuk, untuk menghindari masuk kembali 。
Selain itu, strategi ini digabungkan dengan evaluasi indikator RSI, di mana area RSI tinggi digunakan untuk mendefinisikan sinyal overbought dan area RSI rendah digunakan untuk mendefinisikan sinyal oversold. Ini membantu menghindari sinyal yang salah di pasar yang terlalu panas dan terlalu dingin.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki risiko sebagai berikut:
Strategi ini dapat dioptimalkan dari beberapa arah:
Strategi crossover indikator momentum mengintegrasikan keunggulan EMA dan RSI, berdasarkan crossover indikator membentuk sinyal perdagangan. Strategi ini sederhana dan praktis, cocok untuk pemula, tetapi juga dapat diperluas dan dioptimalkan sesuai dengan kebutuhan nyata, meningkatkan efektivitas strategi. Dengan manajemen risiko yang ketat, strategi ini diharapkan untuk mendapatkan keuntungan tambahan yang stabil.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('EMA Crossover Strategy', shorttitle='EMA Crossover', overlay=true)
// Define input for position size as a percentage of equity
position_size_pct = input(1, title='Position Size (%)') / 100
//Input EMA
len1 = input.int(25, minval=1, title='EMA 1')
src1 = input(close, title='Source')
ema1 = ta.ema(src1, len1)
len2 = input.int(100, minval=1, title='EMA 2')
src2 = input(close, title='Source')
ema2 = ta.ema(src2, len2)
len3 = input.int(200, minval=1, title='EMA 3')
src3 = input(close, title='Source')
ema3 = ta.ema(src3, len3)
//End of format
//Format RSI
lenrsi = input(14, title='RSI length')
outrsi = ta.rsi(close,lenrsi)
//plot(outrsi, title='RSI', color=color.new(color.blue, 0), linewidth=1)
//hline(70, 'Overbought', color=color.red)
//hline(30, 'Oversold', color=color.green)
//End of format
bodybar1 = math.abs(close - open)
bodybar2 = math.abs(close[1] - open[1])
// Plot the EMAs
plot(ema1, color=color.new(color.blue, 0), title='EMA 1')
plot(ema2, color=color.new(color.red, 0), title='EMA 2')
//plot(ema3, color=color.new(#ffffff, 0), title='EMA 3')
// EMA Crossover conditions
emaCrossoverUp = ta.crossover(ema1, ema2)
emaCrossoverDown = ta.crossunder(ema1, ema2)
var entrybar = close // Initialize entrybar with the current close
// Calculate crossovers outside of the if statements
emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar
emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar
plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny)
plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny)
// Define trading logic with custom position size and RSI conditions
if emaCrossoverUp or emaCrossoverUpOccured
strategy.entry('Buy', strategy.long)
entrybar := close // Update entrybar when entering a new buy position
entrybar
if emaCrossoverDown or emaCrossoverDownOccured
strategy.entry('Sell', strategy.short)
entrybar := close // Update entrybar when entering a new sell position
entrybar