FX自動売買の自作
dukascopy.jpのJFOREXデモ口座作成
デューカスコピーのトップページからデモ口座開設ボタンを押下するか、 またはデモ口座開設からデモ口座開設ページを表示する。
性、名、メールアドレス、電話番号、仮資金(初期値100万円)、JFOREXまたはMT4の選択(ここではJFOREXを紹介します)、 デモ口座利用規約・個人情報保護方針の承諾チェック、勧誘の許諾チェックをして【デモ口座を開設する】ボタンを押下すると、 30日間有効なID,パスワードが発行されて、メール通知される。
デモ口座は30日たったら、使えなくなる。。
自動投資をやるなら息の長い開発が必要だ。なのに30日経ったら使えなくなってしまう。だったら、自動でデモ口座発行しよう。 実はデモ口座発行ボタンを押すとレスポンスでIDとパスワードが返ってくる。 ということは、HttpClientでポストすればレスポンスからID、パスワードを取得することができる。 そんなことを知らずに、メールが届いたらWebhookでWEBサービスに飛ばして、とか無駄に複雑なことを考えていた。
デモ口座を発行するサンプルプログラム
バッチから抜粋して書き直した。TODOにも書いたが、 電話番号、姓、名、メールアドレスは自分の情報に変更する。
public class Main {
public static void main(String[] args) {
try {
issue();
} catch (Exception e) {
e.printStackTrace();
}
}
static void issue() throws Exception {
var body = createBody("0123456789", "為替", "太郎", "demo@sample"); // TODO 電話番号、姓、名、メールアドレスは自分の情報に変更する
var request =
createRequestBuilder()
.header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
.POST(BodyPublishers.ofString(body))
.build();
var response = client.send(request, BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new Exception(response.body());
}
saveAccount(response.body());
}
static HttpRequest.Builder createRequestBuilder() {
return HttpRequest.newBuilder().uri(createUri());
}
static String createBody(String tel, String lastName, String firstName, String emailAddress) {
var template =
"lang=ja&gmt=+09:00&phone=+81%1$s&lastName=%2$s&firstName=%3$s&email=%4$s"
+ "&country=JP&traderCurrency=JPY&traderBalance=1000000&traderAccount=1&captchaUid=&captchaPhrase=";
return String.format(
template,
tel,
URLEncoder.encode(lastName, StandardCharsets.UTF_8),
URLEncoder.encode(firstName, StandardCharsets.UTF_8),
emailAddress);
}
URI createUri() {
return URI.create("https://jp-demo.dukascopy.com/api/cabinet/demo");
}
void saveAccount(String body) {
var pattern =
Pattern.compile("\"login\":\"(DEMO[0-9a-zA-Z]+)\",\"password\":\"([0-9a-zA-Z]+)\"");
var demoAccount = new DemoAccount();
var matcher = pattern.matcher(body);
if (matcher.find()) {
System.out.println("loginId:" + matcher.group(1));
System.out.println("password:" + matcher.group(2));
}
}
}
デモ口座を作成したら、とりあえず裁量取引(自らの判断で取引すること)でもやってみる。->デモトレード