
Strategi ini menghasilkan isyarat perdagangan dengan memilih secara dinamik pelbagai jenis purata bergerak dan menggabungkannya dengan beberapa tempoh masa.
Strategi ini membolehkan memilih lima indikator purata bergerak SMA, EMA, TEMA, WMA, dan HMA, dan menetapkan panjang kitaran garis rata-rata. Strategi ini akan memetakan pelbagai jenis garis rata-rata mengikut pilihan dinamik.
Khususnya, strategi pertama menentukan kitaran pengembalian berdasarkan parameter input. Kemudian menghitung lima rata-rata:
Mengikut pilihan, melukis garis rata-rata yang sesuai. Apabila harga penutupan lebih tinggi daripada garis rata-rata, lakukan lebih banyak; Apabila harga penutupan lebih rendah daripada garis rata-rata, kosongkan.
Strategi ini dapat menghasilkan isyarat perdagangan yang lebih dipercayai dengan menggunakan kombinasi pelbagai jenis garis rata, yang dapat meratakan data harga, menapis bunyi pasaran, dan membolehkan panjang kitaran garis rata yang disesuaikan, yang dapat diperdagangkan untuk trend dalam kitaran yang berbeza.
Risiko boleh dikurangkan dengan mengoptimumkan:
Strategi ini boleh dioptimumkan dalam beberapa arah:
Sebagai contoh, penunjuk kuantiti boleh dimasukkan, yang menghasilkan isyarat perdagangan hanya jika jumlah dagangan meningkat, menapis beberapa pecah palsu.
Anda boleh menetapkan corong, hanya masuk apabila harga menembusi corong; menetapkan garisan stop loss, harga menyentuh garisan stop loss. Ini dapat mengurangkan kerugian yang tidak perlu.
Anda boleh menyesuaikan kitaran garis purata mengikut keadaan pasaran yang dinamik, gunakan garis purata jangka panjang apabila trend lebih jelas, gunakan garis purata jangka pendek semasa pencatatan.
Anda boleh menyesuaikan saiz kedudukan mengikut keadaan penarikan balik, mengurangkan kedudukan semasa penarikan balik, dan meningkatkan kedudukan secara sederhana semasa keuntungan.
Strategi ini dengan menggunakan kombinasi pelbagai indikator garis rata, digabungkan dengan beberapa tempoh masa, membentuk kesan trend yang lebih stabil. Terdapat ruang yang lebih besar untuk mengoptimumkan strategi, dan boleh diperbaiki dari segi penapisan masuk, cara keluar, pengoptimuman parameter, dan lain-lain.
/*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 )