Strategi Mengikuti Saluran Momentum


Tarikh penciptaan: 2023-12-25 13:14:24 Akhirnya diubah suai: 2023-12-25 13:14:24
Salin: 0 Bilangan klik: 729
1
fokus pada
1621
Pengikut

Strategi Mengikuti Saluran Momentum

Gambaran keseluruhan

Strategi ini adalah berdasarkan pada indikator reka bentuk saluran momentum untuk menghasilkan isyarat beli dan jual berdasarkan harga yang menembusi saluran naik dan turun. Strategi ini hanya melakukan perdagangan berganda, dan jika isyarat jual muncul, ia akan berada di kedudukan kosong ke kedudukan kosong.

Prinsip Strategi

Strategi ini menggunakan rata-rata SMA dan amplitudo pergerakan sebenar ATR untuk membina saluran momentum. Laluan atas dan bawah saluran adalah:

Laluan atas = SMA + ATR * faktor Laluan bawah = SMA - ATR * faktor

Apabila harga naik ke atas, ia menghasilkan isyarat beli; apabila harga turun ke bawah, ia menghasilkan isyarat jual.

Oleh kerana hanya melakukan lebih banyak kepala, jika ada isyarat menjual, membatalkan pesanan terbuka sebelumnya, dan meletakkan kedudukan kosong ke keadaan kosong.

Secara ringkasnya, logik strategi adalah seperti berikut:

  1. Membina saluran tenaga menggunakan SMA dan ATR
  2. Tetapkan harga bukaan dan order lebih banyak apabila harga naik
  3. Apabila harga turun ke bawah, anda boleh menebus pesanan yang lebih besar sebelum ini, menjadikan kedudukan kosong.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Strategi logik mudah difahami dan mudah dilaksanakan
  2. Indeks saluran tenaga intuitif, penilaian tepat mengenai trend pasaran
  3. Hanya berdagang dalam jumlah yang banyak dan mengelakkan risiko terhad
  4. Syarat-syarat yang berturut-turut, yang membantu untuk menentukan entries

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Ia mungkin berlaku apabila pasaran bergolak.
  2. Hanya berkerja lebih banyak, tidak dapat memanfaatkan peluang kosong
  3. Tidak ada mekanisme keluar, penentuan titik keluar dilakukan secara manual

Kaedah pencegahan:

  1. Optimumkan parameter saluran untuk mengurangkan isyarat kesilapan
  2. Tambah modul kosong untuk perdagangan dua hala
  3. Menambah mekanisme keluar seperti berhenti bergerak, trailing stop

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Parameter pengoptimuman, penyesuaian kitaran saluran, faktor kadar turun naik dan sebagainya
  2. Tambah modul kepala kosong untuk menghasilkan isyarat jual berdasarkan harga di bawah landasan
  3. Memasuki mekanisme Hentikan Kerosakan, digabungkan dengan Hentikan Kerosakan ATR
  4. Pertimbangkan untuk menambah lebih banyak syarat penapisan untuk mengelakkan isyarat yang salah
  5. Uji kebolehpasaran kontrak pelbagai jenis

ringkaskan

Strategi ini berdasarkan pada indikator saluran momentum, menangkap trend pasaran dengan mudah dan berkesan. Logik strategi jelas dan mudah difahami, menghasilkan isyarat perdagangan melalui harga yang menerobos saluran naik dan turun. Walaupun hanya melakukan pelbagai kepala dan tidak ada mekanisme keluar tidak mencukupi, tetapi dapat diperbaiki dengan pengoptimuman parameter, menambah modul kepala kosong, menambah henti rugi dan sebagainya. Secara keseluruhan, strategi ini mempunyai ruang untuk penambahbaikan yang sangat besar, dan merupakan strategi kuantitatif yang bernilai kajian mendalam dan aplikasi.

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