SMA và RSI chỉ chiến lược dài

Tác giả:ChaoZhang, Ngày: 2023-12-18 10:28:10
Tags:

img

Tổng quan

Chiến lược này được chuyển thể từ các bài viết của Enrico Malverti. Nó chủ yếu sử dụng Simple Moving Average (SMA) và Relative Strength Index (RSI) để xác định các tín hiệu đầu vào và đầu ra dài. Chiến lược chỉ đi dài nhưng không ngắn.

Chiến lược logic

Tín hiệu nhập cảnh được kích hoạt khi giá đóng vượt qua đường SMA dài hơn.

Các tín hiệu ra ngoài bao gồm:

  1. Đóng dài khi RSI vượt dưới 70 hoặc vượt trên 75;
  2. Stop loss khi giá đóng cửa vượt qua đường SMA ngắn hơn;
  3. Lấy lợi nhuận khi giá đóng cửa vượt dưới đường SMA ngắn hơn.

Đường SMA dừng lỗ và đường SMA lấy lợi nhuận cũng được vẽ.

Phân tích lợi thế

Những lợi thế của chiến lược này:

  1. Sử dụng kết hợp chỉ số đơn giản và dễ hiểu;
  2. Chỉ đi dài để tránh rủi ro bán ngắn;
  3. Có các quy tắc nhập cảnh rõ ràng, dừng lỗ và lấy lợi nhuận, rủi ro có thể kiểm soát được;
  4. Dễ tối ưu hóa bằng cách điều chỉnh thời gian SMA v.v.

Phân tích rủi ro

Có một số rủi ro:

  1. Biến hướng tâm lý của việc mất tự tin sau khi thua;
  2. Di chuyển đường SMA có thể gây ra rủi ro;
  3. Các tín hiệu phân kỳ RSI có thể không đáng tin cậy.

Giải pháp:

  1. Xây dựng cơ chế giao dịch cố định theo các quy tắc;
  2. Tối ưu hóa thời gian SMA;
  3. Thêm các bộ lọc khác cho tín hiệu RSI.

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

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

  1. Kiểm tra các thông số khác nhau cho SMA;
  2. Thêm các chỉ số khác làm bộ lọc;
  3. Thêm xác định xu hướng để phân biệt xu hướng và hợp nhất;
  4. Điều chỉnh và tối ưu hóa tham số.

Kết luận

Ý tưởng tổng thể rất đơn giản và rõ ràng. Với các chỉ số cơ bản và khả năng kiểm soát, nó phù hợp với giao dịch trung hạn và dài hạn. Nhưng điều chỉnh tham số và lọc chỉ số đòi hỏi rất nhiều thử nghiệm và tối ưu hóa để làm cho chiến lược vững chắc và đáng tin cậy hơn. Những ý tưởng đơn giản cần nỗ lực rất lớn về tối ưu hóa và kết hợp để hình thành các hệ thống giao dịch thực sự có thể sử dụng.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 4
// form the original idea of Enrico Malverti www.enricomalverti.com , trading system 2015  
// https://sauciusfinance.altervista.org
strategy(title="MAs & RSI strategy long only", overlay = true, max_bars_back=500)

///********FROM EMAS TO SIMPLE MA *****
// NON AGGIUNTO SCHAFF INDICATOR, che serve per discriminare quali titoli scegliere dallo screener (segnale già aperto o il primo o, a parità,
//quello più alto) ==> Tolte le bande di Bollinger (che filtrano "poco")

// INPUTS 
emapf = input(14, title ="Ma periodo veloce",  minval=1, step = 1)
emapl = input(14, title ="Ma periodo lungo",  minval=1, step = 1)
emaps = input(7, title ="Ma periodi stop",  minval=1, step = 1)
rsi_period = input(14, title="RSI period", minval = 1, step = 1) 
// CALCULATIONS
maf = sma(close, emapf)
mal = sma(close, emapl)
// rsi
myrsi = rsi(close, rsi_period)
//ema stop long ed ema stop short
//Ema7 messo da "massimo" a "chiusura" come target per posizioni short. Il limite è, in questo caso, sempre ema20 (più restringente - asimmetria)
// in questo t.s., lo short viene soltanto indicato come "rappresentazione grafica", non agito
mass = sma(close, emaps)
masl = sma(low, emaps)
ma200=sma(close,200)
/// Entry
strategy.entry("Long", true, when = crossover(close,mal))

rsi1 = crossunder(myrsi,70)
rsi2 = myrsi > 75
// previously, 80
st_loss_long = crossunder(close,masl)// **chiusura sotto EMA7**
target_long= crossunder(close,maf) //* Chiusura sotto EMA14*
// exits. *RSI**Long: Target if over bandamax, loss if under bandamin. Viceversa, for short
strategy.close("Long", when = rsi1, comment="crossunder RSI")
strategy.close("Long", when = rsi2, comment ="RSI MAX")
strategy.close("Long", when = st_loss_long, comment = "Stop loss")
strategy.close("Long", when = target_long, comment = "target_long" )

plot(masl, title="ma stop long", color=#363A45, linewidth= 1, style=plot.style_cross)
plot(maf, title="MA FAST", color=#FF0000,  linewidth= 1)
plot(mal, title="MA SLOW", color=#0000FF,  linewidth= 2)
plot(mass, title="ma stop short", color=#787B86,linewidth= 1, style=plot.style_cross)
plot(ma200, title="ma200", color=color.black,  linewidth= 1)

Thêm nữa