Strategi Fraktal Breakout


Tarikh penciptaan: 2023-12-19 15:32:57 Akhirnya diubah suai: 2023-12-19 15:32:57
Salin: 2 Bilangan klik: 886
1
fokus pada
1621
Pengikut

Strategi Fraktal Breakout

Gambaran keseluruhan

Strategi ini adalah strategi pengesanan trend garis panjang untuk menentukan trend harga. Ia membuat keputusan untuk membuat kedudukan dengan mengira titik pemisah harga sejarah untuk menentukan penembusan titik pemisah terakhir. Ia juga menentukan arah trend dengan mengira harga purata N titik pemisah terakhir untuk menentukan arah trend.

Prinsip Strategi

  1. Berhitung titik perpecahan harga. Titik perpecahan ditakrifkan sebagai harga tertinggi pada hari itu lebih tinggi daripada harga tertinggi dua hari sebelumnya dan dua hari berikutnya.
  2. Rekodkan harga pada titik pecahan terakhir sebagai rintangan.
  3. Apabila harga penutupan menembusi titik perpecahan terakhir, anggaplah bahawa rintangan telah ditembusi, dan buatlah kedudukan tambahan.
  4. Hitung harga purata bagi N titik perpecahan terakhir untuk menentukan trend. Apabila harga purata naik, ia adalah kecenderungan menaik, dan apabila ia turun, ia adalah kecenderungan menaik.
  5. Jika dalam melakukan posisi berbilang, harga titik perpecahan purata bertukar menjadi turun, maka kedudukan rata.

Analisis kelebihan

Strategi ini berdasarkan trend penghakiman titik pecahan, kelebihan terbesarnya adalah dapat menyaring bunyi pasaran dengan berkesan dan menentukan arah trend yang lebih panjang. Ia lebih tahan terhadap turun naik yang tidak normal berbanding dengan penunjuk seperti purata bergerak sederhana.

Selain itu, strategi ini menilai piawaian untuk membina dan menyimpan saham dengan sangat jelas, tanpa masalah perdagangan yang kerap. Ini juga menjadikannya sangat sesuai untuk memegang garis panjang.

Analisis risiko

Risiko terbesar dalam strategi ini adalah kebarangkalian penghakiman titik pemisahan itu sendiri. Titik pemisahan tidak dapat memprediksi harga 100 peratus pasti akan berbalik, yang bermaksud kemungkinan penghakiman yang salah masih ada. Apabila berlaku kesalahan, risiko kerugian akan dihadapi.

Selain itu, penghakiman titik pemisahan mempunyai jangka masa yang panjang dan tidak sesuai untuk perdagangan frekuensi tinggi. Strategi ini juga tidak sesuai untuk perdagangan garis pendek.

Arah pengoptimuman

Mengambil kira kebarangkalian kesilapan dalam penilaian titik bentuk, kita boleh mengoptimumkan dengan cara berikut:

  1. Digabungkan dengan pengesahan petunjuk lain, seperti saluran Brinline, purata bergerak, dan lain-lain, untuk mengelakkan kesalahan penilaian titik pecahan tunggal.

  2. Menyesuaikan parameter titik pemisahan, seperti bilangan kitaran sebelum dan selepas penghakiman, untuk mengoptimumkan penghakiman titik pemisahan.

  3. Tambah strategi hentikan kerugian, hentikan kerugian apabila kerugian berkembang ke tahap tertentu.

ringkaskan

Strategi pembahagian terobosan ini sangat sesuai untuk menilai trend garis panjang secara keseluruhan, dan sangat sesuai untuk digunakan oleh pelabur garis panjang. Kami hanya perlu memastikan ketepatan penilaian dengan menyesuaikan parameter yang sesuai, menambah indikator penapisan lain, untuk mengoptimumkan strategi ini secara besar-besaran, menjadikannya sebagai bahagian penting dalam Keputusan Kuantitatif.

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

//@version=2
strategy("Fractal Breakout Strategy (by ChartArt)", shorttitle="CA_-_Fractal_Breakout_Strat", overlay=true)

// ChartArt's Fractal Breakout Strategy
//
// Version 1.0
// Idea by ChartArt on April 24, 2016.
//
// This long only strategy determines the last fractal top
// and enters a trade when the price breaks above the last
// fractal top. The strategy also calculates the average
// price of the last 2 (or 3) fractal tops to get the trend.
//
// The strategy exits the long trade when the average of the
// fractal tops is falling (when the trend is lower highs).
// And the user can manually set a delay of this exit.
//
// In addition the fractals tops can be colored in blue
// and a line can be drawn based on the fractal tops.
// This fractal top line is colored by the fractal trend.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 


// input

n_time = input(title='Always exit each trade after this amount of bars later (Most important strategy setting)', defval=3)
price = input(hl2,title='Price type to determine the last fractal top and the fractal breakout, the default is (high+low)/2')


// fractal calculation

fractal_top = high[2] > high[3] and high[2] > high[4] and high[2] > high[1] and high[2] > high[0]
fractal_price = valuewhen(fractal_top, price, 1)
use_longer_average = input(true,title='Use Fractal price average of the last 3 fractals instead of the last 2 fractals?')
fractal_average = use_longer_average?(fractal_price[1] + fractal_price[2] + fractal_price[3] ) / 3 : (fractal_price[1] + fractal_price[2]) / 2
fractal_trend = fractal_average[0] > fractal_average[1]
no_repainting = input(true,title='Use the price of the last bar to prevent repainting?')
fractal_breakout = no_repainting?price[1] > fractal_price[0]:price[0] > fractal_price[0]


// highlight fractal tops

show_highlight = input(true,title='Highlight fractal tops in blue and color all other bars in gray?')
highlight = fractal_top?blue:silver
barcolor(show_highlight?highlight:na,offset=-2)
show_fractal_top_line = input(true,title='Draw a colored line based on the fractal tops?')
fractal_top_line = change(fractal_top) != 0 ? price : na
fractal_top_line_color = change(fractal_price) > 0 and fractal_breakout == true ? green : change(fractal_price) < 0 and fractal_breakout == false ? red : blue
plot(show_fractal_top_line?fractal_top_line:na,offset=-2,color=fractal_top_line_color,linewidth=4)


// strategy

trade_entry = fractal_trend and fractal_breakout
trade_exit = fractal_trend[n_time] and fractal_trend == false 
 
if (trade_entry)
    strategy.entry('Long', strategy.long)
 
if (trade_exit)
    strategy.close('Long')