
Strategi ini menggunakan pergerakan rata-rata bergerak bergerak ((ALMA) dengan dua parameter yang berbeza untuk menghasilkan isyarat perdagangan. Strategi ini juga menggabungkan indeks bergerak rata-rata bergerak ((Stochastic RSI) untuk mengelakkan pembelian dan penjualan yang berlebihan.
Strategi menggunakan ALMA sebagai penunjuk utama untuk menentukan trend harga. ALMA mempunyai fungsi untuk meratakan data harga, yang boleh menyaring turun naik harga secara rawak. Dengan menyesuaikan kitaran ALMA, nilai perpindahan dan parameter sigma, ia boleh dibuat lebih sensitif atau stabil.
Strategi ini menggunakan dua garis EMA yang berbeza panjangnya. Apabila garis EMA cepat ke atas melintasi garis EMA perlahan, ia menghasilkan isyarat beli; Apabila garis EMA cepat ke bawah melintasi EMA perlahan, ia menghasilkan isyarat jual.
Indeks RSI Stochastic berfungsi untuk mengelakkan isyarat dagangan di kawasan yang terlalu banyak dibeli dan dijual. Ia menggabungkan kelebihan RSI dan kedua-dua indikator Stochastic, yang lebih baik untuk menilai kawasan puncak dan lembah.
Strategi memanfaatkan sepenuhnya kelebihan EMA untuk menentukan arah trend harga, bekerjasama dengan penunjuk ALMA untuk mengenal pasti peluang overhead dan overhead utama, untuk mencapai perdagangan yang lebih baik.
Tempoh EMA, parameter ALMA dan sebagainya menyediakan ruang yang boleh disesuaikan, pengguna boleh mengoptimumkan parameter mengikut keperluan mereka sendiri, menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza.
Strategi ini mempunyai seting stop loss yang terbina dalam. Menggunakan stop loss floating dapat mengurangkan kebarangkalian stop loss yang dikejar; seting capaian keuntungan dapat mengunci keuntungan dan mengelakkan pengeluaran keuntungan.
Dalam keadaan yang rumit, EMA dan ALMA boleh menghantar isyarat yang salah. Dalam kes ini, anda perlu bergantung pada stop loss untuk mengawal kerugian.
Jika parameter tidak ditetapkan dengan betul, EMA dan ALMA tidak dapat berfungsi dengan betul, meningkatkan risiko perdagangan. Perlu diuji dan dioptimumkan untuk memilih kombinasi parameter terbaik.
Uji penyesuaian parameter EMA dan ALMA, pilih parameter yang paling sesuai.
Gabungan dengan isyarat penapis indikator lain, mengelakkan isyarat salah yang membawa kerugian. Contohnya MACD, KDJ dan sebagainya.
Mengoptimumkan stop loss dan mencari keseimbangan antara kawalan risiko dan keuntungan.
Uji varieti dan parameter kitaran yang berbeza untuk membolehkan strategi ini digunakan di lebih banyak pasaran.
Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang mudah dan praktikal. Ia menggunakan EMA silang untuk menentukan arah trend, ALMA untuk menentukan titik kenaikan, dan Stochastic RSI untuk mengelakkan risiko overbought dan oversold, sambil menetapkan hentian dan hentian untuk mengawal risiko. Dengan penyesuaian parameter dan pengoptimuman indikator, strategi ini dapat memperoleh kesan 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)