Chiến lược định hướng K-line động


Ngày tạo: 2023-10-25 16:57:05 sửa đổi lần cuối: 2023-10-25 16:57:05
sao chép: 0 Số nhấp chuột: 643
1
tập trung vào
1617
Người theo dõi

Chiến lược định hướng K-line động

Tổng quan

Chiến lược này phân tích giá đóng cửa của dòng K trên/dưới giá mở cửa trong quá khứ để xác định hướng của dòng K trong tương lai. Tùy thuộc vào tình trạng trống rỗng về hướng của dòng K, thực hiện hoạt động tăng hoặc giảm giá.

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

Lập luận cốt lõi của chiến lược này là:

  1. Cài đặt tham số NUM_CANDLES để xác định số lượng K cần phân tích.

  2. Định nghĩa hàm candle_dir, xác định hướng của một đường K. close>open là đa đầu, close

  3. Chọn hàm count_candles để thống kê số lượng các đường K theo hướng khác nhau trong đường K gốc NUM_CANDLES.

  4. Tính số lượng các dòng K đa đầu, trống đầu và dao động trong dòng K gốc NUM_CANDLES trong quá khứ, được lưu trữ trong ups, dns, neu.

  5. Định nghĩa chỉ số indic với giá trị là ups-dns cộng với giá trị âm tính của neu.

  6. Theo chỉ số indic, thời gian làm việc nhiều hơn và thời gian làm việc ít hơn.

Chiến lược này sử dụng số liệu thống kê hướng của một số đường K để xác định xác suất hướng của đường K trong tương lai, để đưa ra quyết định giao dịch. Bằng tham số NUM_CANDLES, bạn có thể kiểm soát số lượng đường K thống kê và điều chỉnh độ nhạy của chiến lược.

Phân tích lợi thế chiến lược

  1. Các ý tưởng chiến lược rõ ràng, dễ hiểu, dễ giải thích và xác minh.

  2. Không cần tính toán các chỉ số phức tạp, chỉ cần dữ liệu K-line, giảm chi phí tính toán.

  3. Số lượng đường K thống kê có thể được điều chỉnh thông qua các tham số để kiểm soát độ nhạy của chiến lược.

  4. Có thể được sử dụng trong bất kỳ giống nào và bất kỳ chu kỳ nào, khả năng ứng dụng mạnh.

  5. Dễ dàng tối ưu hóa tham số, tìm kiếm sự kết hợp tham số tối ưu.

Phân tích rủi ro

  1. Không thể xử lý các biến động thị trường, có thể xảy ra thường xuyên mở và tháo lỗ.

  2. Tính toán không đúng chu kỳ có thể gây ra sự chậm trễ tín hiệu, cần thiết phải đặt các tham số hợp lý.

  3. Không có khả năng xử lý sự đảo ngược xu hướng, có thể có nguy cơ thua lỗ ngược.

  4. Cần xem xét các tác động của chi phí giao dịch để tránh giao dịch quá thường xuyên.

  5. Cần chú ý đến vấn đề tối ưu hóa tham số quá phù hợp, cần nhiều lần kiểm tra thị trường.

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

  1. Có thể xem xét thêm logic dừng lỗ để giảm nguy cơ mất mát.

  2. Có thể kết hợp các chỉ số xu hướng để tránh hoạt động ngược.

  3. Bạn có thể tăng chu kỳ thống kê hoặc sử dụng chu kỳ thấp, tối ưu hóa tham số để tăng sự ổn định của chiến lược.

  4. Có thể xem xét kết hợp nhiều giống để tăng tỷ lệ chiến lược.

  5. Các tham số có thể được tự động tối ưu hóa kết hợp với các phương pháp học máy.

Tóm tắt

Chiến lược này dựa trên phân tích hướng K để xác định hướng giao dịch, tư duy rõ ràng và dễ hiểu, có thể kiểm soát độ nhạy của chiến lược thông qua cài đặt tham số. Ưu điểm của chiến lược là logic đơn giản, yêu cầu sử dụng thấp, phạm vi ứng dụng rộng, nhưng cũng có một số rủi ro cần được tối ưu hóa hơn nữa để tăng sự ổn định của chiến lược. Nói chung, chiến lược này cung cấp một tư duy giao dịch thực tế đơn giản cho giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Refined CandleCounter Strategy by origo", overlay=true)

// how many candles to count
NUM_CANDLES = 7

// determine candle direction
candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1)

// return # of candles with a given direction
count_candles(dir, max) =>
    count = 0
    for i = 0 to max
        if candle_dir[i] == dir
            count := count + 1
    count

ups = count_candles(1, NUM_CANDLES)
dns = count_candles(-1, NUM_CANDLES)
neu = count_candles(0, NUM_CANDLES)

indic = ups-dns


if indic > 0
    indic := indic+neu
else
    indic := indic-neu

plotarrow(neu, title="UP vs DN")

longCondition = (indic) > 0
shortCondition = (indic) <= 0

strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition)
strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)