Aller au contenu

Fonctionnalité de veille

La capacité de rester en attente jusqu'à une heure spécifique est essentielle pour les cBots, en particulier pour ceux qui doivent être programmés ou activés lors de la survenue d'un événement (par exemple, une annonce publique). La méthode Sleep() dans cTrader permet de suspendre les algorithmes jusqu'à ce que le temps spécifié s'écoule ou approche.

Remarque

La fonctionnalité de veille n'est disponible que pour les cBots et les indicateurs.

Ce guide API vous présentera la méthode Sleep() et comment l'utiliser correctement.

Méthode Sleep() en une minute !

  • La méthode Sleep() permet aux développeurs de suspendre l'exécution d'un algorithme avec des paramètres de temps flexibles établis.
  • Si vous connaissez la date et l'heure d'un événement spécifique auquel votre cBot doit réagir avec une stratégie personnalisée, utilisez la fonctionnalité de veille pour trader les actualités et réagir aux événements programmés.
  • Définissez une période à écouler pour la fonctionnalité de veille, de quelques millisecondes à n'importe quel intervalle de temps.
  • La méthode Sleep() n'est disponible que pour les algorithmes .NET 6 et fonctionne comme prévu dans le test inversé.

Fonctionnement de la méthode sleep()

La fonctionnalité de mise en veille n'est disponible que pour les algorithmes .NET 6. Lorsqu'un cBot reste en mode veille, tous les autres événements du code seront ignorés.

Exemple

Si l'événement BarOpened s'est produit cinq fois pendant le mode veille, aucun des gestionnaires OnBar() manqués ne sera invoqué après le réveil du cBot. Seuls les nouveaux événements à venir seront déclenchés dans ce cas.

Néanmoins, les cBots traitent tous les messages de données tout en restant en mode veille (par exemple, si RefreshData() est appelé).

Remarque

En spécifiant le temps de veille, vous définissez un intervalle minimum de suspension de l'algorithme. Le temps de veille réel sera toujours égal ou supérieur au temps de suspension demandé.

Pour appliquer la méthode Sleep(), les développeurs d'algorithmes doivent utiliser l'une de ces signatures en fonction de leur objectif.

Pour suspendre l'algorithme jusqu'à l'écoulement de la période spécifiée :

void Sleep(Timespan timespan)

Pour suspendre l'algorithme jusqu'à l'écoulement du nombre de millisecondes spécifié :

void Sleep(int milliseconds)

Pour suspendre l'algorithme jusqu'à l'approche de l'heure et de la date spécifiées :

void Sleep(DateTime dateTime)

Exemple

Nous supposerons que le prochain discours de l'actuel président de la Réserve fédérale Jerome Powell est prévu pour le 11 décembre 2023 à 11h00. Vous attendez des annonces susceptibles d'affecter la tendance EURUSD et avez développé un cBot qui poursuivra une stratégie pertinente dès le début du discours. Dans ce cas, vous pouvez appliquer la méthode Sleep() comme suit.

DateTime doomsday = new DateTime(2023, 12, 11, 11, 0, 0); 
Sleep(doomsday)

Avertissement

Si le paramètre DateTime ne provient pas du fuseau horaire de l'algorithme, une ArgumentException sera levée.

La méthode Sleep() fonctionne comme prévu en backtesting. Si vous souhaitez arrêter un cBot en veille depuis l'interface utilisateur, vous n'avez pas besoin d'attendre qu'il se réveille. Cliquez sur le bouton Stop et il cessera de fonctionner sans délai d'attente.

Créer un exemple de cBot

L'exemple de cBot suivant se met en veille pendant 30 secondes après son lancement, avec le message correspondant affiché dans le journal. Ensuite, il place un ordre d'achat au marché pour 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class SleepAndExecuteBot : Robot
    {
        protected override void OnStart()
        {
            Print("cBot will sleep for 30 seconds");
            Sleep(30000);

            var symbol = Symbols.GetSymbol("USDJPY");
            ExecuteMarketOrder(TradeType.Buy, symbol, 1000);
        }        
    }
}

Image title

Résumé

La fonctionnalité de mise en veille permet aux développeurs d'algorithmes de suspendre l'exécution d'autres méthodes même si le cBot a été lancé. En appliquant la méthode Sleep() avec ses paramètres de temps flexibles, vous réagirez toujours aux événements programmés avec votre stratégie personnalisée en temps voulu.