Funzionalità di riposo
La capacità di rimanere in standby fino a un'ora specifica è essenziale per i cBot, soprattutto per quelli che devono essere programmati o attivati al verificarsi di un determinato evento (ad esempio, un annuncio pubblico). Il metodo Sleep() in cTrader consente di sospendere gli algoritmi fino al trascorrere o all'avvicinarsi dell'ora specificata.
Nota
La funzionalità di riposo è disponibile solo per i cBot e gli indicatori.
Questa guida API ti introdurrà al metodo Sleep() e a come utilizzarlo correttamente.
Metodo Sleep() in un minuto!
- Il metodo
Sleep()consente agli sviluppatori di sospendere l'esecuzione di un algoritmo con parametri temporali flessibili stabiliti. - Se conosci la data e l'ora di un evento specifico a cui il tuo cBot dovrebbe reagire con una strategia personalizzata, usa la funzionalità di riposo per fare trading sulle notizie e reagire agli eventi programmati.
- Imposta un periodo da far trascorrere per la funzionalità di riposo, da millisecondi a qualsiasi intervallo di tempo.
- Il metodo
Sleep()è disponibile solo per gli algoritmi .NET 6 e funziona come previsto nel backtesting.
Come funziona il metodo sleep()
La funzionalità di riposo è disponibile solo per gli algoritmi .NET 6. Mentre un cBot rimane in modalità riposo, tutti gli altri eventi nel codice verranno ignorati.
Esempio
Se l'evento BarOpened si è verificato cinque volte durante la modalità riposo, nessuno dei gestori OnBar() mancati verrà richiamato dopo il risveglio del cBot. Solo i nuovi eventi futuri verranno generati in questo caso.
Tuttavia, i cBot elaborano tutti i messaggi di dati mentre rimangono in modalità riposo (ad esempio, se viene chiamato RefreshData()).
Nota
Specificando il tempo di riposo, imposti un intervallo minimo di sospensione dell'algoritmo. Il tempo di riposo effettivo sarà sempre uguale o superiore al tempo di sospensione richiesto.
Per applicare il metodo Sleep(), gli sviluppatori di algoritmi devono utilizzare una di queste firme a seconda del loro scopo.
Per sospendere l'algoritmo fino al trascorrere dell'intervallo di tempo specificato:
void Sleep(Timespan timespan)
Per sospendere l'algoritmo fino al trascorrere del numero specificato di millisecondi:
void Sleep(int milliseconds)
Per sospendere l'algoritmo fino all'avvicinarsi dell'ora e della data specificate:
void Sleep(DateTime dateTime)
Esempio
Supponiamo che il prossimo discorso dell'attuale presidente della Federal Reserve Jerome Powell sia programmato per l'11 dicembre 2023 alle 11:00. Ti aspetti alcuni annunci che influenzeranno il trend EURUSD e hai sviluppato un cBot che perseguirà una strategia pertinente proprio all'inizio del discorso. In questo caso, puoi applicare il metodo Sleep() come segue.
DateTime doomsday = new DateTime(2023, 12, 11, 11, 0, 0);
Sleep(doomsday)
Avvertenza
Se il parametro DateTime non proviene dal fuso orario dell'algoritmo, verrà generata un'eccezione ArgumentException.
Il metodo Sleep() funziona come previsto nel backtesting. Se desideri interrompere un cBot in riposo dall'interfaccia utente, non devi attendere fino al suo risveglio. Fai clic sul pulsante Stop e cesserà di funzionare senza timeout.
Crea un cBot di esempio
Il seguente cBot di esempio rimane in riposo per 30 secondi dopo il suo avvio, con il relativo messaggio stampato nel log. Successivamente, piazza un ordine di mercato di acquisto per 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 | |

Riepilogo
La funzionalità di riposo consente agli sviluppatori di algoritmi di sospendere l'esecuzione di altri metodi anche se il cBot è stato avviato. Applicando il metodo Sleep() con i suoi parametri temporali flessibili, reagirai sempre agli eventi programmati con la tua strategia personalizzata in tempo.