EAの新しい配信方法を考えてみる。その1

サムネ
おはようございます。 fx-on.comの岩淵です。 現在fx-on.comで販売しているEAは、どれも売り切りとなっております。 しかしユーザーの利便性を考えると、もっと様々な選択肢があってもいいのではないかと思いました。 ということで以下の3点の実装をチャレンジしてみました。 1.MT4からEAをダウンロード 買った商品をブラウザからダウンロードして、MT4の所定のフォルダに保存は手間かなと思います。 できればMT4から直接ダウンロードしたいものです。 2.デモ版のダウンロード 買ったEAをちゃんと運用できるか? そもそもちゃんと作られたEAなのか? などなど、EAを購入前に不安を感じる人は少なくないのかと思います。 そんな方の為にデモ口座限定で動作するデモ版EAがダウンロードできて使えたら便利じゃないかなと思います。 これを実現するだけなら、fx-onスタッフがweb認証用のコードを挿入するときにデモ制限用のコードを入れた別バージョンも作成すればいいのですが、それだと手間が掛かり過ぎるので自動化に挑戦してみます。 3.使った分だけの支払い EAの値段は決して安くないです。 私がFXを始めた時は軍資金20万円で開始しましたが、20万円だとEA代を回収するのも一苦労です。 今流行?の使った分だけの支払いができるとEA代回収の心配が不要かと思います。 例えば1,000通貨取引毎に代金が2円発生、みたいな感じです。 以上3点に挑戦してみたいと思います。 やることが多いので複数回に分けて投稿していきます。

MT4からEAをダウンロードに挑戦

まずはMT4からファイルのダウンロードに挑戦します。 今回ダウンロードするのはコンパイル済みのex4ファイルです。 テキストファイルはダウンロードが簡単なのですが、テキストと同じようにダウンロードしてもうまく行きませんでした。 バイナリーデータがどうのこうのとか、もし画像ファイルだったらどうやってダウンロードすればいいのかとか色々と迷走した結果がこちらのコードです。
#property version   "1.00"
#property strict

#import "shell32.dll"
int ShellExecuteW(int, string, string, string, string, int);
#import

extern string URL      = "http://labo.fx-on.com/download/"; //ダウンロード元URL
extern string FileName = "hoge.ex4"; //ダウンロードファイル名
extern string Folder   = "Experts"; //保存先フォルダ名

int OnInit(){
   string command;
   command  = "/c @powershell -NoProfile -ExecutionPolicy Bypass -Command";
   command += " \"$d=new-object System.Net.WebClient;";
   command += "$d.Proxy.Credentials=[System.Net.CredentialCache]::DefaultNetworkCredentials;";
   command += "$d.DownloadFile('";
   command += URL;
   command += FileName;
   command += "', '";
   command += TerminalInfoString(TERMINAL_DATA_PATH);
   command += "\\MQL4\\" + Folder + "\\";
   command += FileName;
   command += "')\"";

   if(Shell32::ShellExecuteW(0, "open", "C:\\Windows\\System32\\cmd.exe", command, "", 0) > 32){
      Sleep(5000);
      Print(command);
      MessageBox(FileName + "をダウンロードしました。\n更新または再起動を行って下さい。");
   }

   return(INIT_SUCCEEDED);
}

void OnTick(){}
チャートへ適用するとhoge.ex4をダウンロードしてきます。 hoge.ex4はあらかじめサーバーにアップロードしてあります。 実行前 実行後

処理の仕組み

shell32.dllからShellExecuteW関数を読み込んでいます。 ShellExecuteWを使用して、バックグラウンドでコマンドプロンプトを実行しています。 コマンドプロンプトには実行コマンドをパラメータで渡しています。 この実行コマンドの内容が、「インターネット上の所定のファイルを、所定のフォルダに保存する」という内容になっております。 MQL4だと情報が無くて作成が厳しかったので、コマンドプロンプトを使ってコマンドでダウンロードしてこようという発想です。 MT4からコマンドプロンプトを実行するのは初めての挑戦でしたが、なんとかなるものですね。 これで今回の肝となる部分はできました。 あとはこのEAにボタンなどのUIを作成して、fx-onで購入済みの商品リストを取得する処理を最初に組み込んでやれば目的の処理が作れそうです。 これらは特に目新しい技術は不要なので時間さえあれば作れそうです。 これでダウンロードしたファイルをMT4に設置するのはこのEAを設置する1回だけで済み、あとはこのEA経由でMT4に直接ダウンロードできますね。 ちなみにhoge.ex4は「123456789」をチャートに表示するだけの簡単なEAです。 こちらもチャートに適用してちゃんと実行できることを確かめてみてください。 次回は3/15に投稿予定です。 デモ版のダウンロードということで、サーバー側でソースコードを変更してコンパイルに挑戦します。
商号 株式会社ゴゴジャン
金融商品取引業の登録番号 関東財務局長(金商)第1960号
加入協会 一般社団法人 日本投資顧問業協会
商号 株式会社ゴゴジャン
金融商品取引業の登録番号
関東財務局長(金商)第1960号
加入協会 一般社団法人
日本投資顧問業協会
金融庁日本投資顧問業協会証券・金融商品あっせん相談センター証券取引等監視委員会

Copyright © 2024 GogoJungle Inc. All Rights Reserved.