
Strategi Crossover Indikator Momentum adalah kaedah perdagangan yang menggabungkan purata bergerak eksponensial (EMA) dan isyarat indeks kekuatan relatif (RSI). Strategi ini bertujuan untuk menggunakan persilangan dua garis EMA untuk menghasilkan isyarat beli dan jual, untuk berdagang di pasaran kewangan.
Pusat strategi ini adalah EMA’s Fast and Slow Line Crossing System. Strategi ini mentakrifkan tiga garis EMA dengan parameter yang berbeza:ema1、ema2danema3Antara lain:ema1Ini menunjukkan trend jangka pendek.ema2Ini menunjukkan trend jangka menengah.ema3Mewakili trend jangka panjang. Apabila trend jangka pendek melintasi trend pertengahan, ia menghasilkan isyarat beli. Apabila trend jangka pendek melintasi trend pertengahan, ia menghasilkan isyarat jual.
Untuk menyaring isyarat diagnostik yang salah, dasar ini juga menetapkan dua syarat tambahan:bodybar1 > bodybar2danclose > entrybar(Sinyal beli) atauclose < entrybar(Signal Jual) 。 Ini memastikan bahawa hubungan panjang entiti antara dua garis K yang terdekat sesuai dengan arah isyarat, dan harga menembusi titik masuk, untuk mengelakkan masuk semula 。
Selain itu, strategi ini digabungkan dengan indikator RSI evalue, kawasan RSI yang tinggi digunakan untuk menentukan isyarat overbought dan kawasan RSI yang rendah digunakan untuk menentukan isyarat oversold. Ini membantu mengelakkan isyarat salah dalam pasaran yang terlalu panas dan terlalu sejuk.
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Strategi ini boleh dioptimumkan dalam beberapa arah:
Strategi penyambungan penunjuk momentum menggabungkan kelebihan EMA dan RSI, membentuk isyarat perdagangan berdasarkan penyambungan penunjuk. Strategi ini mudah digunakan, sesuai untuk pemula, tetapi juga dapat diperluas dan dioptimumkan mengikut keperluan sebenar, meningkatkan keberkesanan strategi. Dengan pengurusan risiko yang ketat, strategi ini dijangka menghasilkan 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