Momentum Smooth Moving Average Line dan Moving Average Line Crossover Strategy

Penulis:ChaoZhang, Tanggal: 2023-11-27 17:35:09
Tag:

img

Gambaran umum

Strategi ini menggunakan persilangan Momentum Smooth Moving Average Line (ALMA) dan dua Exponential Moving Average Lines (EMA) dengan pengaturan parameter yang berbeda untuk menghasilkan sinyal perdagangan.

Prinsip Strategi

Momentum ALMA Line

Strategi ini menggunakan ALMA sebagai indikator utama untuk menilai tren harga. ALMA memiliki fungsi meluruskan data harga dan dapat menyaring fluktuasi acak harga. Dengan menyesuaikan periode, nilai offset dan parameter sigma ALMA, dapat dibuat lebih sensitif atau stabil. Ketika harga naik, ALMA akan menunjukkan warna hijau, dan ketika harga turun, ALMA akan menunjukkan warna merah.

EMA Cepat dan Lambat Crossover

Strategi ini menggunakan dua garis EMA dengan panjang yang berbeda. Ketika garis EMA cepat melintasi di atas garis EMA lambat, sinyal beli dihasilkan. Ketika garis EMA cepat melintasi di bawah EMA lambat, sinyal jual dihasilkan. Perpindahan EMA memiliki kemampuan penilaian tren yang baik. Periode EMA cepat dan lambat dapat disesuaikan melalui parameter untuk beradaptasi dengan berbagai varietas dan siklus perdagangan.

RSI Stochastic

Peran indikator RSI Stochastic adalah untuk menghindari penerbitan sinyal perdagangan di area overbought dan oversold. Ini menggabungkan keuntungan dari kedua indikator RSI dan Stochastic, dan dapat lebih menentukan area puncak dan terendah.

Analisis Keuntungan

Perdagangan mengikuti tren

Strategi ini sepenuhnya menggunakan EMA crossover untuk menentukan arah tren harga, dikombinasikan dengan indikator ALMA untuk menemukan peluang besar panjang dan pendek untuk menerapkan perdagangan tren.

Parameter yang dapat disesuaikan

Periode parameter EMA dan ALMA menyediakan ruang yang dapat disesuaikan. Pengguna dapat mengoptimalkan parameter sesuai dengan kebutuhan mereka untuk membuat strategi lebih sesuai dengan lingkungan pasar yang berbeda.

Mekanisme Stop Loss dan Take Profit

Strategi ini memiliki pengaturan stop loss dan take profit yang terintegrasi. Menggunakan stop loss yang mengambang dapat mengurangi probabilitas stop loss yang dikejar; pengaturan profit taking dapat mengunci keuntungan dan menghindari memuntahkan keuntungan.

Analisis Risiko

Penilaian tren yang salah

Dalam pasar yang kompleks, garis EMA dan ALMA dapat mengeluarkan sinyal yang salah.

Pengaturan parameter yang tidak benar

Jika parameter ditetapkan dengan tidak benar, garis EMA dan ALMA tidak dapat berfungsi dengan benar, yang akan meningkatkan risiko perdagangan. pengujian dan optimalisasi diperlukan untuk memilih kombinasi parameter terbaik.

Optimasi Strategi

  1. Uji dan optimalkan pengaturan parameter EMA dan ALMA untuk memilih parameter yang optimal.

  2. Masukkan indikator lain untuk menyaring sinyal dan menghindari kerugian yang disebabkan oleh sinyal yang salah.

  3. Mengoptimalkan besarnya stop loss untuk menemukan keseimbangan antara pengendalian risiko dan profitabilitas.

  4. Uji varietas dan parameter siklus yang berbeda untuk menerapkan strategi ke lebih banyak pasar.

Ringkasan

Secara keseluruhan, ini adalah strategi pelacakan tren yang sederhana dan praktis. Ini menggunakan EMA crossover untuk menentukan arah tren, indikator ALMA untuk menemukan titik tambahan, RSI Stochastic untuk menghindari risiko overbought dan oversold, sambil mengatur stop loss dan take profit untuk mengendalikan risiko. Melalui penyesuaian parameter dan pengoptimalan indikator, strategi ini dapat mencapai hasil yang baik. Mudah dipahami dan digunakan, dan juga memiliki kemampuan beradaptasi tertentu.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

