Langkau tajuk talian

Fungsi tidur

Keupayaan untuk bersiap sedia sehingga masa tertentu adalah penting untuk cBot, terutamanya bagi yang perlu dijadualkan atau diaktifkan apabila berlakunya sesuatu peristiwa (contohnya, pengumuman awam). Kaedah Sleep() dalam cTrader membolehkan penggantungan algoritma sehingga masa yang ditetapkan berlalu atau menghampiri.

Nota

Fungsi tidur hanya tersedia untuk cBot dan indikator.

Panduan API ini akan memperkenalkan anda kepada kaedah Sleep() dan cara menggunakannya dengan betul.

Kaedah Sleep() dalam satu minit!

  • Kaedah Sleep() membolehkan pembangun menggantung pelaksanaan algoritma dengan parameter masa fleksibel yang ditetapkan.
  • Jika anda mengetahui tarikh dan masa peristiwa tertentu yang perlu direspon oleh cBot anda dengan strategi yang disesuaikan, gunakan fungsi tidur untuk berdagang berita dan bertindak balas terhadap peristiwa yang dijadualkan.
  • Tetapkan tempoh untuk berlalu bagi fungsi tidur, dari milisaat hingga sebarang tempoh masa.
  • Kaedah Sleep() hanya tersedia untuk algo .NET 6 dan berfungsi seperti yang dimaksudkan dalam ujian belakang.

Bagaimana kaedah sleep() berfungsi

Fungsi tidur hanya tersedia untuk algo .NET 6. Semasa cBot berada dalam mod tidur, semua peristiwa lain dalam kod akan diabaikan.

Contoh

Jika peristiwa BarOpened berlaku lima kali semasa mod tidur, tiada pengendali OnBar() yang terlepas akan dipanggil selepas cBot terjaga. Hanya peristiwa baharu yang akan datang akan dibangkitkan dalam kes ini.

Namun, cBot masih memproses semua mesej data semasa berada dalam mod tidur (contohnya, jika RefreshData() dipanggil).

Nota

Apabila menentukan masa tidur, anda menetapkan selang minimum penggantungan algoritma. Masa tidur sebenar akan sentiasa sama dengan atau lebih besar daripada masa penggantungan yang diminta.

Untuk menggunakan kaedah Sleep(), pembangun algoritma perlu menggunakan salah satu tandatangan ini bergantung pada tujuan mereka.

Untuk menggantung algoritma sehingga tempoh masa yang ditetapkan berlalu:

void Sleep(Timespan timespan)

Untuk menggantung algoritma sehingga bilangan milisaat yang ditetapkan berlalu:

void Sleep(int milliseconds)

Untuk menggantung algoritma sehingga masa dan tarikh yang ditetapkan menghampiri:

void Sleep(DateTime dateTime)

Contoh

Kita akan andaikan bahawa ucapan seterusnya oleh Pengerusi Federal Reserve semasa Jerome Powell dijadualkan pada 11 Disember 2023 pada pukul 11:00. Anda menjangkakan beberapa pengumuman yang akan mempengaruhi trend EURUSD dan telah membangunkan cBot yang akan mengejar strategi yang relevan tepat pada permulaan ucapan. Dalam kes ini, anda boleh menggunakan kaedah Sleep() seperti berikut.

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

Amaran

Jika parameter DateTime bukan dari zon masa algoritma, ArgumentException akan dilemparkan.

Kaedah Sleep() berfungsi seperti yang dimaksudkan dalam ujian belakang. Jika anda ingin menghentikan cBot yang sedang tidur dari UI, anda tidak perlu menunggu sehingga ia terjaga. Klik butang Henti dan ia akan berhenti beroperasi tanpa masa tamat.

Cipta contoh cBot

Contoh cBot berikut tidur selama 30 saat selepas pelancarannya, dengan mesej berkaitan dicetak dalam log. Selepas itu, ia meletakkan pesanan pasaran beli 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

Fungsi tidur membolehkan pembangun algoritma menggantung pelaksanaan kaedah lain walaupun jika cBot telah dilancarkan. Dengan menggunakan kaedah Sleep() dengan parameter masa yang fleksibel, anda akan sentiasa bertindak balas terhadap peristiwa yang dijadualkan dengan strategi yang disesuaikan pada masanya.