
Strategi ini menggunakan rata-rata bergerak dan rata-rata fluktuasi riil untuk menilai arah tren pasar dan melakukan perdagangan pelacakan tren sesuai dengan arah tren.
Strategi ini menggunakan rata-rata bergerak periode len ma dan rata-rata fluktuasi riil rata-rata periode len 2 kaliatr untuk menilai tren pasar. Aturan penilaian spesifik adalah:
Ketika harga minimum lebih besar dari rata-rata bergerak ditambah rata-rata fluktuasi riil (<< > ma + atr), maka dianggap sebagai tren naik.
Ketika harga tertinggi lebih kecil dari rata-rata bergerak dikurangi rata-rata fluktuasi riil ((high < ma - atr), dinilai sebagai tren menurun。
Dalam kasus lain, keputusan sebelumnya akan tetap berlaku.
Dalam menilai tren naik, lakukan lebih banyak pada tingkat tertentu ketika lebih banyak diizinkan.
Dalam menilai tren turun, ketika diizinkan untuk melakukan shorting, lakukan shorting sesuai dengan proporsi tertentu.
Kondisi posisi terdepan adalah sampai pada tanggal berakhirnya transaksi yang ditentukan.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini menghadapi risiko utama sebagai berikut:
Solusi:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi ini secara keseluruhan jelas dan mudah dipahami, menggunakan moving average untuk menentukan arah tren, dan menggunakan rata-rata fluktuasi nyata untuk mengatur stop loss, untuk dapat secara efektif melacak tren. Namun, ada risiko tertentu, perlu lebih mengoptimalkan parameter pengaturan dan menambahkan indikator penilaian lainnya. Secara keseluruhan, strategi ini memberikan pemikiran yang layak untuk perdagangan yang mengikuti tren.
/*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()