Lewati ke isi

Sesi trading

Sejak rilis cTrader Windows 4.5, API mencakup antarmuka MarketSessions. Ini memungkinkan Anda mendapatkan informasi tentang sesi pasar saat ini dan menggunakan data ini dalam cBot dan indikator Anda.

Sesi trading dalam pengembangan algo

Tipe MarketSession adalah enum dengan nilai-nilai yang mewakili berbagai sesi trading (seperti Singapore atau London).

Selanjutnya, properti MarketSessions bertipe MarketSession. Untuk mendapatkan semua sesi pasar saat ini, gunakan seperti berikut.

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

Nilai properti MarketSessions harus sesuai dengan sesi yang ditampilkan di bidang Sesi trading di pojok kiri bawah UI cTrader.

Image title

Anda dapat menggunakan metode HasFlag untuk memeriksa apakah sesi saat ini mengandung 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 dapat menangani event MarketSessionsChanged untuk mendeteksi dan bereaksi terhadap perubahan apa pun dalam sesi pasar. Kelas MarketSessionChangedEventArgs memiliki dua properti, yaitu NewSessions dan PreviousSessions, yang bekerja sebagai berikut:

  • NewSessions berisi semua sesi saat ini termasuk sesi apa pun yang baru saja dimulai. Nilai NewSessions selalu sama dengan nilai properti MarketSessions dari cBot atau indikator.
  • PreviousSessions juga berisi semua sesi saat ini tetapi juga berisi sesi masa lalu yang baru saja berakhir. Nilainya sama dengan nilai properti MarketSessions dari cBot atau indikator sebelum MarketSessionsChanged dipicu.

Untuk melihat lebih detail bagaimana NewSessions dan PreviousSessions bekerja, lihat contoh di bawah ini.

 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 akan melihat dua entri baru untuk setiap perubahan sesi. Entri-entri ini akan memberi tahu Anda tentang apa saja sesi trading masa lalu dan apa saja sesi trading saat ini.

Sesi trading selama backtesting

Properti MarketSessions bekerja pada lingkungan live dan backtesting. Selama backtesting, properti ini akan berisi sesi-sesi relatif terhadap waktu backtesting yang dipilih. Dengan kata lain, Anda dapat menggunakannya untuk mengakses sesi trading yang aktif selama periode trading historis tertentu.