← К каталогу
Исходный код · ID 3830

RSI + STOCH + MACD

rsi + stoch + macd.pine

Похожие материалы по тегам

xauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 2 общих теговtm sniper pro.pineTradingView · 2 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 2 общих теговpro +.pineTradingView · 2 общих теговofada_gold_trader_v230.mq5MQL5 / MetaTrader 5 · 2 общих теговmulti strategy algo combined by enigma mode.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный продукт — индикатор для TradingView, написанный на Pine Script v6, который объединяет три технических осциллятора (RSI, Стохастик и MACD) в одном индикаторном pane. Каждый осциллятор рассчитывается средствами Pine Script и отображается в виде линий, маркеров и столбцов с настраиваемыми цветами.

Индикатор поддерживает определение зон перекупленности и перепроданности с возможностью окрашивания фона графика, отображение пересечений RSI с его SMA и пересечений линий Стохастика K и D, а также нормализованный гистограмму MACD. Дополнительно реализована детекция дивергенций (регулярных и скрытых, бычьих и медвежьих) для всех трёх осцилляторов с выводом меток на график.

Все параметры настраиваются пользователем через элементы управления: длины периодов, типы скользящих средних, цветовые схемы, пороговые уровни и переключатели видимости компонентов. Доступны условия оповещений TradingView для событий дивергенций.

Настройки программы

НастройкаОписание
rsi_length Период RSI / SMA — Период расчёта RSI
sma_rsi_length Период SMA для RSI — Период скользящей средней для RSI
RSI_niv_sobreventa Уровень перепроданности / перекупленности RSI — Уровень перепроданности RSI
RSI_niv_sobrecompra Уровень перекупленности / перепроданности RSI — Уровень перекупленности RSI
stoch_length Период Стохастика — Период расчёта Стохастика
k_length Период K Стохастика — Период скользящей средней для линии K Стохастика
d_length Период D Стохастика — Период скользящей средней для линии D Стохастика
tipo_MA Тип скользящей средней (K и D) — Тип скользящей средней для расчёта линий K и D Стохастика
STOCH_niv_sobreventa Уровень перепроданности / перекупленности Стохастика — Уровень перепроданности Стохастика
STOCH_niv_sobrecompra Уровень перекупленности / перепроданности Стохастика — Уровень перекупленности Стохастика
raw_as_avg Сырой Стохастик как среднее — Использовать ли среднее K и D как значение сыгранного Стохастика
MACD_fast_length Rápida / Lenta / Señal MACD — Период быстрой линии / ленты / сигнальной линии MACD
MACD_slow_length Период ленты MACD — Период ленты MACD
MACD_signal_length Период сигнальной линии MACD — Период сигнальной линии MACD
MACD_hist_color_alcista_debil Цвет MACD-AS (гистограмма) ↗ | ↗↗ | ↘ | ↘↘ — Цвет гистограммы MACD при росте (слабый)
MACD_hist_color_alcista_fuerte Цвет MACD-AS сильный рост — Цвет гистограммы MACD при росте (сильный)
MACD_hist_color_bajista_debil Цвет MACD-AS слабый падение — Цвет гистограммы MACD при падении (слабый)
MACD_hist_color_bajista_fuerte Цвет MACD-AS сильный падение — Цвет гистограммы MACD при падении (сильный)
mostrar_divergencias_RSI Показать дивергенции RSI — Отображать ли дивергенции RSI
mostrar_divergencias_STOCH Показать дивергенции Стохастика — Отображать ли дивергенции Стохастика
mostrar_divergencias_MACD Показать дивергенции MACD — Отображать ли дивергенции MACD
colorDivAlcistaRegular Цвет бычьих регулярных дивергенций — Цвет метки бычьей регулярной дивергенции
colorDivAlcistaOculta Цвет бычьей скрытой дивергенции — Цвет метки бычьей скрытой дивергенции
colorDivBajistaRegular Цвет медвежьих регулярных дивергенций — Цвет метки медвежьей регулярной дивергенции
colorBajistaOculta Цвет медвежьей скрытой дивергенции — Цвет метки медвежьей скрытой дивергенции
div_loopback Петля обратного просмотра пивотов — Количество баров для поиска пивотов при обнаружении дивергенций
ubicacion_RSI Позиция RSI / Стохастика / MACD — Вертикальное смещение отображения RSI на шкале
ubicacion_STOCH Позиция Стохастика — Вертикальное смещение отображения Стохастика на шкале
ubicacion_MACD Позиция MACD — Вертикальное смещение отображения MACD на шкале
mostrar_RSI Показать RSI — Отображать ли линию RSI на графике
mostrar_SMA_RSI Показать SMA (RSI) — Отображать ли скользящую среднюю RSI
mostrar_STOCH Показать Стохастик — Отображать ли линии Стохастика K и D на графике
mostrar_STOCH_RAW Показать сырой Стохастик — Отображать ли сыгранное значение Стохастика (или его среднее)
mostrar_MACD Показать MACD — Отображать ли MACD на графике
mostrar_cruces_RSI_con_SMA Показать пересечения RSI с SMA — Отображать ли маркеры пересечения RSI с его скользящей средней
mostrar_cruces_STOCH Показать пересечения Стохастика (K и D) — Отображать ли маркеры пересечения линий K и D Стохастика
mostrar_fondo_ob_os Показать фон (перекупленность/перепроданность) — Окрашивать ли фон графика в зонах перекупленности/перепроданности
mostrar_close Показать закрытие цен на свечах — Отображать ли линию закрытия цен на свечах
Получить полный код

