
Стратегия представляет собой комплексную торговую систему, объединяющую несколько ключевых показателей в техническом анализе, включая систему двойной пропорциональности (SMA), сходство с рассеянностью скользящих средних (MACD), индекс относительной силы (RSI) и анализ сопротивления. Основная идея стратегии заключается в том, чтобы подтвердить торговые сигналы с помощью многомерных технических показателей, а также в сочетании с показателями рыночной эмоции для оптимизации управления позициями, в конечном итоге достигая повышения выигрышности и риска-прибыльности.
Стратегия использует как основную сигнальную систему два простых движущихся средних: краткосрочный (10-дневный) и долгосрочный (30-дневный). Система посылает многосигналы, когда краткосрочный средний пересекает долгосрочный средний вверх, а MACD показывает многополюсную динамику (MACD линия выше сигнальной линии). Условия продажи в сочетании с анализом устойчивости, когда цена достигает максимума за последние 20 циклов, а MACD показывает пустой сигнал, система выводит позиции. Кроме того, стратегия также вводит индикатор RSI в качестве эмоционального фильтра для оптимизации управления позициями: убытки прекращаются раньше, когда RSI превышает 70 и находится в убыточном состоянии, а убытки продолжаются, когда RSI ниже 30 и находится в прибыльном состоянии.
Стратегия создает целостную торговую систему, объединяя несколько классических технических показателей. Преимущества стратегии заключаются в наличии множества механизмов подтверждения сигналов и совершенной системы управления рисками, но при этом необходимо учитывать влияние рыночной среды на эффективность стратегии.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("XAUUSD SMA with MACD & Market Sentiment (Enhanced RR)", overlay=true)
// Input parameters for moving averages
shortSMA_length = input.int(10, title="Short SMA Length", minval=1)
longSMA_length = input.int(30, title="Long SMA Length", minval=1)
// MACD settings
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// Lookback period for identifying major resistance (swing highs)
resistance_lookback = input.int(20, title="Resistance Lookback Period", tooltip="Lookback period for identifying major resistance")
// Calculate significant resistance (local swing highs over the lookback period)
major_resistance = ta.highest(close, resistance_lookback)
// Calculate SMAs
shortSMA = ta.sma(close, shortSMA_length)
longSMA = ta.sma(close, longSMA_length)
// RSI for market sentiment
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
rsi = ta.rsi(close, rsiLength)
// Define buy condition based on SMA and MACD
buyCondition = ta.crossover(shortSMA, longSMA) and macdLine > signalLine
// Define sell condition: only sell if price is at or above the identified major resistance
sellCondition = close >= major_resistance and macdLine < signalLine
// Define sentiment-based exit conditions
closeEarlyCondition = strategy.position_size < 0 and rsi > rsiOverbought // Close losing trade early if RSI is overbought
holdWinningCondition = strategy.position_size > 0 and rsi < rsiOversold // Hold winning trade if RSI is oversold
// Execute strategy: Enter long position when buy conditions are met
if (buyCondition)
strategy.entry("Buy", strategy.long)
// Close the position when the sell condition is met (price at resistance)
if (sellCondition and not holdWinningCondition)
strategy.close("Buy")
// Close losing trades early if sentiment is against us
if (closeEarlyCondition)
strategy.close("Buy")
// Visual cues for buy and sell signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Add alert for buy condition
alertcondition(buyCondition, title="Buy Signal Activated", message="Buy signal activated: Short SMA has crossed above Long SMA and MACD is bullish.")
// Add alert for sell condition to notify when price hits major resistance
alertcondition(sellCondition, title="Sell at Major Resistance", message="Sell triggered at major resistance level.")
// Add alert for early close condition (for losing trades)
alertcondition(closeEarlyCondition, title="Close Losing Trade Early", message="Sentiment is against your position, close trade.")
// Add alert for holding winning condition (optional)
alertcondition(holdWinningCondition, title="Hold Winning Trade", message="RSI indicates oversold conditions, holding winning trade.")