
Strategi ini adalah strategi pemecahan tren berdasarkan indikator ATR. Gagasan utamanya adalah untuk melakukan operasi pemecahan tren ketika harga melebihi ATR beberapa kali lipat. Strategi ini juga mencakup pengakuan tren dan penggunaan jangka waktu untuk membatasi perdagangan.
Strategi ini menggunakan indikator ATR untuk menentukan amplitudo pergerakan harga. ATR adalah amplitudo rata-rata yang sebenarnya, yang mengukur amplitudo rata-rata pergerakan harga dalam periode waktu tertentu.
Ketika harga naik menerobos atas numATRs kali ATR, melakukan multi operasi; ketika harga turun menerobos bawah numATRs kali ATR, melakukan shorting operasi.
Selain itu, strategi menambahkan variabel BOOL yang membutuhkan posisi panjang ((needlong) dan yang membutuhkan posisi kosong ((needshort), yang dapat dikontrol hanya untuk melakukan lebih banyak atau hanya untuk melakukan kosong. Strategi juga mengatur kisaran tanggal untuk melakukan perdagangan hanya antara tanggal yang ditentukan, sehingga memungkinkan batasan jangka waktu.
Strategi menggunakan variabel ukuran untuk menilai posisi, menghitung jumlah taruhan berdasarkan situasi posisi. Jumlah taruhan berdasarkan persentase hak dan kepentingan akun.
Strategi ini secara keseluruhan jelas dan mudah dipahami, menggunakan indikator ATR secara otomatis beradaptasi dengan volatilitas pasar, merupakan strategi pelacakan tren umum. Dengan mengoptimalkan parameter dan menggabungkan strategi lain, kinerja dan stabilitas strategi dapat ditingkatkan lebih lanjut. Namun, perlu berhati-hati untuk mencegah kerugian tunggal yang terlalu besar, dan memperhatikan kekurangan stop loss ketika situasi berubah drastis.
/*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)))