Sistem Mengikuti Aliran Pecah Purata Pergerakan Purata Pergerakan


Tarikh penciptaan: 2023-11-15 11:00:25 Akhirnya diubah suai: 2023-11-15 11:00:25
Salin: 0 Bilangan klik: 536
1
fokus pada
1617
Pengikut

Sistem Mengikuti Aliran Pecah Purata Pergerakan Purata Pergerakan

Gambaran keseluruhan

Strategi ini adalah sistem pengesanan trend klasik. Ia menggunakan purata bergerak untuk menentukan arah trend, dan masuk ke dalam apabila ia menembusi saluran Dongxian. Tetapan parameter saluran Dongxian adalah 50 hari, yang berkesan menyaring kebisingan pasaran jangka pendek.

Prinsip Strategi

Strategi ini berdasarkan kepada beberapa perkara:

  1. Menggunakan purata bergerak indeks 40 dan 120 hari untuk membina indikator untuk menilai trend. Apabila garis cepat dari bawah melintasi garis perlahan, ia adalah isyarat garpu emas, yang menunjukkan memasuki trend naik; Apabila garis cepat dari atas melintasi garis perlahan, ia adalah isyarat garpu mati, yang menunjukkan memasuki trend menurun.

  2. Parameter laluan Dongxian ditetapkan pada 50 hari, menapis turun naik jangka pendek di pasaran. Hanya melakukan lebih banyak apabila harga menembusi tren tinggi, dan kosong apabila ia menembusi tren rendah, untuk mengelakkan terikat.

  3. Titik hentian ditetapkan sebagai 4 kali ATR di bawah harga. ATR dapat mengukur turun naik dan risiko pasaran dengan berkesan, dan menetapkan hentian untuk beberapa kali ganda dapat mengawal kerugian dalam satu perdagangan.

  4. Purata bergerak indeks lebih sesuai dengan trend harga semasa, sedangkan purata bergerak sederhana terlalu licin.

  5. 50 hari tempoh laluan dengan 40 120 hari garis purata digunakan untuk menyaring penembusan palsu dengan berkesan.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Kombinasi purata bergerak dapat menentukan arah trend pasaran. Garis purata 40 hari dapat menangkap trend jangka pendek, dan garis purata 120 hari dapat menentukan trend jangka panjang.

  2. Saluran Tongjian menyaring kebisingan, mengelakkan mengejar kenaikan dan penurunan. Hanya harga yang menembusi saluran masuk, yang dapat dengan berkesan mengelakkan kawasan gegaran di tengah-tengah pasaran perdagangan.

  3. Titik hentian yang ditetapkan adalah munasabah, yang dapat mengawal kerugian perdagangan tunggal, untuk mengelakkan pecah kedudukan. Kawalan kerugian tunggal dapat menjamin keberlanjutan keuntungan.

  4. Indeks purata bergerak lebih sesuai dengan trend perubahan harga, sistem boleh memegang lebih lama, sesuai dengan pemikiran perdagangan trend.

  5. Pilihan parameter purata bergerak mengambil kira sensitiviti trend tangkapan dan kestabilan bunyi penapisan.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Risiko yang dibawa oleh memegang kedudukan jangka panjang: Strategi ini adalah strategi mengikuti trend, dan akan menghadapi kerugian yang lebih besar apabila terdapat penyusunan menyamping jangka panjang, atau trend berbalik.

  2. Risiko penembusan palsu: Apabila harga menyentuh dekat dengan saluran, mungkin ada peratusan penembusan palsu yang menyebabkan perdagangan yang tidak perlu.

  3. Risiko penetapan parameter: Pengaturan parameter purata bergerak dan laluan terlalu subjektif, kombinasi parameter perlu disesuaikan untuk pasaran yang berbeza, jika tidak ia akan menjejaskan kestabilan sistem.

  4. Risiko terlampau kecil titik berhenti: titik berhenti yang ditetapkan terlalu kecil, akan menghadapi terlalu banyak penangguhan kerugian, yang mempengaruhi keuntungan.

Penyelesaian:

  1. Berhati-hati dalam menentukan jangka masa untuk menyimpan saham, untuk mengelakkan risiko yang mungkin timbul daripada memegang saham dalam jangka masa yang panjang.
  2. Parameter yang dioptimumkan untuk menjadikan isyarat penembusan lebih stabil dan boleh dipercayai.
  3. Uji data dari pasaran yang berbeza, optimumkan kombinasi parameter.
  4. Pelancaran titik hentian yang sesuai untuk mengelakkan hentian yang terlalu kerap.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Uji kombinasi garis rata yang berbeza untuk mencari kombinasi parameter terbaik. Anda boleh menguji pelbagai kombinasi purata bergerak seperti purata sederhana, indeks, dan Hull.

  2. Optimumkan kitaran dan parameter saluran untuk menjadikan isyarat penembusan lebih berkesan. Ia boleh dioptimumkan dengan frekuensi turun naik pasaran.

  3. Mengoptimumkan strategi berhenti kerugian, menggunakan trend tracking stop loss semasa trend berjalan, dan menggunakan stop loss tetap selepas trend berakhir.

  4. Menggunakan penunjuk seperti MACD, KD untuk pengesahan pelbagai faktor untuk meningkatkan ketepatan isyarat.

  5. Menambah strategi pengurusan kedudukan, menambah kedudukan semasa trend berjalan, dan mengoptimumkan keuntungan.

  6. Pilih kombinasi parameter mengikut ciri-ciri varieti yang berbeza untuk menjadikan parameter sistem lebih robust.

ringkaskan

Strategi ini secara keseluruhannya lebih tipikal dan sederhana sebagai sistem pengesanan trend. Inti adalah penggunaan purata bergerak dan penapis terobosan saluran. Strategi berhenti rugi juga klasik dan praktikal. Strategi ini boleh digunakan sebagai rangka kerja asas untuk pembangunan sistem kuantitatif, juga boleh digunakan secara langsung, dan keuntungan juga lebih stabil.

Kod sumber strategi
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")