トップ  >  リファレンス  >  サンプルソースコード  >  SDKクライアント  >  MainPublicMethods.java
MainPublicMethods.java

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



/*
 * Copyright (c) 2009 Dukascopy (Suisse) SA. All Rights Reserved.
 * 
 * ソースまたはバイナリ形式での使用及び再配布は、修正の有無にかかわらず許可されているが、
 * 以下の条件が満たされている必要があります。
 * 
 * -ソースコードの再配布は上記著作権を表示し、この条件リスト及び免責事項を守らなければなりません。
 * -バイナリ形式(または他形式)での再配布は、上記著作権を表示し、この条件リスト及びドキュメントの以下免責事項を守らなければなりません。
 * 
 * デューカスコピー(スイス) SA の名前と再配布者の名前のいずれかは、
 * 書面による事前許可無しに本ソフトウェアから派生した製品を促進する為に使用する事が出来ます。
 * 
 * 
 * このソフトウェアはいかなる動作保証無しで提供しています。
 * 以下略(↓このソフトで何が起きても、自己責任でお願いしますという事が書かれています)。
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. DUKASCOPY (SUISSE) SA ("DUKASCOPY")
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. IN NO EVENT WILL DUKASCOPY OR ITS LICENSORS BE LIABLE FOR ANY LOST 
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, 
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY 
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, 
 * EVEN IF DUKASCOPY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 */
package singlejartest;

import com.dukascopy.api.system.ISystemListener;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ClientFactory;
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 MainPublicMethods {
    private static final Logger LOGGER = LoggerFactory.getLogger(MainRemote.class);
    private static String jnlpUrl  = "https://www.dukascopy.com/client/demo/jclient/jforex.jnlp";
    private static String userName = "mzd";
    private static String password = "mzd";

    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);
        // ストラテジー開始
        LOGGER.info("ストラテジー開始");
        client.startStrategy(new StrategyPublicMethods(new StrategyPublicMethods.ClientActions() {

          @Override
          public void onOrderFill(IOrder order) {
            LOGGER.info("新規オーダー。クライアント側でロングオーダーしたらストップロス設定を実行します。");
            if(order.isLong()){
              try {
                order.setStopLossPrice(order.getOpenPrice() - order.getInstrument().getPipValue() * 10);
              } catch (JFException e) {
                e.printStackTrace();
              }
            }
          }
          
          @Override
          public void onOrderClose(IOrder order) {
            LOGGER.info("クローズオーダー。クライアント側で実行します。");          
          }
        }));
    }
}




スポンサーリンク

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


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


Top

inserted by FC2 system