Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 846
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
Tengo GetLastError después de las funciones y si se produce un error, ¿no irá a este bloque (como está escrito) y no se ejecutarán los comandos? Entiendo la cadena, por ejemplo, OrderSend() -> GetLastError -> bloque de error Sleep(3000) RefreshRates() -> salir del bloque y si las condiciones permanecen OrderSend() se solicita de nuevo. O mis razonamientos y conceptos son erróneos. Entiendo que quiere escribir el valor de retorno 1 o 0 en el bloque, pero mis funciones son simples no relacionados con los valores booleanos como SignalBuy, si entiendo correctamente, los valores de retorno debe ser devuelto allí.
Tengo GetLastError después de las funciones y si se produce un error, ¿no irá a este bloque (como está escrito) y no se ejecutarán los comandos? Entiendo la cadena, por ejemplo, OrderSend() -> GetLastError -> bloque de error Sleep(3000) RefreshRates() -> salir del bloque y si las condiciones permanecen OrderSend() se solicita de nuevo. O mis razonamientos y conceptos son erróneos. Entiendo que quiere escribir el valor de retorno 1 o 0 en el bloque, pero mis funciones son simples no relacionados con los valores booleanos como SignalBuy, si entiendo correctamente, los valores de retorno debe ser devuelto allí.
Necesito un consejo. Según las condiciones, la posición debe cerrarse y después de 121 segundos debe abrirse una nueva posición. ¿Cómo puedo hacerlo con Sleep(121000)?
¡Buenos días!
Necesito un consejo. Según las condiciones, la posición debe cerrarse y después de 121 segundos debe abrirse una nueva posición. ¿Cómo puedo hacerlo con Sleep(121000)?
OnTimer() al rescate
Acabo de reinstalar Windows 7 y quería instalar Mt4, el problema es que los archivos no se descargan, ¿qué debo hacer?
Gracias. Nunca he utilizado OnTimer(). Esta parte del código está en void OnTick(). ¿Será posible entonces manejar la función OpenPosition() por OnTimer()? Si puedes, por favor, corrige el código de cómo insertar OnTimer() allí correctamente...
El temporizador se inicia en OnInit()
Para iniciar la cuenta atrás, hay que encontrar la hora de cierre de la última posición en el temporizador y contar 121 sukunds a partir de esta hora. Para pasar la bandera que permite abrir una nueva posición, utilice una variable global cuyo alcance abarque todo el programa. Puede hacer que contenga inicialmente un valor superior a 121, por ejemplo 122 (puede cambiar el tiempo de espera en los ajustes).
En OnTick(), comprueba esta variable. Si es mayor que 121 y no hay ninguna posición, se abre una posición y, tras comprobar si se ha abierto con éxito, se pone la variable a cero.
En cuanto se cierra la posición, el temporizador ve la hora de cierre de la posición (lo hace continuamente una vez por segundo) y si desde la hora actual hasta la hora de cierre de la posición pasó menos de 121 segundos, el temporizador empieza a contar - cada segundo el valor de la variable se suma en 1.
Más o menos. Donde puede haber un error - si la posición aún no se ha cerrado, su tiempo de cierre es cero. Esto puede causar un problema con el inicio de la cuenta atrás. Por ejemplo, puedes poner la variable a -1.
Sí, no olvides destruir el temporizador en OnDeinit():
El temporizador se inicia en OnInit()
Para iniciar la cuenta atrás, hay que encontrar la hora del temporizador en la que se cerró la última posición y contar 121 segundos desde esa hora. Para pasar la bandera que permite abrir una nueva posición, utilice una variable global cuyo alcance abarque todo el programa. Puede hacer que contenga inicialmente un valor superior a 121, por ejemplo 122 (puede cambiar el tiempo de espera en los ajustes).
En OnTick() se comprueba esta variable. Si es mayor que 121 y no hay ninguna posición - abrir una posición - y, después de comprobar si se abrió con éxito, poner la variable a cero.
En cuanto se cierra la posición, el temporizador ve la hora de cierre (lo hace continuamente una vez por segundo) y si desde la hora actual hasta la hora de cierre de la posición pasó menos de 121 segundos, el temporizador empieza a contar - cada segundo el valor de la variable se suma en 1.
Más o menos. Donde puede haber un error - si la posición aún no se ha cerrado, su tiempo de cierre es igual a cero. Esto puede causar un problema con el inicio de la cuenta atrás. Por ejemplo, puedes poner la variable a -1.
Sí, no olvides destruir el temporizador en OnDeinit():
Entendido, gracias. Esperaba hacerlo en una línea, pero probablemente tendré que trabajar un poco más.
Ya veo, gracias. Esperaba hacerlo en una sola línea, pero supongo que me va a costar más trabajo.