cAlgoで定義されているその他の型
解説のタイミングを失ったもろもろの型をここでまとめて説明します。
IReadonlyListインターフェース
public interface IReadonlyList : IEnumerable
読み取り専用のリストです。C#のSystem.CllectionsのListの読み取り専用版と思っていいです。
プロパティ
(要素の型) this[int index]
index番目の要素を取得します。
(int) Count
要素数を取得します。
MarketHoursインターフェース
SymbolInfoがプロパティとして持つ、マーケットの開いてる時間を取得するためのインターフェースですが、FXではあまり使いません。
public interface MarketHours
プロパティ
(IReadOnlyList<TradingSession>) Sessions
TradingSessionのリストを取得します。1週間の相場の空いてる時間を。
メソッド
(bool) IsOpened( [(DataTime) datetime] )
datetimeにマーケットが開いているかどうか。引数省略で今現在開いているかどうかを返します。
(TimeSpan) TimeTillClose()
マーケットが閉まるまでの時間を返します。しまっている時に呼び出すと0を返します。
(TimeSpan) TimeTillOpen()
マーケットが開くまでの時間を返します。開いている時に呼び出すと0を返します。
TradingSessionインターフェース
MarketHoursが持つ、マーケットが何曜日の何時に開いて、何曜日の何時にしまるかという情報を取得するためのインターフェースです。
public interface TradingSession
プロパティ
(DayOfWeek) StartDay
開始する曜日を取得します。DayOfWeekは曜日を表すC#(.NetのSystem名前空間)の列挙型です。
(DayOfWeek) EndDay
終了する曜日を取得します。
(TimeSpan) StartTime
開始時間を取得します。日付データを持たないためDataTime型ではなくTimeSpan型です。
(TimeSpan) EndTime
終了時間を取得します。
サンプルコード
説明読むより、サンプル実行してもらった方がわかりやすいと思います。
// ゴールドの取引可能時間をログに出力する
var xauusd = Symbols.GetSymbolInfo("XAUUSD");
if (xauusd == null) Stop();
var marketHours = xauusd.MarketHours;
foreach(var sess in marketHours.Sessions) {
Print("{0}-{1}から{2}-{3}", sess.StartDay, sess.StartTime, sess.EndDay, sess.EndTime);
}
FXだとわかりにくいのでゴールド(XAUUSD)のMarketHoursを取得して各TradingSessionを表示しています。Symbol名が異なるブローカーを使ってる場合は"XAUUSD"の部分を書き換えてください。
余談ですが、ここで紹介したインターフェースやIAccount等はcAlgo.API.Internals名前空間で定義されてるためか、公式リファレンスの目次に見当たりません。(説明ページ自体はありますが。)
内部用とはいえ、わからないと使えないので、目次ページに追加してくれてもいい気がします。