Strategi Pemecahan Harga Purata Pergerakan Ganda


Tarikh penciptaan: 2023-11-21 15:33:52 Akhirnya diubah suai: 2023-11-21 15:33:52
Salin: 1 Bilangan klik: 601
1
fokus pada
1617
Pengikut

Strategi Pemecahan Harga Purata Pergerakan Ganda

Gambaran keseluruhan

Strategi ini menggunakan dua purata bergerak untuk menilai trend dan penembusan harga. Buat kosong apabila harga naik ke atas dan lebih banyak apabila harga turun ke bawah. Tetapkan stop loss exits untuk mengawal risiko.

Prinsip Strategi

  1. Fungsi sma() digunakan untuk mengira dua purata bergerak jangka pendek dan jangka panjang, yang masing-masing berfungsi sebagai tren atas dan bawah strategi perdagangan.
  2. Hitung harga beli dan harga jual: harga beli di bawah rel dikalikan dengan faktor kurang daripada 1, harga jual di atas rel dikalikan dengan faktor lebih daripada 1.
  3. Apabila harga naik ke atas landasan, buka posisi kosong dengan harga pasaran; apabila harga turun ke bawah landasan, buka lebih banyak kedudukan dengan harga had.
  4. Tetapkan tahun, bulan dan tarikh untuk mengawal kitaran dagangan strategi.
  5. Apabila pengiraan berakhir atau melebihi julat tarikh, semua kedudukan akan dihapuskan.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Sistem dua hala digunakan untuk menyaring bunyi pasaran dan mengenal pasti trend.
  2. Menggunakan harga untuk menentukan masa masuk boleh mengurangkan isyarat palsu.
  3. Menggunakan harga terhad untuk mengurangkan kos kejutan pasaran.
  4. Anda boleh menyesuaikan kitaran dagangan dengan mudah dan mengawal risiko strategi.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Penembusan dua jalur mudah menimbulkan risiko kerugian berturut-turut. Anda boleh menetapkan Exit Stop Loss untuk mengawal kerugian.
  2. Apabila tanda dagangan masuk ke dalam pengumpulan, risiko terlalu banyak perdagangan boleh timbul. Jarak atas dan bawah boleh dikurangkan dengan sewajarnya.
  3. Kad harga terhad boleh menyebabkan sebahagian daripada peluang pembelian terlewat. Anda boleh mempertimbangkan untuk menggunakan kad harga pasaran.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji kombinasi purata bergerak dengan panjang yang berbeza untuk mencari parameter terbaik.
  2. Tambah Volumes untuk menilai jumlah transaksi yang berjaya.
  3. Menambah mekanisme penangguhan yang beradaptasi, menyesuaikan harga penangguhan dalam masa nyata.
  4. Menambah model pembelajaran mesin untuk menilai arah trend.

ringkaskan

Strategi ini adalah strategi yang jelas dan mudah difahami, menggunakan sistem dua hala untuk mengenal pasti trend, menilai masa masuk harga, menyaring kebisingan untuk mencapai keuntungan yang stabil, dan terdapat ruang untuk beberapa penambahbaikan dan pengoptimuman. Secara keseluruhannya, ini adalah strategi perdagangan kuantitatif yang dapat diulang dengan nilai pertempuran sebenar.

Kod 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()