Zero Lag Volatility Breakout Chiến lược xu hướng EMA

Tác giả:ChaoZhang, Ngày: 2024-01-15 12:00:25
Tags:

img

Tổng quan

Đây là một chiến lược đột phá đơn giản sử dụng sự khác biệt giữa hai EMA trễ bằng không khác nhau để theo dõi đà tăng hoặc giảm của một công cụ. Khi sự khác biệt phá vỡ một Bollinger Band của độ lệch chuẩn có thể cấu hình, các tín hiệu dài / ngắn được tạo ra dựa trên hướng của EMA cơ bản.

Chiến lược logic

Chiến lược sử dụng hai chỉ số EMA được tính toán đặc biệt để có được sự khác biệt biến động, như được hiển thị trong các công thức dưới đây:

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))  
dif = (hJumper / lJumper) - 1

Sự khác biệt phản ứng ngay lập tức với những thay đổi giá đột ngột mà không bị trì hoãn.

Khi dif vượt qua trên Bollinger Band trên, tín hiệu vào được kích hoạt. Khi dif vượt qua dưới Bollinger Band giữa, tín hiệu ra được kích hoạt.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là phản ứng nhanh với các tín hiệu đột phá mà không có sự chậm trễ. Điều này đạt được bằng cách sử dụng hai EMA không chậm trễ được tính toán đặc biệt. Điều này cho phép chiến lược ngay lập tức nắm bắt các sự kiện đột phá giá và bước vào sớm trong các xu hướng mới nổi.

Một lợi thế khác là sự đơn giản của chiến lược này. Nó chỉ có một tham số lx. Ít tham số làm cho tối ưu hóa dễ dàng hơn và giảm nguy cơ quá phù hợp.

Phân tích rủi ro

Rủi ro chính của chiến lược này là có thể phá vỡ sai của các tín hiệu. Các sự phá vỡ sai liên tiếp có thể xảy ra trong khoảng thời gian dao động. Để giảm thiểu rủi ro này, chúng ta có thể tăng bỉm Bollinger Band để làm cho tín hiệu ổn định hơn.

Một rủi ro khác là các khoản thắng / thua nhỏ thường xuyên trong các thị trường hỗn loạn. Điều này có thể được giảm thiểu bằng cách điều chỉnh các cơ chế thoát, ví dụ như bằng cách đặt mức giá dừng lỗ hoặc lấy lợi nhuận.

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

Dưới đây là một số hướng có thể tối ưu hóa chiến lược này:

  1. Thêm các chỉ báo bộ lọc để xác nhận tín hiệu nhập và giảm tín hiệu sai.

  2. Kết hợp dừng lỗ và lấy lợi nhuận để quản lý tốt hơn các giao dịch.

  3. Tìm kiếm xác nhận khối lượng giao dịch để tránh phá vỡ sai mà không có cam kết khối lượng.

  4. Sử dụng Bollinger Band thích nghi để điều chỉnh các tham số dựa trên biến động thị trường.

  5. Tối ưu hóa các tham số năng động dựa trên máy học.

Kết luận

Tóm lại, chiến lược EMA đột phá biến động không trì hoãn này nắm bắt đà tăng giá nhanh chóng bằng cách sử dụng EMA được tính toán đặc biệt mà không bị trì hoãn.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
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/
// © wbburgin

//@version=5
strategy("Zero-lag Volatility-Breakout EMA Trend Strategy",overlay=false)

tt1 = "If selected, the strategy will not close long or short positions until the opposite signal is received. This"+
 " exposes you to more risk but potentially could generate larger returns."

src = input.source(close,"Source")
lx = input.int(200,"EMA Difference Length")
bbmult = input.float(2.0,"Standard Deviation Multiple")
useBinaryStrategy = input.bool(true,"Use Binary Strategy",tooltip = tt1)

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))

dif = (hJumper / lJumper) - 1

[bbm,bbu,bbl] = ta.bb(dif,lx,bbmult)

plot(dif,color=color.white,title="Zero lag EMA Difference")
plot(bbu,color=color.lime,title="Bollinger Top")
plot(bbl,color=color.red,title="Bollinger Bottom")
plot(bbm,color=color.yellow,title="Bollinger Middle")

sigEnter = ta.crossover(dif,bbu)
sigExit = ta.crossunder(dif,bbm)
emaBase = ta.ema(src,lx)
enterLong = sigEnter and emaBase > emaBase[1]
enterShort = sigEnter and emaBase < emaBase[1]

plotshape(enterLong,style=shape.labelup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(enterShort,style=shape.labeldown,location=location.top,color=color.red,size=size.tiny)

if enterLong
    strategy.entry("Long",strategy.long)
if enterShort
    strategy.entry("Short",strategy.short)
if not useBinaryStrategy and sigExit
    strategy.close("Long")
    strategy.close("Short")

Thêm nữa