cAlgo API リファレンス

TickとTicks【cAlgo API】

2020年10月28日

もっと細かい値動き

cTraderはMT4とは違いティックデータも保持しています。さほど使わないからかBarsのようにプロパティからさくっと使えるようにはなってないのですが、MarketData.GetTicks()から取得して使うことができます。

ポイント

Ticksを扱うcBotのバックテストでは必ずTickデータが必要です。(Tickデータ以外を選ぶとバックテストできません。)もし、Tickデータ以外でのバックテストも許容したいならバックテスト時はTicksを取得しないようにコーディングするなど工夫が必要です。

 

Ticksインターフェース

BarとBarsの関係と同じようにTicksもTickの配列のようなインターフェースが定義されています。

public interface Ticks : IEnumerable<Tick>

Barsと似たようなメンバを持ちます。

 

プロパティ
(Tick) this[int index]

Tick要素を取り出します。Bars同様の並び順は過去→未来です。

(int) Count

Ticksに入ってるTickの数を取得します。

(Tick) LastTick

最新のTickを取得します。

(string) SymbolName

Barsの通貨ペアを文字列で取得します。

 

メソッド
(Tick) Last(int index)

後ろ、つまり最新のTickから数えて(index+1)本目のTickを取り出します。

(int) LoadMoreHistory()

今読み込まれているより古いティックデータを読み込みます。追加されたTickの数が返ってきます。

(void) LoadMoreHistoryAsync([Action<BarsHistoryLoadedEventArgs> callback])

非同期で古いティックデータを読み込みます。コールバックは指定しなくてもかまいません。

 

イベント
Tick

ティックを受信した(価格が動いた)

HistoryLoaded

チャートのスクロールやプログラムによって過去のTickが読み込まれた

Reloaded

再接続などでTicksが再度読み込まれた

 

 

Tick構造体

Ticksの要素です。

public sealed struct Tick : ValueType, IEquatable

Barと同じように読み取り専用の構造体になってます。

 

プロパティ
(double) Ask

Ask値を取得します。

(double) Bid

Bid値を取得します。

(DateTime) Time

Tickを受信した時間です。

 

サンプルコード
// 冒頭に using System.Linqが必要
// 過去の平均スプレッドを計算してログに出力
double spread;
Ticks ticks = MarketData.GetTicks();
for (int i = 0; i < 10; i++) {
    spread = ticks.Select(t => t.Ask - t.Bid).Average();
    Print("{0}の{1}から{2}までの平均スプレッドは{3:f1}pips", SymbolName, ticks.First().Time, ticks.Last().Time, spread / Symbol.PipSize);
    ticks.LoadMoreHistory();
}

ちなみにLoadMoreHistoryは呼び出すごとにどんどんさかのぼってデータを読み込みます。このサンプルでは10回ループにしてますが、while(ticks.LoadMoreHistory()!=0)でループを回せばかなり昔のデータまで持ってこれます。が、めちゃくちゃ重たくなるのでやめた方がいいです。

-cAlgo API リファレンス
-,

© 2021 cTrader's Life Powered by AFFINGER5