Tài nguyên đang được tải lên... tải...

Keltner Channels EMA Chiến lược ATR

Tác giả:ChaoZhang, Ngày: 2024-06-03 10:39:20
Tags:EMAATR

img

Tổng quan

Chiến lược này dựa trên chỉ số Keltner Channels, sử dụng Mức trung bình chuyển động biểu thức (EMA) và Mức trung bình thực sự (ATR) để xây dựng các kênh trên và dưới. Khi giá phá vỡ bên dưới kênh dưới, nó đi vào vị trí dài, và khi giá phá vỡ trên kênh trên, nó đóng vị trí. Chiến lược này cố gắng nắm bắt phạm vi biến động giá và kiếm lợi nhuận khi giá phá vỡ trên kênh trên.

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

  1. Tính toán EMA của một khoảng thời gian nhất định như đường trung của các kênh Keltner.
  2. Tính toán ATR của một khoảng thời gian cụ thể, sau đó nhân nó với một nhân để phục vụ như các kênh trên và dưới.
  3. Khi giá đóng cửa giảm xuống dưới kênh dưới, hãy nhập một vị trí dài và ghi lại giá nhập cảnh.
  4. Khi giá mở phá vỡ trên kênh trên, đóng vị trí.
  5. Nếu đã có vị trí và giá mở cao hơn kênh trên, đóng vị trí dài.

Ưu điểm chiến lược

  1. Khả năng thích nghi với biến động giá. Vì Keltner Channels sử dụng ATR để xây dựng các kênh trên và dưới, và ATR đo biến động giá, nên chiều rộng kênh sẽ tăng tương ứng khi biến động cao, giảm hiệu quả chi phí giao dịch thường xuyên.
  2. Logic rõ ràng, đơn giản và dễ hiểu và thực hiện Các chỉ số được sử dụng trong chiến lược này rất đơn giản và logic cốt lõi tương đối dễ hiểu.
  3. Trong xu hướng tăng, chiến lược này có thể giữ một vị trí dài cho đến khi giá phá vỡ trên kênh trên.

Rủi ro chiến lược

  1. Thiếu cơ chế dừng lỗ rõ ràng. Chiến lược này không thiết lập lệnh dừng lỗ sau khi nhập vào một vị trí, có thể dẫn đến giảm lớn trong điều kiện thị trường bất lợi.
  2. Định nghĩa thô của tín hiệu đột phá: Chỉ sử dụng giá đóng giảm dưới kênh dưới và giá mở phá vỡ trên kênh trên như tín hiệu vào và ra có thể tạo ra một số đánh giá sai, dẫn đến việc thua giao dịch.
  3. Việc lựa chọn các tham số chiến lược có tác động đáng kể đến kết quả. Việc lựa chọn các giai đoạn EMA và ATR và việc thiết lập số ATR sẽ ảnh hưởng đến hiệu suất chiến lược, nhưng chiến lược không cung cấp một phương pháp tối ưu hóa tham số rõ ràng.

Hướng dẫn tối ưu hóa chiến lược

  1. Thiết lập một cơ chế dừng lỗ rõ ràng. Xem xét việc thiết lập dừng lỗ ở một số điểm hoặc tỷ lệ phần trăm cố định khi nhập vào một vị trí để kiểm soát mức lỗ tối đa của một giao dịch duy nhất.
  2. Tối ưu hóa các điều kiện đánh giá của tín hiệu. Hãy xem xét sử dụng nhiều thông tin giá hơn để xác nhận breakout, chẳng hạn như yêu cầu giá đóng dưới kênh dưới trong vài ngọn nến liên tiếp trước khi vào một vị trí để tránh breakout sai.
  3. Thực hiện tối ưu hóa tham số. Sử dụng các phương pháp như thuật toán di truyền để tối ưu hóa các giai đoạn của EMA và ATR và ATR nhiều lần để tìm ra sự kết hợp tham số phù hợp hơn cho thị trường hiện tại.
  4. Thêm các điều kiện lọc. Xem xét thêm một số tín hiệu lọc, chẳng hạn như chỉ nhập vào vị trí khi ADX vượt quá ngưỡng nhất định hoặc sử dụng đường chéo tăng MA làm bộ lọc xu hướng.

Tóm lại

Chiến lược này dựa trên chỉ số Keltner Channels và thực hiện giao dịch dựa trên logic của giá phá vỡ trên hoặc dưới các kênh. Ưu điểm của nó là logic đơn giản và rõ ràng và khả năng thích nghi mạnh mẽ. Nhược điểm của nó là thiếu stop-loss và chất lượng tín hiệu kém.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
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/
// © satrusskumar

//@version=5

// Input parameters
length = input.int(21, title="EMA Length")
mult = input.float(2, title="ATR Multiplier")
atrLength = input.int(13, title="ATR Length")

// Calculate Keltner Channels
ema = ta.ema(close, length)
atr = ta.atr(atrLength)
upper_band = ema + mult * atr
lower_band = ema - mult * atr

// Plot Keltner Channels
plot(upper_band, color=color.red, title="Keltner Upper Band")
plot(ema, color=color.blue, title="Keltner EMA")
plot(lower_band, color=color.green, title="Keltner Lower Band")

// Strategy logic
var float entry_price = na
var bool in_trade = false

if (not in_trade and close < lower_band)
    strategy.entry("Long", strategy.long)
    entry_price := close
    in_trade := true

if (in_trade and open > upper_band)
    strategy.close("Long")
    in_trade := false
// Strategy settings
strategy("Keltner Channel Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)


Có liên quan

Thêm nữa