トップ  >  リファレンス  >  サンプルソースコード  >  ストラテジーAPI  >  SwitchOrderCommand.java
SwitchOrderCommand.java

注意事項:
サンプルソースコードには実際にオーダーを発注するものがあります。
サンプルソースコードのストラテジーを起動する場合は、注意して下さい。



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

import com.dukascopy.api.*;
import com.dukascopy.api.IEngine.OrderCommand;
import static com.dukascopy.api.IEngine.OrderCommand.*;

/**
 このストラテジーは起動時に各オーダータイプのオーダーを行い、
その後オーダータイプに応じた情報をログ出力します。
 */

public class SwitchOrderCommand implements IStrategy {

    private IEngine engine;
    private IConsole console;
    private IHistory history;
    
    @Override
    public void onStart(IContext context) throws JFException {
        this.engine = context.getEngine();
        this.console = context.getConsole();        
        this.history = context.getHistory();
        context.setSubscribedInstruments(java.util.Collections.singleton(Instrument.EURUSD), true);
        
        // 条件付きオーダーに使用する価格は最後に受信したBidレートを用います
        double price = history.getLastTick(Instrument.EURUSD).getBid();
        
        // 各オーダーコマンド毎のオーダーを作成する
        OrderCommand[] orderCommands = OrderCommand.values();
        for (int i = 0; i < orderCommands.length; i++){
            try{
                // 成行オーダー
                if (orderCommands[i] == BUY || orderCommands[i] == SELL){
                    engine.submitOrder("order"+i, Instrument.EURUSD, orderCommands[i], 0.001);
                // 条件付きオーダー
                } else { 
                    engine.submitOrder("order"+i, Instrument.EURUSD, orderCommands[i], 0.001, price);
                }
            } catch (JFException e) {
                console.getErr().println(orderCommands[i] + " " + e);
            }
        }
        
        // 全てのアクティブオーダーの情報をログ出力する
        for (IOrder order : engine.getOrders()) {
            switch (order.getOrderCommand()) {
            case BUY:
                print(order.getLabel() + " は成行ロングオーダーです。");
                break;
            case SELL:
                print(order.getLabel() + " は成行ショートオーダーです。");
                break;
            default:
                print(order.getLabel() + " は " + (order.isLong() ? "ロングの" : "ショートの") + " " + order.getOrderCommand()
                        + "条件付きオーダーです。");
            }
        }
        for (IOrder order : engine.getOrders()) {
            print(order.getLabel() + " " + order.getOrderCommand());
        }

    }
    
    // ストラテジー停止時に全アクティブオーダーをクローズする
    @Override
    public void onStop() throws JFException {
        for (IOrder o : engine.getOrders()){
            o.close();
        }
    }
    
    private void print(Object o){
        console.getOut().println(o);
    }

    @Override
    public void onTick(Instrument instrument, ITick tick) throws JFException {}
    @Override
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
        if(instrument == Instrument.EURUSD && period == Period.TEN_SECS){
            for (IOrder order : engine.getOrders()) {
                print(order.getLabel() + " " + order.getOrderCommand());
            }
        }
    }
    @Override
    public void onMessage(IMessage message) throws JFException {}
    @Override
    public void onAccount(IAccount account) throws JFException {}

}







スポンサーリンク

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


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


Top

inserted by FC2 system