Chiến lược dừng lỗ dựa trên đường trung bình động kép động


Ngày tạo: 2024-02-26 11:13:17 sửa đổi lần cuối: 2024-02-26 11:13:17
sao chép: 0 Số nhấp chuột: 594
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ dựa trên đường trung bình động kép động

Tổng quan

Chiến lược này là một chiến lược theo dõi dừng động dựa trên đường trung bình EMA kép. Nó sử dụng đường 9 ngày, đường 20 ngày để xác định hướng xu hướng thị trường, kết hợp với RSI để lọc các khe hở giả. Đồng thời sử dụng chỉ số ATR để tính toán điểm dừng động và điểm dừng.

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

Chiến lược này sử dụng EMA 9 ngày làm đường trung bình ngắn hạn và EMA 20 ngày làm đường trung bình trung hạn để xác định xu hướng của giá. Khi giá vượt qua đường trung bình ngắn hạn và giá đóng cửa cao hơn mức cao nhất của ngày trước và RSI cao hơn 30, hãy làm nhiều; Khi giá vượt qua đường trung bình ngắn hạn và giá đóng cửa thấp hơn mức thấp nhất của ngày trước và RSI thấp hơn 70, hãy làm trống.

Đặt mức dừng là giá đóng cửa trừ ATR 1,5 lần, đặt mức dừng là giá đóng cửa cộng với ATR nhân hệ số dừng. Đồng thời sử dụng ATR 2 lần để thiết lập lệnh dừng theo dõi xu hướng.

Lợi thế chiến lược

  1. Sử dụng hai EMA để đánh giá xu hướng thị trường chính, tránh bị ảnh hưởng bởi tiếng ồn
  2. Kết hợp các chỉ số RSI để lọc phá vỡ giả để tăng độ chính xác nhập cảnh
  3. Động thái dừng lỗ, có thể điều chỉnh lệnh dừng lỗ theo mức độ biến động của thị trường
  4. Theo dõi xu hướng, dừng lỗ, tối đa hóa lợi nhuận

Phân tích rủi ro

  1. Đường trung bình của EMA bị tụt hậu và có thể bỏ lỡ cơ hội ngắn hạn
  2. RSI không được thiết lập đúng có thể dẫn đến việc bỏ lỡ cơ hội vào sân
  3. Thiết lập tỷ lệ dừng thiệt hại không đúng, có thể quá lỏng lẻo hoặc quá nghiêm ngặt
  4. Trong khi đó, các nhà đầu tư khác cũng có khả năng phá vỡ lệnh dừng lỗ khi tình hình bất ổn.

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

  1. Kiểm tra các kết hợp EMA của các tham số khác nhau để tìm ra tham số tối ưu Tối ưu hóa các tham số RSI, cân bằng mối quan hệ giữa độ chính xác nhập cảnh và nắm bắt cơ hội
  2. Kiểm tra các tỷ lệ dừng lỗ khác nhau để tìm cấu hình tối ưu
  3. Thêm nhiều điều kiện cho các chỉ số lọc để giảm khả năng phá vỡ điểm dừng

Tóm tắt

Chiến lược này nói chung là một chiến lược giữ vị trí trung bình và dài hơn. Nó kết hợp hai EMA để đánh giá xu hướng thị trường chính và tránh ảnh hưởng của tiếng ồn thị trường ngắn hạn. Việc thêm chỉ số RSI cũng lọc các phá vỡ giả một phần. Ngoài ra, cơ chế dừng lỗ động cũng cho phép chiến lược điều chỉnh mức dừng lỗ của mình theo mức độ biến động của thị trường.

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