Ana içeriğe geç

İşlem seansları

cTrader Windows 4.5'in yayınlanmasından bu yana, API, MarketSessions arayüzünü içerir. Mevcut piyasa seansları hakkında bilgi almanızı ve bu verileri cBot'larınızda ve göstergelerinizde kullanmanızı sağlar.

Algoritma geliştirmede işlem seansları

MarketSession türü, çeşitli işlem seanslarını (örneğin Singapore veya London gibi) temsil eden değerlere sahip bir enum'dur.

Buna karşılık, MarketSessions özelliği MarketSession türündedir. Tüm mevcut piyasa seanslarını almak için aşağıdaki gibi kullanın.

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

MarketSessions özelliğinin değeri, cTrader kullanıcı arayüzünün sol alt köşesindeki İşlem seansları alanında görüntülenen seanslarla eşleşmelidir.

Image title

Mevcut seansların belirli bir seansı içerip içermediğini kontrol etmek için HasFlag yöntemini kullanabilirsiniz.

 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;

        }
    }
}

Piyasa seanslarındaki herhangi bir değişikliği tespit etmek ve bunlara tepki vermek için MarketSessionsChanged olayını da işleyebilirsiniz. MarketSessionChangedEventArgs sınıfının NewSessions ve MarketSessions olmak üzere iki özelliği vardır ve bunlar şu şekilde çalışır:

  • NewSessions, yeni başlayan seanslar da dahil olmak üzere tüm mevcut seansları içerir. NewSessions değeri, bir cBot veya göstergenin MarketSessions özelliğinin değerine her zaman eşittir.
  • PreviousSessions tüm mevcut seansları da içerir ancak aynı zamanda yeni biten geçmiş seansları da içerir. Değeri, MarketSessionsChanged tetiklenmeden önce bir cBot veya göstergenin MarketSessions özelliğinin değerine eşittir.

NewSessions ve PreviousSessions'ın nasıl çalıştığına daha ayrıntılı bakmak için aşağıdaki örneğe bakın.

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

Kayıtta, her seans değişikliği için iki yeni giriş görmelisiniz. Bu girişler, geçmiş işlem seanslarının ne olduğunu ve şimdi ne olduğunu size bildirecektir.

Geriye dönük test sırasında işlem seansları

MarketSessions özelliği hem canlı hem de geriye dönük test ortamlarında çalışır. Geriye dönük test sırasında, bu özellik seçilen geriye dönük test zamanlamalarına göre seansları içerecektir. Başka bir deyişle, belirli bir geçmiş işlem dönemi boyunca aktif olan işlem seanslarına erişmek için kullanabilirsiniz.