
Strategi ini menggunakan purata bergerak dan purata kadar turun naik sebenar untuk menilai arah trend pasaran, dan mengikuti perdagangan mengikut arah trend.
Strategi ini menggunakan purata bergerak masa len dan rata-rata pergerakan sebenar masa len 2 kaliatr untuk menilai trend pasaran. Peraturan penilaian khusus adalah:
Apabila harga terendah lebih besar daripada purata bergerak ditambah rata-rata kadar turun naik sebenar, ia dianggap sebagai trend naik.
Apabila harga tertinggi lebih kecil daripada purata bergerak tolak purata kadar pergerakan sebenar ((high < ma - atr), dinilai sebagai trend menurun。
Dalam kes-kes lain, keputusan yang dibuat sebelum ini akan kekal.
Dalam menilai trend naik, apabila dibenarkan untuk melakukan lebih banyak, lakukan lebih banyak mengikut perkadaran tertentu.
Dalam menilai trend menurun, apabila dibenarkan untuk melakukan blanja, lakukan blanja mengikut perkadaran tertentu.
Syarat setar adalah untuk mencapai tarikh akhir dagangan yang ditetapkan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai risiko utama:
Penyelesaian:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi ini secara keseluruhan jelas dan mudah difahami, menggunakan purata bergerak untuk menentukan arah trend, dan menggunakan purata kadar turun naik sebenar untuk menetapkan hentian, dapat mengesan trend dengan berkesan. Tetapi terdapat risiko tertentu, perlu menetapkan parameter yang lebih baik dan menambah indikator penghakiman lain.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//2019
//Noro
//@version=4
strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(30, minval = 2, title = "MA Length")
src = input(ohlc4, title = "MA Source")
limitmode = input(false)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//MA + BG
atr = sma(tr, len) * 2
ma = sma(src, len)
plot(ma, color = color.blue, linewidth = 4)
trend = 0
trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1]
col = trend == 1 ? color.lime : color.red
bgcolor(col, transp = 70)
//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1 and limitmode == false
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode == false
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if trend == 1 and limitmode
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
// if time > timestamp(toyear, tomonth, today, 23, 59)
// strategy.close_all()