Поиск по коду файла

indicator("RSI + STOCH + MACD", overlay=false, max_lines_count=500, max_labels_count=500)

var c_negro        = #000000
var c_verde_puro   = #00ff00
var c_verde_oscuro = #1b5e20
var c_rojo_puro    = #ff0000
var c_rojo_oscuro  = #801922
var c_azul         = color.rgb(0, 84, 168)
var c_azul_claro   = color.rgb(0, 128, 255, 0)
var c_transparente = color.new(c_negro, 100)

var string prefix = "╔═════▶ "
var string suffix = " ◀═════╗"

var GRP_RSI = prefix + "RSI" + suffix
var rsi_length = input.int(14, "• RSI / SMA Period", group=GRP_RSI, inline="rsi_lengths")
var sma_rsi_length = input.int(21, "", group=GRP_RSI, inline="rsi_lengths")
RSI_niv_sobreventa  = input.float(30.0, "• Sobreventa / Sobrecompra", step=5, group=GRP_RSI, inline="rsi_levels")
RSI_niv_sobrecompra = input.float(70.0, "", step=5, group=GRP_RSI, inline="rsi_levels")

var GRP_STOCH = prefix + "Stochastic" + suffix
var stoch_length = input.int(14, "• Stochastic Period", group=GRP_STOCH)
var k_length     = input.int(3, "• K / D Period", group=GRP_STOCH, inline="stoch_k&d")
var d_length     = input.int(3, "", group=GRP_STOCH, inline="stoch_k&d")
var tipo_MA = input.string("SMA", "• Tipo de MA (K y D)", options=["SMA","EMA","RMA","WMA"], group=GRP_STOCH)
STOCH_niv_sobreventa   = input.float(20.0, "• Sobreventa / Sobrecompra", step=5, group=GRP_STOCH, inline="stoch_levels")
STOCH_niv_sobrecompra = input.float(80.0, "", step=5, group=GRP_STOCH, inline="stoch_levels")
var raw_as_avg = input.bool(true, "Stochastic RAW as average", group=GRP_STOCH)

