Funcionalidad de suspensión
La capacidad de esperar hasta un momento específico es esencial para los cBots, especialmente para aquellos que deben programarse o activarse cuando ocurre algún evento (por ejemplo, un anuncio público). El método Sleep() en cTrader permite suspender los algoritmos hasta que transcurra o se acerque el tiempo especificado.
Nota
La funcionalidad de suspensión solo está disponible para cBots e indicadores.
Esta guía de la API le presentará el método Sleep() y cómo utilizarlo correctamente.
¡El método Sleep() en un minuto!
- El método
Sleep()permite a los desarrolladores suspender la ejecución de un algoritmo con parámetros de tiempo flexibles establecidos. - Si conoce la fecha y hora de un evento específico al que su cBot debe reaccionar con una estrategia adaptada, utilice la funcionalidad de suspensión para operar con noticias y reaccionar a eventos programados.
- Establezca un período para que transcurra la funcionalidad de suspensión, desde milisegundos hasta cualquier lapso de tiempo.
- El método
Sleep()solo está disponible para algoritmos .NET 6 y funciona como se espera en el backtesting.
Cómo funciona el método sleep()
La funcionalidad de suspensión solo está disponible para algoritmos .NET 6. Mientras un cBot permanece en modo de suspensión, todos los demás eventos en el código serán ignorados.
Ejemplo
Si el evento BarOpened ocurrió cinco veces durante el modo de suspensión, ninguno de los controladores OnBar() perdidos se invocará después de que el cBot se despierte. Solo se generarán nuevos eventos próximos en este caso.
Aun así, los cBots procesan todos los mensajes de datos mientras permanecen en modo de suspensión (por ejemplo, si se llama a RefreshData()).
Nota
Al especificar el tiempo de suspensión, establece un intervalo mínimo de suspensión del algoritmo. El tiempo de suspensión real siempre será igual o mayor que el tiempo de suspensión solicitado.
Para aplicar el método Sleep(), los desarrolladores de algoritmos deben utilizar una de estas firmas según su propósito.
Para suspender el algoritmo hasta que transcurra el lapso de tiempo especificado:
void Sleep(Timespan timespan)
Para suspender el algoritmo hasta que transcurra el número especificado de milisegundos:
void Sleep(int milliseconds)
Para suspender el algoritmo hasta que se acerque la hora y fecha especificadas:
void Sleep(DateTime dateTime)
Ejemplo
Supondremos que el próximo discurso del actual presidente de la Reserva Federal, Jerome Powell, está programado para el 11 de diciembre de 2023 a las 11:00. Espera algunos anuncios que afectarían la tendencia del EURUSD y ha desarrollado un cBot que seguiría una estrategia relevante justo al comienzo del discurso. En este caso, puede aplicar el método Sleep() de la siguiente manera.
DateTime doomsday = new DateTime(2023, 12, 11, 11, 0, 0);
Sleep(doomsday)
Advertencia
Si el parámetro DateTime no es de la zona horaria del algoritmo, se lanzará una ArgumentException.
El método Sleep() funciona como se espera en el backtesting. Si desea detener un cBot en suspensión desde la interfaz de usuario, no tiene que esperar hasta que se despierte. Haga clic en el botón Detener y dejará de funcionar sin tiempo de espera.
Crear un cBot de ejemplo
El siguiente cBot de ejemplo se suspende durante 30 segundos después de su lanzamiento, con el mensaje correspondiente impreso en el registro. Después, coloca una orden de compra de mercado para USDJPY.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |

Resumen
La funcionalidad de suspensión permite a los desarrolladores de algoritmos suspender la ejecución de otros métodos incluso si el cBot se lanzó. Al aplicar el método Sleep() con sus parámetros de tiempo flexibles, siempre reaccionará a los eventos programados con su estrategia adaptada a tiempo.