NewsFilterMain.java

注意事項:
サンプルソースコードには実際にオーダーを発注するものがあります。
サンプルソースコードのストラテジーを起動する場合は、必ずデモ口座で行ってください。



// Copyright (c) 2009 Dukascopy (Suisse) SA. All Rights Reserved.
package jforex.news;

import com.dukascopy.api.system.ISystemListener;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ClientFactory;
import com.dukascopy.api.CalendarFilter;
import com.dukascopy.api.INewsFilter;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.NewsFilter;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.TimeZone;

import org.slf4j.LoggerFactory;
import org.slf4j.Logger;

//このプログラムは、デューカスコピークライアントの初期化と、ストラテジー開始のデモンストレーションを行います

public class NewsFilterMain {
    private static final Logger LOGGER = LoggerFactory.getLogger(NewsFilterMain.class);

    //url of the DEMO jnlp
    private static String jnlpUrl  = "https://www.dukascopy.com/client/demo/jclient/jforex.jnlp";
    //user name
    private static String userName = "username";
    //password
    private static String password = "password";

    public static void main(String[] args) throws Exception {
        // IClientインターフェースのインスタンスを取得
        final IClient client = ClientFactory.getDefaultInstance();
        // システムイベント受信するリスナーをセット
        client.setSystemListener(new ISystemListener() {
            private int lightReconnects = 3;

          @Override
          public void onStart(long processId) {
              LOGGER.info("ストラテジー起動: " + processId);
          }

          @Override
          public void onStop(long processId) {
              LOGGER.info("ストラテジー停止: " + processId);
              if (client.getStartedStrategies().size() == 0) {
                  System.exit(0);
              }
          }

          @Override
          public void onConnect() {
              LOGGER.info("接続完了");
              lightReconnects = 3;
          }

          @Override
          public void onDisconnect() {
              LOGGER.warn("Disconnected");
              if (lightReconnects > 0) {
                  client.reconnect();
                  --lightReconnects;
              } else {
                  try {
                      //10秒間スリープしてから再接続します
                      Thread.sleep(10000);
                  } catch (InterruptedException e) {
                      //無視します
                  }
                  try {
                      client.connect(jnlpUrl, userName, password);
                  } catch (Exception e) {
                      LOGGER.error(e.getMessage(), e);
                  }
              }
          }
        });

        LOGGER.info("接続中…");
        // jnlp, user , passwordでサーバーに接続します
        client.connect(jnlpUrl, userName, password);

        // 接続待ち処理
        int i = 10; // 最大で10秒間待ちます
        while (i > 0 && !client.isConnected()) {  
            Thread.sleep(1000);
            i--;
        }
        if (!client.isConnected()) {
            LOGGER.error("デューカスコピーのサーバーに接続出来ませんでした");
            System.exit(1);
        }
        
        //subscribe to the instruments
        Set<Instrument> instruments = new HashSet<Instrument>();
        instruments.add(Instrument.EURUSD);
        LOGGER.info("通貨ペア登録…");
        client.setSubscribedInstruments(instruments);
        

        
        NewsFilter newsFilter = new NewsFilter();
        newsFilter.setTimeFrame(NewsFilter.TimeFrame.TODAY);
        
        // インデックスでフィルター
        newsFilter.getStockIndicies().add(INewsFilter.StockIndex.NYSE);
        newsFilter.getStockIndicies().add(INewsFilter.StockIndex.DJI);
                
        // 国と地域でフィルター
        newsFilter.getCountries().add(INewsFilter.Country.US);
        newsFilter.getCountries().add(INewsFilter.Country.FR);
        
        // マーケットセクターでフィルター
        newsFilter.getMarketSectors().add(INewsFilter.MarketSector.FCL);
        newsFilter.getMarketSectors().add(INewsFilter.MarketSector.ENE);
        
        // キーワードでフィルター
        newsFilter.getKeywords().add("Profit");
        newsFilter.getKeywords().add("Loss");
        
        client.addNewsFilter(newsFilter);
                        
        
        
        CalendarFilter calendarFilter = new CalendarFilter();
        calendarFilter.setTimeFrame(NewsFilter.TimeFrame.SPECIFIC_DATE);
        
        // カスタムヒストリカルインターバル
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date dateFrom = dateFormat.parse("2011-03-11");
        calendarFilter.setFrom(dateFrom);       

        // 国と地域でフィルター
        newsFilter.getCountries().add(INewsFilter.Country.G7);
        
        // キーワードでフィルター
        calendarFilter.getKeywords().add("Treasury");
        calendarFilter.getKeywords().add("GDP");
        calendarFilter.getKeywords().add("trade");
        
        
        client.addNewsFilter(calendarFilter);
        
        
        // ストラテジー起動
        LOGGER.info("ストラテジー開始");
        client.startStrategy(new NewsStrategyNoTrades());

    }
}




スポンサーリンク

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


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


Top

inserted by FC2 system