
Strategi ini menghasilkan sinyal perdagangan dengan memilih berbagai jenis moving average secara dinamis dan menggabungkannya dengan beberapa periode waktu.
Strategi ini memungkinkan untuk memilih lima indikator rata-rata bergerak SMA, EMA, TEMA, WMA, dan HMA, dan mengatur durasi rata-rata rata-rata. Strategi ini akan memetakan berbagai jenis rata-rata sesuai dengan dinamika yang dipilih.
Secara khusus, strategi pertama-tama mendefinisikan periode pengembalian berdasarkan parameter masukan. Kemudian menghitung lima indikator rata-rata:
Pada pilihan, gambar garis rata-rata yang sesuai. Bila harga tutup lebih tinggi dari garis rata-rata, lakukan lebih banyak; Bila harga tutup lebih rendah dari garis rata-rata, kosongkan.
Strategi ini dapat menghasilkan sinyal perdagangan yang lebih andal dengan menggunakan kombinasi dari berbagai jenis garis rata-rata, yang dapat meluruskan data harga, memfilter kebisingan pasar, dan memungkinkan untuk menyesuaikan panjang siklus garis rata-rata, yang dapat diperdagangkan untuk tren dalam periode yang berbeda.
Mengurangi risiko dengan mengoptimalkan:
Strategi ini dapat dioptimalkan dari beberapa arah:
Misalnya, Anda dapat menambahkan indikator kuantitatif, yang hanya menghasilkan sinyal perdagangan jika volume transaksi meningkat, dan memfilter beberapa terobosan palsu.
Anda dapat mengatur saluran, hanya masuk ketika harga menembus saluran; mengatur garis stop loss, harga menyentuh garis stop loss dan kemudian merata. Hal ini dapat mengurangi kerugian yang tidak perlu.
Periode rata-rata rata-rata dapat disesuaikan sesuai dengan dinamika kondisi pasar, menggunakan rata-rata rata-rata jangka panjang ketika tren lebih jelas, menggunakan rata-rata rata-rata jangka pendek saat pencatatan.
Ukuran posisi dapat disesuaikan sesuai dengan kondisi penarikan, mengurangi posisi saat penarikan, dan meningkatkan posisi secara moderat saat menghasilkan uang.
Strategi ini dengan menggunakan kombinasi berbagai indikator garis rata, dikombinasikan dengan beberapa periode waktu, membentuk efek pelacakan tren yang relatif stabil. Ada ruang yang luas untuk pengoptimalan strategi, dapat diperbaiki dari filter masuk, cara keluar, pengoptimalan parameter, dan lain-lain, sehingga strategi mendapatkan efek yang lebih baik di real-time.
/*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 )