Strategi Mengikuti Saluran Momentum


Tanggal Pembuatan: 2023-12-25 13:14:24 Akhirnya memodifikasi: 2023-12-25 13:14:24
menyalin: 0 Jumlah klik: 729
1
fokus pada
1621
Pengikut

Strategi Mengikuti Saluran Momentum

Ringkasan

Strategi ini didasarkan pada indikator desain saluran momentum sinyal perdagangan, berdasarkan harga menembus saluran naik dan turun untuk menghasilkan sinyal beli dan jual. Strategi ini hanya melakukan perdagangan multihead, jika ada sinyal jual, posisi kosong ke posisi kosong.

Prinsip Strategi

Strategi ini menggunakan rata-rata SMA dan amplitudo fluktuasi nyata ATR untuk membangun saluran momentum. Jalur atas dan bawah saluran adalah:

SMA + ATR * faktor Rel bawah = SMA - ATR * faktor

Ketika harga naik ke atas, sinyal beli dihasilkan; ketika harga turun ke bawah, sinyal jual dihasilkan.

Karena hanya melakukan overhead, maka jika muncul sinyal sell, maka batalkan order open sebelumnya, dan posisi kosong ke posisi kosong.

Secara khusus, logikanya adalah sebagai berikut:

  1. Membangun saluran momentum dengan SMA dan ATR
  2. Ketika harga naik ke jalur, atur harga buka dan pesan lebih banyak
  3. Ketika harga turun ke bawah, hapus pesanan sebelumnya, dan biarkan posisi kosong.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Strategi logis sederhana dan jelas, mudah dipahami dan diterapkan
  2. Indikator Channel Momentum Intuitif dan Akurat dalam Pengertian Tren Pasar
  3. Hanya melakukan perdagangan multi-head, menghindari risiko stop loss
  4. Syarat-syarat tercantum secara berurutan, yang membantu untuk menentukan entries

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. “Saya tidak tahu apa-apa tentang itu, tapi saya tidak tahu apa-apa tentang itu.
  2. “Saya tidak tahu apa yang harus saya lakukan.
  3. Tidak ada mekanisme untuk keluar dari sistem, hanya manusia yang bisa menentukan titik keluarnya.

Tanggapan:

  1. Optimalkan parameter saluran untuk mengurangi sinyal error
  2. Menambahkan modul kosong untuk melakukan transaksi dua arah
  3. Menambahkan mekanisme keluar seperti trailing stop dan mobile stop

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Parameter pengoptimalan, penyesuaian siklus saluran, faktor fluktuasi, dan lain-lain
  2. Tambahkan modul headless untuk menghasilkan sinyal jual berdasarkan harga di bawah rel
  3. Tergabung dengan Stop Loss, yang digabungkan dengan Stop Loss ATR
  4. Pertimbangkan untuk menambahkan lebih banyak kondisi penyaringan untuk menghindari sinyal yang salah
  5. Pengujian Efektifitas Kontrak Berbagai Varietas

Meringkaskan

Strategi ini didasarkan pada indikator channel dinamis, menangkap tren pasar dengan mudah dan efektif. Logika strategi jelas dan mudah dimengerti, menghasilkan sinyal perdagangan melalui harga yang menerobos saluran naik dan turun. Meskipun hanya melakukan multihead dan tanpa mekanisme keluar tidak cukup, tetapi dapat ditingkatkan dengan mengoptimalkan parameter, menambahkan modul headless, menambahkan stop loss, dan lain-lain. Secara keseluruhan, strategi ini memiliki ruang untuk perbaikan yang sangat besar, layak untuk penelitian yang mendalam dan menerapkan strategi kuantitatif.

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

//@version=3
strategy("Keltner Channel Strategy", overlay=true)
source = close

useTrueRange = input(true)
length = input(20, minval=1)
mult = input(1.0)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

if (cancelBcond)
    strategy.cancel("KltChLE")

if (crossUpper)
    strategy.entry("KltChLE", strategy.long, stop=bprice, comment="KltChLE")

if (cancelScond)
    strategy.cancel("KltChSE")

if (crossLower)
    strategy.entry("KltChSE", strategy.short, stop=sprice, comment="KltChSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)