Hola..
La imagen 1 muestra el número predeterminado en las barras visibles, tanto para el gráfico semanal como para el mensual, y también se representan mediante rectángulos azules. Las líneas del gráfico semanal se alinean con las líneas correspondientes del gráfico mensual. Sin embargo, algunas líneas mensuales parecen faltar en el gráfico semanal. En la parte inferior de los gráficos, se encuentran el código MACD y el MACD de acciones, todos para el gráfico mensual.
Imagen 2: El gráfico semanal se amplía en el eje x para mostrar todas las barras. La línea vertical representa el punto de inicio de la línea faltante más reciente. Sin embargo, al observar el código MACD, aún no está definido y no se puede detectar el punto de cruce para esa línea.
Imagen 3: Se amplía el gráfico mensual para mostrar todas las barras. La línea vertical se mueve al inicio del gráfico semanal y se refleja en el gráfico mensual. Las otras líneas faltantes no solo no están cubiertas por el código MACD semanal, sino que esas barras ni siquiera están presentes.
Para que el gráfico semanal represente todas las líneas mensuales, tiene que haber suficientes datos históricos cargados para capturar el código MACD de cruce, que luego dibuja su línea.
En 145 unidades, eso significa que se cargaron 650 barras históricas y se necesitan 150 barras para calcular el inicio de la señal MACD. Y luego esperar el cruce.
En este momento, la única solución es aumentar los datos históricos hasta que se representen todas las líneas requeridas.
No se muestra, noté que dos líneas no coincidían en absoluto. Esto se debió a que, cuando recorrí las matrices para dibujar las líneas, comenzó en el índice cero, y esto no era válido y debería haber comenzado en ‘1’.
Además, para el gráfico diario, habrá un escenario similar, pero se necesitan incluso más barras para representar todas las líneas mensuales.
Espero que esto explique lo que está sucediendo.
once iMacd = undefined
once iSignal = undefined
lines = 5 // 0 or positve integer, smaller than lines drawn!
error = 1 // display error message
if barindex = 0 then
once below = 0
once above = 1
once Hid = 0
once Lid = 0
$hi[0]=0
$lo[0]=0
gTF = getTimeframe
if gtf = 86400 then // 1day
m = 30.416667 // days 365/12 days/month 10,000 units
TF=1
elsif gtf = 604800 then // 1week
m = 4.333334 // weeks 365/52 weeks/month 1000 units
TF=2
elsif gtf >= 2419200 and gtf <= 2678400 then // 1 month 25units
m = 1 // months
TF=0
else
TF = -1
if error = 1 then
Drawtext("Monthly,<br> Weekly, <br> Daily <br> Timeframes only!"/*
*/ ,0,0,monospaced,bold,30) /*
*/ coloured("red") anchor(middle,xshift,yshift)
endif
endif
a = 12 * m
b = 26 * m
c = 9 * m
endif
if barindex > b and TF >= 0 then
iMacd = MACDline[max(1,a),max(1,b),max(1,c)](close)
iSignal = MACDSignal[max(1,a),max(1,b),max(1,c)](close)
// is macd line crosses above
if iMacd > iSignal and iMacd [1] < iSignal[1] then
Hid = Hid + 1
HH=high
HHb = barindex
xOver = above
endif
// is macd line crosses below
if iMacd < iSignal and iMacd [1] > iSignal[1] then
Lid = Lid + 1
LL = low
LLb = barindex
xOver = below
endif
// highs
if xover = above then
if high > HH then
HH = high
HHb = barindex
endif
endif
if openmonth <> openmonth[1] then
$hi[Hid] = HHb
endif
// lows
if xover = below then
if low < LL then
LL = low
LLb = barindex
endif
endif
if openmonth <> openmonth[1] then
$lo[Lid] = LLb
endif
if islastbarupdate then
// drawing highs
for i = max(1,lastset($hi)-lines+1) to lastset($hi)
x1 = barindex-$hi[i]
y1 = high[x1]
x2 = 0
y2 = y1
drawsegment(barindex[x1],y1,barindex[x2]+5,y2) coloured("red")style(dottedline,1)
drawtext(y1,-120,y1+5) anchor(right,xshift,value) coloured("red")
next
// drawing lows
for i = max(1,lastset($lo)-lines+1) to lastset($lo)
x1 = barindex - $lo[i]
y1 = low[x1]
x2 = 0
y2 = y1
drawsegment(barindex[x1],y1,barindex[x2]+5,y2) coloured("lime")style(dottedline,1)
drawtext(y1,-50,y1)anchor(right,xshift,value) coloured("lime")
next
endif
endif
return
/**/