Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 121
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
Escribe al menos un bloque y muéstralo. El siguiente paso es sugerirlo aquí.
Sobre los arrays: aquí he declarado 4 arrays a nivel global:
Luego los puse a cero en la función de apertura de posiciones:
¿Cómo los lleno ahora? En el ejemplo con el que intento hacerlo, se aplica una variable adicional, pero no entiendo cómo utilizarla:
Aunque no me queda muy claro por qué todas estas matrices, cuando puedo obtener los valores del ticket, tipo de posición, precio de apertura y tiempo de apertura con la función correspondiente.
Sobre los arrays: aquí he declarado 4 arrays a nivel global:
Luego los puse a cero en la función de apertura de posiciones:
¿Cómo los lleno ahora? El ejemplo que intento utilizar aplica una variable adicional, pero no entiendo cómo utilizarla:
Aunque no me queda muy claro por qué todas estas matrices, cuando puedo obtener los valores del ticket, tipo de posición, precio de apertura y tiempo de apertura con la función correspondiente.
Pruebe a escribir desde cero, emitiendo todos los datos intermedios mediante Alert(. Por ejemplo
Y si tomas el ejemplo de alguien, tómalo completamente y estúdialo. A saber para qué utiliza el autor del ejemplo las matrices
Sobre los arrays: aquí he declarado 4 arrays a nivel global:
Utiliza una matriz de estructuras. Será mucho más fácil acceder a él. Aquí hay una variante con una matriz estática. Es más fácil de entender. Pero yo también uso matrices dinámicas. Pero el código será un poco más grande con ellos.
Luego los puse a cero en la función de apertura de posiciones:
No, no lo has hecho. Porque se declaran arrays dinámicos que tienen tamaño cero por defecto. Así que en este caso estas cuatro líneas de código no hacen nada.
Ahora, ¿cómo se rellenan? El ejemplo que intento utilizar tiene una variable adicional, pero no entiendo cómo utilizarla:
A continuación, se organiza un bucle de órdenes, en el que cada orden "propia" se almacena en una matriz:
Aunque no sé muy bien para qué sirven todas esas matrices, cuando puedo obtener los valores del ticket, el tipo de posición, el precio de apertura y la hora de apertura utilizando la función correspondiente.
Es mucho más rápido y conveniente trabajar con matrices, ya que en general, no todas las órdenes presentes en la cuenta necesitan ser procesadas por este EA en particular. Y así ahorraremos muchos esfuerzos y dinero.
Además, lo que he mencionado anteriormente es un caso general. El universalismo no siempre es necesario, por supuesto. Normalmente, estas matrices se crean en función de los requisitos de una estrategia. Por ejemplo, podemos dividir los pedidos por tipo a la vez: Compra, Venta, BuyStop, SellStop, BuyLimit, SellLimit. Entonces necesitaremos cuatro matrices de este tipo. Pero entonces no tendremos que volver a revisar toda la lista de órdenes abiertas cuando tomemos decisiones comerciales. Sólo necesitamos saber el número de pedidos de un determinado tipo y referirnos a la matriz necesaria.
Hay una cosa más importante a tener en cuenta: el cambio del conjunto de órdenes durante el procesamiento de un tick. Puede ocurrir que se reciba una lista de órdenes a la entrada de OnTick, y otra en algún punto intermedio. Esto conducirá a un error en el funcionamiento del programa que es difícil de detectar. Y la matriz de órdenes que ya estaba formada al entrar en OnTick no cambiará (a menos que, por supuesto, la cambie usted mismo durante la ejecución del programa).
string s=FileReadString(F1); // Leer la cadena del archivo de texto
StringSplit(s, "," , a); // Elementos de cadena separados por comas en una matriz
datetime T1=StrToTime(a[4]); // Además, la transformación ...
int ord=StrToInteger(a[8]);
double Precio=StrToDouble(a[12]);
Gracias, justo lo que quería.
A continuación, hay 5 productos fabricados
Lanzamos una lectura de alerta (cualquiera)
por ejemplo el nivel "200"
Cuando salta la alerta, algo abre la pose, algo se borra, algo hace otras cosas. Quiero implementar un mecanismo para dar una señal de esta manera
P.D.
He terminado lo que quería, puedo enviarlo para su revisión. Se derrama perfectamente. Pero está prohibido publicar aquí.
Por ejemplo, es posible dividir los pedidos por tipo a la vez: Compra, Venta, BuyStop, SellStop, BuyLimit, SellLimit. Entonces necesitaremos cuatro matrices de este tipo. Pero entonces no tendremos que volver a revisar toda la lista de órdenes abiertas cuando tomemos decisiones comerciales. Sólo necesitamos saber el número de pedidos de un determinado tipo y referirnos a la matriz necesaria.
Eso es exactamente lo que necesito, o mejor dicho, sólo para laCompra y Venta. Lo principal para mi estrategia simple es no dejar que las posiciones abiertas interfieran entre sí para ver las condiciones de cierre. ¿Quizá podamos prescindir de las matrices? No los entiendo: cómo crearlos, cómo abordarlos... estoy a oscuras. Tal vez mi situación te resulte más clara en la captura de pantalla:
Parece que todo en el código es simple y funciona claramente, pero este es el único caso de incomprensión.
Esto es exactamente lo que necesito, o mejor dicho, sólo para laCompra y Venta. Para mi sencilla estrategia, lo más importante es que las posiciones abiertas no interfieran con las condiciones de cierre de las demás. ¿Tal vez podamos prescindir de las matrices? No los entiendo: cómo crearlos, cómo abordarlos... estoy a oscuras. Tal vez mi situación te resulte más clara en la captura de pantalla:
Parece que todo en el código es simple y funciona claramente, pero este es el único caso de incomprensión.
Por supuesto, en el más simple (y de mediana complejidad) sin matrices es más conveniente. Pero cuando se llega al punto de usar cientos de órdenes...
Podría ser la razón de mi situación que el registro escribe: 2018.01.25 20:22:12 2018_WPR14_AMarkets EURUSD,M5: OrderClose error 138 y repite sólidamente a
2018.01.26 16:38:12 2018_WPR14_AMarkets EURUSD,M5: Alerta: Total de órdenes = 3 ? En la captura de pantalla se puede ver que este período captura dos condiciones de cierre de la VENTA.
Y las señales para abrir una posición son activadas por una combinación de varios indicadores y cerradas por un indicador. Y no funcionan tan a menudo: puede estar en silencio durante unos días durante cinco minutos. Por ejemplo, desde el 1 de febrero de este año sólo se activaron 14 puestos.
Podría ser la razón de mi situación que el registro escribe: 2018.01.25 20:22:12 2018_WPR14_AMarkets EURUSD,M5: OrderClose error 138 y repite sólidamente a
¿Cuál es su situación? ¿Está diciendo que el terminal está haciendo una entrada de registro que está causando el error? ¿Y qué significa 138? ¿Sabes dónde buscar? Lo que se ve en la captura de pantalla es la mitad de la batalla. ¿Cómo explicar esto al Asesor Experto? Tienes que escribir alguna condición matemática - en lugar de ver la pantalla, el Asesor Experto opera con números
¿Estás diciendo que el terminal hace una entrada en el registro, lo que causa el error? ... ¿Qué significa 138? ¿Sabes dónde buscar?
No, estoy diciendo que el probador falla en este intervalo de la historia, lo que impide que las señales funcionen correctamente. Porque las recotizaciones no pueden durar 24 horas.
No, lo que quiero decir es que hay un fallo en el comprobador en este punto de la historia, que impide que las señales funcionen correctamente. Porque las recotizaciones no pueden durar 24 horas.
¿Requotes en el probador? Es la primera vez que lo oigo. El probador es el ideal - ni siquiera tiene deslizamiento
...algo está pateando el indicador, con tendencia al alza. Voy a comprar ... Lo tengo... Aunque no es suficiente quería subir el TP - ya funcionaba...
Así que configure un EA que si hace eso, entonces saldrá, y continuará en el siguiente tick. Y pruébalo en la demo