Chiến lược phá vỡ fractal

Tác giả:ChaoZhang, Ngày: 2023-12-19 15:32:57
Tags:

img

Tổng quan

Đây là một chiến lược theo dõi đường dài theo xu hướng đánh giá xu hướng dựa trên các phân đoạn giá. Nó quyết định mở các vị trí dựa trên sự đột phá của điểm phân đoạn mới nhất. Đồng thời, nó đánh giá hướng xu hướng bằng cách tính giá trung bình của các điểm phân đoạn N cuối cùng và đóng các vị trí khi xu hướng thay đổi.

Nguyên tắc

  1. Tính toán các điểm fractal của giá. Điểm fractal được định nghĩa là giá cao nhất ngày hôm nay cao hơn giá cao nhất của hai ngày trước và hai ngày tiếp theo.

  2. Ghi lại giá của điểm fractal cuối cùng dưới dạng kháng cự.

  3. Khi giá đóng phá vỡ điểm fractal cuối cùng, nó được coi là đã phá vỡ ngưỡng kháng cự và một vị trí dài đã được thiết lập.

  4. Tính toán giá trung bình của các điểm phân đoạn N cuối cùng để xác định xu hướng. Khi giá trung bình tăng, đó là xu hướng tăng, và khi nó giảm, đó là xu hướng giảm.

  5. Nếu giá điểm fractal trung bình giảm trong vị trí dài, đóng vị trí.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược đánh giá xu hướng dựa trên fractal này là nó có thể lọc hiệu quả tiếng ồn thị trường và xác định hướng xu hướng dài hạn.

Ngoài ra, các tiêu chí mở và đóng các vị trí của chiến lược này rất rõ ràng, điều này tránh giao dịch thường xuyên.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược này nằm ở bản chất xác suất của các điểm fractal. Fractals không thể dự đoán đầy đủ liệu giá có chắc chắn sẽ đảo ngược hay không, nghĩa là xác suất đánh giá sai vẫn tồn tại. Khi đánh giá sai xảy ra, nó sẽ phải đối mặt với nguy cơ mất mát.

Ngoài ra, khoảng thời gian để đánh giá các điểm fractal là dài và không thể thích nghi với giao dịch tần số cao. Nếu bạn theo đuổi giao dịch ngắn hạn, chiến lược này có thể không phù hợp.

Hướng dẫn tối ưu hóa

Xem xét xác suất đánh giá sai các điểm fractal, chúng ta có thể tối ưu hóa theo các cách sau:

  1. Kết hợp với các chỉ số khác như Bollinger Bands, đường trung bình động, v.v. để tránh đánh giá sai chỉ dựa trên các điểm fractal.

  2. Điều chỉnh các tham số của các điểm fractal, chẳng hạn như số thời gian trước và sau khi phán quyết, để tối ưu hóa các phán đoán điểm fractal.

  3. Thêm các chiến lược dừng lỗ để dừng lỗ khi lỗ mở rộng đến một mức độ nhất định.

Tóm lại

Chiến lược Fractal Breakout rất phù hợp để đánh giá xu hướng dài hạn nói chung và rất phù hợp để sử dụng bởi các nhà đầu tư dài hạn. Miễn là chúng ta điều chỉnh các tham số một cách thích hợp, thêm các chỉ số lọc khác trên tiền đề đảm bảo tính chính xác của phán đoán, chúng ta có thể tối ưu hóa chiến lược này và biến nó thành một phần quan trọng của Quyết định định lượng.


/*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')

Thêm nữa