トップ  >  リファレンス  >  サンプルソースコード  >  SDKクライアント  >  MainStopFromConsole.java
MainStopFromConsole.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_old;

import com.dukascopy.api.system.ISystemListener;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ClientFactory;
import com.dukascopy.api.*;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

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

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

public class MainStopFromConsole {
    
    private static final  Logger LOGGER = LoggerFactory.getLogger(MainStopFromConsole.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("切断されました");
                if (lightReconnects > 0) {
                    LOGGER.error("再接続を試みます。残り: " + lightReconnects);
                    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);
        }
        
        // 通貨ペアの登録
        Set<Instrument> instruments = new HashSet<Instrument>();
        instruments.add(Instrument.EURUSD);
        LOGGER.info("通貨ペア登録…");
        client.setSubscribedInstruments(instruments);
                
        
        // ストラテジー起動
        LOGGER.info("ストラテジー起動");
        final long strategyId = client.startStrategy(new IStrategy(){
            public Instrument instrument = Instrument.EURUSD;
            private IConsole console;

            public void onStart(IContext context) throws JFException {        
                console = context.getConsole();    
            }
            public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
                if ( instrument == this.instrument){
                    console.getOut().println(" bar: " + period  + " " + askBar);
                }
            }

            public void onTick(Instrument instrument, ITick tick) throws JFException {    }
            public void onMessage(IMessage message)               throws JFException {    }
            public void onAccount(IAccount account)             throws JFException {    }
            public void onStop()                                  throws JFException {    }
        });
        // ストラテジー実行中
        
        // ユーザーがコンソールで"stop"と入力したかを毎秒チェックし、入力されたらストラテジーを停止させます。 
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {                
                Scanner s = new Scanner(System.in);                
                while( true ){
                    while( s.hasNext() ){
                        String str = s.next();
                        if( str.equalsIgnoreCase( "stop" ) ){
                            System.out.println( "コンソールコマンドによるストラテジー停止" );
                            client.stopStrategy(strategyId);
                        }
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.start();
       
    }
}



IDEのコンソールで"stop"と入力するとストラテジーが停止します。





スポンサーリンク

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


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


Top

inserted by FC2 system