cAlgo API リファレンス

Bars【cAlgo API】

2020年10月22日

価格情報をまとめたオブジェクトを表す

Barsインターフェース

価格情報を保持するオブジェクトを参照するインターフェースです。自分が起動してるチャートの通貨ペア、時間足の価格であれば本体(Robot)のプロパティBarsで直接参照できます。cBotにせよIndicatorにせよとにかくお世話になることが多いクラスです。

public interface Bars : IEnumerable

IEnumerableを継承しているものは「配列のすげーやつ」くらいに思っといてください。オブジェクト自身が特定の型の配列みたいな挙動を示すと同時に、クラス特有の機能(プロパティやメソッド)を持ちます。

BarsはBar型の配列を参照するインターフェースです。Bars[index]で個々のBarを取得して使うこともできますし、Barsのプロパティを使って高値だけのリスト、終値だけのリストなどを取り出して使うこともできる便利な奴です。

 

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

thisは自分自身を表します。プロパティ欄にこう書いてあったらBars[index]みたいな感じで配列として要素が取り出されると思ってください。

index番目のBar要素を取得します。ちなみにBars内のBarの並び順は過去→未来のため、MT4でArraySetAsSeries(array, true);された配列を普段使ってる方は並びが逆になりますので注意して下さい。

(int) Count

Barsに入ってるBarの本数を取得します。インデックスは0から始まるため、最大のインデックスはBars.Count-1です。最新のBarをインデックス指定で取得するならBars[Bars.Count-1]となります。

(Bar) LastBar

最新のBarを取得します。上のBars[Bars.Count-1]と全く同じです。よく使うためプロパティで用意されてます。

ポイント

OnBar()内では注意が必要です。OnBar内でLastBar取り出しても今できたばっかのBarが返ってくるため使い物になりません。一つ前のBarはBars.Last(1)で。
(DataSeriese) OpenPrices

始値をDataSerieseで取得します。DataSerieseはdoubleの配列みたいなもんです。Barsの始値部分だけ配列で取り出すイメージです。

(DataSeriese) ClosePrices

終値をDataSerieseで取得します。

(DataSeriese) HighPrices

高値をDataSerieseで取得します。

(DataSeriese) LowPrices

安値をDataSerieseで取得します。

(TimeSeriese) OpenTimes

ローソク足の開始時刻をTimeSerieseで取得します。TimeSerieseはDataTimeの配列みたいなもんです。

(DataSeriese) TickVolumes

ティックボリュームをDataSerieseで取得します。

(DataSeriese) MedianPrices

中央値(Barの高値と安値の平均値)をDataSerieseで取得します。

(DataSeriese) TypicalPrices

TypicalPrice  (Barの高値、安値、終値の平均値)をDataSerieseで取得します。

(DataSeriese) WeightedPrices

出来高加重平均価格をDataSerieseで取得します。

(string) SymbolName

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

(TimeFrame) TimeFrame

Barsがどの時間足か(1時間足とか15分足とか)を取得します。

 

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

後ろ、つまり最新のBarから数えて(index+1)本目のBarを取り出します。0指定で一番最新のBar、2本前を取り出したいなら1と指定します。

(int) LoadMoreHistory()

今読み込まれているより古い価格データを読み込みます。追加されたBarの本数が返ってきます。

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

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

 

イベント

バー関連の以下のイベントを拾えますが、本体クラスではOnTick()とOnBar()が最初からあるためあまり使いません。自作クラスではお世話になることも。(HistoryLoadedとReloadedはそもそもあまり使わない。)

BarOpened

ローソク足が更新された。(2021/4/20追記 機能しないケースがあるようです。cTrader4.0にて確認)

Tick

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

HistoryLoaded

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

Reloaded

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

 

 

メモ

OnTick(),OnBar()とイベントの処理の順序は?

試してみたところTickイベント→OnTick()でした。

またBar更新時は

Tickイベント→BarOpendイベント→OnTick()→OnBar()

の順で呼び出されました。

ただし、一般的にイベントデリゲート(イベント発生時の処理)の呼び出し順は不定と考えておいた方がいいため、どのような順番で呼び出されても困らないような実装にしておくことをお勧めします。

-cAlgo API リファレンス
-

© 2021 cTrader's Life Powered by AFFINGER5