ProgramFillCover.java

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



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

import com.dukascopy.api.IEngine.OrderCommand;
import com.dukascopy.api.system.ISystemListener;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ClientFactory;
import com.dukascopy.api.IEngine;
import com.dukascopy.api.IOrder;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;

import java.util.HashSet;
import java.util.Set;

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

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

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

    private static String jnlpUrl  = "https://www.dukascopy.com/client/demo/jclient/jforex.jnlp";
    private static String userName = "mzd";
    private static String password = "mzd";
    
    static int counter;

    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);
        instruments.add(Instrument.CADCHF);
        LOGGER.info("通貨ペア登録…");
        client.setSubscribedInstruments(instruments);
        // ストラテジー開始
        LOGGER.info("ストラテジー開始");
        client.startStrategy(new StrategyFillListener(new StrategyFillListener.ClientActions() {
      
          @Override
          public void onOrderFill(IOrder order, IEngine engine) {
            LOGGER.info("新規オーダー完了。クライアント側でカバーアップオーダーを行います。");
            try {
              // 同じ通貨ペアで次のオーダーをする場合は1秒待ちます
              Thread.sleep(1000);
              OrderCommand cmd = order.isLong() ? OrderCommand.SELL : OrderCommand.BUY;
              engine.submitOrder("orderClient" + ++counter, order.getInstrument(), cmd, order.getAmount());
            } catch (Exception e) {
              e.printStackTrace();
            }
          }
        }));
    }
}




スポンサーリンク

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


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


Top

inserted by FC2 system