RSI EMA Crossover chiến lược

Tác giả:ChaoZhang, Ngày: 2023-10-25 11:46:49
Tags:

img

Tổng quan

Chiến lược này sử dụng nguyên tắc chéo trung bình động theo cấp số nhân (EMA), kết hợp với chỉ số RSI, để xác định hướng xu hướng cho các bước vào và ra.

Chiến lược logic

Chiến lược này sử dụng 3 đường EMA với các giai đoạn khác nhau - đường nhanh, đường trung bình và đường chậm.

RSI cũng kết hợp các chỉ số RSI để đánh giá các điều kiện mua quá mức và bán quá mức. RSI tính toán tỷ lệ giữa các ngày tăng trung bình và các ngày giảm trung bình trong một khoảng thời gian để hiển thị sức mạnh tương đối của tài sản. Giá trị trên ngưỡng mua quá mức báo hiệu các điều kiện mua quá mức, trong khi các giá trị dưới ngưỡng bán quá mức báo hiệu các điều kiện bán quá mức.

Các điều kiện mua cho chiến lược là:

  1. Giá vượt qua đường EMA nhanh, trung bình và chậm
  2. RSI vượt quá ngưỡng bán quá mức

Các điều kiện bán hàng là:

  1. EMA nhanh vượt dưới EMA trung bình
  2. RSI vượt dưới đường trung bình

Sử dụng đường chéo EMA để xác định hướng xu hướng kết hợp với chỉ số RSI để xác định các cơ hội đảo ngược ngắn hạn, chiến lược này sử dụng cả hai khái niệm theo xu hướng và đảo ngược trung bình.

Phân tích lợi thế

Chiến lược này kết hợp các đường chéo EMA và RSI để đánh giá cả xu hướng và mức mua quá mức / bán quá mức, lọc ra những vụ phá vỡ sai và các giao dịch ồn ào.

Các thiết lập RSI cho phép chiến lược thời gian vào và ra tại các khu vực mua quá mức / bán quá mức có lợi.

Yêu cầu giá phải vượt qua cả 3 đường EMA trước khi tham gia giao dịch giúp tránh bị đánh bại.

Phân tích rủi ro

Giống như tất cả các chiến lược được kiểm tra ngược, chiến lược này phải đối mặt với nguy cơ quá mức kiểm tra ngược.

Trong các thị trường dao động, chiến lược có thể tạo ra tín hiệu sai và chịu tổn thất.

Điều chỉnh tham số RSI kém có thể dẫn đến cơ hội bị bỏ lỡ hoặc tín hiệu sai.

Cơ hội gia tăng

  1. Xem xét thêm xác nhận trên khung thời gian dài hơn để tránh tiếng ồn.

  2. Chờ cho kiểm tra lại các đường EMA trước khi tham gia giao dịch để xác nhận tín hiệu.

  3. Kết hợp các chỉ số khác như MACD, Bollinger Bands để xác nhận tín hiệu kết hợp.

  4. Sử dụng máy học để tối ưu hóa các tham số cho độ bền.

  5. Xem xét thêm stop loss để thoát khỏi xu hướng không chắc chắn nhanh chóng.

Kết luận

Chiến lược này kết hợp EMA crossover và RSI để xác định xu hướng trong khi tận dụng lợi thế của sự đảo ngược ngắn hạn. Nó sử dụng cả hai khái niệm theo xu hướng và đảo ngược trung bình một cách hiệu quả. Có phạm vi tối ưu hóa thông qua xác nhận tín hiệu, điều chỉnh tham số, dừng lỗ vv. Nhưng quá mức kiểm tra lại cần phải được xem xét và hiệu suất trực tiếp nên được đánh giá.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
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/
// © chadsadachai

//@version=5
strategy("EMA Cross V1", overlay= true)

//rsi
length = input.int(title = "Rsi Lenght" , defval=26 , minval=1, maxval=50)
overS = input.int(title = "Rsi OVS line" , defval=30 , minval=1, maxval=40)
overB = input.int(title = "Rsi OVB line" , defval=70 , minval=1, maxval=100)
mLine = input.int(title = "Rsi Medium line" , defval=42 , minval=1, maxval=60)
price = close
vrsi = ta.rsi(price, length)
co = vrsi >= mLine and vrsi < overB 
cu = ta.crossunder(vrsi, overB)
//ema
F = input.int(title = "EMA Fast" , defval=17 , minval=1, maxval=50)
M = input.int(title = "EMA Medium" , defval=35, minval=1, maxval=100)
S = input.int(title = "EMA Slow" , defval=142, minval=1, maxval=200)
emaF = ta.ema(price , F)
emaM = ta.ema(price , M)
emaS = ta.ema(price , S)

//plot
plot(emaF , color = color.green , linewidth=1)
plot(emaM , color = color.yellow , linewidth=1)
plot(emaS , color = color.red , linewidth=1)

//Time Stamp
start = timestamp(input.int(title = "Start Year" , defval=2011 , minval=2011, maxval=2025), input.int(title = "Start Month" , defval=1 , minval=1, maxval=12), input.int(title = "Start Day" , defval=1 , minval=1, maxval=31), 0, 0)
end = timestamp(input.int(title = "End Year" , defval=2025 , minval=2011, maxval=2025), input.int(title = "End Month" , defval=1 , minval=1, maxval=12), input.int(title = "End Day" , defval=1 , minval=1, maxval=31), 0, 0)
// years = input.int(title = "Year" , defval=2018 , minval=2011, maxval=2025)
// months = input.int(title = "Month" , defval=1 , minval=1, maxval=12)
// days = input.int(title = "Day" , defval=1 , minval=1, maxval=31)

//longCondition Default
// longCondition1 = EMA_Fast >= EMA_Slow and EMA_Fast >= EMA_Medium//ta.crossover(EMA_Fast, EMA_Slow)  EMA_Fast > EMA_Slow and EMA_Medium > EMA_Slow
// longCondition3 = price >= EMA_Medium and price > EMA_Slow
// longCondition2 = vrsi >= overSold and vrsi <= overBought 

//longCondition & shortCondition ETHUSD
// 1.price > emaF > emaM > emaS
// 2.rsi overcross overS
longC1 = price > emaF and price > emaM and price > emaS 
// longC1 = ta.crossover(emaF, emaM)
longC2 = if longC1
    co
// shortC1 = EMA_Fast < EMA_Medium //and EMA_Fast < EMA_Slow and EMA_Medium < EMA_Slow //and cu
// shortC2 = overBought > vrsi //and vrsi < overBought //overSold < vrsi and vrsi < mediumLine

// exitLong Condition
// 1.price < emaF < emaM < emaS
// 2.rsi overcross mediumLine
exitLong1 = ta.crossunder(emaF, emaM) //or emaF < emaM//and price < emaM and price < emaF
exitLong2 = ta.crossunder(vrsi,mLine)
//exitLong3 = price < emaM
//strategy.entry
if time >=start and time <=end
    strategy.entry("Buy", strategy.long , when = longC1 and longC2)

// if(exitLong1 or exitLong2)
strategy.close("Buy" , when = exitLong1 or exitLong2)
    
// exitShort1 = EMA_Fast > EMA_Medium
// //exitShort2 = ta.crossover(vrsi , mediumLine) 
// exitShort2 = ta.crossunder (vrsi,mediumLine)
// strategy.close("Short" , when = exitShort1 or exitShort2)
// //shortCondition = cu


// //if (shortCondition1 and shortCondition2)
//     //strategy.entry("My Short Entry Id", strategy.short)


Thêm nữa