
Strategi ini adalah strategi penembusan trend berdasarkan indikator ATR. Idea utamanya adalah untuk melakukan operasi penembusan trend apabila harga melebihi ATR beberapa kali ganda. Strategi ini juga mengandungi pengesahan trend dan fungsi untuk membatasi perdagangan menggunakan julat tarikh.
Strategi menggunakan ATR untuk menentukan amplitudo pergerakan harga. ATR mewakili amplitudo sebenar rata-rata, yang mengukur amplitudo pergerakan harga rata-rata dalam tempoh masa tertentu.
Apabila harga naik menembusi numATRs di atas berganda ATR, lakukan operasi berganda; apabila harga turun menembusi numATRs di bawah berganda ATR, lakukan operasi shorting.
Di samping itu, strategi menambah pembolehubah BOOL yang memerlukan kedudukan panjang ((needlong) dan yang memerlukan posisi kosong ((needshort), yang boleh mengawal hanya melakukan lebih banyak atau hanya melakukan kosong. Strategi juga menetapkan julat tarikh untuk berdagang hanya antara tarikh yang ditetapkan, yang membolehkan batasan julat masa.
Strategi menggunakan pembolehubah saiz untuk menilai kedudukan, mengira jumlah tangan tunggal berdasarkan keadaan kedudukan. Jumlah tangan dikira mengikut peratusan hak dan kepentingan akaun.
Strategi ini secara keseluruhan mudah difahami, menggunakan indikator ATR untuk menyesuaikan diri dengan turun naik pasaran secara automatik, merupakan strategi trend trend umum. Dengan mengoptimumkan parameter dan menggabungkan strategi lain, prestasi dan kestabilan strategi dapat ditingkatkan lagi.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Noro's Volty Strategy v1.0", shorttitle = "Volty 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
length = input(5)
numATRs = input(0.75)
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")
//Indicator
atrs = sma(tr, length) * numATRs
//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[length])) and needlong
strategy.entry("L", strategy.long, lot, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needlong == false
strategy.entry("L", strategy.long, 0, stop = close + atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort
strategy.entry("S", strategy.short, lot, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if (not na(close[length])) and needshort == false
strategy.entry("S", strategy.short, 0, stop = close - atrs, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))