Strategi ini secara dinamis memilih jenis rata-rata bergerak yang berbeda di beberapa kerangka waktu untuk menghasilkan sinyal perdagangan.
Strategi ini memungkinkan untuk memilih dari SMA, EMA, TEMA, WMA dan HMA moving average, dengan panjang periode yang dapat disesuaikan.
Secara khusus, strategi pertama mendefinisikan periode backtest berdasarkan parameter input. kemudian menghitung lima jenis moving average:
Rata-rata bergerak yang sesuai digambarkan berdasarkan pemilihan.
Dengan menggabungkan berbagai jenis rata-rata bergerak, strategi dapat meluruskan data harga dan menyaring kebisingan pasar untuk menghasilkan sinyal perdagangan yang lebih dapat diandalkan.
Risiko dapat dikurangi dengan:
Strategi ini dapat ditingkatkan dalam beberapa aspek:
Tambahkan filter lain untuk sinyal yang lebih stabil
contohnya indikator volume untuk menghindari penyusutan palsu tanpa konfirmasi volume.
Mengoptimalkan masuk dan keluar logika
Tetapkan saluran harga dan stop loss untuk mengurangi kerugian yang tidak perlu.
Periode rata-rata bergerak dinamis
Gunakan periode yang lebih lama dalam tren yang kuat dan periode yang lebih pendek selama konsolidasi.
Meningkatkan pengelolaan uang
Sesuaikan ukuran posisi berdasarkan penarikan dan pengambilan keuntungan.
Strategi ini menggabungkan berbagai rata-rata bergerak di seluruh kerangka waktu untuk menghasilkan tren yang relatif stabil berikut efek. Dengan ruang yang cukup untuk optimasi dalam entri, keluar, parameter dan manajemen uang, itu dapat ditingkatkan untuk kinerja dunia nyata yang lebih baik.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000) qty = input(100000000, "Buy quantity") testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"]) len1 = input(7, minval=1, title="Period") s=sma(close,len1) e=ema(close,len1) xEMA1 = ema(close, len1) xEMA2 = ema(xEMA1, len1) xEMA3 = ema(xEMA2, len1) t = 3 * xEMA1 - 3 * xEMA2 + xEMA3 f_hma(_src, _length)=> _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length))) h = f_hma(close, len1) w = wma(close, len1) ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na buy= close>ma sell= close<ma alertcondition(buy, title='buy', message='buy') alertcondition(sell, title='sell', message='sell') ordersize=floor(strategy.equity/close) if testPeriod() strategy.entry("long",strategy.long,ordersize,when=buy) strategy.close("long", when = sell )