Merval Bancario (GGAL, BMA, BBAR, SUPV)
Ponderado por market cap, ajustado por ratio ADR de cada especie.
0.044190*NASDAQ:GGAL+0.031380*NYSE:BMA+0.066400*NYSE:BBAR+0.009000*NYSE:SUPV
Cada una devuelve un gráfico propio dentro de TradingView. No hace falta indicador ni suscripción paga.
Ponderado por market cap, ajustado por ratio ADR de cada especie.
0.044190*NASDAQ:GGAL+0.031380*NYSE:BMA+0.066400*NYSE:BBAR+0.009000*NYSE:SUPV
Ponderado por market cap, ajustado por ratio ADR de cada especie.
0.146100*NYSE:YPF+0.012644*NYSE:PAM+0.063000*NYSE:TGS+0.014730*NYSE:CEPU+0.003775*NYSE:EDN
Merval energético vs. Merval Bancario (ambos en USD)
(0.146100*NYSE:YPF+0.012644*NYSE:PAM+0.063000*NYSE:TGS+0.014730*NYSE:CEPU+0.003775*NYSE:EDN)/(0.044190*NASDAQ:GGAL+0.031380*NYSE:BMA+0.066400*NYSE:BBAR+0.009000*NYSE:SUPV)
Diferencia porcentual entre el dólar oficial y el CCL implícito, promediando AAPL y YPF.
((BCBA:AAPL/NASDAQ:AAPL*20+BCBA:YPFD/NYSE:YPF)/2-FX_IDC:USDARS)/FX_IDC:USDARS*100
Dólar contado con liquidación promediando cuatro ADR bancarios y energéticos.
(BCBA:GGAL/NASDAQ:GGAL*10+BCBA:BMA/NYSE:BMA*10+BCBA:PAMP/NYSE:PAM*25+BCBA:BBAR/NYSE:BBAR*3)/4
Dólar contado con liquidación calculado con cedears, promediando cuatro papeles.
(BCBA:AAPL*20/NASDAQ:AAPL+BCBA:TSLA*15/NASDAQ:TSLA+BCBA:KO*5/NYSE:KO+BCBA:AMZN*144/NASDAQ:AMZN)/4
Dólar CCL de YPF descontado por el índice de precios argentino, para verlo en términos reales.
BCBA:YPFD/NYSE:YPF/(ECONOMICS:ARCPI/8590)Índice Merval medido en dólares CCL, usando AAPL como referencia.
BCBA:IMV/(BCBA:AAPL/NASDAQ:AAPL*20)Cotización de Galicia en dólares CCL, contra su ADR en Nasdaq.
BCBA:GGAL/NASDAQ:GGAL*10
Copiá el código y pegalo en el Editor Pine de TradingView. Cada uno lleva la firma de quien lo compartió.
Reconstruye el Merval en dólares ponderando 19 papeles: los ADR contra sus locales y el resto pasado a dólares por el CCL. Trae EMA y variación semanal.
//@version=5 indicator("Merval sintético en dólares (19 componentes)", overlay=false) tf = input.string("W", title="Timeframe del cálculo", options=["W", "D", "Actual"]) p = tf == "Actual" ? timeframe.period : tf usd = request.security("USDARS", p, close) f(s) => request.security(s, p, [open, high, low, close]) [yo, yh, yl, yc] = f("NYSE:YPF") [go, gh, gl, gc] = f("NASDAQ:GGAL") [po, ph, pl, pc] = f("NYSE:PAM") [bo, bh, bl, bc] = f("NYSE:BMA") [bbo, bbh, bbl, bbc] = f("NYSE:BBAR") [tgo, tgh, tgl, tgc] = f("NYSE:TGS") [co, ch, cl, cc] = f("NYSE:CEPU") [lo, lh, ll_, lc] = f("NYSE:LOMA") [cro, crh, crl, crc] = f("NASDAQ:CRESY") [eo, eh, el, ec] = f("NYSE:EDN") [so, sh, sl, sc] = f("NYSE:SUPV") [txo, txh, txl, txc] = f("BCBA:TXAR") [tro, trh, trl, trc] = f("BCBA:TRAN") [vo, vh, vl, vc] = f("BCBA:VALO") [mo, mh, ml, mc] = f("BCBA:MIRG") [coo, coh, col, coc] = f("BCBA:COME") [tno, tnh, tnl, tnc] = f("BCBA:TGNO4") [ho, hh_, hl_, hc] = f("BCBA:HARG") [cvo, cvh_, cvl, cvc] = f("BCBA:CVH") idx(y, g, pa, b, bb, tg, c, l, cr, e, s, tx, tr, v, m, cm, tn, ha, cv) => y*5.86533 + g*5.76923 + pa*2.39741 + b*1.99468 + bb*8.86525 + tg*4.16811 + c*7.26327 + l*8.31726 + cr*5.19391 + e*2.16316 + s*2.87441 + (tx*268.718 + tr*29.2115 + v*126.859 + m*42.1453 + cm*1430.04 + tn*13.9749 + ha*29.0032 + cv*4.14930) / usd iOpen = idx(yo, go, po, bo, bbo, tgo, co, lo, cro, eo, so, txo, tro, vo, mo, coo, tno, ho, cvo) iHigh = idx(yh, gh, ph, bh, bbh, tgh, ch, lh, crh, eh, sh, txh, trh, vh, mh, coh, tnh, hh_, cvh_) iLow = idx(yl, gl, pl, bl, bbl, tgl, cl, ll_, crl, el, sl, txl, trl, vl, ml, col, tnl, hl_, cvl) iClose = idx(yc, gc, pc, bc, bbc, tgc, cc, lc, crc, ec, sc, txc, trc, vc, mc, coc, tnc, hc, cvc) topW = math.max(iOpen, iHigh, iLow, iClose) botW = math.min(iOpen, iHigh, iLow, iClose) up = iClose >= iOpen plotcandle(iOpen, topW, botW, iClose, title="Merval sintético USD", color = up ? color.teal : color.red, wickcolor = up ? color.teal : color.red, bordercolor = up ? color.teal : color.red) emaLen = input.int(200, title="Período EMA", minval=1) ema200 = ta.ema(iClose, emaLen) plot(ema200, title="EMA 200", color=color.yellow, linewidth=2) prev = iClose[1] varPct = prev != 0 ? (iClose - prev) / prev * 100 : na etiqueta = tf == "W" ? "WoW" : tf == "D" ? "DoD" : "Var." if barstate.islast t = table.new(position.top_right, 2, 3, bgcolor=color.new(color.black, 20), border_width=1) table.cell(t, 0, 0, "Cierre", text_color=color.gray, text_size=size.small) table.cell(t, 1, 0, str.tostring(iClose, "#.##"), text_color=color.white, text_size=size.small) table.cell(t, 0, 1, etiqueta, text_color=color.gray, text_size=size.small) table.cell(t, 1, 1, str.tostring(varPct, "+#.##") + "%", text_color = varPct >= 0 ? color.teal : color.red, text_size=size.small) table.cell(t, 0, 2, "vs EMA " + str.tostring(emaLen), text_color=color.gray, text_size=size.small) table.cell(t, 1, 2, str.tostring((iClose - ema200) / ema200 * 100, "+#.##") + "%", text_color = iClose >= ema200 ? color.teal : color.red, text_size=size.small)
Tres medias configurables (corta, mediana y larga) pintadas como semáforo sobre el precio.
//======================================================================================================== //= 1 - SEMÁFORO (migrado a Pine v5) //======================================================================================================== //@version=5 indicator(title="SEMAFORO", shorttitle="CB", overlay=true) texto = input.string(title="texto", defval="COMUNIDAD CLAVE BURSATIL") periodo = input.int(21, "Período corto") periodo2 = input.int(50, "Período mediano") periodo3 = input.int(200, "Período largo") suavizado = input.string(title="Media móvil corta", defval="WMA", options=["WMA", "EMA", "SMA", "RMA"]) suavizado2 = input.string(title="Media móvil mediana", defval="SMA", options=["SMA", "EMA", "WMA", "RMA"]) suavizado3 = input.string(title="Media móvil larga", defval="SMA", options=["SMA", "EMA", "WMA", "RMA"]) primero(source, length) => if suavizado == "WMA" ta.wma(source, length) else if suavizado == "EMA" ta.ema(source, length) else if suavizado == "SMA" ta.sma(source, length) else ta.rma(source, length) segundo(source, length) => if suavizado2 == "SMA" ta.sma(source, length) else if suavizado2 == "EMA" ta.ema(source, length) else if suavizado2 == "WMA" ta.wma(source, length) else ta.rma(source, length) tercero(source, length) => if suavizado3 == "SMA" ta.sma(source, length) else if suavizado3 == "EMA" ta.ema(source, length) else if suavizado3 == "WMA" ta.wma(source, length) else ta.rma(source, length) mm = primero(close, periodo) mm2 = segundo(close, periodo2) mm3 = tercero(close, periodo3) plot(mm, color=#FFEB3B) plot(mm2, color=#4CAF50) plot(mm3, color=#FF5252)
Hasta ocho medias, bandas de Bollinger y Parabolic SAR, con avisos opcionales de golden y death cross.
//======================================================================================================== //= 2 - MEDIAS BOLLINGER PSAR (migrado a Pine v5) - Creado por: facien / fpucci //======================================================================================================== // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //@version=5 indicator("MA's BOL PSAR CROSS - FAcien FPucci", shorttitle='MultiIndicator - FAcien FPucci', max_bars_back=1000, overlay=true) // Inputs Bollinger_MA_type = input.string("EMA", title='Bollinger MA type', options=["OFF", "SMA", "EMA", "WMA", "VWMA", "RMA"]) Bollinger_MA_value = input.int(21, title='Bollinger MA value') MA_type_1 = input.string("EMA", title="1st Type of MA's", options=["OFF", "SMA", "EMA", "WMA", "VWMA", "RMA"]) m1 = input.int(8, title="Moving Average 1") m2 = input.int(21, title="Moving Average 2") m3 = input.int(50, title="Moving Average 3") m4 = input.int(100, title="Moving Average 4") m5 = input.int(200, title="Moving Average 5") MA_type_2 = input.string("OFF", title="2nd Type of MA's", options=["OFF", "SMA", "EMA", "WMA", "VWMA", "RMA"]) m6 = input.int(10, title="Moving Average 6") m7 = input.int(30, title="Moving Average 7") m8 = input.int(200, title="Moving Average 8") show_Golden = input.bool(true, title='Show Golden Crossing') show_Death = input.bool(true, title='Show Death Crossing') crossOptions = ["OFF", "MA 1 <=> MA 2", "MA 1 <=> MA 3", "MA 1 <=> MA 4", "MA 1 <=> MA 5", "MA 2 <=> MA 3", "MA 2 <=> MA 4", "MA 2 <=> MA 5", "MA 3 <=> MA 4", "MA 3 <=> MA 5", "MA 4 <=> MA 5"] Crossing_1 = input.string("OFF", title="1st Crossing MA", options=crossOptions) Crossing_2 = input.string("OFF", title="2nd Crossing MA", options=crossOptions) Crossing_3 = input.string("OFF", title="3rd Crossing MA", options=crossOptions) Crossing_4 = input.string("OFF", title="4th Crossing MA", options=crossOptions) Crossing_5 = input.string("OFF", title="5th Crossing MA", options=crossOptions) selected_ma(type, value) => if type == 'EMA' ta.ema(close, value) else if type == 'WMA' ta.wma(close, value) else if type == 'SMA' ta.sma(close, value) else if type == 'VWMA' ta.vwma(close, value) else if type == 'RMA' ta.rma(close, value) else float(na) ///////// BOLLINGER ///////// bolliMax = selected_ma(Bollinger_MA_type, Bollinger_MA_value) + 2 * ta.stdev(close, Bollinger_MA_value) bolliMin = selected_ma(Bollinger_MA_type, Bollinger_MA_value) - 2 * ta.stdev(close, Bollinger_MA_value) b1 = plot(bolliMax, color=color.silver, linewidth=1, title='Bollinger_Max') b2 = plot(bolliMin, color=color.silver, linewidth=1, title='Bollinger_Min') fill(b1, b2, color=color.white, title='Bollinger_Background') ///////// MOVING AVERAGES ////////// ma1 = selected_ma(MA_type_1, m1) ma2 = selected_ma(MA_type_1, m2) ma3 = selected_ma(MA_type_1, m3) ma4 = selected_ma(MA_type_1, m4) ma5 = selected_ma(MA_type_1, m5) ma6 = selected_ma(MA_type_2, m6) ma7 = selected_ma(MA_type_2, m7) ma8 = selected_ma(MA_type_2, m8) plot(ma1, color=color.green, linewidth=1, title="Moving Average 1") plot(ma2, color=color.red, linewidth=1, title="Moving Average 2") plot(ma3, color=color.purple, linewidth=1, title="Moving Average 3") plot(ma4, color=color.orange, linewidth=1, title="Moving Average 4") plot(ma5, color=color.yellow, linewidth=1, title="Moving Average 5") plot(ma6, color=color.aqua, linewidth=1, title="Moving Average 6") plot(ma7, color=color.blue, linewidth=1, title="Moving Average 7") plot(ma8, color=color.fuchsia, linewidth=1, title="Moving Average 8") // Golden / Death crossing golden_Crossing(media1, media2) => mean1 = selected_ma(MA_type_1, media1) mean2 = selected_ma(MA_type_1, media2) if ta.crossover(mean1, mean2) and show_Golden label.new(bar_index, mean1, yloc=yloc.belowbar, color=color.white, style=label.style_label_up, text=(str.tostring(media1) + "▲" + str.tostring(media2)), textcolor=color.green) death_Crossing(media1, media2) => mean1 = selected_ma(MA_type_1, media1) mean2 = selected_ma(MA_type_1, media2) if ta.crossunder(mean1, mean2) and show_Death label.new(bar_index, mean1, yloc=yloc.abovebar, color=color.white, style=label.style_label_down, text=(str.tostring(media1) + "▼" + str.tostring(media2)), textcolor=color.red) selected_Crossing(cruce) => if cruce == "MA 1 <=> MA 2" golden_Crossing(m1, m2) death_Crossing(m1, m2) else if cruce == "MA 1 <=> MA 3" golden_Crossing(m1, m3) death_Crossing(m1, m3) else if cruce == "MA 1 <=> MA 4" golden_Crossing(m1, m4) death_Crossing(m1, m4) else if cruce == "MA 1 <=> MA 5" golden_Crossing(m1, m5) death_Crossing(m1, m5) else if cruce == "MA 2 <=> MA 3" golden_Crossing(m2, m3) death_Crossing(m2, m3) else if cruce == "MA 2 <=> MA 4" golden_Crossing(m2, m4) death_Crossing(m2, m4) else if cruce == "MA 2 <=> MA 5" golden_Crossing(m2, m5) death_Crossing(m2, m5) else if cruce == "MA 3 <=> MA 4" golden_Crossing(m3, m4) death_Crossing(m3, m4) else if cruce == "MA 3 <=> MA 5" golden_Crossing(m3, m5) death_Crossing(m3, m5) else if cruce == "MA 4 <=> MA 5" golden_Crossing(m4, m5) death_Crossing(m4, m5) selected_Crossing(Crossing_1) selected_Crossing(Crossing_2) selected_Crossing(Crossing_3) selected_Crossing(Crossing_4) selected_Crossing(Crossing_5) /////////// Parabolic SAR ///////////// // NOTA: esta sección se reescribió con "var" para manejar el estado persistente // de forma nativa en v5 (en v4 dependía de reasignación implícita con nz()). // El comportamiento final es el mismo, pero la forma de mantener el estado cambió. showSAR = input.bool(true, title='Parabollic SAR') start = input.float(0.02, title="Parabollic SAR - Start", step=0.001) increment = input.float(0.02, title="Parabollic SAR - Increment", step=0.001) maximum = input.float(0.2, title="Parabollic SAR - Max Value", step=0.01) putlabel = input.bool(true, title="Parabollic SAR - Show Labels") var int trend = 0 var float sar = na var float ep = na var float af = na if trend == 0 and not na(high[1]) trend := high >= high[1] or low >= low[1] ? 1 : -1 sar := trend > 0 ? low[1] : high[1] ep := trend > 0 ? high[1] : low[1] af := start else if not na(sar) nextsar = sar if trend > 0 if high[1] > ep ep := high[1] af := math.min(maximum, af + increment) nextsar := sar + af * (ep - sar) nextsar := math.min(math.min(low[1], low[2]), nextsar) if nextsar > low trend := -1 nextsar := ep ep := low af := start else if low[1] < ep ep := low[1] af := math.min(maximum, af + increment) nextsar := sar + af * (ep - sar) nextsar := math.max(math.max(high[1], high[2]), nextsar) if nextsar < high trend := 1 nextsar := ep ep := high af := start sar := nextsar plot(showSAR ? sar : na, title="Parabolic SAR", color=trend > 0 ? color.green : color.red, linewidth=1, style=plot.style_circles) if ta.change(trend) > 0 and putlabel label.new(bar_index, sar, color=color.lime, style=label.style_label_up, size=size.tiny) if ta.change(trend) < 0 and putlabel label.new(bar_index, sar, color=color.red, style=label.style_label_down, size=size.tiny)
RSI, MACD y Koncorde en un mismo panel, cada uno con su desfase y escala configurables.
//======================================================================================================== //= 3 - RSI MACD KONCORDE (migrado a Pine v5) - Creado por: FAcien/Fromhell //======================================================================================================== //@version=5 indicator(title="Konkord + MACD + RSI + STOCH - FAcien/Fromhell", shorttitle="Macd/Konkorde/Rsi") //KONCORDE showkoncorde = input.bool(true, title='Koncorde') deltaKon = input.int(-350, title="KONCORDE - Desfase") calc_mfi(length) => ta.rsi(math.sum(volume * (ta.change(hlc3) <= 0 ? 0 : hlc3), length), math.sum(volume * (ta.change(hlc3) >= 0 ? 0 : hlc3), length)) tprice = ohlc4 m = 15 pvim = ta.ema(ta.pvi, m) pvimax = ta.highest(pvim, 90) pvimin = ta.lowest(pvim, 90) oscp = (ta.pvi - pvim) * 100 / (pvimax - pvimin) nvim = ta.ema(ta.nvi, m) nvimax = ta.highest(nvim, 90) nvimin = ta.lowest(nvim, 90) azul = (ta.nvi - nvim) * 100 / (nvimax - nvimin) xmf = calc_mfi(14) mult = 2.0 basis = ta.sma(tprice, 25) dev = mult * ta.stdev(tprice, 25) upper = basis + dev lower = basis - dev OB1 = (upper + lower) / 2.0 OB2 = upper - lower BollOsc = ((tprice - OB1) / OB2) * 100 xrsi = ta.rsi(tprice, 14) calc_stoch(src, length, smoothFastD) => ta.sma(100 * (src - ta.lowest(low, length)) / (ta.highest(high, length) - ta.lowest(low, length)), smoothFastD) stoc = calc_stoch(tprice, 21, 3) marron = (xrsi + xmf + BollOsc + (stoc / 3)) / 2 verde = marron + oscp media = ta.ema(marron, m) plot(showkoncorde ? verde + deltaKon : na, color=#66FF66, style=plot.style_area, histbase=deltaKon, linewidth=2, title="Koncorde - verde") plot(showkoncorde ? marron + deltaKon : na, color=#FFCC99, style=plot.style_area, histbase=deltaKon, linewidth=2, title="Koncorde - marron") plot(showkoncorde ? azul + deltaKon : na, color=#00FFFF, style=plot.style_area, histbase=deltaKon, linewidth=2, title="Koncorde - azul") plot(showkoncorde ? marron + deltaKon : na, color=color.maroon, linewidth=2, title="Koncorde - lmarron") plot(showkoncorde ? verde + deltaKon : na, color=#006600, linewidth=2, title="Koncorde - lineav") plot(showkoncorde ? azul + deltaKon : na, color=#000066, linewidth=2, title="Koncorde - lazul") plot(showkoncorde ? media + deltaKon : na, color=color.red, linewidth=2, title="Koncorde - media") // MACD showmacd = input.bool(true, title='MACD') deltaMacd = input.int(300, title="MACD - Desfase") multMacd = input.int(5, title="MACD - Escala") fast_length = input.int(12, title="MACD - Fast Length") slow_length = input.int(26, title="MACD - Slow Length") src = input.source(close, title="MACD - Source") signal_length = input.int(9, title="MACD - Signal Smoothing", minval=1, maxval=50) sma_source = input.bool(false, title="MACD - Simple MA(Oscillator)") sma_signal = input.bool(false, title="MACD - Simple MA(Signal Line)") col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 fast_ma = sma_source ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = (fast_ma - slow_ma) / slow_ma * 1000 * multMacd signal = sma_signal ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal plot(showmacd ? hist + deltaMacd : na, title="MACD - Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)), histbase=deltaMacd) plot(showmacd ? macd + deltaMacd : na, title="MACD", color=col_macd) plot(showmacd ? signal + deltaMacd : na, title="MACD - Signal", color=col_signal) // STOCH (14,3,1) showrsi = input.bool(true, title='RSI - STOCH') deltaRSI = input.int(0, title="RSI/STOCH - Desfase") multip = input.int(5, title="RSI/STOCH - Escalado") lengthStoch = input.int(14, minval=1, title="STOCH - Periodo") smoothK = input.int(1, minval=1, title="STOCH - Smooth K") smoothD = input.int(3, minval=1, title="STOCH - Smooth D") k = ta.sma(ta.stoch(close, high, low, lengthStoch), smoothK) d = ta.sma(k, smoothD) hline(deltaRSI, color=color.yellow, linestyle=hline.style_dashed, linewidth=1) hline(-20 * multip + deltaRSI, color=color.green, linestyle=hline.style_dashed) hline(20 * multip + deltaRSI, color=color.red, linestyle=hline.style_dashed) lengthRSI = input.int(14, minval=1, title="RSI - Periodo") RSIMain = ta.rsi(close, lengthRSI) - 50 plot(showrsi ? RSIMain * multip + deltaRSI : na, color=color.purple, linewidth=3)
Suma el estocástico del RSI al panel de MACD y Koncorde, con longitudes ajustables.
//======================================================================================================== //= 4 - Clave MACD KKD RSI Stoch NORB (migrado a Pine v5) - Creado por: Norberto Taborda //======================================================================================================== //@version=5 indicator(title="Clave MACD KKD RSI SToch NORB", shorttitle="Macd/Konkorde/Rsi/Stoch") //KONCORDE showkoncorde = input.bool(true, title='Koncorde') deltaKon = input.int(-350, title="KONCORDE - Desfase") calc_mfi(length) => ta.rsi(math.sum(volume * (ta.change(hlc3) <= 0 ? 0 : hlc3), length), math.sum(volume * (ta.change(hlc3) >= 0 ? 0 : hlc3), length)) tprice = ohlc4 m = 15 pvim = ta.ema(ta.pvi, m) pvimax = ta.highest(pvim, 90) pvimin = ta.lowest(pvim, 90) oscp = (ta.pvi - pvim) * 100 / (pvimax - pvimin) nvim = ta.ema(ta.nvi, m) nvimax = ta.highest(nvim, 90) nvimin = ta.lowest(nvim, 90) azul = (ta.nvi - nvim) * 100 / (nvimax - nvimin) xmf = calc_mfi(14) mult = 2.0 basis = ta.sma(tprice, 25) dev = mult * ta.stdev(tprice, 25) upper = basis + dev lower = basis - dev OB1 = (upper + lower) / 2.0 OB2 = upper - lower BollOsc = ((tprice - OB1) / OB2) * 100 xrsi = ta.rsi(tprice, 14) marron = (xrsi + xmf + BollOsc) / 2 verde = marron + oscp media = ta.ema(marron, m) plot(showkoncorde ? verde + deltaKon : na, color=#66FF66, style=plot.style_area, histbase=deltaKon, linewidth=2, title="Koncorde - verde") plot(showkoncorde ? marron + deltaKon : na, color=#FFCC99, style=plot.style_area, histbase=deltaKon, linewidth=2, title="Koncorde - marron") plot(showkoncorde ? azul + deltaKon : na, color=#00FFFF, style=plot.style_area, histbase=deltaKon, linewidth=2, title="Koncorde - azul") plot(showkoncorde ? marron + deltaKon : na, color=color.maroon, linewidth=2, title="Koncorde - lmarron") plot(showkoncorde ? verde + deltaKon : na, color=#006600, linewidth=2, title="Koncorde - lineav") plot(showkoncorde ? azul + deltaKon : na, color=#000066, linewidth=2, title="Koncorde - lazul") plot(showkoncorde ? media + deltaKon : na, color=color.red, linewidth=2, title="Koncorde - media") // MACD showmacd = input.bool(true, title='MACD') deltaMacd = input.int(300, title="MACD - Desfase") multMacd = input.int(5, title="MACD - Escala") fast_length = input.int(12, title="MACD - Fast Length") slow_length = input.int(26, title="MACD - Slow Length") src = input.source(close, title="MACD - Source") signal_length = input.int(9, title="MACD - Signal Smoothing", minval=1, maxval=50) sma_source = input.bool(false, title="MACD - Simple MA(Oscillator)") sma_signal = input.bool(false, title="MACD - Simple MA(Signal Line)") col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 fast_ma = sma_source ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = (fast_ma - slow_ma) / slow_ma * 1000 * multMacd signal = sma_signal ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal plot(showmacd ? hist + deltaMacd : na, title="MACD - Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)), histbase=deltaMacd) plot(showmacd ? macd + deltaMacd : na, title="MACD", color=col_macd) plot(showmacd ? signal + deltaMacd : na, title="MACD - Signal", color=col_signal) // RSI + STOCH RSI showrsiStoch = input.bool(true, title='RSI - STOCH') deltaRSI = input.int(0, title="RSI/STOCH - Desfase") multip = input.int(5, title="RSI/STOCH - Escalado") smoothK = input.int(3, title="K", minval=1) smoothD = input.int(3, title="D", minval=1) lengthRSI = input.int(14, title="RSI Length", minval=1) lengthStoch = input.int(14, title="Stochastic Length", minval=1) srcx = input.source(close, title="RSI Source") rsi1 = ta.rsi(srcx, lengthRSI) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) - 50 d = ta.sma(k, smoothD) showrsi = input.bool(true, title='RSI') hline(deltaRSI, color=color.yellow, linestyle=hline.style_dashed, linewidth=1) band0 = hline(-25 * multip + deltaRSI, color=color.green, linestyle=hline.style_dashed) band1 = hline(25 * multip + deltaRSI, color=color.red, linestyle=hline.style_dashed) fill(band1, band0, color=color.new(#9915FF, 90), title="Background") RSIMain = ta.rsi(close, lengthRSI) - 50 plot(showrsi ? RSIMain * multip + deltaRSI : na, color=color.purple, linewidth=3) plot(showrsiStoch ? k * multip + deltaRSI : na, title="K", color=#0094FF) plot(showrsiStoch ? d * multip + deltaRSI : na, title="D", color=#FF6A00)
EMAs semanales y diarias fijas que no cambian al mover la temporalidad, más el cierre mensual anterior.
//======================================================================================================== //= 5 - MEDIAS FIJAS (migrado a Pine v5) - Creado por: Norberto Taborda //======================================================================================================== //@version=5 indicator("Medias fijas", overlay=true) emaCorta = input.int(5, minval=1, title="ema semanal corta") emaMedia = input.int(10, minval=1, title="ema semanal media") emaLarga = input.int(30, minval=1, title="ema semanal larga") emaDMedia = input.int(21, minval=1, title="ema diaria media") emaDLarga = input.int(200, minval=1, title="ema diaria larga") out = ta.ema(close, emaCorta) out1 = ta.ema(close, emaMedia) out2 = ta.ema(close, emaLarga) Dout1 = ta.ema(close, emaDMedia) Dout2 = ta.ema(close, emaDLarga) cierreAnterior = request.security(syminfo.tickerid, 'M', close) mediaSC = request.security(syminfo.tickerid, 'W', out) mediaSM = request.security(syminfo.tickerid, 'W', out1) mediaSL = request.security(syminfo.tickerid, 'W', out2) cierreSemanaAnterior = request.security(syminfo.tickerid, 'W', close) mediaDM = request.security(syminfo.tickerid, 'D', Dout1) mediaDL = request.security(syminfo.tickerid, 'D', Dout2) plot(cierreAnterior, color=color.gray) plot(cierreSemanaAnterior, color=color.purple) plot(mediaSC, color=color.green) plot(mediaSM, color=color.orange) plot(mediaSL, color=color.red, linewidth=2) plot(mediaDM, color=color.red, linewidth=1, style=plot.style_circles) plot(mediaDL, color=color.black, linewidth=1, style=plot.style_circles)
Cuatro EMAs configurables, Parabolic SAR y un perfil de volumen dibujado sobre el gráfico.
//======================================================================================================== //= 6 - EMAs, P.SAR & Vol.Prof. (migrado a Pine v5) - Creado por: FRANCRYPTO / VP dev. by kv4coins //======================================================================================================== //@version=5 indicator(title = "[francrypto® strategy] 4 Exponential Moving Average, Parabolic SAR & Volume Profile (VP developed by kv4coins)", shorttitle = "[francrypto® strategy] 4 EMAs, P.SAR & Vol.Prof. (VP dev. by kv4coins)", overlay = true, precision = 4, max_bars_back = 1000, max_lines_count = 500) // EMA's Length_Longitud_EMA_1 = input.int(10, minval=1, maxval=500) Length_Longitud_EMA_2 = input.int(21, minval=1, maxval=500) Length_Longitud_EMA_3 = input.int(55, minval=1, maxval=500) Length_Longitud_EMA_4 = input.int(200, minval=1, maxval=500) EMA1 = ta.ema(close, Length_Longitud_EMA_1) EMA2 = ta.ema(close, Length_Longitud_EMA_2) EMA3 = ta.ema(close, Length_Longitud_EMA_3) EMA4 = ta.ema(close, Length_Longitud_EMA_4) plot(EMA1, color=#ffff00, linewidth=1, title='1° Exponential Moving Average // Media Móvil Exponencial') plot(EMA2, color=#00e6ff, linewidth=1, title='2° Exponential Moving Average // Media Móvil Exponencial') plot(EMA3, color=#ffa600, linewidth=1, title='3° Exponential Moving Average // Media Móvil Exponencial') plot(EMA4, color=#001eff, linewidth=1, title='4° Exponential Moving Average // Media Móvil Exponencial') // PSAR start = input.float(0.02, "PSAR Start // Parabólica de SAR Comienzo") increment = input.float(0.02, "PSAR Increment // Parabólica de SAR Incremento") maximum = input.float(0.2, "PSAR Max Value // Parabólica de SAR Valor Máximo") out = ta.sar(start, increment, maximum) plot(out, "PSAR // Parabólica de SAR", style=plot.style_circles, color=#ffffff) // VOLUME PROFILE (VP developed by @kv4coins) vp_lookback = input.int(defval = 250, title = "Volume Lookback Depth // Retrospectiva Profundidad del Volumen [10-1000]", minval = 10, maxval = 1000) vp_max_bars = input.int(defval = 500, title = "Number of Bars // Cantidad de Barras [10-500]", minval = 10, maxval = 500) vp_bar_mult = input.int(defval = 50, title = "Bar Length Multiplier // Longitud de las Barras [10-100]", minval = 10, maxval = 100) vp_bar_offset = input.int(defval = 40, title = "Bar Horizontal Offset // Distancia en Eje Horizontal de las Barras [0-100]", minval = 0, maxval = 100) vp_bar_width = input.int(defval = 1, title = "Bar Width // Ancho de las Barras [1-20]", minval = 1, maxval = 20) vp_delta_type = input.string(defval = "Both // Ambos", title = "Delta Type", options = ['Both // Ambos', 'Bullish // Toros', 'Bearish // Osos']) vp_poc_show = input.bool(defval = true, title = "Show POC Line // Mostrar Línea del Punto de Control") vp_bar_color = input.color(defval = color.new(color.aqua, 60), title = "Bar Color // Color de la Barra") vp_poc_color = input.color(defval = color.new(color.white, 10), title = "POC Color // Color del Punto de control") float vp_Vmax = 0.0 int vp_VmaxId = 0 int vp_N_BARS = vp_max_bars var int vp_first = time vp_a_P = array.new_float((vp_N_BARS + 1), 0.0) vp_a_V = array.new_float(vp_N_BARS, 0.0) vp_a_D = array.new_float(vp_N_BARS, 0.0) vp_a_W = array.new_int(vp_N_BARS, 0) float vp_HH = ta.highest(high, vp_lookback) float vp_LL = ta.lowest(low, vp_lookback) if barstate.islast float vp_HL = (vp_HH - vp_LL) / vp_N_BARS for j = 1 to (vp_N_BARS + 1) array.set(vp_a_P, (j - 1), (vp_LL + vp_HL * j)) for i = 0 to (vp_lookback - 1) int Dc = 0 array.fill(vp_a_D, 0.0) for j = 0 to (vp_N_BARS - 1) float Pj = array.get(vp_a_P, j) if low[i] < Pj and high[i] > Pj and (vp_delta_type == "Bullish // Toros" ? close[i] >= open[i] : (vp_delta_type == "Bearish // Osos" ? close[i] <= open[i] : true)) float Dj = array.get(vp_a_D, j) float dDj = Dj + nz(volume[i]) array.set(vp_a_D, j, dDj) Dc := Dc + 1 for j = 0 to (vp_N_BARS - 1) float Vj = array.get(vp_a_V, j) float Dj = array.get(vp_a_D, j) float dVj = Vj + ((Dc > 0) ? (Dj / Dc) : 0.0) array.set(vp_a_V, j, dVj) vp_Vmax := array.max(vp_a_V) vp_VmaxId := array.indexof(vp_a_V, vp_Vmax) for j = 0 to (vp_N_BARS - 1) float Vj = array.get(vp_a_V, j) int Aj = math.round(vp_bar_mult * Vj / vp_Vmax) array.set(vp_a_W, j, Aj) if barstate.isfirst vp_first := time vp_change = ta.change(time) vp_x_loc = timenow + math.round(vp_change * vp_bar_offset) f_setup_bar(n) => x1 = ((vp_VmaxId == n) and vp_poc_show) ? math.max(time[vp_lookback], vp_first) : (timenow + math.round(vp_change * (vp_bar_offset - array.get(vp_a_W, n)))) ys = array.get(vp_a_P, n) line.new(x1 = x1, y1 = ys, x2 = vp_x_loc, y2 = ys, xloc = xloc.bar_time, extend = extend.none, color = (vp_VmaxId == n ? vp_poc_color : vp_bar_color), style = line.style_solid, width = vp_bar_width) if barstate.islast for i = 0 to (vp_N_BARS - 1) by 1 f_setup_bar(i)
RSI con su media, estocástico y ADX/DMI con nivel de referencia ajustable, todo en un panel.
//======================================================================================================== //= 7 - RSI+Stochastic+ADX-DMI (migrado a Pine v5) - Creado por: Sergio Boarini //======================================================================================================== //@version=5 indicator(title="Relative Strength Index + Stochastic + ADX/DMI", shorttitle="RSI/Stochastic/ADX-DMI", format=format.price, precision=2) // RSI len = input.int(14, minval=1, title="Length") src = input.source(close, "Source") rsi_up = ta.rma(math.max(ta.change(src), 0), len) rsi_down = ta.rma(-math.min(ta.change(src), 0), len) rsi = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - (100 / (1 + rsi_up / rsi_down)) plot(rsi, "RSI", color=#B666D2, linewidth=2) band1 = hline(70, "Upper Band", color=#C0C0C0) band0 = hline(30, "Lower Band", color=#C0C0C0) fill(band1, band0, color=color.new(#9915FF, 90), title="Background") // Media Simple RSI tipo_media_larga_rsi = input.string(title="Tipo Media RSI", defval="SMA", options=["SMA", "EMA", "WMA"]) long_media_larga_rsi = input.int(title="Período Media RSI", defval=55, minval=1, maxval=500) f_media(source, tipo_media_rsi, length) => if tipo_media_rsi == "SMA" ta.sma(source, length) else if tipo_media_rsi == "EMA" ta.ema(source, length) else ta.wma(source, length) media_larga_rsi = f_media(rsi, tipo_media_larga_rsi, long_media_larga_rsi) hline(50, color=#8C92AC, linewidth=1, linestyle=hline.style_solid, title="Nivel RSI") plot(media_larga_rsi, color=#FFB300, linewidth=1, title='Media RSI') ////////////////// // Stochastic RSI smoothK = input.int(5, "K", minval=1) smoothD = input.int(3, "D", minval=1) lengthRSI = input.int(14, "RSI Length", minval=1) lengthStoch = input.int(14, "Stochastic Length", minval=1) src2 = input.source(close, title="RSI Source") rsi1 = ta.rsi(src2, lengthRSI) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = ta.sma(k, smoothD) plot(k, "K", color=#0094FF) plot(d, "D", color=#FF6A00) ///////////////////////// // DMI/ADX adxlen = input.int(14, title="ADX Smoothing") dilen = input.int(14, title="DI Length") keyLevel = input.int(23, title="Nivel ADX") dirmov(len2) => up = ta.change(high) down = -ta.change(low) truerange = ta.rma(ta.tr, len2) plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, len2) / truerange) minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, len2) / truerange) [plus, minus] f_adx(dilen2, adxlen2) => [plus, minus] = dirmov(dilen2) total = plus + minus adxValue = 100 * ta.rma(math.abs(plus - minus) / (total == 0 ? 1 : total), adxlen2) [adxValue, plus, minus] [sig, up, down] = f_adx(dilen, adxlen) plot(sig, color=#446CCF, title="ADX", linewidth=2) plot(up, color=#138808, title="+DI") plot(down, color=#AE0C00, title="-DI") hline(keyLevel, color=#8C92AC, title="Nivel ADX", linestyle=hline.style_solid)
Pinta el cuerpo de la vela según la fuerza del volumen: resalta cuando supera 1,5 o 2,3 veces el promedio.
//Volume Srength Colored CandleStick/ VSCC-Wal // Marca el interior de la Vela Japonesa de un color (sugiero negro) // si el volumen en dicha vela es 1,5 veces mayor que el promedio de los volumenes // anteriores y marca de otro color (sugiero blanco) si es 2,3 veces mayor que el // promedio de los volumenes anteriores. // Es una herramienta bastante útil al momento de ver un gráfico ya que las velas // presentan su contorno característico si son alcistas o bajistas con el agregado de // destacar por el color del interior del cuerpo cuando su volumen es destacado. //======================================================================================================== //= 8 - Vela japonesa resaltada según volumen //======================================================================================================== //@version=5 indicator("Coloreo barras x Volumen") // *** coloreo de barras por tamaño de volumen length=input(20, "length volumen") avrg=ta.sma(volume,length) bear_big = volume >= avrg*2.3 and close < open bear_med = volume < avrg*2.3 and volume >= avrg*1.5 and close<open bull_big = volume >= avrg*2.3 and close>open bull_med = volume < avrg*2.3 and volume >= avrg*1.5 and close>open big_up=color.black big_down = color.white medium_up=color.lime medium_down = color.orange color = bear_big ? big_down : bear_med ? medium_down : bull_big ? big_up : bull_med ? medium_up : na barcolor(color)