////Arranged by @ClassicScott
//Strategy Created by @CheatCode1


strategy('ALMA/EMA Strategy', shorttitle='ALMA/EMA Strategy', overlay=true )



////Source Selection & ALMA Variables

//Dominant Momentum ALMA
dsource = input.source(close, title='Source', group='Dominant ALMA')
dperiod = input.int(title='Period', defval=130, group='Dominant ALMA')
doffset = input.float(title='Offset', step=0.025, defval=0.775, group='Dominant ALMA')
dsigma = input.float(title='Sigma', step=0.5, defval=4.5, group='Dominant ALMA')

dalma = ta.alma(dsource, dperiod, doffset, dsigma)

dalma_up_color = input.color(#66bb6a, 'Going Up!', group='Dominant ALMA', inline = '1')
dalma_down_color = input.color(#ef5350, 'Going Down :(', group='Dominant ALMA', inline = '1')
dcolor = close[1] > dalma ? dalma_up_color : dalma_down_color

////ALMA Plots
plot(dalma, color=dcolor, style=plot.style_stepline, linewidth=2, title='Dominant Momentum MA')



//Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1

//Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1 //Strategy by @CheatCode1

cheatcode = input.bool(true, '-----------CHEATC0DE1------------', group = 'Strategy Inputs', confirm = true)

//Variable Declerations/Plot Assingments

inp1 = input.int(49, 'Slow Ema Length', 1, 100, group = 'Strategy Inputs', confirm = true)
inp2 = input.int(9, 'Fast Ema Length', 1, 200, group = 'Strategy Inputs', confirm = true)
inp3 = int(200)
sma1 = ta.sma(close, inp3)
ema1 = ta.ema(close, inp1)
ema2 = ta.ema(close, inp2)

eplot1 = plot(ema1, 'Slow Ema', color.aqua, 1,  plot.style_linebr)
eplot2 = plot(ema2, 'Fast Ema', color.yellow, 1,  plot.style_linebr)
splot1 = plot(sma1, 'Long MA', close[1] < sma1 ? color.red:color.green, 1, plot.style_line, display = display.none)

cross1 = ta.crossover(ema1, ema2)
cross2 = ta.crossunder(ema1, ema2)

plotchar(cross1, '', '↑', location.belowbar,  close[1] > dalma and dalma > sma1 ? na:color.green, size = size.normal, editable = false)
plotchar(cross2, '', '↓', location.abovebar, close[1] < dalma and dalma < sma1 ? na:color.red, size = size.normal, editable = false)
bgcolor(cross1 and close[1] > dalma ? color.new(color.green, 80):cross2 and close[1] < dalma ? color.new(color.red, 80):na)

valueL = ta.valuewhen(cross1 and close[1] > dalma, close, 0)
valueS = ta.valuewhen(cross2 and close[1] < dalma, close, 0)

//Entries

if cross1 and close[2] > dalma[2] and close[1] > dalma[1]
    strategy.entry('Long', strategy.long)
if cross2 and close[2] < dalma[2] and close[1] < dalma[1]
    strategy.entry('Short', strategy.short)
    
//StochRsi
    
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(15, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(8, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//Cancellations

if k > 75
    strategy.cancel('Long')
if k < 25
    strategy.cancel('Short')
    
//Closures

if ta.crossunder(k, d) and k > 92
    strategy.close('Long')
if ta.crossover(k,d) and k < 8
    strategy.close('Short')

//Exit Percents

takeP = input.float(3, title='Take Profit', group = 'Take Profit and Stop Loss') / 100
stopL = input.float(5.49, title = 'Stop Loss', group = 'Take Profit and Stop Loss')/100
// Pre Directionality

Stop_L = strategy.position_avg_price * (1 - stopL)

Stop_S = strategy.position_avg_price * (1 + stopL)

Take_S= strategy.position_avg_price * (1 - takeP)

Take_L = strategy.position_avg_price * (1 + takeP)
     
     
//Post Excecution
if strategy.position_size > 0
    strategy.exit("Flat", limit=Take_L, stop = Stop_L)

if strategy.position_size < 0
    strategy.exit("Flat", limit=Take_S, stop = Stop_S)


Lebih banyak