Ana içeriğe geç

Uyku işlevi

Belirli bir zamana kadar bekleme yeteneği, cBot'lar için, özellikle de bazı olayların (örneğin, kamu duyurusu) meydana gelmesi üzerine planlanması veya etkinleştirilmesi gerekenler için çok önemlidir. cTrader'daki Sleep() yöntemi, algoritmaları belirtilen süre geçene veya yaklaşana kadar askıya almayı sağlar.

Not

Uyku işlevi yalnızca cBot'lar ve göstergeler için kullanılabilir.

Bu API kılavuzu, Sleep() yöntemini ve nasıl doğru kullanılacağını size tanıtacak.

Sleep() yöntemi bir dakikada!

  • Sleep() yöntemi, geliştiricilerin esnek zaman parametreleri belirlenmiş bir algoritmanın yürütülmesini askıya almasını sağlar.
  • cBot'unuzun özel bir stratejiyle tepki vermesi gereken belirli bir olayın tarihini ve saatini biliyorsanız, haberleri işlem yapmak ve planlanmış olaylara tepki vermek için uyku işlevini kullanın.
  • Uyku işlevi için milisaniyelerden herhangi bir zaman aralığına kadar geçmesi için bir süre belirleyin.
  • Sleep() yöntemi yalnızca .NET 6 algoritmaları için kullanılabilir ve geriye dönük testte beklendiği gibi çalışır.

Sleep() yöntemi nasıl çalışır

Uyku işlevi yalnızca .NET 6 algoritmaları için kullanılabilir. Bir cBot uyku modunda kalırken, koddaki diğer tüm olaylar göz ardı edilecektir.

Örnek

BarOpened olayı uyku modu sırasında beş kez meydana geldiyse, cBot uyandıktan sonra kaçırılan OnBar() işleyicilerinden hiçbiri çağrılmayacaktır. Bu durumda yalnızca yeni gelecek olaylar tetiklenecektir.

Yine de, cBot'lar uyku modunda kalırken tüm veri mesajlarını işler (örneğin, RefreshData() çağrılırsa).

Not

Uyku süresini belirterek, algoritma askıya alma için minimum bir aralık belirlersiniz. Gerçek uyku süresi, talep edilen askıya alma süresinden her zaman eşit veya daha büyük olacaktır.

Sleep() yöntemini uygulamak için, algoritma geliştiricileri amaçlarına bağlı olarak bu imzalardan birini kullanmalıdır.

Algoritmayı belirtilen zaman aralığı geçene kadar askıya almak için:

void Sleep(Timespan timespan)

Belirtilen milisaniye sayısı geçene kadar algoritmayı askıya almak için:

void Sleep(int milliseconds)

Belirtilen saat ve tarih yaklaşana kadar algoritmayı askıya almak için:

void Sleep(DateTime dateTime)

Örnek

Mevcut Federal Rezerv Başkanı Jerome Powell'ın bir sonraki konuşmasının 11 Aralık 2023 saat 11:00'de yapılacağını varsayacağız. EURUSD trendini etkileyecek bazı duyurular bekliyorsunuz ve konuşma başlar başlamaz ilgili bir strateji izleyecek bir cBot geliştirdiniz. Bu durumda, Sleep() yöntemini şu şekilde uygulayabilirsiniz.

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

Uyarı

DateTime parametresi algoritma zaman diliminden değilse, bir ArgumentException fırlatılacaktır.

Sleep() yöntemi geriye dönük testte beklendiği gibi çalışır. Uyku modundaki bir cBot'u kullanıcı arayüzünden durdurmak istiyorsanız, uyanmasını beklemek zorunda değilsiniz. Durdur düğmesine tıklayın ve zaman aşımı olmadan çalışmayı durduracaktır.

Örnek bir cBot oluşturun

Aşağıdaki örnek cBot, başlatıldıktan sonra 30 saniye uyur ve ilgili mesaj günlüğe yazdırılır. Daha sonra, USDJPY için bir alış piyasa emri verir.

 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

Özet

Uyku işlevi, cBot başlatılmış olsa bile algoritma geliştiricilerinin diğer yöntemlerin yürütülmesini askıya almasını sağlar. Sleep() yöntemini esnek zaman parametreleriyle uygulayarak, planlanmış olaylara özel stratejinizle her zaman zamanında tepki vereceksiniz.