Por favor, haz un ejemplo reproducible. Es decir, necesitas un código listo que puedas compilar, lanzar en un gráfico y obtener resultados.
Sin esto, poca gente entenderá de qué estamos hablando.
Pensé en recortar para no desanimar a la gente por nada.
Aquí está la versión completa:
#property indicator_separate_window // El indicador se dibuja en una ventana independiente#property indicator_buffers 1#property indicator_plots 1#property indicator_type1 DRAW_LINE#property indicator_color1 Aquainputstring InstrumentName = "EURJPY";
//-- Matriz de indicadoresdouble ScreenBuffer[];
//-- Buffer dinámico --double ArrayBuffer[];
intOnInit() // Función especial init()
{
//--------------------------------------------------------------------IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA);
return0; // Salir
}
//--------------------------------------------------------------------intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[])
{
int Counted_bars; // Número de barras a accionar int copied;
//--------------------------------------------------------------------//1 entrada rates_total = 9667 / prev_calculated = 0 / Bars = 9667//-- entonces rates_total = 9667 / prev_calculated = 9667 / Bars = 9667//-- en proceso entonces rates_total = 9668 / prev_calculated = 9667 / Bars = 9668//Imprimir("tarifas_total: " + (cadena)tarifas_total);if (rates_total == prev_calculated) return (rates_total);//-- Sigue siendo el mismo bar, así que estamos fuera...//-- Obtener el número de barras no procesadas (en la primera entrada es todas, luego 1)//-- El número de barras de salida se refiere al gráfico en sí, pero estaremos dando salida a otro instrumento//-- el número de barras puede ser diferente, así que primero volcamos todos los datos en el buffer --
Counted_bars = rates_total-prev_calculated;
// Print("Barras_contadas: " + Barras_contadas);Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0));
//-- Asignar memoria por el número de compases del instrumento principal --if (ArrayResize(ArrayBuffer, Counted_bars,0) == -1) return (rates_total);//-- Error de asignación de memoria --//--- inicializar los elementos del array con el valor EMPTY_VALUE ----ArrayInitialize(ArrayBuffer,EMPTY_VALUE);
//-- Obtener cuántas barras tiene este instrumento --
copied = (int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT);
if (copied > 0){
copied=CopyClose(InstrumentName,0,0,copied,ArrayBuffer);//-- Escribir datos en el buffer de memoria --if (copied <= 0) return (rates_total);//-- error
}
else{
return (rates_total);//-- error
}
if (Counted_bars > copied) Counted_bars = copied;//-- Toma el valor más bajo --
Counted_bars--;//-- Ya que contando desde 0 --//-- Los datos se cargan en el buffer de memoria, ahora escríbelos en el buffer de pantalla de derecha a izquierda --for (int i = Counted_bars; i > 0; i--){
ScreenBuffer[i] = ArrayBuffer[i];
}
//--------------------------------------------------------------------return(rates_total);
}
voidOnDeinit(constint reason)
{
ObjectsDeleteAll(0,0,-1); // se borran todos los objetos del gráfico.
}
¿Qué estoy haciendo mal, por qué no puedo mostrar el gráfico de otro instrumento normalmente?
Todo funcionaba en MQL4, aquí sólo funciona si lo muestra en el mismo instrumento, entonces no hay errores.
No estoy seguro de la corrección de la implementación y el algoritmo en general, pero basado en el código y lo que yo era capaz de hacer con él, supongo que:
Pero como no entré en la lógica del inductor y su implementación, no me corresponde juzgar la corrección de los resultados.
PS
Igual me desharía del símbolo en el parámetro y lo haría por el símbolo actual y TF, y luego lo usaría en Expert Advisor u otra herramienta usando el iCustom() habitual.
Además, no entiendo muy bien la lógica de trabajar con buffers (me refiero a la cola de la calculadora y demás). En mi opinión, hay mucho que trabajar en....
Pero como no entré en la lógica del inductor y su implementación, no me corresponde juzgar la corrección de los resultados.
PS
Yo aún me desharía del símbolo en el parámetro y lo haría de acuerdo con el símbolo actual y TF, y luego lo usaría en Expert Advisor o cualquier otra herramienta usando el iCustom() habitual.
Además, no entiendo muy bien la lógica de trabajar con buffers (me refiero a la cola de la calculadora y demás). En mi opinión, hay mucho que trabajar en....
Yo seguiría prestando atención al algoritmo de trabajo con buffers. Si lo he entendido bien, con un buffer es suficiente (sólo hay que calcularlo y dibujarlo correctamente en el gráfico).
PS
Y con la variante actual tengo la impresión de que el inductor muestra los datos de la "izquierda" (el principio de la historia) en lugar de la "derecha" (actual)....
O no entiendo nada en la lógica de este indicador en absoluto....
6.Parece que falta:
TradePerformer( 4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop);
en Exp_TEMA.mq5 ?
6.Parece que falta
en Exp_TEMA.mq5?
Por favor, haz un ejemplo reproducible. Es decir, necesitas un código listo que puedas compilar, lanzar en un gráfico y obtener resultados.
Sin esto, poca gente entenderá de qué estamos hablando.Pensé en recortar para no desanimar a la gente por nada.
Aquí está la versión completa:
¿Qué estoy haciendo mal, por qué no puedo mostrar el gráfico de otro instrumento normalmente?
Todo funcionaba en MQL4, aquí sólo funciona si lo muestra en el mismo instrumento, entonces no hay errores.
¿Qué estoy haciendo mal, por qué no puedo mostrar el gráfico de otro instrumento normalmente?
Todo funcionaba en MQL4, aquí sólo funciona si lo muestra en el mismo instrumento, entonces no hay errores.
No estoy seguro de la corrección de la implementación y el algoritmo en general, pero basado en el código y lo que yo era capaz de hacer con él, supongo que:
La cadena
debería tener este aspecto
Tal vez sería más correcto cambiar el punto en todas partes como "0" a PERIOD_CURRENT.
Por lo menos todo funcionó para mí después de tales cambios.....
PS
Tal vez no es relevante, pero de esta manera el compilador importa mucho menos
No estoy seguro de la implementación correcta y el algoritmo en general, pero basado en el código y lo que pude hacer con él voy a suponer que:
La cadena
debería tener este aspecto
PS
Tal vez sería más correcto cambiar el período en todas partes como "0" a PERIOD_CURRENT.
Por lo menos todo funcionó para mí después de tales cambios....
En mi pantalla se ve así:

