// ———————————————— // Индикатор: "Ultimate Combo Indicator" // Версия: PineScript v5 // Автор: пример для сообщества // Назначение: Комбинированный анализ тренда и силы движения // ————————————————
//@version=5 indicator(title="Ultimate Combo Indicator", shorttitle="UCI", overlay=true)
//====== ПАРАМЕТРЫ ======// // RSI rsiLen = input.int(14, "RSI период") rsiOBLevel = input.int(70, "RSI зона перекупленности") rsiOSLevel = input.int(30, "RSI зона перепроданности")
// MACD fastLen = input.int(12, "MACD Fast Length") slowLen = input.int(26, "MACD Slow Length") signalLen = input.int(9, "MACD Signal Smoothing")
// ATR для трейлинг-стопа atrPeriod = input.int(14, "ATR период") atrMultLong = input.float(1.5, "ATR множитель для Лонга") atrMultShort= input.float(1.5, "ATR множитель для Шорта")
// Сглаженные свечи useHeikinAshi = input.bool(true, "Использовать Heikin Ashi для определения направления?")
// Volume Flow volLookback = input.int(20, "Период сглаживания объёма")
//====== ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ======//
// Функция Heikin Ashi haClose = (open + high + low + close)/4.0 haOpen = 0.0 haOpen := na(haOpen[1]) ? (open + close)/2.0 : (haOpen[1] + haClose[1]) / 2.0 haHigh = math.max(high, math.max(haClose, haOpen)) haLow = math.min(low, math.min(haClose, haOpen))
// Выбор цены (обычная или HA) srcOpen = useHeikinAshi ? haOpen : open srcHigh = useHeikinAshi ? haHigh : high srcLow = useHeikinAshi ? haLow : low srcClose = useHeikinAshi ? haClose : close
// RSI rsiValue = ta.rsi(srcClose, rsiLen)
// MACD [macdLine, signalLine, histLine] = ta.macd(srcClose, fastLen, slowLen, signalLen)
// ATR atr = ta.atr(atrPeriod) longStop = srcClose - (atr * atrMultLong) shortStop = srcClose + (atr * atrMultShort)
// Volume Flow volSma = ta.sma(volume, volLookback)
//====== ПОЛУЧЕНИЕ СИГНАЛОВ ======// rsiLong = rsiValue < rsiOSLevel // RSI перепродан rsiShort = rsiValue > rsiOBLevel // RSI перекуплен
macdLong = macdLine > signalLine // MACD бычий macdShort = macdLine < signalLine // MACD медвежий
bullSignal = rsiLong and macdLong bearSignal = rsiShort and macdShort
// Текущее направление (простейшая логика) trendUp = macdLine > 0 and signalLine > 0 trendDown = macdLine < 0 and signalLine < 0
// Разворотный момент (пересечение MACD и сигнальной) macdCrossUp = ta.crossover(macdLine, signalLine) macdCrossDown = ta.crossunder(macdLine, signalLine)
//====== ВИЗУАЛИЗАЦИЯ НА ГРАФИКЕ ======// plot(srcClose, color=color.new(color.white, 0), linewidth=1, title="Цена (линия)")
// Показ трейлинг-стопа plot(longStop, title="ATR Stop Long", style=plot.style_line, color=color.new(color.green, 0)) plot(shortStop,title="ATR Stop Short",style=plot.style_line, color=color.new(color.red, 0))
// Сигналы plotshape(bullSignal, title="RSI+MACD Long", style=shape.arrowup, location=location.belowbar, size=size.tiny, color=color.new(color.lime, 0)) plotshape(bearSignal, title="RSI+MACD Short",style=shape.arrowdown, location=location.abovebar, size=size.tiny, color=color.new(color.red, 0))
// MACD и сигнальная линия (в отдельном окне — обычно ставят индикатор отдельно, но можем отобразить и здесь) plot(macdLine, title="MACD Line", color=color.new(color.yellow, 0)) plot(signalLine, title="Signal", color=color.new(color.orange, 0)) plot(histLine, title="Histogram", color=color.new(color.blue, 0), style=plot.style_histogram)
// Volume Flow plot(volume, title="Volume", color=color.new(color.gray, 70), transp=70) plot(volSma, title="Volume SMA", color=color.new(color.gray, 0))
// Упрощённое отображение, когда на графике происходит пересечение MACD (для удобства) plotshape(macdCrossUp, title="MACD Cross UP", style=shape.circle, location=location.bottom, color=color.new(color.lime, 0), size=size.tiny) plotshape(macdCrossDown, title="MACD Cross DOWN", style=shape.circle, location=location.top, color=color.new(color.red, 0), size=size.tiny)
//====== КОММЕНТАРИИ ПО НАСТРОЙКЕ ======// // 1. Усовершенствуйте систему входа и выхода. Можно: // - добавить подтверждение объёмом (Volume Flow); // - использовать уровни поддержки/сопротивления; // - вводить фильтры по тренду (например, смотреть только сигналы в направлении дневного тренда). // 2. Подкорректируйте множители ATR, периоды RSI/MACD, чтобы добиться оптимальных сигналов под свой стиль торговли. // 3. Протестируйте стратегии на исторических данных (Backtest) и применяйте риск-менеджмент.
Ваш код для индикатора "Ultimate Combo Indicator" на PineScript v5 выглядит хорошо структурированным и функциональным. Он сочетает в себе несколько популярных методов технического анализа, таких как RSI, MACD и ATR, а также использует Heikin Ashi для определения направления тренда. Вот несколько предложений и комментариев, которые могут помочь улучшить ваш индикатор:
Вот пример, как можно добавить проверку объёма в вашу логику сигналов:
// Условие для подтверждения объёма
volumeThreshold = ta.sma(volume, volLookback) * 1.5 // 150% от SMA объёма
volumeConfirmation = volume > volumeThreshold
bullSignal = rsiLong and macdLong and volumeConfirmation
bearSignal = rsiShort and macdShort and volumeConfirmation
Эти изменения могут помочь улучшить вашу стратегию и сделать её более надёжной. Удачи в дальнейшей разработке!