
Chiến lược này được xây dựng dựa trên bài viết của Enrico Malverti, chủ yếu sử dụng đường trung bình di chuyển đơn giản (SMA) và chỉ số tương đối yếu (RSI) để xác định các tín hiệu đầu vào và vị trí nhiều đầu. Chiến lược chỉ làm nhiều, không làm trống.
Tín hiệu đầu vào là mở nhiều vị trí khi đường trung bình SMA có chu kỳ dài trên giá đóng cửa.
Có một số loại tín hiệu cân bằng:
Đồng thời vẽ đường trung bình SMA dừng lỗ và đường trung bình SMA dừng.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Phương pháp tương ứng:
Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:
Chiến lược tổng thể của chiến lược này rõ ràng và dễ hiểu, sử dụng các chỉ số cơ bản, có khả năng điều khiển mạnh mẽ, phù hợp với hoạt động đường dài trung bình. Tuy nhiên, thiết lập tham số và lọc chỉ số cần được kiểm tra và tối ưu hóa nhiều lần để làm cho chiến lược trở nên ổn định và đáng tin cậy hơn. Chiến lược đơn giản cũng cần nhiều điều chỉnh tối ưu hóa và kết hợp phong phú để tạo ra một hệ thống giao dịch thực sự có thể sử dụng được.
/*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)