Chiến lược giao dịch RSI trung bình chuyển động theo hàm số hai

Tác giả:ChaoZhang, Ngày: 2024-01-30 15:44:11
Tags:

img

Tổng quan

Chiến lược được đặt tên là Double Exponential Moving Average RSI Trading Strategy. Nó sử dụng Double EMA và Relative Strength Index (RSI) như các chỉ số giao dịch chính để thực hiện giao dịch tự động.

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

Chiến lược này đầu tiên tính toán Trung bình Di chuyển Tăng gấp đôi (MA) của giá, sau đó tính toán RSI dựa trên MA, và tiếp tục tính toán Trung bình Di chuyển Tăng của RSI (Smooth). Nó tạo ra tín hiệu mua khi RSI vượt trên trung bình di chuyển của nó và bán tín hiệu khi RSI vượt dưới trung bình di chuyển của nó. Tùy chọn, chiến lược cũng thiết lập các tham số cho số lượng giao dịch tối đa mỗi ngày, kích thước giao dịch là tỷ lệ phần trăm vốn chủ sở hữu, thời gian phiên giao dịch, lấy lợi nhuận và dừng lỗ trong các điểm và dừng lại trong các điểm để kiểm soát rủi ro.

Điểm mạnh của chiến lược

  1. Double EMA phản ứng nhanh hơn với sự thay đổi giá và lọc ra một số tiếng ồn.
  2. Tính toán RSI dựa trên MA làm cho nó ổn định hơn và tránh giao dịch sai.
  3. Mức trung bình di chuyển của RSI giúp xác nhận tín hiệu giao dịch và tránh các đột phá sai.
  4. Đặt số lượng giao dịch tối đa mỗi ngày giúp kiểm soát rủi ro hàng ngày.
  5. Đặt kích thước giao dịch bằng tỷ lệ phần trăm vốn chủ sở hữu tránh mất mát giao dịch đơn quá lớn.
  6. Thiết lập thời gian phiên giao dịch tránh các nút thời gian chính và kiểm soát rủi ro thanh khoản.
  7. Lấy lợi nhuận và dừng lỗ trong điểm giúp hạn chế giao dịch duy nhất P & L.
  8. Chế độ dừng lại trong các điểm giúp khóa lợi nhuận thay đổi và giảm rút tiền.

Rủi ro chiến lược

  1. EMA đôi phản ứng chậm hơn với các sự kiện thị trường, bỏ lỡ các cơ hội giao dịch ngắn hạn.
  2. RSI có xu hướng hình thành các tín hiệu chết sai / chéo vàng. Cần xác nhận với các chỉ số khác để giao dịch thận trọng.
  3. Tỷ lệ phần trăm cố định của vốn chủ sở hữu không thể thích nghi với biến động thị trường thay đổi, rủi ro sử dụng quỹ không đủ.
  4. Mục tiêu dừng lỗ / lợi nhuận cố định không thích nghi với các sản phẩm và điều kiện thị trường khác nhau, có nguy cơ thoát sớm.
  5. Chế độ dừng lại thường được kích hoạt quá thường xuyên trong thị trường hỗn loạn.

Các biện pháp đối phó:

  1. Giảm thời gian MA để cải thiện độ nhạy.
  2. Thêm các chỉ số khác như âm lượng để lọc tín hiệu.
  3. Điều chỉnh động kích thước giao dịch.
  4. Điều chỉnh mục tiêu dừng lỗ/lợi nhuận dựa trên biến động thị trường.
  5. Thư giãn các điểm dừng lỗ phù hợp.

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

  1. Kiểm tra các kết hợp EMA đôi ngắn hạn / dài hạn khác nhau để tìm các thông số tối ưu.
  2. Kiểm tra các thông số thời gian tính toán RSI để cải thiện độ tin cậy của tín hiệu chết / đường chéo vàng.
  3. Thêm các chỉ số như âm lượng, Bollinger Bands để lọc tiếng ồn tín hiệu.
  4. Điều chỉnh động kích thước giao dịch và mục tiêu dừng lỗ / lợi nhuận dựa trên giá đóng hàng ngày, biến động vv.
  5. Tối ưu hóa các cơ chế dừng kéo theo cho các sản phẩm và môi trường thị trường khác nhau.

Tóm lại

Chiến lược có các quy tắc cơ học rõ ràng và độ tin cậy cao nói chung, phù hợp với các sản phẩm xu hướng trung bình đến dài hạn. Khi được tối ưu hóa, nó có thể trở thành một xu hướng cơ bản theo chiến lược cơ học với rủi ro có thể kiểm soát được, đáng để đánh giá thêm về hiệu suất trực tiếp.


/*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=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)

ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)

max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)

USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))

buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)

strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)

strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)

Thêm nữa