ウチコムラボ

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));
    }
  }
}
  

デモ口座を作成したら、とりあえず裁量取引(自らの判断で取引すること)でもやってみる。->デモトレード