オーダーヒストリーはオーダー状態がCLOSEDのオーダーの事です。
オーダーヒストリーは同期と非同期の両方で取得する事が出来ます。
同期/非同期ロードの違いについてはヒストリーバーのページを参照して下さい。
同期取得
オーダーヒストリー情報はgetOrdersHistoryメソッドで取得する事が出来ます。
直近の10バーのオーダーヒストリー取得
以下例は、最後に作成されたバーから過去10本のバーのオーダーヒストリーを取得します。
IBar bar10 = history.getBar(Instrument.EURUSD, Period.ONE_HOUR, OfferSide.ASK, 10);
IBar bar1 = history.getBar(Instrument.EURUSD, Period.ONE_HOUR, OfferSide.ASK, 0);
List<IOrder> previousOrders = history.getOrdersHistory(
instrument,
bar10.getTime(),
bar1.getTime()
);
for (IOrder order : previousOrders) {
console.getOut().println("オーダー情報: " + order);
}
先週分のオーダーヒストリー取得
以下例は、先週作成されたオーダーヒストリーを取得します。
package jforex.orders;
import java.util.List;
import com.dukascopy.api.*;
public class OrderHistoryLastWeek implements IStrategy {
private IConsole console;
@Override
public void onStart(IContext context) throws JFException {
console = context.getConsole();
long time = System.currentTimeMillis();
List<IOrder> orders = context.getHistory().getOrdersHistory(
Instrument.EURUSD,
time - Period.WEEKLY.getInterval(),
time
);
if (orders != null) {
for (IOrder order : orders) {
console.getOut().println("オーダーヒストリー: " + order );
}
}
}
public void onTick(Instrument instrument, ITick tick) throws JFException {}
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {}
public void onMessage(IMessage message) throws JFException {}
public void onAccount(IAccount account) throws JFException {}
public void onStop() throws JFException {}
}
非同期オーダーヒストリー取得
readOrdersHistoryメソッドは非同期でオーダー情報を取得します。
以下例は、過去6ヶ月の全通貨ペアの全オーダーヒストリーを取得します。
long to = System.currentTimeMillis();
long from = to - 6 * Period.MONTHLY.getInterval();
console.getOut().println(sdf.format(from) + " 〜 " + sdf.format(to) +
"期間のオーダーヒストリーをロード中。"
);
for (final Instrument instrument : instruments) {
history.readOrdersHistory(
instrument,
from,
to,
new LoadingOrdersListener() {
@Override
public void newOrder(Instrument instrument, IOrder orderData) {
List<IOrder> histOrderList = histOrderMap.get(instrument);
if (histOrderList == null) {
histOrderList = new ArrayList<IOrder>();
histOrderMap.put(instrument, histOrderList);
}
histOrderList.add(orderData);
}
},
new LoadingProgressListener() {
@Override
public void dataLoaded(long start, long end, long currentPosition, String information) {
}
@Override
public void loadingFinished(boolean allDataLoaded, long start, long end, long currentPosition) {
if (allDataLoaded) {
loadingFinishedInstruments.add(instrument);
console.getInfo().println(instrument + "のオーダーヒストリーのロード完了。" );
}
}
@Override
public boolean stopJob() {
return false;
}
}
);
}
サンプルソースコード:
OrderHistoryAsync6MonthsAllInstr.java