El error podría estar en el número de dígitos después del punto decimal:
Este no es el error, los datos no se calculan en el historial, pero desde el momento en que se crea el símbolo todo se calcula correctamente, sospecho que la función de cálculo del historial no está funcionando correctamente, es decir, es un error.
Tengo un problema de este tipo: acabo de empezar en MT5, estoy transfiriendo mis indicadores desde MT4 y me he encontrado con algunos problemas. Necesito utilizar iMA en una línea y obtener el valor de un índice específico. He visto mensajes en el foro y utilizar la función iMAGet (así como la similar iATRGet, etc.). Como veo, las funciones ya no funcionan, entonces esta pregunta: ¿cómo obtener con gracia un solo valor de iMA? He intentado utilizar las funciones anteriores para hacerlo:
Sé que es malo sin comprobarlo, pero tengo que portar código antiguo de MT4, no se me ocurría otra forma de hacerlo más sencillo (tengo decenas de asistentes, y todos trabajan en diferentes marcos temporales). No puedo inicializar los asistentes en oninit, porque el código tiene tres pasos anidados y no puedo llamar al asistente necesario sin problemas. Así que, en resumen, mi objetivo es convertir
Tengo un problema, acabo de empezar con MT5 y tengo problemas cuando transfiero mis indicadores desde MT4. Necesito utilizar iMA en una línea y obtener el valor de un índice específico. He visto mensajes en el foro y utilizar la función iMAGet (así como la similar iATRGet, etc.). Como veo, las funciones ya no funcionan, entonces esta pregunta: ¿cómo obtener con gracia un solo valor de iMA? He intentado utilizar las funciones anteriores para hacerlo:
Sé que es malo sin comprobarlo, pero tengo que portar código antiguo de MT4, no se me ocurría otra forma de hacerlo más sencillo (tengo decenas de asistentes, y todos trabajan en diferentes marcos temporales). No puedo inicializar los asistentes en oninit, porque el código tiene tres pasos anidados y no puedo llamar al asistente necesario sin problemas. Así que, en resumen, mi objetivo es convertir
handle_iMA_High=iMA(Symbol(),Period(),Inp_MA_ma_period,Inp_MA_ma_shift,
Inp_MA_ma_method,PRICE_HIGH);
//--- if the handle is not createdif(handle_iMA_High==INVALID_HANDLE)
{
//--- tell about the failure and output the error codePrintFormat("Failed to create handle of the iMA indicator (\"Price High\") for the symbol %s/%s, error code %d",
Symbol(),
EnumToString(Period()),
GetLastError());
//--- the indicator is stopped earlyreturn(INIT_FAILED);
}
A continuación, copie los elementos necesarios en el portapapeles y trabaje con ellos
if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
{
//--- if the copying fails, tell the error codePrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
Como ya he escrito, la inicialización en OnInit no me conviene. Tengo que trabajar con todos los timeframes simultáneamente, tengo que inicializar todas las máscaras en cada TF, y luego en el código, donde uso algún valor, hacer algo como esto:
Como ya he escrito, la inicialización en OnInit no me conviene. Tengo que trabajar con todos los timeframes simultáneamente, tengo que inicializar todas las máscaras en cada TF, y luego en el código, donde uso algún valor, hacer algo como esto:
Y así con cada llamada de cada pulsera. El código se convertirá en una diarrea enmarañada.
¿Y cada nuevo bar necesitará alguna forma de actualizarlo?
¿Existe una función como CopyBuffer, pero que no copie un array, sino un único valor por el índice correcto?
Hacer un array de asas enOnInit() y trabajar con ellas.
CopyBuffer(...) en la función para su uso, introduciendo el indicador y el índice requerido de la matriz, y la función devolverá el precio
Hacer un array de asas enOnInit() y trabajar con ellas.
CopyBuffer(...) en una función para facilitar su uso, pasar el mango del indicador y el índice requerido de la matriz, y la función devolverá el precio
Hacer un array de asas enOnInit() y trabajar con ellas.
CopyBuffer(...) en la función para su uso, allí se alimenta el mango del indicador y el índice requerido de la matriz, y la función devolverá el precio
El otro problema de CopyBuffer es que requiere un buffer indicador para sí mismo. Tengo cien indicadores en total y se utilizan en los cálculos para obtener un único indicador. ¿Tengo que crear cien buffers para almacenar estos valores?
Otro problema de CopyBuffer es que requiere necesariamente un buffer indicador para sí mismo. Tengo menos de cien indicadores en total y se utilizan en los cálculos para obtener un único indicador. ¿Tengo que crear cien buffers para almacenar estos valores?
Busque ejemplos de código en el CodeBase de scriptor - todo está allí.
En realidad, se puede calcular la MA para cualquier barra.
Necesito un ejemplo para resolver el siguiente problema: hay un indicador ¹1 en el gráfico con una docena de buffers gráficos (no wavecaps y otras cosas) y el indicador ¹2 del sótano debe tomar algunos buffers del indicador ¹1 y mostrarlos como hixogramas (no importa cómo) ya en el sótano. Gracias de antemano, para MT5.
El error podría estar en el número de dígitos después del punto decimal:
Tengo un problema de este tipo: acabo de empezar en MT5, estoy transfiriendo mis indicadores desde MT4 y me he encontrado con algunos problemas. Necesito utilizar iMA en una línea y obtener el valor de un índice específico. He visto mensajes en el foro y utilizar la función iMAGet (así como la similar iATRGet, etc.). Como veo, las funciones ya no funcionan, entonces esta pregunta: ¿cómo obtener con gracia un solo valor de iMA? He intentado utilizar las funciones anteriores para hacerlo:
Este :
En algo que funcione en MT5 sin gestos drásticos.
Buenas tardes, señores.
Tengo un problema, acabo de empezar con MT5 y tengo problemas cuando transfiero mis indicadores desde MT4. Necesito utilizar iMA en una línea y obtener el valor de un índice específico. He visto mensajes en el foro y utilizar la función iMAGet (así como la similar iATRGet, etc.). Como veo, las funciones ya no funcionan, entonces esta pregunta: ¿cómo obtener con gracia un solo valor de iMA? He intentado utilizar las funciones anteriores para hacerlo:
Este :
En algo que funcione en MT5 sin gestos drásticos.
Consulte los ejemplos en kodobase, como éste:https://www.mql5.com/ru/code/27161
Básicamente: crear un indicador en OnInit()
A continuación, copie los elementos necesarios en el portapapeles y trabaje con ellos
https://www.mql5.com/ru/docs/series/copybuffer
Busque ejemplos en el kodobase, por ejemplo, este:https://www.mql5.com/ru/code/27161
Básicamente: Crear el mango del indicador en OnInit()
A continuación, se copian los elementos necesarios en la memoria intermedia y se trabaja con ellos
https://www.mql5.com/ru/docs/series/copybuffer
Como ya he escrito, la inicialización en OnInit no me conviene. Tengo que trabajar con todos los timeframes simultáneamente, tengo que inicializar todas las máscaras en cada TF, y luego en el código, donde uso algún valor, hacer algo como esto:
Y así con cada llamada de cada pulsera. El código se convertirá en una confusa diarrea.
¿Y cada nuevo bar tendrá que actualizarlo de alguna manera?
¿Existe una función como CopyBuffer, pero que no copie un array, sino un valor por índice requerido?
Como ya he escrito, la inicialización en OnInit no me conviene. Tengo que trabajar con todos los timeframes simultáneamente, tengo que inicializar todas las máscaras en cada TF, y luego en el código, donde uso algún valor, hacer algo como esto:
Y así con cada llamada de cada pulsera. El código se convertirá en una diarrea enmarañada.
¿Y cada nuevo bar necesitará alguna forma de actualizarlo?
¿Existe una función como CopyBuffer, pero que no copie un array, sino un único valor por el índice correcto?
Hacer un array de asas enOnInit() y trabajar con ellas.
CopyBuffer(...) en la función para su uso, introduciendo el indicador y el índice requerido de la matriz, y la función devolverá el precio
Hacer un array de asas enOnInit() y trabajar con ellas.
CopyBuffer(...) en una función para facilitar su uso, pasar el mango del indicador y el índice requerido de la matriz, y la función devolverá el precio
aunque muy inconveniente)
(aunque es incómodo))
Más bien incómodo ))))
Hacer un array de asas enOnInit() y trabajar con ellas.
CopyBuffer(...) en la función para su uso, allí se alimenta el mango del indicador y el índice requerido de la matriz, y la función devolverá el precio
El otro problema de CopyBuffer es que requiere un buffer indicador para sí mismo. Tengo cien indicadores en total y se utilizan en los cálculos para obtener un único indicador. ¿Tengo que crear cien buffers para almacenar estos valores?
Otro problema de CopyBuffer es que requiere necesariamente un buffer indicador para sí mismo. Tengo menos de cien indicadores en total y se utilizan en los cálculos para obtener un único indicador. ¿Tengo que crear cien buffers para almacenar estos valores?