Chiến lược dừng kéo dài động đôi động động

Tác giả:ChaoZhang, Ngày: 2024-02-26 11:13:17
Tags:

img

Tổng quan

Đây là một chiến lược dừng lại theo dõi năng động dựa trên đường EMA kép. Nó sử dụng EMA 9 ngày và 20 ngày để xác định hướng xu hướng thị trường, kết hợp với chỉ số RSI để lọc các đứt gãy sai. Nó cũng sử dụng chỉ số ATR để tính toán mức dừng lỗ năng động và lấy lợi nhuận. Chiến lược này phù hợp với cổ phần trung hạn đến dài hạn.

Chiến lược logic

Chiến lược này sử dụng EMA 9 ngày như đường ngắn hạn và EMA 20 ngày như đường trung hạn để xác định xu hướng giá. Nó đi dài khi giá vượt qua đường ngắn hạn và giá đóng cửa cao hơn mức cao của ngày trước, với chỉ số RSI thấp hơn 70 và đóng cửa cao hơn EMA 20 ngày trừ 1 ATR. Nó đi ngắn khi giá vượt qua đường ngắn hạn và giá đóng cửa thấp hơn mức thấp của ngày trước, với chỉ số RSI cao hơn 30 và đóng cửa cao hơn EMA 20 ngày trừ 1 ATR.

Stop loss được thiết lập ở giá đóng trừ 1,5 lần ATR. Lợi nhuận được thiết lập ở giá đóng cộng với ATR nhân với hệ số lợi nhuận. Nó cũng sử dụng 2 lần ATR để thiết lập stop loss theo xu hướng.

Phân tích lợi thế

  1. Sử dụng hai EMA để xác định xu hướng thị trường chính, tránh bị áp lực bởi tiếng ồn
  2. Kết hợp chỉ số RSI để lọc ngắt sai, cải thiện độ chính xác nhập
  3. Động thái dừng lỗ và lấy lợi nhuận thích nghi với biến động thị trường
  4. Đi theo xu hướng dừng lỗ tối đa hóa lợi nhuận

Phân tích rủi ro

  1. Các dòng EMA có tác dụng chậm, có thể bỏ lỡ các cơ hội ngắn hạn
  2. Cài đặt tham số RSI không chính xác có thể bỏ lỡ các mục
  3. Tỷ lệ stop loss/take profit không phù hợp có thể quá lỏng lẻo hoặc nghiêm ngặt
  4. Stop loss có thể được thâm nhập trong các biến động thị trường mạnh mẽ

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

  1. Kiểm tra các kết hợp EMA khác nhau để tìm các thông số tối ưu
  2. Tối ưu hóa các thông số RSI để cân bằng độ chính xác nhập cảnh và cơ hội bắt
  3. Kiểm tra các tỷ lệ dừng lỗ / lấy lợi nhuận khác nhau để tìm cấu hình tối ưu
  4. Thêm nhiều điều kiện lọc để giảm xác suất xâm nhập stop loss

Tóm lại

Nói chung, đây là một chiến lược nắm giữ tương đối ổn định trong thời gian trung và dài. Nó sử dụng EMA kép để xác định xu hướng thị trường chính, tránh bị ảnh hưởng bởi tiếng ồn ngắn hạn. Việc thêm RSI cũng lọc các đứt gãy sai ở một mức độ nào đó. Hơn nữa, cơ chế dừng lỗ / lấy lợi nhuận năng động cho phép chiến lược điều chỉnh dựa trên sự biến động của thị trường. Tuy nhiên, vẫn có những rủi ro như tụt hậu của đường trung bình động và tiềm năng thâm nhập lỗ dừng. Chúng ta cần tìm ra cấu hình tối ưu thông qua điều chỉnh tham số và tối ưu hóa trong quá trình áp dụng thực tế.


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

//@version=4
strategy("CJTrade", overlay=true)

short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)

plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)

rsiValue = rsi(close, 14)

near20EMA = close > medium - atr(14)

longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA

strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)

atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5

// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier

// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)

// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)

strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)


Thêm nữa