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.
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.
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.
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.
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.
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.
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.
Dalam pasar yang kompleks, garis EMA dan ALMA dapat mengeluarkan sinyal yang salah.
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.
Uji dan optimalkan pengaturan parameter EMA dan ALMA untuk memilih parameter yang optimal.
Masukkan indikator lain untuk menyaring sinyal dan menghindari kerugian yang disebabkan oleh sinyal yang salah.
Mengoptimalkan besarnya stop loss untuk menemukan keseimbangan antara pengendalian risiko dan profitabilitas.
Uji varietas dan parameter siklus yang berbeda untuk menerapkan strategi ke lebih banyak pasar.
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)