トップ  >  リファレンス  >  ストラテジーAPI  >  ヒストリカルデータ  >  フィードヒストリ―
フィードヒストリ―


JForexプラットフォームで利用可能なデータフィードのヒストリカルデータを取得する事が出来ます。
  • レンジバー
  • ティックバー
  • ポイント&フィギア
  • 蓮子バー

シフト・タイムインターバル・ユニットインターバルでロードする事が可能で、ローソク足の原理を反映しています。
同期と非同期の両方でロードする事が出来ます。同期/非同期ロードの違いについてはヒストリーバーのページを参照して下さい。
より効率良くヒストリカルフィードをロードするには、対象のデータフィードを登録します。



サンプル

フィードロードの原理は、ローソク足のロードと良く似ているので、サンプル紹介は簡単なものだけにします。



シフトとユニットインターバルによるフィードロード(サンプル)

private IConsole console;
private IHistory history;
int dataCount = 0;

@Configurable(value = "フィードタイプ", description = "choose any type of feed (except ticks) in the strategy parameters dialog")
public IFeedDescriptor feedDescriptor = new RangeBarFeedDescriptor(Instrument.EURUSD, PriceRange.TWO_PIPS, OfferSide.ASK);    

@Override
public void onStart(final IContext context) throws JFException {

    history = context.getHistory();
    console = context.getConsole();

    context.setSubscribedInstruments(java.util.Collections.singleton(feedDescriptor.getInstrument()), true);
    // フィードキャッシュ(ヒストリーメソッドパフォーマンス)を有効にする為の重要な登録
    context.subscribeToFeed(feedDescriptor, this); 
    
    ITimedData lastFeedData = history.getFeedData(feedDescriptor, 0); // フィード形式での最新のデータ
    List<ITimedData> feedDataList = history.getFeedData(feedDescriptor, 3, lastFeedData.getTime(), 0);

    console.getOut().format("フィードタイプ:%s 最新のデータ=%s \n 3つ前のデータ=%s", 
            feedDescriptor.getDataType(), lastFeedData, feedDataList).println();



サンプルソースコード:FeedHistory.java





非同期フィードロード(サンプル)

ITimedData lastFeedData = history.getFeedData(feedDescriptor, 0); // フィード形式での最新のデータ
List<ITimedData> feedDataList = history.getFeedData(feedDescriptor, 3, lastFeedData.getTime(), 0);

console.getOut().format("フィードタイプ:%s 最新のデータ=%s \n 3つ前のデータ=%s", 
        feedDescriptor.getDataType(), lastFeedData, feedDataList).println();


final long from = lastFeedData.getTime() - TimeUnit.DAYS.toMillis(1);
final long to   = lastFeedData.getTime();

history.readFeedData(
       feedDescriptor,
       from,
       to, 

       new IFeedListener(){
           @Override

           public void onFeedData(IFeedDescriptor feedDescriptor, ITimedData feedData) {
               dataCount++;
           }
       }, 

       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){
                   console.getOut().format("取得期間:%s 〜 %s、 ロード件数:%s、 %sフィードでのロード完了", 
                           DateUtils.format(from), DateUtils.format(to), dataCount, feedDescriptor.getDataType()).println();
                   context.stop();
               }
           }

           @Override
           public boolean stopJob() {
               return false;
           }
       }
);



サンプルソースコード:FeedHistory.java





シフトによるティックバーチャート取得(サンプル)

以下例は、現在のティックバーの残ティック数をチャート表示表示します。
ティックバーのサイズはチャートから取得します。

if(instrument != this.instrument){
    return;
}
 
if(chart == null || chart.getTickBarSize() == null){
    print("ティックバーチャートが開かれていません。");
    return;
}

ITickBar currentTickBar = history.getTickBar(instrument, OfferSide.BID, chart.getTickBarSize(), 0);
int remaining =  (int) (chart.getTickBarSize().getSize() - currentTickBar.getFormedElementsCount());

print("残ティック: " + remaining + " 現在のティックバー: " + currentTickBar);

chart.comment("残ティック " + remaining);



サンプルソースコード:TickBarTicksRemaining.java



スポンサーリンク

スポンサーリンク
検索
リファレンスツリー


Copyright ©2016 JForexAPIで自動売買させ隊! All Rights Reserved.


Top

inserted by FC2 system