MinAmounts.java

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



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

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

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


// ストラテジー起動時に、各通貨ペアの最小取引数量でオーダーします。
// ストラテジー停止時にポジションをクローズします。



@SuppressWarnings("serial")
public class MinAmounts implements IStrategy {

    private IEngine engine;    
    private IConsole console;
    private IContext context;    

    public Set<Instrument> instruments = new HashSet<Instrument>() {{
        add(Instrument.EURUSD);
        add(Instrument.XAUUSD);        
        add(Instrument.XAGUSD);    
    }};
    
    @Override
    public void onStart(IContext context) throws JFException {
        engine = context.getEngine();
        console = context.getConsole();
        this.context = context;
        
        // 対象の通貨ペアが登録されているかチェックする
        subscribeToInstruments(instruments);
        
        // 各通貨ペアの最小取引数量でオーダーしますt
        for (Iterator<Instrument> it = instruments.iterator(); it.hasNext();) {
            Instrument instrument = it.next();
            String label = instrument.getPrimaryCurrency() +"order";
            engine.submitOrder(label, instrument, OrderCommand.BUY, getMinAmount(instrument));
        }
    }
    
    // 最小取引数量は1,000通貨。例外としてXAUUSDは1オンス、XAGUSDは50オンス。
    private double getMinAmount(Instrument instrument){
        switch (instrument){
         case XAUUSD : return 0.000001;
         case XAGUSD : return 0.00005;
         default     : return 0.001;
        }
    }
    

    private void subscribeToInstruments(Set<Instrument> instruments){
         
        context.setSubscribedInstruments(instruments);
         
        // 登録されている通貨ペア情報取得の為に最大1sec待ちます
        int i = 10;
        while (!context.getSubscribedInstruments().containsAll(instruments)) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                console.getOut().println(e.getMessage());
            }
            i--;
        }
    }
    
    // ストラテジー停止時にポジションをクローズします。
    @Override
    public void onStop() throws JFException {
        for (IOrder o : engine.getOrders()){
            o.close();
        }        
    }
    public void onTick(Instrument instrument, ITick tick) throws JFException {}
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {}
    public void onMessage(IMessage message) throws JFException {}
    public void onAccount(IAccount account) throws JFException {}


}


注意:デューカスコピージャパンではXAUUSDとXAGUSDは取り扱っていないため、デューカスコピージャパンの口座で行うとエラーになります。



スポンサーリンク

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


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


Top

inserted by FC2 system