Lewati ke isi

Fungsionalitas Sleep

Kemampuan untuk siaga hingga waktu tertentu sangat penting untuk cBot, terutama untuk yang harus dijadwalkan atau diaktifkan saat terjadinya suatu peristiwa (misalnya, pengumuman publik). Metode Sleep() di cTrader memungkinkan untuk menangguhkan algoritma hingga waktu yang ditentukan berlalu atau mendekat.

Catatan

Fungsionalitas sleep hanya tersedia untuk cBot dan indikator.

Panduan API ini akan memperkenalkan Anda pada metode Sleep() dan cara menggunakannya dengan benar.

Metode Sleep() dalam satu menit!

  • Metode Sleep() memungkinkan pengembang untuk menangguhkan eksekusi algoritma dengan parameter waktu fleksibel yang ditetapkan.
  • Jika Anda mengetahui tanggal dan waktu peristiwa tertentu yang harus direspons oleh cBot Anda dengan strategi yang disesuaikan, gunakan fungsionalitas sleep untuk trading berita dan bereaksi terhadap peristiwa terjadwal.
  • Tetapkan periode yang harus berlalu untuk fungsionalitas sleep, dari milidetik hingga rentang waktu apa pun.
  • Metode Sleep() hanya tersedia untuk algo .NET 6 dan berfungsi sebagaimana dimaksud dalam backtesting.

Cara kerja metode sleep()

Fungsionalitas sleep hanya tersedia untuk algo .NET 6. Saat cBot berada dalam mode sleep, semua peristiwa lain dalam kode akan diabaikan.

Contoh

Jika peristiwa BarOpened terjadi lima kali selama mode sleep, tidak ada handler OnBar() yang terlewat akan dipanggil setelah cBot terbangun. Hanya peristiwa baru yang akan datang yang akan dimunculkan dalam kasus ini.

Namun, cBot tetap memproses semua pesan data saat berada dalam mode sleep (misalnya, jika RefreshData() dipanggil).

Catatan

Dengan menentukan waktu tidur, Anda menetapkan interval minimum penangguhan algoritma. Waktu tidur sebenarnya akan selalu sama dengan atau lebih besar dari waktu penangguhan yang diminta.

Untuk menerapkan metode Sleep(), pengembang algoritma harus menggunakan salah satu dari tanda tangan ini tergantung pada tujuan mereka.

Untuk menangguhkan algoritma hingga rentang waktu yang ditentukan berlalu:

void Sleep(Timespan timespan)

Untuk menangguhkan algoritma hingga jumlah milidetik yang ditentukan berlalu:

void Sleep(int milliseconds)

Untuk menangguhkan algoritma hingga waktu dan tanggal yang ditentukan mendekat:

void Sleep(DateTime dateTime)

Contoh

Kita akan mengasumsikan bahwa pidato berikutnya dari Ketua Federal Reserve saat ini Jerome Powell dijadwalkan pada 11 Desember 2023 pukul 11:00. Anda mengharapkan beberapa pengumuman yang akan mempengaruhi tren EURUSD dan telah mengembangkan cBot yang akan mengejar strategi yang relevan tepat pada awal pidato. Dalam contoh ini, Anda dapat menerapkan metode Sleep() sebagai berikut.

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

Peringatan

Jika parameter DateTime bukan dari zona waktu algoritma, ArgumentException akan dilempar.

Metode Sleep() berfungsi sebagaimana dimaksud dalam backtesting. Jika Anda ingin menghentikan cBot yang sedang tidur dari UI, Anda tidak perlu menunggu sampai ia terbangun. Klik tombol Stop dan itu akan berhenti beroperasi tanpa timeout.

Buat contoh cBot

Contoh cBot berikut tidur selama 30 detik setelah diluncurkan, dengan pesan yang sesuai dicetak dalam log. Setelah itu, ia menempatkan order beli market untuk 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

Ringkasan

Fungsionalitas sleep memungkinkan pengembang algoritma untuk menangguhkan eksekusi metode lain bahkan jika cBot telah diluncurkan. Dengan menerapkan metode Sleep() dengan parameter waktu yang fleksibel, Anda akan selalu bereaksi terhadap peristiwa terjadwal dengan strategi yang disesuaikan tepat waktu.