Chiến lược giao dịch đột phá biến động là một chiến lược dựa trên hành động giá duy nhất. Nó tạo ra tín hiệu mua và bán bằng cách phân tích thay đổi giá và khối lượng. Chiến lược này cũng có thể được kết hợp với cảnh báo để kích hoạt lệnh trên các sàn giao dịch hoặc hệ thống khác.
Chiến lược này phân tích giá đóng, mở, cao và thấp của các cây nến để xác định xu hướng và động lực giá.
Cụ thể, nó kiểm tra xem giá đóng của 3 ngọn nến gần đây nhất có liên tục cao hơn hoặc thấp hơn giá mở hay không.
Ngoài ra, chiến lược này theo dõi khối lượng tối đa trong một khoảng thời gian nhất định.
Khi giá phá vỡ trên ba ngọn nến liên tiếp và khối lượng giao dịch mở rộng, chiến lược sẽ tạo ra tín hiệu mua hoặc bán.
Đây là một chiến lược đơn giản nhưng hiệu quả sử dụng hành động giá và tín hiệu khối lượng.
Ngoài ra còn có một số rủi ro tiềm ẩn:
Để giảm thiểu những rủi ro này, người ta có thể xem xét thêm stop loss di chuyển, tối ưu hóa sự kết hợp các tham số hoặc kết hợp với các chỉ số hoặc chiến lược khác.
Là một chiến lược cơ bản, vẫn còn nhiều chỗ để tối ưu hóa:
Kết luận, đây là một chiến lược dựa trên hành động giá rất thực tế. Nó có những ưu điểm trực quan, dễ hiểu và thực hiện với chi phí thấp. Trong khi đó, nó cũng có một số mù lòa và cần tối ưu hóa và kết hợp thêm để tăng hiệu suất. Nhìn chung đây là một khái niệm chiến lược có giá trị xứng đáng với nghiên cứu và ứng dụng sâu sắc.
/*backtest start: 2022-12-04 00:00:00 end: 2023-03-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SPAS", overlay=true, pyramiding=5, calc_on_order_fills=true) int signal_hh = 0 int signal_ll = 0 if close[1] >= open[1] and close[2] >= open[2] and close[3] >= open[3] signal_hh := 1 if close[1] <= open[1] and close[2] <= open[2] and close[3] <= open[3] signal_ll := 1 plotchar(signal_hh, char='H', size=size.tiny, location=location.abovebar) plotchar(signal_ll, char='L', size=size.tiny, location=location.abovebar) int signal_vol = 0 float max_volume = 0.0 int vol_length = input(title="Volume length", type=input.integer, defval=3) for i = vol_length to 1 if volume[i] > max_volume max_volume := volume[i] if volume[0] > max_volume signal_vol := 1 plotchar(signal_vol, char='V', size=size.tiny, location=location.bottom) int signal_buy = 0 int signal_sell = 0 if signal_hh and signal_vol signal_buy := 1 label.new(bar_index, high, "B", color=color.green) strategy.entry("buy", strategy.long, 5)//, when=strategy.position_size <= 0) if signal_ll and signal_vol signal_sell := 1 label.new(bar_index, low, "S", color=color.red) strategy.entry("sell", strategy.short, 5)//, when=strategy.position_size > 0) //plotchar(signal_buy, char='B', color=color.green, size=size.tiny, location=location.abovebar) plotarrow(signal_buy, colorup=color.green, colordown=color.orange, transp=0, maxheight=20) //plotchar(signal_sell, char='S', color=color.red, size=size.tiny, location=location.abovebar) plotarrow(signal_sell * -1, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)