Эта стратегия адаптирована из статей Энрико Мальверти. Она в основном использует простую скользящую среднюю величину (SMA) и индекс относительной силы (RSI) для идентификации длинных сигналов входа и выхода.
Сигнал входа запускается, когда цена закрытия пересекает линию длинного периода SMA.
Выходные сигналы включают:
Также на графике изображены линия SMA с остановкой потери и линия SMA с получением прибыли.
Преимущества этой стратегии:
Есть некоторые риски:
Решения:
Стратегия может быть дополнительно оптимизирована:
В целом идея проста и ясна. С базовыми индикаторами и управляемостью, она подходит для средне-долгосрочной торговли. Но настройка параметров и фильтрация индикаторов требуют большого количества тестов и оптимизации, чтобы сделать стратегию более прочной и надежной. Простые идеи требуют огромных усилий по оптимизации и комбинации для формирования реальных полезных торговых систем.
/*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)