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

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



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

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


// このストラテジーは10秒毎に登録されている通貨ペアで新規オーダーを行います。
// 各新規オーダーに定義済みロジック呼び出しを実行するリスナーがストラテジーに含まれています。


@RequiresFullAccess
public class StrategyFillListener implements IStrategy {
  
    private IConsole console; 
    private IEngine engine;
    private StrategyFillListener.ClientActions clientActions;
    int counter;
    String prefix = "strategyOrder";
    
    public interface ClientActions {
        void onOrderFill(IOrder order, IEngine engine);
    }  
    
    // スタンドアローンから起動
    public StrategyFillListener (StrategyFillListener.ClientActions clientActions){
        this.clientActions = clientActions;
    }
    
    // JForexクライアントから起動
    public StrategyFillListener (){        
        this.clientActions = new StrategyFillListener.ClientActions (){
            @Override
            public void onOrderFill(IOrder order, IEngine engine) {}            
        };
    }

    @Override
    public void onStart(IContext context) throws JFException {
        console = context.getConsole();
        engine = context.getEngine();
        
        print("start strategy");
    }
    
    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 {
      engine.submitOrder(prefix + counter++, instrument, OrderCommand.BUY, 0.001);
    }

    @Override
    public void onMessage(IMessage message) throws JFException {
      IOrder order = message.getOrder();
      if(order == null){
        return;
      }
      // 新規オーダー用コールバック
        if(message.getType() == IMessage.Type.ORDER_FILL_OK && order.getLabel().startsWith(prefix)){
            clientActions.onOrderFill(order, engine);
        }
    }

    @Override
    public void onAccount(IAccount account) throws JFException {}

    @Override
    public void onStop() throws JFException {
      for(IOrder o : engine.getOrders()){
        if (o.getState() != IOrder.State.CREATED){
          o.close();
        }
      }
    }

}




スポンサーリンク

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


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


Top

inserted by FC2 system