Claramente mal.Así es como me resultó a mí
Pero como no entré en la lógica del inductor y su implementación, no me corresponde juzgar la corrección de los resultados.
PS
Igual me desharía del símbolo en el parámetro y lo haría por el símbolo actual y TF, y luego lo usaría en Expert Advisor u otra herramienta usando el iCustom() habitual.
Además, no entiendo muy bien la lógica de trabajar con buffers (me refiero a la cola de la calculadora y demás). En mi opinión, hay mucho que trabajar en....
Eso es lo que tengo
Pero como no entré en la lógica del inductor y su implementación, no me corresponde juzgar la corrección de los resultados.
PS
Yo aún me desharía del símbolo en el parámetro y lo haría de acuerdo con el símbolo actual y TF, y luego lo usaría en Expert Advisor o cualquier otra herramienta usando el iCustom() habitual.
Interesting:
Además, no entiendo muy bien la lógica de trabajar con buffers (me refiero a la cola de la calculadora y demás). En mi opinión, hay mucho que trabajar en....
Yo seguiría prestando atención al algoritmo de trabajo con buffers. Si lo he entendido bien, con un buffer es suficiente (sólo hay que calcularlo y dibujarlo correctamente en el gráfico).
PS
Y con la variante actual tengo la impresión de que el inductor muestra los datos de la "izquierda" (el principio de la historia) en lugar de la "derecha" (actual)....
O no entiendo nada en la lógica de este indicador en absoluto....