Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1878
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Pues bien, en ENUM_TIMEFRAMES se conocen los valores mínimo y máximo. Por lo tanto, pueden establecerse explícitamente.
Con otros enum, basta con conocer su rango aproximado de valores. Si no se especifican las constantes en la declaración del enum, los valores allí suelen empezar en 0. i_max_enum puede establecerse por cualquier número de dos o tres dígitos: 50, 100, 255.
También puede obtener experimentalmente los valores mínimos y máximos del enum. Anótelos y especifíquelos en StringToEnum para obtener la velocidad más óptima:
Resultado del guión:
Abra ENUM_ACCOUNT_INFO_DOUBLE y vea. El número de constantes es el de la cuenta (14). De esta forma, al inicio de la aplicación puedes manejar todos los enum necesarios, anotar sus valores mínimos y máximos y utilizar StringToEnum correspondientes a los mínimos y máximos con la mejor velocidad.
P.D. La segunda variante de enumFindMinMax con INT_MIN e INT_MAX es realmente muy lenta. Lo intenté al principio. Entonces me cansé de esperar a que enumFindMinMax terminara y puse valores de -500 a 500.
Así, llegué a la conclusión de que no es necesario utilizar todo el rango de int.
Me encuentro con un comportamiento extraño del terminal.
La situación es la siguiente: un Asesor Experto está trabajando en un gráfico, que en un momento determinado abre otro gráfico y establece un determinado templo en el nuevo gráfico. Esta última plantilla se ha definido para lanzar el segundo EA en el nuevo gráfico.
Todo funciona bien a mitad de semana, pero cuando el mercado está cerrado, los fines de semana, el nuevo templet se inicia en el nuevo gráfico (como se puede ver al cambiar la apariencia del gráfico), pero el segundo EA no se inicia allí. La única manera de "empujar" el segundo Asesor Experto es iniciar manualmente, en cualquier gráfico, cualquier script, incluso uno absolutamente vacío. Entonces el segundo Asesor Experto comienza a trabajar en un nuevo gráfico.
He escrito este código en el primer Asesor Experto tanto usando las funciones ChartOpen y ChartApplyTemplate como usando la clase CChart - siempre resulta lo mismo, en un mercado cerrado el segundo Asesor Experto en un nuevo gráfico no se inicia hasta que yo "empuje" manualmente el terminal de alguna manera.
¿Quién puede haberse enfrentado a una situación así? ¿Cómo afrontarlo, qué manera de "cavar"?
¿Quién puede haberse enfrentado a una situación así? ¿Cómo afrontarlo, de qué manera "cavar"?
¿Cómo sabes que no arranca?
P.D.
Pruébalo así
Puede encontrar la constante en enum con una función de fuerza bruta (mismo principio que#18697), traduciéndola con EnumToString y comparándola con la constante deseada. Sólo queda devolver el resultado.
¿Podemos tener un ejemplo (o al menos una línea clave), porque no se me ocurre nada? ¿Tendría que revisar también una enorme lista de valores, cribando todos los que son de izquierdas, o se limitaría a buscar los útiles? De momento no creo que haya nada que cribar, no hay zurdos en la lista... pero no puedo hacerme a la idea.
¿Puedes darme un ejemplo (o al menos una línea clave), porque no se me ocurre nada? ¿Sería también una enorme lista de valores con la criba de los correctos entre los de la izquierda, o sólo los útiles? De momento no creo que haya nada que cribar, no hay zurdos en la lista... pero no puedo hacerme a la idea.
Para evitar pasar por todos los valores posibles del enum (porque es realmente largo) hay que hacer los siguientes preparativos#18771(algo así como el almacenamiento en caché). Entonces, con la ayuda de esta función#18763 puede traducir fácilmente cadenas/filas a enum conociendo los rangos de todos los enum necesarios. O puede buscar un enum en un rango comparativamente pequeño#18768.
¿Cómo determinaste que no estaba arrancando, cómo puedes saberlo?
P.D.
Pruébalo así
El segundo experto en la sección OnInit hace conclusiones en el registro y no hay mensajes de registro. El registro ni siquiera contiene un mensaje del terminal sobre el inicio del Asesor Experto. Y el nombre del Asesor Experto no aparece en el gráfico en la esquina superior derecha.
¿Y qué función se utiliza para ello? ¿Ingresos Mql? Y si uso ObjectGet, debo especificar la propiedad del objeto allí; si tomo OBJPROP_PRICE, cómo debo hacer para que obtenga el precio a la barra actual.
Get es Get. Y hay una función para obtener el precio o el tiempo en una barra de un objeto por el nombre o por el tipo de objeto y el nombre obtener una determinada propiedad del objeto. No se utiliza el número de compás, sino el desfase respecto a cero.
Get es Get. Y hay una función para obtener el precio o el tiempo en una barra de un objeto por el nombre o por el tipo de objeto y el nombre obtener una determinada propiedad del objeto. No se utiliza el número de compás, sino el desfase respecto a cero.
Esto puede hacerse utilizando la función ObjectGetValueByTime().
Ejemplo
Tengo el siguiente problema - la lista de indicadores en la carpeta Terminal\MQL4\Indicators contiene indicadores, pero en el terminal MQL4 en su lista desde la que se arrastran estos indicadores en el gráfico, no están. ¿Cómo hacer que estos indicadores aparezcan en la lista de terminales, para que puedan ser utilizados en el gráfico del terminal MQL4 ? En la captura de pantalla de la derecha están los indicadores que están disponibles en el terminal MQL4 y en la de la izquierda están los indicadores del mismo terminal en la carpetaMQL4 4\Indicators (como ejemplo )
Probablemente no sean indicadores.