Langkau tajuk talian

Sesi dagangan

Sejak pelancaran cTrader Windows 4.5, API tersebut merangkumi antara muka MarketSessions. Ia membolehkan anda mendapatkan maklumat tentang sesi pasaran semasa dan menggunakan data ini dalam cBot dan indikator anda.

Sesi dagangan dalam pembangunan algo

Jenis MarketSession ialah enum dengan nilai yang mewakili pelbagai sesi dagangan (seperti Singapore atau London).

Seterusnya, sifat MarketSessions adalah daripada jenis MarketSession. Untuk mendapatkan semua sesi pasaran semasa, gunakannya seperti berikut.

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

Nilai sifat MarketSessions hendaklah sepadan dengan sesi yang dipaparkan dalam medan Sesi dagangan di sudut kiri bawah antara muka cTrader.

Image title

Anda boleh menggunakan kaedah HasFlag untuk memeriksa sama ada sesi semasa mengandungi sesi tertentu.

 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;

        }
    }
}

Anda juga boleh mengendalikan peristiwa MarketSessionsChanged untuk mengesan dan bertindak balas terhadap sebarang perubahan dalam sesi pasaran. Kelas MarketSessionChangedEventArgs mempunyai dua sifat, iaitu NewSessions dan PreviousSessions, yang berfungsi seperti berikut:

  • NewSessions mengandungi semua sesi semasa termasuk mana-mana sesi yang baru bermula. Nilai NewSessions sentiasa sama dengan nilai sifat MarketSessions bagi cBot atau indikator.
  • PreviousSessions juga mengandungi semua sesi semasa tetapi ia juga mengandungi mana-mana sesi lepas yang baru sahaja berakhir. Nilainya adalah sama dengan nilai sifat MarketSessions bagi cBot atau indikator sebelum MarketSessionsChanged dicetuskan.

Untuk gambaran yang lebih terperinci tentang cara NewSessions dan PreviousSessions berfungsi, rujuk contoh di bawah.

 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() { }
    }
}

Dalam log, anda sepatutnya melihat dua entri baharu untuk setiap perubahan sesi. Entri ini akan memberitahu anda tentang sesi dagangan yang lepas dan sesi semasa.

Sesi dagangan semasa ujian belakang

Sifat MarketSessions berfungsi pada kedua-dua persekitaran langsung dan ujian belakang. Semasa ujian belakang, sifat ini akan mengandungi sesi relatif kepada pemasaan ujian belakang yang dipilih. Dengan kata lain, anda boleh menggunakannya untuk mengakses sesi dagangan yang aktif semasa tempoh dagangan bersejarah tertentu.