انتقل إلى المحتوى

وظيفة السكون

القدرة على الانتظار حتى وقت محدد أمر ضروري لـ cBots، خاصة لتلك التي يجب جدولتها أو تنشيطها عند حدوث حدث معين (على سبيل المثال، إعلان عام). تتيح طريقة Sleep() في cTrader تعليق الخوارزميات حتى ينقضي الوقت المحدد أو يقترب.

ملاحظة

وظيفة السكون متاحة فقط لـ cBots والمؤشرات.

سيقدم لك دليل API هذا طريقة Sleep() وكيفية استخدامها بشكل صحيح.

طريقة Sleep() في دقيقة واحدة!

  • تمكّن طريقة Sleep() المطورين من تعليق تنفيذ الخوارزمية مع إعداد معلمات زمنية مرنة.
  • إذا كنت تعرف تاريخ ووقت حدث معين يجب أن يتفاعل معه cBot الخاص بك باستراتيجية مخصصة، استخدم وظيفة السكون للتداول على الأخبار والتفاعل مع الأحداث المجدولة.
  • قم بتعيين فترة لتنقضي لوظيفة السكون، من الميلي ثانية إلى أي فترة زمنية.
  • طريقة Sleep() متاحة فقط لخوارزميات .NET 6 وتعمل كما هو مقصود في الاختبار التاريخي.

كيف تعمل طريقة sleep()

وظيفة السكون متاحة فقط لخوارزميات .NET 6. أثناء بقاء cBot في وضع السكون، سيتم تجاهل جميع الأحداث الأخرى في الكود.

مثال

إذا حدث حدث BarOpened خمس مرات أثناء وضع السكون، فلن يتم استدعاء أي من معالجات OnBar() الفائتة بعد استيقاظ cBot. سيتم رفع الأحداث الجديدة القادمة فقط في هذه الحالة.

ومع ذلك، تعالج cBots جميع رسائل البيانات أثناء البقاء في وضع السكون (على سبيل المثال، إذا تم استدعاء RefreshData()).

ملاحظة

عند تحديد وقت السكون، فإنك تحدد الحد الأدنى لفترة تعليق الخوارزمية. سيكون وقت السكون الفعلي دائمًا مساويًا أو أكبر من وقت التعليق المطلوب.

لتطبيق طريقة Sleep()، يجب على مطوري الخوارزميات استخدام إحدى هذه التوقيعات حسب الغرض منها.

لتعليق الخوارزمية حتى تنقضي الفترة الزمنية المحددة:

void Sleep(Timespan timespan)

لتعليق الخوارزمية حتى ينقضي عدد الميلي ثانية المحدد:

void Sleep(int milliseconds)

لتعليق الخوارزمية حتى يقترب الوقت والتاريخ المحددين:

void Sleep(DateTime dateTime)

مثال

سنفترض أن الخطاب التالي لرئيس الاحتياطي الفيدرالي الحالي جيروم باول مجدول في 11 ديسمبر 2023 الساعة 11:00. تتوقع بعض الإعلانات التي ستؤثر على اتجاه EURUSD وقمت بتطوير cBot سيتبع استراتيجية ذات صلة في بداية الخطاب مباشرة. في هذه الحالة، يمكنك تطبيق طريقة Sleep() على النحو التالي.

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

تحذير

إذا لم تكن معلمة DateTime من المنطقة الزمنية للخوارزمية، سيتم إلقاء ArgumentException.

تعمل طريقة Sleep() كما هو مقصود في الاختبار التاريخي. إذا كنت ترغب في إيقاف cBot النائم من واجهة المستخدم، فلا يتعين عليك الانتظار حتى يستيقظ. انقر على زر إيقاف وسيتوقف عن العمل دون مهلة زمنية.

إنشاء مثال لخوارزمية cBot

يقوم مثال cBot التالي بالنوم لمدة 30 ثانية بعد إطلاقه، مع طباعة الرسالة المناسبة في السجل. بعد ذلك، يضع أمر شراء بسعر السوق لـ 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

الملخص

تتيح وظيفة السكون لمطوري الخوارزميات تعليق تنفيذ الطرق الأخرى حتى لو تم إطلاق cBot. من خلال تطبيق طريقة Sleep() بمعلماتها الزمنية المرنة، ستتمكن دائمًا من الاستجابة للأحداث المجدولة باستراتيجيتك المخصصة في الوقت المناسب.