Supertrend BarUpDn Chiến lược hợp nhất

Tác giả:ChaoZhang, Ngày: 2024-01-31 14:43:06
Tags:

img

Tổng quan

Chiến lược Supertrend BarUpDn Fusion là một chiến lược hợp nhất chỉ số Supertrend và chỉ số BarUpDn. Chiến lược sẽ đi dài nếu chỉ số Supertrend hoặc BarUpDn đưa ra tín hiệu dài, và sẽ đi ngắn nếu một trong hai chỉ số đưa ra tín hiệu ngắn.

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

Chiến lược chủ yếu sử dụng hai chỉ số:

  1. Chỉ số siêu xu hướng: Chỉ số này xác định hướng xu hướng dựa trên phạm vi trung bình thực sự và một yếu tố. Nó cung cấp tín hiệu dài khi giá ở kênh xu hướng tăng và tín hiệu ngắn khi giá ở kênh xu hướng giảm.

  2. Chỉ số BarUpDn: Chỉ số này đánh giá xem thanh hiện tại là thanh tăng (khép cao hơn mở) hoặc thanh giảm (mở cao hơn đóng). Nó trả về 1 cho các thanh tăng và -1 cho các thanh giảm.

Lý thuyết chính của chiến lược là:

  1. Đi dài khi Supertrend là dài và BarUpDn là tăng.

  2. Đi ngắn khi Supertrend là ngắn và BarUpDn là giảm.

  3. Đóng các vị trí kịp thời khi Supertrend thay đổi hướng.

Thông qua sự sáp nhập này, chiến lược có thể sử dụng cả khả năng đánh giá xu hướng của Supertrend và khả năng đánh giá ngắn hạn của BarUpDn để đạt được thời gian vào tốt hơn.

Phân tích lợi thế

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

  1. Cải thiện độ chính xác bằng cách hợp nhất nhiều chỉ số. Sử dụng cả đánh giá xu hướng của Supertrend và đánh giá ngắn hạn của BarUpDn có thể cải thiện độ chính xác thời gian nhập cảnh.

  2. Giữ lỗ kịp thời. Nhanh chóng cắt giảm lỗ khi chỉ số chính Supertrend thay đổi hướng có thể tránh tăng lỗ.

  3. Đơn giản và dễ sử dụng. Chiến lược chỉ sử dụng một sự kết hợp của hai chỉ số chung, làm cho nó rất đơn giản và dễ sử dụng.

  4. Khả năng thích nghi mạnh mẽ. Supertrend có các tham số có thể điều chỉnh để thích nghi với các sản phẩm và khung thời gian khác nhau.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Đánh giá không chính xác từ sự hợp nhất không chính xác có thể dẫn đến đánh giá sai.

  2. Điều chỉnh tham số không đúng ảnh hưởng đến hiệu suất. Supertrend's ATR Length và Factor cần được điều chỉnh cho các sản phẩm khác nhau.

  3. Sự đảo ngược ngắn hạn có thể gây ra tổn thất nhỏ. Những tổn thất nhỏ có thể xảy ra trong thời gian đảo ngược giá ngắn hạn trước khi Supertrend chuyển hướng.

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

Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:

  1. Thêm các chiến lược dừng lỗ như dừng lỗ di chuyển, dừng lỗ thời gian, dừng lỗ đột phá vv để kiểm soát rủi ro hơn nữa.

  2. Tối ưu hóa các tham số của Supertrend để tìm kết hợp tham số tốt nhất cho các sản phẩm và khung thời gian khác nhau, ví dụ: thông qua học máy.

  3. Thêm thêm sự hợp nhất các chỉ số để xây dựng một cơ chế bỏ phiếu và cải thiện sự ổn định đánh giá.

  4. Bao gồm nhiều yếu tố thị trường như thay đổi khối lượng, thay đổi chênh lệch vv để đánh giá độ tin cậy của tín hiệu và lọc các tín hiệu gây hiểu nhầm.

Tóm lại

Chiến lược Supertrend BarUpDn Fusion hợp nhất đánh giá xu hướng và đánh giá ngắn hạn bằng cách kết hợp các chỉ số đơn giản, cải thiện độ chính xác thời gian đầu vào trong khi duy trì tính đơn giản và dễ sử dụng.


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

//@version=5
strategy("Supertrend and BarUpDn Indicator Fusion", overlay=true)

// Supertrend indicator
atrLength = input(10, title="ATR Length")
factor = input(3.0, title="Factor")
[supertrend, direction] = ta.supertrend(factor, atrLength)
lastBar = 0

// BarUpDn indicator
barUpDn = close > open and open > close[1] ? 1 : close < open and open < close[1] ? -1 : 0

if (barUpDn == 1)
    lastBar := 1
else if barUpDn == -1
    lastBar := -1


// Determine long or short position
longCondition = (direction > 0 and barUpDn > 0) or (direction > 0 and lastBar == 1)
shortCondition = (direction < 0 and barUpDn < 0) or (direction < 0 and lastBar == -1)

// Enter long or short position
if (longCondition)
    strategy.entry("Long", strategy.long)
    lastBar := 1
else if (shortCondition)
    strategy.entry("Short", strategy.short)
    lastBar := -1

if (direction < 0 and barUpDn > 0)
    strategy.entry("Long", strategy.long)

// Exit long or short position
if (direction > 0 and barUpDn < 0)
    strategy.entry("Short", strategy.short)

// Exit long or short position
// if (direction < 0 and barUpDn > 0 or direction > 0 and barUpDn < 0)
//   strategy.close_all()


Thêm nữa