ข้ามไปที่เนื้อหา

เซสชันการเทรด

ตั้งแต่การเปิดตัว cTrader Windows 4.5 API ได้รวมอินเทอร์เฟซ MarketSessions ช่วยให้คุณรับข้อมูลเกี่ยวกับเซสชันตลาดปัจจุบันและใช้ข้อมูลนี้ใน cBots และอินดิเคเตอร์ของคุณ

เซสชันการเทรดในการพัฒนา Algo

ประเภท 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() { }
    }
}

ในบันทึก คุณควรเห็นรายการใหม่สองรายการสำหรับการเปลี่ยนแปลงเซสชันแต่ละครั้ง รายการเหล่านี้จะแจ้งให้คุณทราบว่าเซสชันการเทรดในอดีตเป็นอย่างไรและตอนนี้เป็นอย่างไร

เซสชันการเทรดระหว่างการ Backtesting

คุณสมบัติ MarketSessions ทำงานทั้งในสภาพแวดล้อมแบบสดและการ Backtesting ระหว่างการ Backtesting คุณสมบัตินี้จะมีเซสชันที่สัมพันธ์กับช่วงเวลาการ Backtest ที่เลือก กล่าวอีกนัยหนึ่ง คุณสามารถใช้มันเพื่อเข้าถึงเซสชันการเทรดที่ใช้งานอยู่ในช่วงการเทรดในอดีตที่เฉพาะเจาะจง