//@version=6
// Este indicador está pensado para hacer scalping en 1 minuto, aunque se puede
utilizar para otras temporalidades.
//
// Idea:
// Una de las estrategias más utiliza y sencilla de realizar es abrir operación
cuando la media móvil rápida cruce ascendente por la media lenta. Esto se conoce
como el cruce dorado.
// Una estrategia que tiene un problema, para que se produzca ese cruce se necesita
que el valor de los últimos ciclos crezca para anular la diferencia entre las dos
media.
// Esta estrategia intenta anticiparse a ese crecimiento del valor, por lo que
podemos entrar en operativa lo más pronto posible de ese impulso.
// Para intentar predecir eso momento de entrada utilizamos una línea calculado por
los altos y los bajos de dos bloques de ciclos diferentes y aplicando a esos datos
un promedio.
// Consiguiendo un pequeño anticipo al momento en el que se inicia el acercamiento
entre las medias rápida y lenta.
// Reforzamos el gráfico con la reacción de un canal donde se están moviendo los
precios. Así podemos saber si la tendencia es alcista o bajista.
//
// Observaciones:
// . - Esta es la versión 1.
// . - El indicador funciona con todos los timeframe.
// . - El indicador está dividido en varias módulos y todos ellos pueden ser
desactivados por separado.
// . - Esta solo pensado para operaciones en largo (compra), para operaciones en
corto (venta) se puede invertir la operativa. Si venimos de un largo, realizar un
corto a la salida.
// . - La longitud del canal esta representada en un número en azul que aparece al
principio de este. Debe estar entre los valores mínimos y máximos de la
configuración.
//
// Indicadores a configurar:
// . - Consta de dos SMA. Una lenta de 100 ciclos y otra rápida de 14.
// . - Consta de una media ponderada calculada según los altos y bajos de dos SMA
de (14 y 42).
// . - Consta de la formación de un canal formado entre 120 ciclos como mínimo y
240 ciclos como máximo. El código intenta crear el canal lo más largo posible.
// Si no lo puede crear, no pinta nada en el gráfico. Este canal tiene dos
líneas superiores que son utilizadas para poner al usuario en alerta.
// Que se rompa un canal es muy común, por lo que se crea esas líneas para
advertir que la rotura puede ser cierta y no una falsa rotura.
//
//Entradas en largo (compra) siempre que el canal sea ascendente.
// Cuando el precio supere la SMA calculada y esta media este por debajo de la
media rápida.
// La salida tiene dos posibilidades. A elegir por el usuario según el beneficio
obtenido.
// . - Se realiza cuando el precio baje del valor de la media rápida (la media
rápida tiene que estar por encima de la media lenta)
// . - Se realiza cuando el precio baje del valor de la media calculada (la
media rápida tiene que estar por debajo).
// . - Se puede cerrar la operación cuando el precio toque la línea superior del
canal o la línea de alerta.
indicator('Anticipar Cruce dorado ver.1', overlay=true)
// Definición de ayuda de uso general
string Ayuda_onoff = "Activar o desactivar la visualización de este
bloque"
string Ayuda_minimo = "Cantidad mínima"
string Ayuda_maximo = "Cantidad máxima"
string Ayuda_longitud = "Longitud de datos a procesar"
string Ayuda_origen = "Origen de los datos "
string Ayuda_multiplicador = "Se usar para alegar los resultados del valor
actual"
string Ayuda_linea_onoff = "Activar o desactivar linea"
////////////////////////////////// CANAL
// Entrada de datos
i_canal = [Link](title = "Activar ", defval = true, group="●═════ Canal
═════●", tooltip = Ayuda_onoff, inline="1")
min = [Link](title="Longitud minima", defval=120, minval=12, group="●═════ Canal
═════●", tooltip = Ayuda_minimo, inline="2")
max = [Link](title="Longitud maxima", defval=240, minval=25, group="●═════ Canal
═════●", tooltip = Ayuda_maximo, inline="3")
srcC = [Link](title="Source", defval=close, group="●═════ Canal ═════●",
tooltip = Ayuda_origen, inline="4" )
i_canal_line = [Link](title = "Linea rótura soporte", defval = true,
group="●═════ Canal ═════●", tooltip = Ayuda_linea_onoff, inline="5")
mult = [Link](title=" ", defval=1.4, minval=1.0 , maxval=5.0, step=0.01,
group="●═════ Canal ═════●", tooltip = Ayuda_multiplicador, inline="5")
i_canal_lineR = [Link](title = "Linea rótura resistencia", defval = true,
group="●═════ Canal ═════●", tooltip = Ayuda_linea_onoff, inline="6")
multR = [Link](title=" ", defval=1.4, minval=1.0 , maxval=5.0, step=0.01,
group="●═════ Canal ═════●", tooltip = Ayuda_multiplicador, inline="6")
// Calculo Canal
nC = bar_index
cmla = [Link](srcC)
cmlb = [Link](cmla[1])
cmlc = [Link](srcC * srcC)
r(p) =>
sum = cmlb - cmlb[p]
a = p * cmla - sum
b = cmla - cmla[p]
c = cmlc - cmlc[p]
num = (a - b * (p + 1) / 2) / p
vary = c / p - [Link](b / p, 2)
varx = (p * p - 1) / 12
[Link](num / [Link](vary * varx), 2)
k = 0.0
p = 0.0
for i = min to max
c = r(i)
k := [Link](c, k)
p := k == c ? i : p
p
den = p * (p + 1) / 2
wma = (p * cmla - (cmlb - cmlb[p])) / den
sma = (cmla - cmla[p]) / p
A = 4 * sma - 3 * wma
B = 3 * wma - 2 * sma
Var = (cmlc - cmlc[p]) / p - [Link]((cmla - cmla[p]) / p, 2)
rmse = [Link](Var - r(p) * Var) * 2
// Pintado Canal
var line ln = na
var line lnR = na
var line up = na
var line dn = na
var label la = na
transparent = [Link]([Link], 100)
if i_canal
if nC > min
ln := [Link](nC[p] + 1, A - ( rmse * mult), nC, B - (rmse*mult),
extend=[Link], color=#000000, width=2)
lnR := [Link](nC[p] + 1, A + ( rmse * multR), nC, B + (rmse*multR),
extend=[Link], color=#000000, width=2)
up := [Link](nC[p] + 1, A + rmse, nC, B + rmse, extend=[Link],
color=#f33d10, width=3)
dn := [Link](nC[p] + 1, A - rmse, nC, B - rmse, extend=[Link],
color=#2157f3, width=3)
la := [Link](nC[p] + 1, A - rmse, [Link](p), color=transparent,
style=label.style_label_up, textcolor=#2157f3)
la
[Link](ln[1])
if i_canal_line == false
[Link](ln)
if i_canal_lineR == false
[Link](lnR)
[Link](lnR[1])
[Link](up[1])
[Link](dn[1])
[Link](la[1])
/////////////////////////////////////////////////Linea de
compra//////////////////////////////////////////////////////////////
linea_is = [Link](defval=true, title="Activar linea de compra", group="●═════
Compra-Venta ═════●", inline="1",tooltip = Ayuda_onoff)
rapida = [Link](defval = 16, title = 'Ràpida', group="●═════ Compra-Venta
═════●", inline="2")
lenta = [Link](defval = 42, title = 'Lenta', group="●═════ Compra-Venta ═════●",
inline="2")
linea_color = [Link](defval=[Link], title="Color", group="●═════ Compra-
Venta ═════●", inline="3")
linea_tamano = [Link](defval=3, title=" Tamaño", maxval=5, minval=1,
group="●═════ Compra-Venta ═════●", inline="3")
h12 = [Link](high, rapida)
l12 = [Link](low, rapida)
h64 = [Link](high, lenta)
l64 = [Link](low, lenta)
Signal = [Link](h12, l12, h64, l64)
trams_linea = 100
if linea_is
trams_linea := 0
plot(Signal, title = 'Signal', color = [Link](linea_color, trams_linea),
linewidth = linea_tamano)
/////////////////////////////////////////
// EMA lenta
ema_is = [Link](defval=false, title="Activar media lenta", group="●═════ EMA
═════●", inline="1", tooltip = Ayuda_linea_onoff)
emaSource = [Link](title="Source", defval=close, group="●═════ EMA ═════●",
inline="2")
ema_lenta = [Link](defval=100, maxval=500, minval=1, step=1, title="Longitud",
group="●═════ EMA ═════●", inline="2")
ema_color = [Link](defval=[Link], title="Color", group="●═════ EMA ═════●",
inline="3")
ema_tamano = [Link](defval=2, title=" Tamaño", maxval=5, minval=1,
group="●═════ EMA ═════●", inline="3")
ema_trams = 100
if ema_is
ema_trams := 0
plot([Link](emaSource,ema_lenta),color=[Link](ema_color,ema_trams), linewidth =
ema_tamano)
// EMA rápida
ema_is2 = [Link](defval=false, title="Activar media rápida", group="●═════ EMA
═════●", inline="4", tooltip = Ayuda_linea_onoff)
emaSource2 = [Link](title="Source", defval=close, group="●═════ EMA ═════●",
inline="5")
ema_lenta2 = [Link](defval=14, maxval=500, minval=1, step=1, title="Longitud",
group="●═════ EMA ═════●", inline="5")
ema2_color = [Link](defval=[Link], title="Color", group="●═════ EMA
═════●", inline="6")
ema2_tamano = [Link](defval=2, title=" Tamaño", maxval=5, minval=1,
group="●═════ EMA ═════●", inline="6")
ema_trams2 = 100
if ema_is2
ema_trams2 := 0
plot([Link](emaSource2,ema_lenta2),color=[Link](ema2_color,ema_trams2),
linewidth = ema2_tamano)