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

جلسات التداول

منذ إصدار cTrader Windows 4.5، تتضمن واجهة برمجة التطبيقات (API) واجهة MarketSessions. تسمح لك بالحصول على معلومات حول جلسات السوق الحالية واستخدام هذه البيانات في cBots والمؤشرات الخاصة بك.

جلسات التداول في تطوير الخوارزميات

النوع MarketSession هو enum بقيم تمثل جلسات التداول المختلفة (مثل Singapore أو London).

بدوره، خاصية MarketSessions هي من نوع MarketSession. للحصول على جميع جلسات السوق الحالية، استخدمها كما يلي.

1
    Print("Current Sessions: {0}", MarketSessions); 

يجب أن تتطابق قيمة خاصية MarketSessions مع الجلسات المعروضة في حقل جلسات التداول في الزاوية السفلية اليسرى من واجهة مستخدم cTrader.

Image title

يمكنك استخدام طريقة HasFlag للتحقق مما إذا كانت الجلسات الحالية تحتوي على جلسة معينة.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using cAlgo.API;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class MarketSessionsTest : Robot
    {
        [Parameter("Working Session", DefaultValue = MarketSession.London)]
        public MarketSession WorkingSession {get; set;}

        protected override void OnTick()
        {

            MarketSession exampleSession = MarketSession.London;

            if (MarketSessions.HasFlag(exampleSession))
              {

                // Insert your preferred method logic here.

              }
                return;

        }
    }
}

يمكنك أيضًا معالجة حدث MarketSessionsChanged لاكتشاف والاستجابة لأي تغييرات في جلسات السوق. تحتوي فئة MarketSessionChangedEventArgs على خاصيتين، وهما NewSessions و PreviousSessions، والتي تعمل كما يلي:

  • تحتوي NewSessions على جميع الجلسات الحالية بما في ذلك أي جلسات بدأت للتو. قيمة NewSessions تساوي دائمًا قيمة خاصية MarketSessions لـ cBot أو المؤشر.
  • تحتوي PreviousSessions أيضًا على جميع الجلسات الحالية ولكنها تحتوي أيضًا على أي جلسات سابقة انتهت للتو. قيمتها تساوي قيمة خاصية MarketSessions لـ cBot أو المؤشر قبل تشغيل MarketSessionsChanged.

للحصول على نظرة أكثر تفصيلاً حول كيفية عمل NewSessions و PreviousSessions، راجع المثال أدناه.

 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 cAlgo.API;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class NewcBot : Robot
    {
        protected override void OnStart()
        {
            MarketSessionsChanged += OnMarketSessionsChanged;
            Print($"Starting sessions: {this.MarketSessions}");
        }

        private void OnMarketSessionsChanged(MarketSessionChangedEventArgs obj)
        {
            Print($"Session(s) changed, previous sessions: {obj.PreviousSessions}");
            Print($"Sessions(s) changed, current sessions: {obj.NewSessions}");
        }

        protected override void OnTick() { }

        protected override void OnStop() { }
    }
}

في السجل، يجب أن ترى إدخالين جديدين لكل تغيير في الجلسة. ستخبرك هذه الإدخالات بما كانت عليه جلسات التداول السابقة وما هي الآن.

جلسات التداول أثناء الاختبار العكسي

تعمل خاصية MarketSessions في كل من البيئات الحية وبيئات الاختبار العكسي. أثناء الاختبار العكسي، ستحتوي هذه الخاصية على الجلسات النسبية لأوقات الاختبار العكسي المختارة. بعبارة أخرى، يمكنك استخدامها للوصول إلى جلسات التداول التي كانت نشطة خلال فترة تداول تاريخية محددة.