MainPublicMethods.java
注意事項:
サンプルソースコードには実際にオーダーを発注するものがあります。
サンプルソースコードのストラテジーを起動する場合は、必ずデモ口座で行ってください。
package singlejartest;
import com.dukascopy.api.system.ISystemListener;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ClientFactory;
import com.dukascopy.api.IOrder;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import java.util.HashSet;
import java.util.Set;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
public class MainPublicMethods {
private static final Logger LOGGER = LoggerFactory.getLogger(MainRemote.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("Disconnected");
if (lightReconnects > 0) {
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("ストラテジー開始");
client.startStrategy(new StrategyPublicMethods(new StrategyPublicMethods.ClientActions() {
@Override
public void onOrderFill(IOrder order) {
LOGGER.info("新規オーダー。クライアント側でロングオーダーしたらストップロス設定を実行します。");
if(order.isLong()){
try {
order.setStopLossPrice(order.getOpenPrice() - order.getInstrument().getPipValue() * 10);
} catch (JFException e) {
e.printStackTrace();
}
}
}
@Override
public void onOrderClose(IOrder order) {
LOGGER.info("クローズオーダー。クライアント側で実行します。");
}
}));
}
}
スポンサーリンク
注意事項:
当サイトはJForexAPIを紹介している非公式サイトです。
自動売買を行うストラテジーや売買シグナルのソフトウェアの配布などは行っておりません。
投資助言も行っておりません、投資助言を必要としている方は投資助言業者に相談して下さい。
当サイトに掲載している情報やサンプルソース利用によって損害が生じてもサイト管理人は責任を負いませんので、全て自己責任でお願い致します。
FX(外国為替保証金取引)は金融商品取引法に規定される通貨関連店頭デリバティブ取引です。
元本あるいは利益を保証した金融商品ではありません。
為替変動・金利変動・アルゴリズムによる急変動・各国要人の気まぐれ発言による暴落等のリスクにより、損失が生じるおそれがあります。
FXは少ない保証金を担保として大きな金額を取引出来る為、投資金額以上の損失を被る可能性があります。
詳細は証券会社の契約締結前交付書面・約款等を熟読して下さい。