
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.
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.
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.
Dengan mempertimbangkan probabilitas kesalahan dalam penilaian titik pecahan, kita dapat mengoptimalkan dengan beberapa cara berikut:
Digabungkan dengan indikator lain seperti Blink Channel, Moving Average, dan lain-lain, untuk menghindari kesalahan penghakiman titik pecahan tunggal.
Menyesuaikan parameter titik pemisahan, seperti jumlah siklus sebelum dan sesudah penilaian, untuk mengoptimalkan penilaian titik pemisahan.
Meningkatkan strategi stop loss, menghentikan kerugian jika kerugian berkembang ke tingkat tertentu.
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.
/*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')