今回は、JForex APIで、ヒストリカルデータの「History ticks(過去のティックデータ)」を扱う方法について解説します。
ティックデータを読み出す方法としては主に2つの方法があります。
- 現在のバーからのシフト値を使って読み出す方法
- 時間間隔を指定して読み出す方法
「History Bars」と同じで同期、非同期両方の手段が用意されています。
非同期関数を使って読み出す方法は「History Bars」と同じく今回解説はしません。
同期関数を使用してティックデータを読み出す
最新のティックデータ
最新のティックデータを取得するには、IHistoryインターフェースの「getLastTick」関数を使用します。
getLastTickは引数に「Instrument 」を取り、最新のITickオブジェクトを返します。
getLastTick関数の仕様
12 ITick getLastTick(Instrument instrument)throws JFException引数:
instrument:どの通貨ペアのティックを取得するのかを指定戻り値:
最新のITickオブジェクト
例えば、OnBarコールバック関数内で最新のAskプライスを取得したい場合以下のように書けます。
1 |
double bestAskPrice = history.getLastTick(instrument).getAsk(); |
ティックが配信された際の時刻は、TickオブジェクトのgetTime関数で取得できます。
1 |
long currentTime = history.getLastTick(instrument).getTime(); |
shift値によるティックデータの取得
getTick関数を使えばシフト値によってITickオブジェクトを取得できます。
getTick関数の仕様
123 ITick getTick(Instrument instrument,int shift)throws JFException引数:
instrument:どの通貨ペアの足を取得するのかを指定
shift :最新のティックからいくつ前のティックを取得するのかを指定戻り値:
ITickオブジェクトのリスト
シフト値が0だと最新のティックデータ、1だと1つ前のティックデータ、2だと2つまえのティックデータとなります。
1 2 |
ITick tick0 = history.getTick(Instrument.USDJPY, 0); ITick tick1 = history.getTick(Instrument.USDJPY, 1); |
時間間隔を指定して読み出す方法
getTicks関数を使えば、指定した時間間隔内のITickオブジェクトのリストを取得できます。
引数のFromとtoで期間を指定し、Fromとtoを含む期間内に含まれているティックデータをリストにして返してくれます。
getTicks関数の仕様
1234 List<ITick> getTicks(Instrument instrument,long from,long to)throws JFException引数:
instrument:どの通貨ペアの足を取得するのかを指定
from :ティックデータを取得する時間間隔の開始時間
to:ティックデータを取得する時間間隔の終了時間戻り値:
ITickオブジェクトのリスト
以下は、最新ティックから10秒間分のティックデータを取得する例です。
1 2 |
ITick lastTick = history.getLastTick(Instrument.USDJPY); List<ITick> ticks = history.getTicks(Instrument.USDJPY, lastTick.getTime() - 10 * 1000, lastTick.getTime()); |
コメント