var GRP_MACD           = prefix + "MACD Normalizado" + suffix
var MACD_fast_length   = input.int(12, "• Fast / Slow / Signal", group=GRP_MACD, minval=1, inline="macd_inputs")
var MACD_slow_length   = input.int(26, "", group=GRP_MACD, minval=1, inline="macd_inputs")
var MACD_signal_length = input.int(9, "", group=GRP_MACD, minval=1, maxval=50, inline="macd_inputs")
var MACD_hist_color_alcista_debil  = input.color(color.new(#388e3c, 30), "• Color MACD-AS (histograma) ↗ | ↗↗ | ↘ | ↘↘", group=GRP_MACD, inline="hist_colors")
var MACD_hist_color_alcista_fuerte = input.color(color.new(#a5d6a7, 30), "", group=GRP_MACD, inline="hist_colors")
var MACD_hist_color_bajista_debil  = input.color(color.new(#f7525f, 30), "", group=GRP_MACD, inline="hist_colors")
var MACD_hist_color_bajista_fuerte = input.color(color.new(#faa1a4, 30), "", group=GRP_MACD, inline="hist_colors")

var GRP_div = prefix + "Divergencias" + suffix
var mostrar_divergencias_RSI = input.bool(true, "Marcar divergencias de RSI", group=GRP_div, inline="marcar_divergencias")
var mostrar_divergencias_STOCH = input.bool(true, "STOCH", group=GRP_div, inline="marcar_divergencias")
var mostrar_divergencias_MACD = input.bool(true, "MACD", group=GRP_div, inline="marcar_divergencias")
var colorDivAlcistaRegular = input.color(color.green, "• Alcistas Regulares/Ocultas", group=GRP_div, inline="color_div_alcistas")
var colorDivAlcistaOculta = input.color(color.blue, "", group=GRP_div, inline="color_div_alcistas")
var colorDivBajistaRegular = input.color(color.red, "• Bajistas Regulares/Ocultas", group=GRP_div, inline="color_div_bajistas")
var colorBajistaOculta = input.color(color.orange, "", group=GRP_div, inline="color_div_bajistas")
var div_loopback = input.int(5, "• Loopback pivotes", group=GRP_div)
var colorTexto = color.white
var labelSize = size.small

var GRP_show = prefix + "Visualization" + suffix
var ubicacion_RSI = input.float(150, "Lugar RSI / Stoch / MACD", step=50, group=GRP_show, inline="ubicaciones")
var ubicacion_STOCH = input.float(75, "", step=50, group=GRP_show, inline="ubicaciones")
var ubicacion_MACD = input.float(0, "", step=50, group=GRP_show, inline="ubicaciones")

var mostrar_RSI = input.bool(true, "Mostrar RSI", group=GRP_show, inline="mostrar_indicador")
var mostrar_SMA_RSI = input.bool(true, "SMA (RSI)", group=GRP_show, inline="mostrar_indicador")
var mostrar_STOCH = input.bool(true, "STOCH", group=GRP_show, inline="mostrar_indicador")
var mostrar_STOCH_RAW = input.bool(true, "STOCH 'RAW'", group=GRP_show, inline="mostrar_indicador")
var mostrar_MACD = input.bool(true, "MACD", group=GRP_show, inline="mostrar_indicador")

var mostrar_cruces_RSI_con_SMA = input.bool(true, "Mostrar cruces de RSI con su SMA", group=GRP_show, inline="mostrar_cruces")
var mostrar_cruces_STOCH = input.bool(true, "Stochastic Crosses (K & D)", group=GRP_show, inline="mostrar_cruces")

var mostrar_fondo_ob_os = input.bool(true, "Colorear fondo (sobrecompra/sobreventa)", group=GRP_show)
var mostrar_close = input.bool(true, "Mostrar cierre de precios sobre las velas", group=GRP_show)

f_ma(src, len, type) =>
    switch type
        "SMA" => ta.sma(src, len)
        "EMA" => ta.ema(src, len)
        "RMA" => ta.rma(src, len)
        "WMA" => ta.wma(src, len)

RSI = ta.rsi(close, rsi_length)
sma_rsi = ta.sma(RSI, sma_rsi_length)
if (ubicacion_RSI > 0)
    RSI += ubicacion_RSI
    sma_rsi += ubicacion_RSI
    RSI_niv_sobrecompra += ubicacion_RSI
    RSI_niv_sobreventa += ubicacion_RSI
RSI_sobrecomprado = RSI >= RSI_niv_sobrecompra
RSI_sobrevendido = RSI <= RSI_niv_sobreventa

STOCH_RAW = ta.stoch(close, high, low, stoch_length)
K = f_ma(STOCH_RAW, k_length, tipo_MA)
D = f_ma(K, d_length, tipo_MA)
stoch_avg = math.avg(K, D)
STOCH_RAW := raw_as_avg ? stoch_avg : STOCH_RAW
if (ubicacion_STOCH > 0)
    STOCH_RAW += ubicacion_STOCH
    stoch_avg += ubicacion_STOCH
    K += ubicacion_STOCH
    D += ubicacion_STOCH
    STOCH_niv_sobrecompra += ubicacion_STOCH
    STOCH_niv_sobreventa += ubicacion_STOCH
STOCH_sobrecomprado = K >= STOCH_niv_sobrecompra and D >= STOCH_niv_sobrecompra
STOCH_sobrevendido = K <= STOCH_niv_sobreventa and D <= STOCH_niv_sobreventa

[MACD_line, MACD_signal, MACD_hist] = ta.macd(close, MACD_fast_length, MACD_slow_length, MACD_signal_length)
MACD_hist_alcista = MACD_hist >= 0
MACD_hist := (MACD_hist / ta.atr(20)) * 50 + 50
MACD_hist_creciente = MACD_hist > MACD_hist[1]
if (ubicacion_MACD > 0)
    MACD_hist += ubicacion_MACD

color_fondo = RSI_sobrecomprado and STOCH_sobrecomprado ? color.new(color.red, 80) : RSI_sobrevendido and STOCH_sobrevendido ? color.new(color.green, 80) : RSI_sobrecomprado or STOCH_sobrecomprado ? color.new(color.red, 90) : RSI_sobrevendido or STOCH_sobrevendido ? color.new(color.green, 90) : na
bgcolor(mostrar_fondo_ob_os ? color_fondo : na)

hline(RSI_niv_sobrecompra, "RSI Sobrecompra", color.red, hline.style_dotted)
hline(RSI_niv_sobreventa,   "RSI Sobreventa", color.green, hline.style_dotted)

hline(STOCH_niv_sobrecompra, "Stochastic Overbought", c_rojo_puro, hline.style_dashed)
hline(STOCH_niv_sobreventa, "Stochastic Oversold", c_verde_puro, hline.style_dashed)

hline(50 + ubicacion_RSI, "Centro #1", color.gray)
hline(ubicacion_RSI != ubicacion_STOCH ? 50 + ubicacion_STOCH : na, "Centro #2", color.gray)
hline(ubicacion_RSI != ubicacion_MACD and ubicacion_STOCH != ubicacion_MACD ? 50 + ubicacion_MACD : na, "Centro #3" , color.gray)

plot(mostrar_RSI ? RSI : na, "RSI", color.white, 2)
plot(mostrar_SMA_RSI ? sma_rsi : na, "SMA (RSI)", color.orange, 2, style=plot.style_line, linestyle=plot.linestyle_dotted)

plot(mostrar_STOCH ? K : na, "Stochastic K", color.aqua, 1)
plot(mostrar_STOCH ? D : na, "Stochastic D", color.blue, 1)
plot(mostrar_STOCH_RAW ? STOCH_RAW : na, "Stochastic RAW (or average)", color.fuchsia, 2, style=plot.style_line, linestyle=plot.linestyle_dotted)

color_macd_hist = MACD_hist_alcista ? (MACD_hist_creciente ? MACD_hist_color_alcista_fuerte : MACD_hist_color_alcista_debil) : (MACD_hist_creciente ? MACD_hist_color_bajista_debil : MACD_hist_color_bajista_fuerte)
plot(mostrar_MACD ? MACD_hist : na, "Histograma MACD Normalizado", color_macd_hist, 1, plot.style_columns, histbase=50)

cruce_alcista_RSI = ta.crossover(RSI, sma_rsi)
cruce_bajista_RSI = ta.crossunder(RSI, sma_rsi)

color_cruce_RSI = cruce_alcista_RSI ? c_verde_puro : cruce_bajista_RSI ? c_rojo_puro : c_transparente

plot(mostrar_cruces_RSI_con_SMA ? RSI : na, "Cruce K/D (fondo)", color = (cruce_alcista_RSI or cruce_bajista_RSI) ? c_negro : c_transparente, linewidth = 4, style = plot.style_cross)
plot(mostrar_cruces_RSI_con_SMA ? RSI : na, "Cruce K/D", color = color_cruce_RSI, linewidth = 3, style = plot.style_cross)

cruce_alcista_stoch = ta.crossover(K, D)
cruce_bajista_stoch = ta.crossunder(K, D)

color_cruce_stoch = cruce_alcista_stoch ? c_verde_puro : cruce_bajista_stoch ? c_rojo_puro : c_transparente

plot(mostrar_cruces_STOCH ? stoch_avg : na, "Cruce RSI/SMA (fondo)", color = (cruce_alcista_stoch or cruce_bajista_stoch) ? c_negro : c_transparente, linewidth = 5, style = plot.style_circles)
plot(mostrar_cruces_STOCH ? stoch_avg : na, "Cruce RSI/SMA", color = color_cruce_stoch, linewidth = 4, style = plot.style_circles)

plot(mostrar_close ? close : na, "Precios de cierre sobre velas", color.white, 2, force_overlay=true)

var lookbackDerecho = div_loopback
var lookbackIzquierdo = div_loopback
const int rangoMaximo = 60
const int rangoMinimo = 5

f_en_rango(cond) =>
    velasDesde = ta.barssince(cond)
    rangoMinimo <= velasDesde and velasDesde <= rangoMaximo

f_divergencias(_indicador, _low, _high) =>

    pivoteBajo = not na(ta.pivotlow(_indicador, lookbackIzquierdo, lookbackDerecho))
    pivoteAlto = not na(ta.pivothigh(_indicador, lookbackIzquierdo, lookbackDerecho))

    indHL = _indicador[lookbackDerecho] > ta.valuewhen(pivoteBajo, _indicador[lookbackDerecho], 1) and f_en_rango(pivoteBajo[1])

    priceLL = _low[lookbackDerecho] < ta.valuewhen(pivoteBajo, _low[lookbackDerecho], 1)
    alcistaRegular = pivoteBajo and indHL and priceLL
    precioAlcistaRegular = alcistaRegular ? _low[lookbackDerecho] : na

    indLL = _indicador[lookbackDerecho] < ta.valuewhen(pivoteBajo, _indicador[lookbackDerecho], 1) and f_en_rango(pivoteBajo[1])

    priceHL = _low[lookbackDerecho] > ta.valuewhen(pivoteBajo, _low[lookbackDerecho], 1)
    alcistaOculta = pivoteBajo and indLL and priceHL
    precioAlcistaOculta = alcistaOculta ? _low[lookbackDerecho] : na

    indLH = _indicador[lookbackDerecho] < ta.valuewhen(pivoteAlto, _indicador[lookbackDerecho], 1) and f_en_rango(pivoteAlto[1])

    priceHH = _high[lookbackDerecho] > ta.valuewhen(pivoteAlto, _high[lookbackDerecho], 1)
    bajistaRegular = pivoteAlto and indLH and priceHH
    precioBajistaRegular = bajistaRegular ? _high[lookbackDerecho] : na

    indHH = _indicador[lookbackDerecho] > ta.valuewhen(pivoteAlto, _indicador[lookbackDerecho], 1) and f_en_rango(pivoteAlto[1])

    priceLH = _high[lookbackDerecho] < ta.valuewhen(pivoteAlto, _high[lookbackDerecho], 1)
    bajistaOculta = pivoteAlto and indHH and priceLH
    precioBajistaOculta = bajistaOculta ? _high[lookbackDerecho] : na

    [alcistaRegular,alcistaOculta,bajistaRegular,bajistaOculta,pivoteBajo,pivoteAlto,precioAlcistaRegular,precioAlcistaOculta,precioBajistaRegular,precioBajistaOculta]

[alcistaRegularEncontradaEnRSI, alcistaOcultaEncontradaEnRSI, bajistaRegularEncontradaEnRSI, bajistaOcultaEncontradaEnRSI, pivoteBajoRSI, pivoteAltoRSI, precioAlcistaRegularRSI, precioAlcistaOcultaRSI, precioBajistaRegularRSI, precioBajistaOcultaRSI] = f_divergencias(RSI, close, close)

[alcistaRegularEncontradaEnSTOCH, alcistaOcultaEncontradaEnSTOCH, bajistaRegularEncontradaEnSTOCH, bajistaOcultaEncontradaEnSTOCH, pivoteBajoSTOCH, pivoteA

Показано первые 50% кода (символов: 20512)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
2 051,20₽ ≈ $25.07