PartialClose.java

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



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

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

/**
  このストラテジーは最初にポジションを持ち、部分クローズを3回行ってポジションを全てクローズします
  ポジションが全てクローズされるとストラテジーは停止します。
 */
@RequiresFullAccess
public class PartialClose implements IStrategy {
    
    private IOrder order;
    private IEngine engine;
    private IConsole console;
    private IContext context;

    @Override
    public void onStart(IContext context) throws JFException {
        engine = context.getEngine();
        console = context.getConsole();
        this.context = context;
        context.setSubscribedInstruments(java.util.Collections.singleton(Instrument.EURUSD), true);
        
        order = engine.submitOrder("order1", Instrument.EURUSD, OrderCommand.BUY, 0.01);
    }
    
    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){
            return;
        }        
        if(order.getState() == IOrder.State.FILLED){
            order.close(0.004);
            order.waitForUpdate(2000);
            print(String.format("%s クローズ価格=%.5f, 取引数量=%.3f, リクエストした取引数量=%.3f, クローズ時間=%s, オーダー状態=%s", 
                    order.getLabel(), order.getClosePrice(), order.getAmount(), order.getRequestedAmount(), 
                    DateUtils.format(order.getCloseTime()), order.getState()));
        }
    }

    @Override
    public void onMessage(IMessage message) throws JFException {
        print(message);
        if(order.getState() == IOrder.State.CLOSED){
            print("ポジションが全てクローズされたので、ストラテジー停止します。");
            print(String.format("%s クローズ価格=%.5f, 取引数量=%.3f, リクエストした取引数量=%.3f, クローズ時間=%s, オーダー状態=%s", 
                    order.getLabel(), order.getClosePrice(), order.getAmount(), order.getRequestedAmount(), 
                    DateUtils.format(order.getCloseTime()), order.getState()));
            context.stop();
            return;
        }
    }

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

    @Override
    public void onStop() throws JFException {}

}







スポンサーリンク

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


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


Top

inserted by FC2 system