
Strategi ini adalah strategi perdagangan yang mengikuti tren, menggunakan rata-rata bergerak sederhana untuk menentukan arah tren pasar, dan menempatkan harga terikat pada rata-rata bergerak sesuai dengan arah tren, untuk mencapai perdagangan yang mengikuti tren.
Perhitungan SMA sederhana, dan arah trend.
Jika filter umpan balik diaktifkan, gunakan titik rendah di atas SMA untuk menilai tren naik, dan titik tinggi di bawah SMA untuk menilai tren turun. Jika filter umpan balik tidak diaktifkan, gunakan harga tutup di atas SMA untuk menilai tren naik, dan harga tutup di bawah SMA untuk menilai tren turun.
Berdasarkan arah tren tren dan parameter arah perdagangan yang diaktifkan needlong, needshort, tempatkan pesanan batas pada harga SMA, logika spesifiknya adalah:
Jika Anda perlu melakukan lebih banyak (needlong adalah benar) dan berada dalam tren naik, tempatkan pesanan batas maksimum pada harga SMA
Jika diperlukan shorting (needshort adalah true) dan dalam tren turun, tempatkan shorting limit order pada harga SMA
Setting Stop Loss Logic, jika arah memegang posisi tidak sesuai dengan arah tren, stop loss akan keluar.
Berdasarkan parameter kisaran tanggal, transaksi hanya dalam kisaran tanggal yang ditentukan.
Menggunakan SMA untuk menilai tren, Anda dapat secara efektif menyaring kebisingan pasar dan mengunci tren yang lebih panjang.
Dengan menempatkan limit order pada harga SMA, Anda bisa mendapatkan titik masuk yang lebih baik pada tahap awal tren.
Anda dapat memilih untuk hanya melakukan lebih atau hanya melakukan lebih, dengan fleksibilitas untuk menyesuaikan dengan gaya perdagangan pribadi Anda.
Anda dapat mengatur mekanisme penarikan stop loss untuk menghindari kerugian yang lebih besar.
Dukungan untuk mengatur jangka waktu perdagangan untuk menghindari fluktuasi besar yang disebabkan oleh peristiwa besar.
SMA sebagai indikator untuk menilai tren, ada masalah lag, mungkin kehilangan titik perubahan tren, sehingga terjadi kerugian.
Ada masalah dengan akses terbatas yang tidak cukup fleksibel, yang mungkin tidak dapat diakses karena perubahan tren dalam jangka pendek.
Parameter siklus SMA harus diatur secara wajar, jika tidak diatur dengan benar, akan mendapatkan penilaian tren yang salah.
Perlu mempertimbangkan rasionalnya parameter waktu perdagangan untuk menghindari kehilangan peluang perdagangan atau periode risiko.
Anda dapat mempertimbangkan untuk menambahkan penilaian indikator lain, melakukan verifikasi multi-indikator, dan menghindari masalah keterlambatan SMA.
Anda dapat mengatur mode pelacakan quotes yang telah selesai untuk mengubahnya menjadi pelacakan quotes pasar ketika harga melampaui SMA, meningkatkan fleksibilitas pelacakan.
Dinamis mengoptimalkan parameter siklus SMA agar dapat beradaptasi dengan lingkungan pasar yang berbeda.
Penetapan posisi stop loss menjadi harga terendah/tinggi dalam tren, bukan posisi SMA yang ketat, membuat stop loss lebih fleksibel.
Menambahkan elemen perdagangan algoritmik, membuat waktu perdagangan lebih cerdas dan fleksibel, menghindari saat-saat risiko besar.
Strategi ini secara keseluruhan adalah strategi pelacakan tren yang relatif sederhana, ide utamanya adalah menggunakan SMA untuk menentukan arah tren, dan menempatkan harga SMA untuk melakukan pelacakan perdagangan, yang dapat meningkatkan fleksibilitas, adaptabilitas, dan kecerdasan strategi dengan beberapa pengoptimalan. Strategi ini mudah dimengerti dan diterapkan, cocok untuk pembelajaran pemula perdagangan algoritma, tetapi perlu memperhatikan risiko, menilai hasil pengembalian dengan hati-hati, dan melakukan pemantauan dan pengoptimalan yang ketat di tempat nyata.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)
needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
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
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)
//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)
//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")