Chiến lược giao cắt đường trung bình động RSI


Ngày tạo: 2023-10-25 11:46:49 sửa đổi lần cuối: 2023-10-25 11:46:49
sao chép: 2 Số nhấp chuột: 774
1
tập trung vào
1171
Người theo dõi

Chiến lược giao cắt đường trung bình động RSI

Tổng quan

Chiến lược này sử dụng các nguyên tắc của đường chéo, kết hợp với chỉ số RSI, để xác định xu hướng, mua và bán các hoạt động.

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

Chiến lược này sử dụng đường trung bình EMA của 3 chu kỳ khác nhau, là đường nhanh, đường trung và đường chậm. Khi đường nhanh vượt qua đường trung, nó được coi là tín hiệu mua; khi đường nhanh vượt qua đường trung, nó được coi là tín hiệu bán.

Trong khi đó, chiến lược này cũng sử dụng chỉ số RSI để đánh giá tình trạng quá mua quá bán. RSI cho thấy sự tương đối mạnh mẽ của một tài sản thông qua tỷ lệ tăng trung bình và giảm trung bình trong một chu kỳ. Khi RSI vượt quá đường mua quá mức được thiết lập, nó được coi là quá mua; Khi RSI thấp hơn đường bán quá mức được thiết lập, nó được coi là quá bán.

Điều kiện mua của chiến lược này là:

  1. Giá trên đường nhanh, đường trung, đường chậm
  2. Đường bán tháo được đặt trên RSI

Điều kiện bán hàng là:

  1. Dưới đường nhanh, qua đường giữa.
  2. Đường giữa được đặt dưới RSI

Phương pháp này kết hợp các chiến lược giao dịch theo xu hướng và giao dịch đảo ngược để xác định hướng của xu hướng lớn, kết hợp với RSI để phát hiện các cơ hội mua và bán quá mức trong thời gian ngắn.

Phân tích lợi thế

Chiến lược này kết hợp các đường trung bình và chỉ số RSI để đánh giá xu hướng và mua quá mức, và có thể lọc ra một số giao dịch ồn ào do phá vỡ giả. Sử dụng ba đường trung bình, bạn có thể đánh giá rõ hơn về tình trạng xu hướng.

Các thiết lập của chỉ số RSI cũng cho phép chiến lược này nắm bắt thời gian vào và ra tốt hơn trong các khu vực quá mua quá bán.

Chiến lược này cũng tính đến chi phí giao dịch, tránh bị đặt cược bằng cách chỉ tham gia khi giá vượt qua ba đường trung bình.

Phân tích rủi ro

Chiến lược này vẫn có nguy cơ phản hồi quá phù hợp. Thay đổi môi trường thị trường trong thực tế có thể dẫn đến các tham số không còn thích nghi với các điều kiện thị trường mới.

Trong các trường hợp xung đột, chiến lược này dễ tạo ra tín hiệu sai lệch và có thể gây ra tổn thất.

Các tham số RSI cần được điều chỉnh theo các thị trường khác nhau, nếu các tham số được thiết lập không đúng cách, nó có thể gây ra cơ hội bị bỏ lỡ hoặc tạo ra tín hiệu sai.

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

  1. Bạn có thể xem xét xác minh lại tín hiệu trên biểu đồ với chu kỳ thời gian dài hơn để tránh bị nhiễu bởi tiếng ồn thị trường ngắn hạn.

  2. Có thể thử nghiệm trước khi vào thị trường, chờ đột phá hoặc quay trở lại đường bình quân và tham gia vào thị trường để xác minh thêm tín hiệu.

  3. Có thể kết hợp với các chỉ số khác như MACD, Brin, v.v., kết hợp các tín hiệu của nhiều chỉ số để tăng tỷ lệ tử vong Entry.

  4. Các tham số tối ưu hóa có thể được hỗ trợ bởi các thuật toán học máy để làm cho chiến lược thích ứng hơn.

  5. Bạn có thể xem xét thêm các chiến lược dừng lỗ, dừng lỗ kịp thời khi xu hướng không chắc chắn.

Tóm tắt

Chiến lược này tích hợp các chỉ số chéo và RSI, trong khi đánh giá xu hướng, phát hiện cơ hội đảo ngược xu hướng ngắn hạn. Nó sử dụng hiệu quả lợi thế của giao dịch xu hướng và giao dịch đảo ngược, có thể nắm bắt cơ hội đường ngắn trong khi giữ theo hướng nhìn tốt trong thời gian dài. Chiến lược này có một số không gian tối ưu hóa, có thể làm cho chiến lược ổn định và đáng tin cậy hơn bằng cách xác minh thêm tín hiệu, tham số tối ưu hóa, thêm lỗ hổng.

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