取引セッション

cTrader Desktop 4.5のリリースに伴い、APIにはMarketSessionsインターフェースが追加されました。これにより、現在の市場セッションに関する情報を取得し、このデータをcBots/インディケーターで使用することができます。

アルゴ開発における取引セッション

MarketSession型はenumで、様々な取引セッション(例えばSingaporeLondon)を表します。

それに対して、MarketSessionsプロパティはMarketSession型です。現在の市場セッションをすべて取得するには、以下のように使用します。

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

MarketSessionsプロパティの値は、cTrader UIの左下隅にある「取引セッション」フィールドに表示されるセッションと一致するはずです。

画像のタイトル

現在のセッションに特定のセッションが含まれているかどうかを確認するには、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))
              {

                // 好みのメソッドロジックをここに挿入してください。

              }
                return;

        }
    }
}

また、MarketSessionsChangedイベントを処理することで、取引セッションの変更を検出し、反応することができます。MarketSessionChangedEventArgsクラスには、NewSessionsPreviousSessionsという2つのプロパティがあります。

  • NewSessionsには、現在のセッションと新しく始まったセッションがすべて含まれます。NewSessionsの値は、cBot/インディケーターのMarketSessionsプロパティの値と常に一致します。
  • PreviousSessionsには、現在のセッションと終了したばかりの過去のセッションがすべて含まれます。その値は、MarketSessionsプロパティの値がMarketSessionsChangedイベントがトリガーされる前の値と一致します。

より詳細なNewSessionsPreviousSessionsの動作については、以下の例を参照してください。

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

ログには、セッション変更ごとに2つの新しいエントリが表示されるはずです。これらのエントリは、過去の取引セッションと現在の取引セッションの情報を提供します。

バックテスト中の取引セッション

MarketSessionsプロパティは、ライブ環境とバックテスト環境の両方で機能します。バックテスト中は、このプロパティに選択したバックテストのタイミングに関連するセッションが含まれます。言い換えれば、特定の過去の取引期間中にアクティブだった取引セッションにアクセスできます。

目次

このページについて