Chiến lược theo xu hướng phát triển kênh ATR

Tác giả:ChaoZhang, Ngày: 2024-01-03 11:53:52
Tags:

img

Tổng quan

Chiến lược này sử dụng kênh ATR và lý thuyết đột phá để theo dõi xu hướng bằng cách vào khi kênh bị phá vỡ. Nó thuộc về các chiến lược theo xu hướng. Chiến lược đơn giản và dễ hiểu, sử dụng các kênh trung bình động và các chỉ số ATR để xác định hướng xu hướng và phát ra các tín hiệu giao dịch tại các điểm chính.

Nguyên tắc

Chiến lược này xây dựng các băng thông trên và dưới với giá cao, thấp, đóng và chỉ số ATR để tạo thành một kênh ATR. Chiều rộng kênh được xác định bởi kích thước tham số ATR. Khi giá vượt qua kênh, nó được đánh giá là sự khởi đầu của một xu hướng, tại những điểm nào các vị trí dài hoặc ngắn được nhập. Chiến lược có hai tầng tín hiệu giao dịch. Khi giá vượt qua một chiều rộng ATR, nó được coi là xu hướng mới nổi, kích hoạt các điểm mua / bán tầng đầu tiên. Khi giá vượt qua hai chiều rộng ATR, nó được coi là xu hướng tăng tốc, kích hoạt các điểm mua / bán tầng thứ hai.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Sử dụng các chỉ số ATR để xây dựng các kênh xem xét sự biến động của thị trường tốt hơn so với trung bình động đơn giản.
  2. Các điểm mua / bán hai cấp cho phép bước vào từng giai đoạn với rủi ro có thể kiểm soát được.
  3. Lý thuyết đột phá xác định chính xác các điểm xu hướng chính.
  4. Mã ngắn gọn dễ hiểu và thực hiện.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Việc dựa vào một chỉ số duy nhất có nghĩa là xác suất thất bại cao nếu ATR thất bại.
  2. Thiếu stop loss và quản lý vị trí dẫn đến kiểm soát rủi ro không đầy đủ.
  3. Các tiện ích cần xác minh và có thể hoạt động kém hơn trong điều kiện giao dịch trực tiếp.
  4. Các thông số không chính xác có thể gây ra chấn thương hoặc giao dịch quá mức.

Hướng dẫn tối ưu hóa

Các hướng tối ưu hóa cho chiến lược này bao gồm:

  1. Thêm các bộ lọc với nhiều chỉ số để ngăn chặn những đánh giá sai.
  2. Thêm các mô-đun dừng lỗ để tăng cường kiểm soát rủi ro.
  3. Thêm kiểm soát vị trí và quản lý tiền.
  4. Điều chỉnh tham số cho các sản phẩm khác nhau.
  5. Giảm tần suất giao dịch và kích thước vị trí cho giao dịch trực tiếp.

Tóm lại

Khung tổng thể của chiến lược này là rõ ràng và có thể sử dụng như một bằng chứng về khái niệm. Nhưng có những khoảng trống từ giao dịch trực tiếp cho phép tối ưu hóa đáng kể. Nếu kiểm soát rủi ro và tần suất giao dịch có thể được cải thiện hơn nữa, triển vọng ứng dụng sẽ tốt.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Myhaj_Lito

//@version=5
strategy("Renko Trend Strategy",shorttitle = "RENKO-Trend str.",overlay = true)
TF = input.timeframe(title='TimeFrame', defval="60")
ATRlength = input.int(title="ATR length", defval=60, minval=2, maxval=1000)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, ta.atr(ATRlength))


RENKOUP = float(na)
RENKODN = float(na)
H = float(na)
COLOR = color(na)
BUY = int(na)
SELL = int(na)
UP = bool(na)
DN = bool(na)
CHANGE = bool(na)

RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1]
COLOR := na(COLOR[1]) ? color.white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

// calculating 
if not CHANGE and close >= RENKOUP[1] + H * 2
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 2
    RENKODN := RENKOUP[1] + ATR
    COLOR := color.rgb(0, 255, 170,60)
    SELL := 0
    BUY += 2
    BUY


if not CHANGE and close >= RENKOUP[1] + H
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR
    RENKODN := RENKOUP[1]
    COLOR := color.rgb(0, 230, 38,60)
    SELL := 0
    BUY += 1
    BUY

if not CHANGE and close <= RENKODN[1] - H * 2
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 2
    RENKOUP := RENKODN[1] - ATR
    COLOR := color.rgb(255, 92, 43,60)
    BUY := 0
    SELL += 2
    SELL
if not CHANGE and close <= RENKODN[1] - H
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR
    RENKOUP := RENKODN[1]
    COLOR := color.rgb(245, 69, 69,60)
    BUY := 0
    SELL += 1
    SELL
//// STRATEGY 
if(UP)
    strategy.entry("Long",strategy.long)
if(DN)
    strategy.entry("Short",strategy.short)


// ploting 

bgcolor(COLOR)


Thêm nữa