Strategi Trading Trend Moving Average

Penulis:ChaoZhang, Tanggal: 2023-10-09 16:00:02
Tag:

Gambaran umum

Strategi ini adalah strategi perdagangan tren yang didasarkan pada moving average. Strategi ini menggunakan 3 moving average dengan parameter yang berbeda untuk menghasilkan sinyal perdagangan. Strategi ini memiliki 3 garis rata-rata bergerak untuk masuk bertahap panjang atau pendek, yang memungkinkan untuk mengikuti tren.

Logika Strategi

Strategi ini menghitung garis rata-rata bergerak ma dengan panjang len menggunakan fungsi sma. Kemudian ia menghitung 3 garis rata-rata bergerak lain longline1, longline2, longline3 yang bergeser masing-masing sebesar -4%, -5%, -6% berdasarkan ma.

Untuk generasi sinyal panjang, jika posisi saat ini rata, maka akan panjang dengan 1 lot ketika harga melintasi di atas longline1. Jika sudah 1 lot panjang, maka akan menambah 1 lot lagi ketika harga melintasi di atas longline2. Jika sudah 2 lot panjang, maka akan menambah 1 lot lagi ketika harga melintasi di atas longline3. Posisi panjang maksimum adalah 3 lot.

Untuk generasi sinyal pendek, jika sudah panjang, ia keluar dari semua posisi panjang ketika harga melintasi di bawah ma.

Masukan bertahap memungkinkan strategi untuk mengikuti tren.

Keuntungan

  • Menggunakan rata-rata bergerak untuk menentukan arah tren menyaring kebisingan pasar dan memungkinkan keuntungan yang stabil
  • Entri jangka panjang/pendek yang ditingkatkan dapat memperoleh keuntungan lebih banyak dari tren
  • Menggunakan rata-rata bergerak bergeser sebagai titik masuk lebih baik menangkap tren
  • Pemakaian yang relatif kecil, pemakaian maksimum dikontrol sekitar 20%

Risiko

  • Tren murni yang mengikuti strategi cenderung dihancurkan selama pasar yang terikat rentang
  • Sinyal yang tertinggal dari rata-rata bergerak mungkin melewatkan titik balik tren
  • Pendaftaran jangka panjang bertahap dapat mengejar harga tinggi dan meningkatkan risiko
  • Tidak ada mekanisme stop loss yang dapat menyebabkan kerugian besar dari kejadian mendadak

Solusi Risiko:

  • Tambahkan indikator lain untuk menentukan titik balik tren
  • Parameter rata-rata bergerak diatur dengan wajar, tidak terlalu lama untuk menghindari sinyal yang terlalu tertinggal
  • Mengurangi batch masuk yang ditingkatkan untuk menghindari mengejar harga tinggi
  • Tambahkan stop loss bergerak untuk membatasi kerugian

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Tambahkan indikator lain seperti MACD untuk menentukan kekuatan tren

  2. Mengoptimalkan parameter rata-rata bergerak untuk menemukan kombinasi terbaik

  3. Sesuaikan ukuran dan rasio batch masuk bertahap untuk mencegah mengejar harga tinggi

  4. Tambahkan mekanisme stop loss bergerak berdasarkan ATR

  5. Mengatur secara dinamis ukuran posisi berdasarkan volatilitas pasar, mengurangi ukuran ketika volatilitas tinggi

  6. Parameter uji pada produk yang berbeda untuk menemukan simbol optimal

  7. Mengembangkan modul keluar untuk mempertimbangkan mengambil keuntungan pada pola tertentu

Ringkasan

Secara keseluruhan, strategi perdagangan didasarkan pada arah tren yang ditentukan oleh moving average, dan keuntungan dari tren melalui entri bertahap. tetapi memiliki beberapa masalah tertinggal dan risiko mengejar harga tinggi. kita dapat mengoptimalkannya dengan menambahkan indikator bantu, mengoptimalkan parameter, menyesuaikan ukuran posisi, menambahkan stop loss, dll, untuk beradaptasi dengan kondisi pasar yang berbeda dan mencapai keuntungan yang stabil.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult

//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
    strategy.entry("TP", strategy.short, 0, limit = ma)
    

Lebih banyak