Chiến lược giao dịch định lượng dựa trên phân đoạn và mô hình

Tác giả:ChaoZhang, Ngày: 2024-02-19 14:32:45
Tags:

img

Tổng quan

Bài viết này giới thiệu một chiến lược giao dịch định lượng kết hợp phân tích fractal và các mô hình nến. Bằng cách phát hiện các điểm đảo ngược chính và các mô hình nến đảo ngược tăng / giảm, chiến lược này cho phép giao dịch tự động có rủi ro thấp và lợi nhuận cao.

Nguyên tắc chiến lược

Chiến lược này dựa trên phân tích hành động giá chi tiết, sử dụng sự kết hợp của phân tích fractal và nhận dạng mô hình nến để xác định logic nhập cảnh và dừng lỗ rõ ràng để nắm bắt xu hướng.

Cụ thể, điều kiện vào của nó là: giá phá vỡ trên mức cao của 2 thanh trước đó, và một sự phá vỡ fractal hoặc nồng độ tăng hoặc mô hình búa xảy ra. Sự kết hợp này xác nhận vững chắc các tín hiệu dài. Logic dừng lỗ xác định lối ra ở mức giá phá vỡ dưới mức thấp của 2 thanh trước đó đảm bảo dừng nhanh chóng và hiệu quả.

Để phát hiện mô hình, chiến lược này sử dụng lý thuyết fractal thường được sử dụng để xác định các điểm đảo ngược chính, cũng như các thuật toán để phát hiện 3 mô hình đảo ngược nến cổ điển.

Mã hóa được thực hiện bằng chữ Pine. Chiều cao / thấp fractal được xác định khi giá tạo ra mức cao / thấp mới 3 thanh, và các quy tắc nghiêm ngặt về giá mở / đóng được sử dụng cho các mẫu nuốt.

Ưu điểm

Ưu điểm chính của chiến lược này:

  1. Tín hiệu chính xác kết hợp fractals và mô hình
  2. Logic nhập và dừng lỗ rõ ràng
  3. Các lý thuyết trưởng thành ngăn chặn quá phù hợp
  4. Pine script cho phép backtesting

Rủi ro

Vẫn có những rủi ro cần lưu ý:

  1. Chủ quan trong phát hiện fractal và mô hình
  2. Whipsaws có khả năng tạo ra các giao dịch thua lỗ liên tiếp
  3. Kích thước dừng lỗ đòi hỏi điều chỉnh cho giao dịch tần số cao

Các phương pháp như dừng tối ưu, lọc xu hướng và phân tích bước đi trước có thể giúp kiểm soát các rủi ro trên.

Những cải tiến

Các lĩnh vực cần cải thiện thêm:

  1. Phân số mô hình nến tinh tế cho độ bền
  2. Thêm bộ lọc thiên vị xu hướng để tránh whipsaws
  3. Giới thiệu máy học để tối ưu hóa tham số tự động

Những cải tiến này sẽ tiếp tục tăng cường sự ổn định và lợi nhuận của chiến lược.

Kết luận

Bài viết này chi tiết bao gồm một chiến lược giao dịch hành động giá kết hợp các mô hình phân đoạn và nến. Với tín hiệu chính xác, thực hiện dễ dàng và theo xu hướng hiệu quả, chiến lược này có thể mang lại lợi ích lớn cho các nhà giao dịch có hệ thống và các nhà giao dịch theo ý riêng.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


Thêm nữa