
Chiến lược giao dịch phá vỡ biến động là một chiến lược dựa trên hành động giá đơn lẻ. Nó kích hoạt tín hiệu mua và bán bằng cách phân tích sự thay đổi giá và khối lượng giao dịch. Chiến lược này cũng có thể được sử dụng 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 đánh giá xu hướng và sức mạnh của giá bằng cách phân tích giá đóng cửa, giá mở cửa, giá cao nhất và giá thấp nhất của đường K.
Cụ thể, nó sẽ phân tích liệu giá đóng cửa của 3 đường K gần đây nhất có liên tục cao hơn hoặc thấp hơn giá mở cửa hay không. Nếu vậy, nó cho thấy giá đã liên tục phá vỡ lên hoặc xuống, tạo ra một hành vi xu hướng.
Ngoài ra, chiến lược này cũng sẽ thống kê khối lượng giao dịch lớn nhất trong một chu kỳ nhất định. Nếu khối lượng giao dịch của dòng K hiện tại vượt quá giá trị lớn nhất trong chu kỳ gần đây nhất, điều này cho thấy khối lượng giao dịch tăng lên, phản ánh sức mạnh giao dịch lớn vào thị trường.
Chiến lược này tạo ra tín hiệu mua hoặc bán trong khi giá tạo ra ba lần liên tiếp phá vỡ đường K và tăng khối lượng giao dịch.
Đây là một chiến lược đơn giản và hiệu quả sử dụng các tín hiệu hoạt động giá và khối lượng giao dịch.
Chiến lược này cũng có một số rủi ro tiềm ẩn:
Để kiểm soát những rủi ro này, bạn có thể xem xét thêm dừng di chuyển, tối ưu hóa các tham số, hoặc sử dụng với các chỉ số hoặc chiến lược khác.
Đây là một chiến lược cơ bản, nhưng vẫn còn rất nhiều chỗ để tối ưu hóa, chủ yếu là:
Chiến lược này nói chung là một chiến lược dựa trên lý thuyết hành động giá rất thực tế. Nó có những ưu điểm như tham gia, dễ hiểu và chi phí thực hiện thấp. Đồng thời, có một số điểm mù quáng cần được tối ưu hóa và kết hợp để tăng cường chiến lược tốt hơn. Nói chung, đây là một ý tưởng chiến lược rất có giá trị, đáng để nghiên cứu và áp dụng sâu hơn.
/*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)