MainRemote.java
注意事項:
サンプルソースコードには実際にオーダーを発注するものがあります。
サンプルソースコードのストラテジーを起動する場合は、必ずデモ口座で行ってください。
package singlejartest;
import java.io.File;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.strategy.IStrategyManager;
import com.dukascopy.api.strategy.IStrategyResponse;
import com.dukascopy.api.strategy.IStrategyDescriptor;
import com.dukascopy.api.strategy.StrategyListener;
import com.dukascopy.api.strategy.remote.IRemoteStrategyDescriptor;
import com.dukascopy.api.strategy.remote.IRemoteStrategyManager;
import com.dukascopy.api.strategy.remote.RemoteStrategyListener;
import com.dukascopy.api.system.ClientFactory;
import com.dukascopy.api.system.IClient;
import com.dukascopy.api.system.ISystemListener;
public class MainRemote {
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";
private static UUID myStrategyId;
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);
File jfxFile = new File("src/singlejartest/MA_Play.jfx");
if (!jfxFile.exists()) {
LOGGER.error(jfxFile + " jfxファイルが見つかりません。ストラテジーをコンパイルするか、別のパスを選択して下さい。");
System.exit(1);
}
final IRemoteStrategyManager remoteManager = client.getRemoteStrategyManager();
remoteManager.addStrategyListener(new RemoteStrategyListener() {
public void onStrategyRun(IRemoteStrategyDescriptor descriptor) {
LOGGER.info("リモートストラテジー起動: " + descriptor);
if (!descriptor.getId().equals(myStrategyId)) {
LOGGER.info("リモートストラテジーが指定されていません。");
remoteManager.stopStrategy(descriptor.getId());
}
};
public void onStrategyStop(IRemoteStrategyDescriptor descriptor) {
LOGGER.info("リモートストラテジー停止: " + descriptor);
};
});
remoteManager.startStrategy(jfxFile , true );
IStrategyResponse<UUID> startResponse = remoteManager.startStrategy(jfxFile , true ).get();
if (startResponse.isError()) {
LOGGER.error("リモートストラテジー開始エラー: " + startResponse.getErrorMessage());
} else {
myStrategyId = startResponse.getResult();
LOGGER.info("リモートストラテジー開始成功: " + myStrategyId);
}
Set<IRemoteStrategyDescriptor> strategyDescriptors = remoteManager.getStartedStrategies().get().getResult();
LOGGER.info(strategyDescriptors.size() + " ストラテジーはリモートスタートしました。: ");
for (IStrategyDescriptor strategyDescriptor : strategyDescriptors) {
LOGGER.info(strategyDescriptor.toString());
}
}
}
サンプルコードを実行するには、MA_Play.jfxを用意する必要があります。
JForexでMA_Play.javaをコンパイルして、生成されたjfxをIDEのMainRemote.javaソースを置いてあるディレクトリにコピーします。
スポンサーリンク
注意事項:
当サイトはJForexAPIを紹介している非公式サイトです。
自動売買を行うストラテジーや売買シグナルのソフトウェアの配布などは行っておりません。
投資助言も行っておりません、投資助言を必要としている方は投資助言業者に相談して下さい。
当サイトに掲載している情報やサンプルソース利用によって損害が生じてもサイト管理人は責任を負いませんので、全て自己責任でお願い致します。
FX(外国為替保証金取引)は金融商品取引法に規定される通貨関連店頭デリバティブ取引です。
元本あるいは利益を保証した金融商品ではありません。
為替変動・金利変動・アルゴリズムによる急変動・各国要人の気まぐれ発言による暴落等のリスクにより、損失が生じるおそれがあります。
FXは少ない保証金を担保として大きな金額を取引出来る為、投資金額以上の損失を被る可能性があります。
詳細は証券会社の契約締結前交付書面・約款等を熟読して下さい。