MainStopFromConsole.java
注意事項:
サンプルソースコードには実際にオーダーを発注するものがあります。
サンプルソースコードのストラテジーを起動する場合は、必ずデモ口座で行ってください。
package singlejartest_old;
import com.dukascopy.api.system.ISystemListener;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ClientFactory;
import com.dukascopy.api.*;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
public class MainStopFromConsole {
private static final Logger LOGGER = LoggerFactory.getLogger(MainStopFromConsole.class);
private static String jnlpUrl = "https://www.dukascopy.com/client/demo/jclient/jforex.jnlp";
private static String userName = "mzd";
private static String password = "mzd";
public static void main(String[] args) throws Exception {
final IClient client = ClientFactory.getDefaultInstance();
client.setSystemListener(new ISystemListener() {
private int lightReconnects = 3;
@Override
public void onStart(long processId) {
LOGGER.info("ストラテジー起動: " + processId);
}
@Override
public void onStop(long processId) {
LOGGER.info("ストラテジー停止: " + processId);
if (client.getStartedStrategies().size() == 0) {
System.exit(0);
}
}
@Override
public void onConnect() {
LOGGER.info("接続完了");
lightReconnects = 3;
}
@Override
public void onDisconnect() {
LOGGER.warn("切断されました");
if (lightReconnects > 0) {
LOGGER.error("再接続を試みます。残り: " + lightReconnects);
client.reconnect();
--lightReconnects;
} else {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
try {
client.connect(jnlpUrl, userName, password);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}
}
});
LOGGER.info("接続中…");
client.connect(jnlpUrl, userName, password);
int i = 10;
while (i > 0 && !client.isConnected()) {
Thread.sleep(1000);
i--;
}
if (!client.isConnected()) {
LOGGER.error("デューカスコピーのサーバーに接続出来ませんでした");
System.exit(1);
}
Set<Instrument> instruments = new HashSet<Instrument>();
instruments.add(Instrument.EURUSD);
LOGGER.info("通貨ペア登録…");
client.setSubscribedInstruments(instruments);
LOGGER.info("ストラテジー起動");
final long strategyId = client.startStrategy(new IStrategy(){
public Instrument instrument = Instrument.EURUSD;
private IConsole console;
public void onStart(IContext context) throws JFException {
console = context.getConsole();
}
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
if ( instrument == this.instrument){
console.getOut().println(" bar: " + period + " " + askBar);
}
}
public void onTick(Instrument instrument, ITick tick) throws JFException { }
public void onMessage(IMessage message) throws JFException { }
public void onAccount(IAccount account) throws JFException { }
public void onStop() throws JFException { }
});
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Scanner s = new Scanner(System.in);
while( true ){
while( s.hasNext() ){
String str = s.next();
if( str.equalsIgnoreCase( "stop" ) ){
System.out.println( "コンソールコマンドによるストラテジー停止" );
client.stopStrategy(strategyId);
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
}
IDEのコンソールで"stop"と入力するとストラテジーが停止します。
スポンサーリンク
注意事項:
当サイトはJForexAPIを紹介している非公式サイトです。
自動売買を行うストラテジーや売買シグナルのソフトウェアの配布などは行っておりません。
投資助言も行っておりません、投資助言を必要としている方は投資助言業者に相談して下さい。
当サイトに掲載している情報やサンプルソース利用によって損害が生じてもサイト管理人は責任を負いませんので、全て自己責任でお願い致します。
FX(外国為替保証金取引)は金融商品取引法に規定される通貨関連店頭デリバティブ取引です。
元本あるいは利益を保証した金融商品ではありません。
為替変動・金利変動・アルゴリズムによる急変動・各国要人の気まぐれ発言による暴落等のリスクにより、損失が生じるおそれがあります。
FXは少ない保証金を担保として大きな金額を取引出来る為、投資金額以上の損失を被る可能性があります。
詳細は証券会社の契約締結前交付書面・約款等を熟読して下さい。