Strategi ini secara dinamik memilih pelbagai jenis purata bergerak di pelbagai jangka masa untuk menjana isyarat perdagangan.
Strategi ini membolehkan memilih dari purata bergerak SMA, EMA, TEMA, WMA dan HMA, dengan panjang tempoh yang boleh disesuaikan.
Secara khusus, strategi pertama menentukan tempoh backtest berdasarkan parameter input. ia kemudian mengira lima jenis purata bergerak:
Purata bergerak yang sepadan digambarkan berdasarkan pemilihan. Ia pergi panjang apabila harga penutupan di atas purata bergerak, dan pergi pendek apabila di bawah.
Dengan menggabungkan pelbagai jenis purata bergerak, strategi ini dapat meluruskan data harga dan menapis bunyi bising pasaran untuk menjana isyarat perdagangan yang lebih boleh dipercayai.
Risiko boleh dikurangkan dengan:
Strategi ini boleh ditingkatkan dalam beberapa aspek:
Tambah penapis lain untuk isyarat yang lebih stabil
contohnya penunjuk jumlah untuk mengelakkan pecah palsu tanpa pengesahan jumlah.
Mengoptimumkan logik masuk dan keluar
Tetapkan saluran harga dan hentikan kerugian untuk mengurangkan kerugian yang tidak perlu.
Tempoh purata bergerak dinamik
Gunakan tempoh yang lebih lama dalam trend yang kuat dan tempoh yang lebih pendek semasa penyatuan.
Meningkatkan pengurusan wang
Sesuaikan saiz kedudukan berdasarkan pengeluaran dan mengambil keuntungan.
Strategi ini menggabungkan pelbagai purata bergerak merentasi bingkai masa untuk menjana kesan trend yang agak stabil. Dengan ruang yang cukup untuk pengoptimuman dalam entri, keluar, parameter dan pengurusan wang, ia boleh ditingkatkan untuk prestasi dunia sebenar 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 )