
Strategi ini menggunakan persilangan rata-rata bergerak bergerak bergerak ((ALMA) dengan rata-rata bergerak indeks ((EMA) dengan dua parameter yang berbeda untuk menghasilkan sinyal perdagangan. Strategi ini juga menggabungkan rata-rata bergerak bergerak indeks ((Stochastic RSI) untuk menghindari pembelian dan penjualan yang berlebihan.
Strategi menggunakan ALMA sebagai indikator utama untuk menentukan tren harga. ALMA memiliki fungsi untuk merampingkan data harga, yang dapat menyaring fluktuasi acak harga. Dengan menyesuaikan siklus ALMA, nilai offset dan parameter sigma, dapat membuatnya lebih sensitif atau stabil.
Strategi ini menggunakan dua garis EMA dengan panjang yang berbeda. Ketika garis EMA cepat melintasi garis EMA lambat ke atas, menghasilkan sinyal beli; Ketika garis EMA cepat melintasi garis EMA lambat ke bawah, menghasilkan sinyal jual.
Indikator Stochastic RSI berfungsi untuk menghindari sinyal perdagangan di zona overbought dan oversold. Ini menggabungkan keuntungan dari kedua indikator RSI dan Stochastic untuk lebih baik menilai zona puncak dan lembah. Strategi ini akan membatalkan pesanan overhead atau kosong asli ketika indikator Stochastic RSI overbought atau oversold.
Strategi memanfaatkan keuntungan dari EMA untuk menentukan arah tren harga, bekerja sama dengan indikator ALMA untuk mengidentifikasi peluang overhead dan overhead utama, untuk mencapai perdagangan yang lebih baik.
Siklus EMA, parameter ALMA, dan lain-lain memberikan ruang yang dapat disesuaikan, sehingga pengguna dapat mengoptimalkan parameter sesuai dengan kebutuhan mereka sendiri, sehingga strategi lebih sesuai dengan lingkungan pasar yang berbeda.
Strategi ini memiliki pengaturan stop loss dan stop loss. Menggunakan floating stop loss dapat mengurangi probabilitas stop loss yang dikejar. Pengaturan profit capture dapat mengunci keuntungan dan menghindari kebocoran keuntungan.
Dalam situasi yang rumit, sinyal EMA dan ALMA mungkin salah. Dalam hal ini, Anda harus bergantung pada stop loss untuk mengendalikan kerugian.
Jika parameter tidak diatur dengan benar, EMA dan ALMA tidak dapat bekerja dengan benar, meningkatkan risiko perdagangan. Perlu diuji dan dioptimalkan untuk memilih kombinasi parameter terbaik.
Uji optimasi parameter EMA dan ALMA, pilih parameter yang optimal.
Gabungan dengan indikator lain untuk memfilter sinyal, menghindari sinyal yang salah yang menyebabkan kerugian. Misalnya MACD, KDJ, dll.
Mengoptimalkan stop loss, menemukan keseimbangan antara pengendalian risiko dan keuntungan.
Uji varietas dan parameter siklus yang berbeda, sehingga strategi dapat diterapkan di lebih banyak pasar.
Strategi ini secara keseluruhan adalah strategi pelacakan tren yang sederhana dan praktis. Ini menggunakan EMA silang untuk menentukan arah tren, ALMA untuk menentukan titik penambahan posisi, dan Stochastic RSI untuk menghindari risiko overbought dan oversold, sambil mengatur stop loss dan stop loss untuk mengendalikan risiko. Dengan penyesuaian parameter dan pengoptimalan indikator, strategi ini dapat memperoleh efek yang lebih baik.
/*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)