Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 531
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
Compara el siguiente compás, y si la secuencia se rompe, reinicia la bandera y registra cuántas fueron correctas, y sigue en el bucle.
Basta con saber que la barra es alcista y la siguiente es bajista, la siguiente, si es igual que la anterior, se anota el valor y se reinicia la bandera. Y así hasta el final.
Pero el primero puede no ser alcista.
pero el primero podría no ser un toro, pero no hay manera.
Aquí hay una variante, aunque no del todo correcta, siempre contando desde una vela bajista
Aquí hay una variante, aunque no del todo correcta, siempre contando desde una vela bajista
Gracias. Si se eleva al cuadrado este número y se le suma uno, el resultado es correcto.
¿Se comprueba si(i%2==0)?pero el primero no puede ser un toro, de ninguna manera.
Aquí hay un ejemplo de encontrar las mismas velas y cambiar la dirección de la cadena:
Ahora, cuando la cadena continúe, puedes contar el número de velas en la cadena y guardarlas en una lista, y cuando la cadena cambie a una nueva, iniciar un nuevo recuento.
El número de velas de cada cadena puede almacenarse en una lista ordenada. Después, ordenando la lista, se pueden encontrar las secuencias máxima y mínima.
Gracias. Si el número obtenido se eleva al cuadrado y se suma uno, el resultado es correcto.
¿Es eso lo que estamos comprobando si(i%2==0)?Si i es un múltiplo de dos.
Es el resto de i dividido por 2
Aquí el tamaño de las variables locales es demasiado grande (más de 512kb) durante la compilación.
¿Dónde buscar y qué hacer? Hay una matriz de cadenas CArrayString en la función, sospecho que puede ser un error.
Lo lleno usando el método Add(), luego hago Clear() y Shutdown() de nuevo. Y luego vuelvo a llenarla con nuevos datos usando el método Add(). En este caso, ¿se volverá a llenar el array con elementos cero?
Tenemos que eliminar esos miembros de las clases que ya ocupan memoria en la fase de compilación. Estos datos se asignarán en la memoria de la pila, que siempre es muy pequeña. La solución a este problema es asignar memoria a los miembros de la clase que ocupan mucha memoria de forma dinámica.
Por ejemplo, si hay un miembro de la clase
debería ser sustituido por:
Tenemos que eliminar de las clases aquellos miembros que ya ocupan memoria en la fase de compilación. Estos datos se colocarán en la memoria de la pila, que siempre es muy pequeña. La solución a este problema es asignar memoria a los miembros de la clase que ocupan mucha memoria de forma dinámica.
Por ejemplo, si hay un miembro de la clase
entonces debe ser sustituido por:
Gracias. De alguna manera me deshice de este problema eliminando la clase de los parámetros en cada función. En general, era posible inicializar este objeto una vez para todos los métodos.
Tengo otra pregunta sobre la clase CArray, más específicamente CArrayObj. ¿Existe el método Delete(), pero no mueve un elemento en el array? Es decir, borro Delete(18), elimina un elemento en esta posición y posteriormente si quiero consultar el elemento por este índice, obtengo un puntero no válido. ¿Existe un método que elimine y mueva elementos de manera que en este caso el elemento 18 sea el 19 después de la eliminación?
Gracias. De alguna manera me libré de este problema eliminando la clase de los parámetros en cada una de las funciones. En general, era posible inicializar este objeto una vez para todos los métodos.
Tengo otra pregunta sobre la clase CArray, más específicamente CArrayObj. ¿Existe el método Delete(), pero no mueve un elemento en el array? Es decir, borro Delete(18), elimina un elemento en esta posición y posteriormente si quiero consultar el elemento por este índice, obtengo un puntero no válido. ¿Existe un método que borre y mueva los elementos para que el 18º elemento sea el 19º después de la eliminación?
No he trabajado con la biblioteca estándar, pero según la ayuda, el método Delete() debería eliminar físicamente el elemento, cambiando el tamaño del array. Excepción: si el mecanismo de gestión de la memoria está desactivado. Por defecto, este mecanismo está activado. El método FreeMode se utiliza para comprobar el estado de la bandera de gestión de la memoria.
Por mi parte, recomendaría usar mis propios arrays en MQL (aunque en C++ uso vectores y listas) y la gestión de la memoria por mí mismo, porque no veo ninguna conveniencia o ventaja particular en la clase CArray. Yo borro los elementos de las matrices propias con bastante rapidez utilizando este método:
Su única desventaja es que no mantiene la secuencia de los elementos del array. Es decir, se puede aplicar a todas las matrices, excepto a las ordenadas.
Hola, ¿podríais decirme dónde puedo encontrar un script que me permita colocar órdenes pendientes de compra y venta en MT4 de una sola vez por un número determinado de pips desde el precio actual, es decir, que no cuente manualmente y quizás ni siquiera entre en la ventana de órdenes? No quiero ir a la ventanilla de pedidos, gracias.
P.D.: tal vez estoy preguntando algo mal, nunca he usado scripts antes.
Por favor, explíqueme el punto -"Las órdenes de mercado no pueden cerrarse si sus valores StopLoss o TakeProfit violan el parámetro FreezeLevel".
¿Significa esto literalmente que una orden de mercado no puede cerrarse si su TakeProfit o StopLoss no alcanza el FreezeLevel? No entiendo muy bien cómo una orden de mercado abierto puede tener stops que violen las reglas de StopLevel o FreezeLevel. Al fin y al cabo, si se establecen paradas incorrectas, el servidor simplemente dará un error y no se establecerá ninguna parada.
También, por favor, indique qué más necesitamos saber al cerrar una orden de mercado, cuando un corredor utiliza FreezeLevel?