Chiến lược giao dịch đột phá biến động


Ngày tạo: 2023-12-11 14:20:48 sửa đổi lần cuối: 2023-12-11 14:20:48
sao chép: 1 Số nhấp chuột: 638
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch đột phá biến động

Tổng quan

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.

Nguyên tắc chiến lượ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.

Lợi thế chiến lược

Đâ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.

  1. Các nguyên tắc rõ ràng, dễ hiểu và dễ thực hiện
  2. Cảm giác cao đối với tình huống bất ngờ, có thể bắt kịp sự thay đổi của thị trường
  3. Chỉ cần phân tích các đường K cơ bản và dữ liệu giao dịch, không cần các thuật toán phức tạp
  4. Có thể điều chỉnh các tham số linh hoạt để phù hợp với các giống và chu kỳ khác nhau
  5. Các nhà đầu tư có vốn đầu tư nhỏ và trung bình

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro tiềm ẩn:

  1. Không thể đoán trước được sự biến động của giá cả, có một sự mù quáng nào đó
  2. Các tín hiệu kích hoạt sai có thể làm tăng giao dịch vô nghĩa
  3. Có thể tạo ra các tín hiệu sai trong quá trình tổng hợp.
  4. Không có biện pháp ngăn chặn thiệt hại, có nguy cơ gia tăng tổn thất

Để 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.

Hướng tối ưu hóa

Đâ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à:

  1. Tăng chiến lược dừng lỗ để kiểm soát tổn thất
  2. Tối ưu hóa các tham số, thích ứng với nhiều giống và chu kỳ
  3. Thêm các chỉ số khác vào tín hiệu lọc
  4. Kết hợp với các chiến lược theo dõi xu hướng để thực hiện điều chỉnh tự động xu hướng
  5. Kết hợp các thuật toán học máy để tối ưu hóa tham số động và tín hiệu
  6. Thêm mô-đun nghiên cứu và phản hồi định lượng để chiến lược được phát triển và tối ưu hóa

Tóm tắt

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.

Mã nguồn chiến lượ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)