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

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



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

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

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

    @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 {
        if(engine.getOrders().size() == 0){
            engine.submitOrder("order", instrument, OrderCommand.BUY, 0.001);
        } else {
            for (IOrder order : engine.getOrders()){
                if (order.getState() == IOrder.State.FILLED){
                    order.close();
                }
            }
        }
    }

    @Override
    public void onMessage(IMessage message) throws JFException {
        if(message.getType() == IMessage.Type.ORDER_FILL_OK){
            clientActions.onOrderFill(message.getOrder());
        }
        if(message.getType() == IMessage.Type.ORDER_CLOSE_OK){
            clientActions.onOrderClose(message.getOrder());
        }
    }

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

    @Override
    public void onStop() throws JFException {}

}





mainメソッドが無いので、IDEで実行する場合はMain.javaからStrategyPublicMethods呼び出してストラテジーを起動します。
バーが確定する度にポジションを持っていなければ新規オーダーを行い、ポジションを持っていたらクローズを行います。




JForex(取引ツール)プラットフォームでポジションやオーダー履歴を確認出来ます。



スポンサーリンク

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


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


Top

inserted by FC2 system