Chiến lược đột phá xu hướng vào lệnh dựa trên kênh ATR


Ngày tạo: 2024-01-03 11:53:52 sửa đổi lần cuối: 2024-01-03 11:53:52
sao chép: 1 Số nhấp chuột: 722
1
tập trung vào
1621
Người theo dõi

Chiến lược đột phá xu hướng vào lệnh dựa trên kênh ATR

Tổng quan

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

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

Chiến lược này sử dụng các chỉ số giá cao, thấp, đóng cửa và ATR để xây dựng lên và xuống đường, tạo ra kênh ATR. Độ rộng của kênh được xác định bởi kích thước của tham số ATR. Khi giá phá vỡ kênh, nó được đánh giá là bắt đầu xu hướng, lúc này đi vào hướng đi mua hoặc đi. Chiến lược được chia thành hai tín hiệu giao dịch, giá phá vỡ một chiều rộng ATR được coi là sự xuất hiện của xu hướng, tại thời điểm này điểm mua bán hàng đầu tiên được kích hoạt; giá phá vỡ hai chiều rộng ATR được coi là sự gia tăng xu hướng, điểm mua bán hàng thứ hai được kích hoạt.

Phân tích lợi thế

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

  1. Sử dụng chỉ số ATR để xây dựng kênh, tính đến tỷ lệ biến động của thị trường, tốt hơn đường trung bình đơn giản.
  2. Các điểm mua và bán được thiết lập theo hai cấp, và các khách hàng được tiếp cận theo từng nhóm, có thể kiểm soát được rủi ro.
  3. Đánh giá các xu hướng theo lý thuyết, xác định chính xác các điểm quan trọng.
  4. Có thể sử dụng các công cụ khác nhau.

Phân tích rủi ro

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

  1. Một chỉ số duy nhất cho thấy khả năng chiến lược thất bại cao khi ATR thất bại.
  2. Không có giới hạn dừng lỗ và quản lý vị trí, kiểm soát rủi ro kém.
  3. Tuy nhiên, nó vẫn chưa được chứng minh là có hiệu quả trong điều kiện thực tế.
  4. Các tham số không phù hợp có thể dẫn đến giao dịch vượt qua hoặc quá mức.

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

Chiến lược này có thể được tối ưu hóa như sau:

  1. Thêm một loạt các tính năng lọc và xác nhận để ngăn chặn sự sai lầm.
  2. Thêm mô-đun dừng lỗ và kiểm soát rủi ro.
  3. Tăng kiểm soát vị thế và quản lý vị thế.
  4. Thêm tối ưu hóa tham số, điều chỉnh tham số cho các giống khác nhau.
  5. Giảm tần suất giao dịch và kích thước vị trí, xem xét điều kiện thực.

Tóm tắt

Kế hoạch tổng thể của chiến lược này rõ ràng và có thể được sử dụng như một chiến lược chứng minh khái niệm. Tuy nhiên, khoảng cách từ thực tế vẫn còn một khoảng cách nhất định và có không gian tối ưu hóa lớn. Nếu có thể cải thiện hơn nữa kiểm soát gió và kiểm soát tần số giao dịch, thì chiến lược này có triển vọng tốt hơn.

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