
Стратегия представляет собой торговую систему, которая отслеживает тенденции, объединяя в себе несколько технических показателей. Она улавливает динамику тренда с помощью MACD, использует RSI и StochRSI для подтверждения состояния перекупа и перепродажи, а также проверяет эффективность торговых сигналов с помощью показателей объема сделок.
Основная логика стратегии основана на следующих ключевых элементах:
Система открывает позиции, если выполнены следующие условия:
Система открывает позицию в открытом положении при выполнении следующих условий:
Предложения по контролю рисков:
Стратегия использует многочисленные технические показатели для создания относительно целостной торговой системы. Добавление механизма подтверждения объема торгов повышает надежность торговых сигналов, но система все еще нуждается в совершенствовании в области управления рисками и оптимизации параметров.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("BTCUSDT Strategy with Volume, MACD, RSI, StochRSI", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Input parameters
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing")
rsiLength = input.int(14, title="RSI Length")
stochRsiLength = input.int(14, title="StochRSI Length")
stochRsiSmoothing = input.int(3, title="StochRSI Smoothing")
stochRsiK = input.int(3, title="StochRSI %K")
stochRsiD = input.int(3, title="StochRSI %D")
volumeThreshold = input.float(1.5, title="Volume Threshold (Multiplier of Average Volume)")
// Calculate indicators
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing)
rsi = ta.rsi(close, rsiLength)
stochRsi = ta.stoch(rsi, rsi, rsi, stochRsiLength)
stochRsiKSmoothed = ta.sma(stochRsi, stochRsiK)
stochRsiDSmoothed = ta.sma(stochRsiKSmoothed, stochRsiD)
averageVolume = ta.sma(volume, 14)
volumeSpike = volume > averageVolume * volumeThreshold
// Entry conditions
longCondition = ta.crossover(macdLine, signalLine) and rsi > 50 and stochRsiKSmoothed > stochRsiDSmoothed and volumeSpike
shortCondition = ta.crossunder(macdLine, signalLine) and rsi < 50 and stochRsiKSmoothed < stochRsiDSmoothed and volumeSpike
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Plot indicators for visualization
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")
hline(0, "Zero Line", color=color.black)
plot(rsi, color=color.purple, title="RSI")
plot(stochRsiKSmoothed, color=color.green, title="StochRSI %K")
plot(stochRsiDSmoothed, color=color.orange, title="StochRSI %D")