Chiến lược theo xu hướng đa EMA và RSI

Tác giả:ChaoZhang, Ngày: 2024-03-01 13:26:24
Tags:

img

Tổng quan

Bài viết này chủ yếu phân tích chiến lược giao dịch định lượng được phát triển bởi Ravikant_sharma dựa trên nhiều đường trung bình chuyển động theo cấp số nhân (EMA) và chỉ số sức mạnh tương đối (RSI). Chiến lược xác định xu hướng giá và xác định các điểm vào và ra bằng cách vượt qua đường EMA với các chu kỳ và giá trị khác nhau của RSI.

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

Tính toán chỉ số

Chiến lược này sử dụng 5 EMA với các khoảng thời gian khác nhau, bao gồm các đường 9 ngày, 21 ngày, 51 ngày, 100 ngày và 200 ngày. Chỉ có 4 EMA đầu tiên được vẽ trong mã.

Điều kiện nhập cảnh

Một trong những điều kiện sau đây phải được đáp ứng trước khi mua:

  1. EMA 9 ngày vượt qua EMA 21 ngày
  2. EMA 9 ngày vượt qua EMA 51 ngày
  3. EMA 51 ngày vượt dưới EMA 100 ngày

Đồng thời, chỉ số RSI phải lớn hơn 65, cho thấy xu hướng tăng mạnh.

Điều kiện xuất cảnh

Một trong những điều kiện sau đây phải được đáp ứng trước khi đóng vị trí:

  1. EMA 9 ngày vượt dưới EMA 51 ngày, cho thấy sự đảo ngược xu hướng
  2. Giá đóng cửa vượt quá 125% giá nhập cảnh, đạt mục tiêu lợi nhuận
  3. Chỉ số RSI giảm xuống dưới 40, báo hiệu đảo ngược
  4. Giá đóng cửa giảm xuống dưới 98% giá nhập cảnh, stop loss được kích hoạt

Phân tích lợi thế

Đó là một xu hướng điển hình theo chiến lược với những điểm mạnh sau:

  1. Sử dụng đường chéo EMA để xác định hướng xu hướng để theo dõi xu hướng hiệu quả
  2. Kết hợp các EMA của các giai đoạn khác nhau xác định các tín hiệu xu hướng đáng tin cậy hơn
  3. Bộ lọc RSI tránh các tín hiệu sai trong các thị trường giới hạn phạm vi
  4. Các thiết lập lấy lợi nhuận và dừng lỗ khóa lợi nhuận và kiểm soát rủi ro

Rủi ro và giải pháp

Vẫn còn một số rủi ro:

  1. Các tín hiệu không chắc chắn có thể xảy ra thường xuyên trên các thị trường giới hạn trong phạm vi, gây ra giao dịch quá mức.
  2. Các tín hiệu chéo EMA có thể bị trì hoãn trong khi đảo ngược mạnh, không thể thoát ra kịp thời.
  3. Mục tiêu lợi nhuận không chính xác và cài đặt dừng lỗ dẫn đến dừng lỗ sớm hoặc thất bại trong việc khóa lợi nhuận kịp thời. Các thông số nên được tối ưu hóa theo các sản phẩm và môi trường thị trường khác nhau.

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

Chiến lược có thể được tối ưu hóa thêm theo các cách sau:

  1. Tối ưu hóa tham số cho các sản phẩm khác nhau
  2. Thêm các chỉ số kỹ thuật khác để xây dựng các mô hình đa yếu tố
  3. Kết hợp các thuật toán học máy để đánh giá chất lượng tín hiệu
  4. Kết hợp phân tích cảm xúc để tránh những cạm bẫy về cảm xúc
  5. Kiểm tra các chiến lược lấy lợi nhuận / dừng lỗ khác nhau để tìm ra tối ưu

Kết luận

Tóm lại, đây là một chiến lược theo xu hướng tổng thể đáng tin cậy và dễ thực hiện. Với EMA chéo cho hướng xu hướng và bộ lọc RSI cho tín hiệu sai, kết quả backtest tốt cung cấp một nền tảng vững chắc cho các thông số và tối ưu hóa mô hình để có được lợi nhuận ổn định. Tuy nhiên, các nhà giao dịch vẫn nên thận trọng với sự đảo ngược mạnh và các thông số không phù hợp gây ra rủi ro.


/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Ravikant_sharma

//@version=5

strategy('new', overlay=true)

start = timestamp(1990, 1, 1, 0, 0)
end = timestamp(2043, 12, 12, 23, 59)
ema0 = ta.ema(close, 9)
ema1 = ta.ema(close, 21)
ema2 = ta.ema(close, 51)
ema3 = ta.ema(close, 100)
ema4 = ta.ema(close, 200)

rsi2=ta.rsi(ta.sma(close,14),14)
plot(ema0, '9', color.new(color.green, 0))
plot(ema1, '21', color.new(color.black, 0))
plot(ema2, '51', color.new(color.red, 0))
plot(ema3, '200', color.new(color.blue, 0))   

//plot(ema4, '100', color.new(color.gray, 0)) 


//LongEntry = (  ta.crossover(ema0,ema3)  or  ta.crossover(ema0,ema2) or  ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) //
LongEntry=false
if ta.crossover(ema0,ema1) 
    if rsi2>65
        LongEntry:=true
if ta.crossover(ema1,ema2)
    if rsi2>65
        LongEntry:=true
        
LongExit =  ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98)



if time >= start and time <= end 
    if(LongEntry and rsi2>60)
        strategy.entry('Long', strategy.long, 1)
    if(LongExit)
        strategy.close('Long') 



Thêm nữa