[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 22
Hola! Mi objetivo es transferir el indicador mediante la creación de una función en el EA.
El primer paso, que es la creación de la función, está hecho. Pero la siguiente, la de las pruebas, no funciona.
El indicador dibuja canales. Tiene 4 buffers y muchas variables. Lo he colocado todo en la función.
Pero al crear un Asesor Experto de prueba para asegurarse de que funciona exactamente comparando el indicador y mi función, no puedo lograr la compilación.
Han aparecido errores constantes de variables externas, que no estaban cuando creé la función, en el EA.
Por favor, dame algún consejo o un enlace a un ejemplo. He utilizado los artículos de GODZILLA, pero sus ejemplos son diferentes a los míos.
El esquema es más o menos el siguiente:
transferir todo lo que estaba en el indicador init() a una función separada, por ejemplo, fInit_Indicator() y escribirlo en init() del EA, recordando al mismo tiempo eliminar del código todo lo que concierne a la inicialización de los buffers del indicador.
copiar todas las variables globales del indicador y colocarlas en las variables globales del EA. No olvide definir el tamaño de los buffers de los indicadores cuando se declaren en el EA. Algo así como gd_Buf1[100], gd_Buf2[100] etc. Creo que 100 valores serán suficientes para ti.
cambiar el nombre de la función start() del indicador, por ejemplo, fMyIndicator() y colocarlo en la función start() del EA antes del código de apertura de la orden (para tomar una decisión).
Además, no hay que olvidar que la memoria intermedia de los indicadores es diferente de la memoria intermedia de los "no indicadores". Hay varias soluciones para esto:
cuando llega una nueva barra, se desplazan todos los datos del array "no indicador", liberando el índice 0, donde se coloca el nuevo valor calculado.
De nuevo, cuando llegue una nueva barra, recalcula toda la "matriz de no indicadores".
Necesito cargar los valores del número de puntos en el array en cada nuevo tick.
El tamaño de la matriz será diferente cada vez. ¿Qué debo hacer en este caso, utilizar ArreyResize en cada iteración del bucle?
1-Item: tu filosofía de cambiar el tamaño de la matriz es defectuosa desde el principio, en 99 de cada 100 casos puedes usar sólo 10 celdas para manejar las lecturas de los indicadores;
2.: recalcular estas lecturas en cada tic es un capricho de cerebro mal informado.
Hola! Mi objetivo es transferir el indicador mediante la creación de una función en el EA.
El primer paso, que es la creación de la función, está hecho. Pero la siguiente, la de las pruebas, no funciona.
El indicador dibuja canales. Tiene 4 buffers y muchas variables. Lo he colocado todo en la función.
Pero al crear un Asesor Experto de prueba para asegurarse de que funciona exactamente comparando el indicador y mi función, no puedo lograr la compilación.
Han aparecido errores constantes de variables externas, que no estaban cuando creé la función, en el EA.
Por favor, dame algún consejo o un enlace a un ejemplo. He utilizado los artículos de GODZILLA, pero sus ejemplos son diferentes a los míos.
El esquema es más o menos el siguiente:
Pruébalo, no es difícil.
Ayúdame a escribir una condición que haga que el EA multiplique el lote por dos después de abrir n órdenes
¡Buenas tardes!
Todavía estoy averiguando cosas con las matrices.
Necesito cargar los valores del número de puntos en el array en cada nuevo tick.
Eltamaño de la matriz será diferente cada vez. ¿Qué debo hacer en este caso, utilizar ArreyResize en cada iteración del bucle?
Buenas tardes, sobre el tema de las matrices.
hay una célula de este tipo
12345,p,fgh,2011-01-01,55,66
¿cómo puedo obtener 55 de él?
Gracias.
Si el array es heterogéneo, probablemente deba convertir todos los elementos a tipo cadena y luego buscar el requerido utilizando
StringFinde(https://www.mql5.com/ru/forum/138609/page22#613148). Corrígeme si me equivoco.
si no gd_200 = AccountBalance() * RiskPercent / 100.0 / 10000.0;
Sustitúyalo por un Asesor Experto que no calcule el saldo sino el número de órdenes abiertas.
La respuesta sería muy apreciada.
si no gd_200 = AccountBalance() * RiskPercent / 100.0 / 10000.0;
Sustitúyalo por un Asesor Experto que no calcule el saldo sino el número de órdenes abiertas.
La respuesta sería muy apreciada.
Buenas tardes, sobre el tema de las matrices.
hay una célula de este tipo
12345,p,fgh,2011-01-01,55,66
¿cómo puedo obtener 55 de él?
Gracias.
https://book.mql4.com/ru/variables/arrays
Ayúdame a escribir una condición que haga que el EA multiplique el lote por dos después de que se abran n órdenes
¡Buenas tardes!
Todavía estoy averiguando cosas con las matrices.
Necesito cargar los valores del número de puntos en el array en cada nuevo tick.
El tamaño de la matriz será diferente cada vez. ¿Qué debo hacer en este caso, utilizar ArreyResize en cada iteración del bucle?
1-Item: tu filosofía de cambiar el tamaño de la matriz es defectuosa desde el principio, en 99 de cada 100 casos puedes usar sólo 10 celdas para manejar las lecturas de los indicadores;
2.: recalcular estas lecturas en cada tic es un capricho de cerebro mal informado.