Strategi Breakout Harga Rata-rata Bergerak Ganda


Tanggal Pembuatan: 2023-11-21 15:33:52 Akhirnya memodifikasi: 2023-11-21 15:33:52
menyalin: 1 Jumlah klik: 601
1
fokus pada
1617
Pengikut

Strategi Breakout Harga Rata-rata Bergerak Ganda

Ringkasan

Strategi ini menggunakan dua rata-rata bergerak untuk menilai tren dan terobosan harga. Buat kosong ketika harga naik ke tray dan buat lebih banyak ketika harga turun ke tray, dan atur stop loss exit untuk mengendalikan risiko.

Prinsip Strategi

  1. Fungsi sma() digunakan untuk menghitung dua rata-rata bergerak jangka pendek dan jangka panjang, masing-masing sebagai tren naik dan turun dari strategi perdagangan.
  2. Hitung harga beli dan harga jual: harga beli dikalikan dengan faktor yang lebih kecil dari 1 dan harga jual dikalikan dengan faktor yang lebih besar dari 1
  3. Ketika harga naik, buka posisi kosong dengan harga pasar; ketika harga turun, buka posisi tambahan dengan harga batas.
  4. Set tahun, bulan dan tanggal untuk mengontrol siklus perdagangan strategi.
  5. Setelah penghitungan selesai atau di luar batas waktu, semua posisi akan dihapus.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Dengan sistem dual track, Anda dapat menyaring kebisingan pasar dan mengidentifikasi tren.
  2. Menggunakan harga terobosan untuk menentukan waktu masuk, dapat mengurangi sinyal palsu.
  3. Menggunakan limit order untuk mengurangi biaya dampak pasar.
  4. Anda dapat dengan mudah menyesuaikan siklus perdagangan dan mengontrol risiko strategi.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Penembusan dua jalur mudah menimbulkan risiko kerugian berkelanjutan. Anda dapat mengatur Stop Loss Exit untuk mengendalikan kerugian.
  2. Pada saat masuk ke dalam inventarisasi, risiko perdagangan yang berlebihan dapat terjadi.
  3. Harga terbatas dapat menyebabkan beberapa kesempatan pembelian terlewatkan. Anda dapat mempertimbangkan untuk menggunakan harga pasar.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Uji kombinasi rata-rata bergerak dengan panjang yang berbeda untuk menemukan parameter optimal.
  2. Menambahkan volume untuk menilai terobosan volume transaksi.
  3. Menambahkan mekanisme penutupan yang dapat beradaptasi dan menyesuaikan harga penutupan secara real-time.
  4. Menambahkan model pembelajaran mesin untuk menilai arah tren.

Meringkaskan

Strategi ini memiliki konsep yang jelas dan mudah dimengerti, dengan sistem dua jalur untuk mengidentifikasi tren, menilai waktu masuk untuk harga yang terobosan, dapat menyaring kebisingan untuk menghasilkan keuntungan yang stabil, dan ada ruang untuk beberapa perbaikan dan pengoptimalan. Secara keseluruhan, ini adalah strategi perdagangan kuantitatif yang dapat direplikasi dengan nilai pertempuran nyata.

Kode Sumber Strategi
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Shift MA Strategy v1.0", shorttitle = "Shift MA str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, defval = 1, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
buylevel = input(-5.0, defval = -5.0, minval = -100, maxval = 0, title = "Buy line (lime)")
selllevel = input(0.0, defval = 0.0, minval = -100, maxval = 100, title = "Sell line (red)")
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")

//SMAs
sma = sma(src, per) 
buy = sma * ((100 + buylevel) / 100)
sell = sma * ((100 + selllevel) / 100)
plot(buy, linewidth = 2, color = lime, title = "Buy line")
plot(sell, linewidth = 2, color = red, title = "Sell line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0
    strategy.entry("L", strategy.long, lot, limit = buy)
    
if (not na(close[per]))    
    strategy.entry("Close", strategy.short, 0, limit = sell)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()