Strategi Breakout Berayun


Tarikh penciptaan: 2023-10-20 16:37:28 Akhirnya diubah suai: 2023-10-20 16:37:28
Salin: 0 Bilangan klik: 946
1
fokus pada
1621
Pengikut

Strategi Breakout Berayun

Gambaran keseluruhan

Strategi ini menggunakan indikator ZigZag untuk memetakan garis sokongan dan rintangan, dan mengambil tindakan melakukan lebih atau kurang apabila harga melanggar garis sokongan atau rintangan.

Prinsip Strategi

Strategi ini mula-mula menggunakan penunjuk ZigZag untuk melukis garis bentuk Z di bawah parameter tertentu. Kemudian melukis garis sokongan hijau apabila penunjuk ZigZag muncul di bahagian bawah, melukis garis rintangan merah apabila muncul di bahagian atas.

Secara khusus, logik utama strategi ini ialah:

  1. Menggunakan ema untuk melakukan purata bergerak indeks tiga kali pada harga dekat, untuk mendapatkan kelancaran kurva.

  2. Untuk menentukan sama ada keluk meluruskan naik, jika naik dan garis K terdahulu tidak naik, catat sebagai bahagian bawah, ambil nilai K terendah. Jika turun dan garis K terdahulu naik, catat sebagai bahagian atas, ambil nilai K tertinggi. Jika tidak, NaN.

  3. Mengulang proses ini akan menghasilkan garis zigzag.

  4. Apabila zigzag naik, catat sebagai titik atas semasa; apabila turun, catat sebagai titik bawah semasa.

  5. Apabila titik naik, gariskan garis sokongan uplevel berwarna hijau; apabila titik turun, gariskan garis rintangan dnlevel berwarna merah.

  6. Apabila harga naik ke atas garis hijau, buat lebih banyak, dan apabila turun ke bawah garis merah, buat kosong.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan:

  1. Menggunakan indikator ZigZag untuk mengenal pasti titik-titik sokongan dan rintangan utama, yang sering menjadi penting.

  2. ZigZag memadamkan sebahagian bunyi bising di pasaran dan menjadikan isyarat dagangan lebih jelas.

  3. Ini adalah satu cara yang boleh digunakan untuk memasuki permainan dengan cara yang menembusi dan menangkap perubahan dalam masa.

  4. Garis rintangan yang disokong mudah digariskan dan berkesan.

  5. Logik strategi jelas dan mudah difahami, ruang untuk pengoptimuman parameter besar.

  6. Fleksibiliti dalam memilih jenis dagangan dan kitaran masa.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Tetapan parameter penunjuk ZigZag yang tidak betul boleh menyebabkan peluang perdagangan yang hilang.

  2. Tahap rintangan sokongan mungkin diuji semula selepas ia ditembusi, dan anda harus menetapkan hentian untuk mengawal risiko.

  3. Isyarat penembusan mungkin salah kaprah dan perlu disahkan dengan trend dan bentuk.

  4. Pasaran mungkin bergoyang di sisi yang lebih lama, di mana strategi boleh menghasilkan terlalu banyak perdagangan yang tidak berkesan.

  5. Perlu dipertimbangkan kesan kos urus niaga dan mengelakkan terlalu kerap.

Langkah-langkah yang diambil:

  1. Mengoptimumkan parameter ZigZag untuk mencari kombinasi parameter terbaik.

  2. Tetapkan stop loss tepat pada masanya selepas penembusan, mengawal kerugian tunggal.

  3. Menambah ketepatan dengan menggunakan penapis seperti trend indicator.

  4. Termasuk syarat untuk mengenal pasti pasaran yang telah diselesaikan, tidak berdagang dalam tempoh tersebut.

  5. Mempermudahkan penembusan yang sesuai untuk mengurangkan transaksi yang tidak sah.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter ZigZag untuk mencari kombinasi parameter terbaik. Parameter terbaik boleh didapati dengan mengkaji semula.

  2. Pertimbangkan kemungkinan untuk menguji semula tempat rintangan sokongan selepas penembusan masuk, dan sediakan logik keluar untuk ujian semula.

  3. Menapis isyarat perdagangan yang berkemungkinan rendah dengan menggunakan indikator trend seperti MA.

  4. Meningkatkan penunjuk kapasiti untuk mengesahkan isyarat penembusan dan mengelakkan isyarat yang salah.

  5. Menetapkan Lachenbruch yang disebut dalam kaedah dual () () untuk menyaring isyarat yang salah dan mendapat keuntungan.

  6. Pertimbangkan untuk menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.

  7. Memperkenalkan strategi henti rugi dan menetapkan titik henti rugi untuk mengawal risiko.

ringkaskan

Strategi ini secara keseluruhan adalah strategi penembusan goyah yang mudah dan praktikal. Ia menggunakan penunjuk ZigZag untuk memetakan garis sokongan dan rintangan, dan bertindak apabila harga menembusi garis-garis ini.

Kod sumber strategi
/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(4, title = "ZigZag length")
Extreme = input(4, title = "ZigZag extreme")
src = input(close, title = "Source")
showzz = input(false, defval = false, title = "Show ZigZag")
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, Extreme)
zzcol = showzz ? black : na
plot(zigzag, color = zzcol, linewidth = 2)

//Levels
dot = 0.0
dot := zigzag > 0 ? zigzag : dot[1]
uplevel = 0.0
uplevel := dot > dot[1] ? zigzag : uplevel[1]
dnlevel = 0.0
dnlevel := dot < dot[1] ? zigzag : dnlevel[1]
upcol = na
upcol := dot > dot[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := dot < dot[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if dot > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)