Strategi Fraktal Breakout


Tanggal Pembuatan: 2023-12-19 15:32:57 Akhirnya memodifikasi: 2023-12-19 15:32:57
menyalin: 2 Jumlah klik: 886
1
fokus pada
1621
Pengikut

Strategi Fraktal Breakout

Ringkasan

Strategi ini adalah strategi pelacakan tren garis panjang untuk menentukan tren harga. Strategi ini menentukan posisi dengan menghitung titik pemisah harga historis untuk menentukan terobosan pada titik pemisah terakhir. Strategi ini juga menentukan arah tren dengan menghitung harga rata-rata dari N titik pemisah terakhir, dan posisi yang rata ketika tren berbalik.

Prinsip Strategi

  1. Pembagian harga dihitung. Pembagian harga didefinisikan sebagai harga tertinggi pada hari tersebut lebih tinggi dari harga tertinggi pada dua hari sebelumnya dan dua hari berikutnya.
  2. Catat harga pada titik terakhir sebagai resistansi.
  3. Ketika harga penutupan menembus titik terdepan, resistensi dianggap telah ditembus, dan posisi terdepan didirikan.
  4. Perhitungan harga rata-rata dari N titik akhir untuk menentukan tren, ketika harga rata-rata naik untuk tren bullish, dan turun untuk tren bearish.
  5. Jika dalam melakukan beberapa posisi, harga titik perpecahan rata-rata bergeser ke bawah, maka posisi kosong.

Analisis Keunggulan

Strategi ini didasarkan pada titik-titik yang dipisahkan untuk menilai tren, dan keuntungan terbesarnya adalah kemampuan untuk menyaring kebisingan pasar secara efektif dan menentukan arah tren yang lebih panjang. Dibandingkan dengan indikator seperti rata-rata bergerak sederhana, ini lebih tahan terhadap fluktuasi abnormal yang tiba-tiba.

Selain itu, strategi ini sangat jelas dalam menentukan standar untuk membangun dan mempertahankan posisi, sehingga tidak akan terjadi masalah dengan perdagangan yang sering. Hal ini juga membuatnya sangat cocok untuk kepemilikan jangka panjang.

Analisis risiko

Risiko terbesar dari strategi ini adalah probabilitas dari penilaian titik bentuk itu sendiri. Titik bentuk tidak dapat memprediksi 100 persen harga pasti akan berbalik, yang berarti probabilitas penilaian yang salah tetap ada.

Selain itu, jangka waktu yang lebih panjang untuk menilai titik pemisahan tidak cocok untuk perdagangan frekuensi tinggi. Strategi ini juga tidak terlalu cocok jika mengejar perdagangan garis pendek.

Arah optimasi

Dengan mempertimbangkan probabilitas kesalahan dalam penilaian titik pecahan, kita dapat mengoptimalkan dengan beberapa cara berikut:

  1. Digabungkan dengan indikator lain seperti Blink Channel, Moving Average, dan lain-lain, untuk menghindari kesalahan penghakiman titik pecahan tunggal.

  2. Menyesuaikan parameter titik pemisahan, seperti jumlah siklus sebelum dan sesudah penilaian, untuk mengoptimalkan penilaian titik pemisahan.

  3. Meningkatkan strategi stop loss, menghentikan kerugian jika kerugian berkembang ke tingkat tertentu.

Meringkaskan

Strategi breakthrough segmentasi ini sangat cocok untuk menilai tren garis panjang secara keseluruhan, dan sangat cocok untuk digunakan oleh investor garis panjang. Kita hanya perlu memastikan keakuratan penilaian, menyesuaikan parameter dengan tepat, menambahkan indikator penyaringan lainnya, untuk mengoptimalkan strategi ini secara signifikan, dan menjadikannya sebagai bagian penting dari keputusan kuantitatif.

Kode 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')