2014/09/05

なんとな~くWebRequest()が使ってみたくなって。。。イベントタイマーを作ってみました。

新MT4で新たに追加されたWebRequest()関数を使うことで、外部のサーバーにリクエストを送ることが可能となりました。(DLLを使用したり、ほかの言語を使用すれば、もちろん可能ですが。。^^;)ということで、今回は、DLLや多言語を使用することなく、外部サーバーから指標データを取得し、表示させてみました。

準 備

まず、WebRequest()関数のリファレンスを確認すると、この関数を使用する場合は、【ツール(T)】-【オプション(o)】―【エキスパートアドバイザー】で《Allow WebRequest for listed URL:》にチェックを入れ、外部サーバーのアドレスを追加しておきます。
今回は、DailyfxJapanを使用させて頂くので以下のようにしています。
opustion
その他の注意事項として、WebRequest()関数は、非同期関数で、EAもしくはスクリプトのみ使用可能。インジケーターで使用すると【error 4060 – "Function is not allowed for call".】と怒られます。∑(゚∀゚ノ)ノキャー今回は、EA上で使用することにしました。

 


実行してみると・・・

karenda
今回作成したEAをココに置いておきます。使用する際はEAとして使用してください。※2014/9/8EAを一部変更しました。
また、サーバーから取得したhtmlファイルは、MQL4/Filesに保存されます。


課題やら留意した点やら問題点

1.結局WebRequest()関数のテストをしようと思って作り始めたのですがリファレンスの例をそのまま使用しています。..orz
2.保存したHTMLファイルは、Shift_JISで保存しているのでブラウザで開くと文字化けする。(本来は、UTF-8)
3.StringSetChar(A,B,'文字')関数の文字部分は、”ストレートクォーテーションマーク”を使用するとバグが発生しましたので
  ’アポストロフィー’を使用しました。リファレンスも ’アポストロフィー’を使用しています。
4.終日イベントの時間を00:00としているので、00:00を過ぎると表示されなくなる。。orz
5.LABELオブジェクトを使用したので、表示させる文字数が多すぎるとすべてが表示されない。。orz
6.週末すべてのイベントが終了すると寂しい。土曜日に実行しても同じ。。。


まとめ

ん~なんだか中途半端な気がします。。^^;

4 件のコメント :

弱気なブルート さんのコメント...

初めまして(こちらでは)
以前Mizutoriでもお世話になっていました

指標表示、ありがたく使わせていただいていましたが
今年に入ってから表示されなくなってしまいました
htmlも今年に入ってから取得できていないようです
原因がわからず困っています
サイトの仕様変更とかなのでしょうか?
よろしくお願いいたします

bighope さんのコメント...

弱気なブルートさんへ
以下の部分を修正してみてください。
///////////////////////////////////
変更前
//ファイル名の作成
nweek = 2 +(TimeDayOfYear(TimeLocal())+TimeDayOfWeek("D'"+(string)Year()+".01.01'")-DayOfWeek()-9)/7;
//////////////////////////////////
変更後
nweek = 3 +(TimeDayOfYear(TimeLocal())+TimeDayOfWeek("D'"+(string)Year()+".01.01'")-DayOfWeek()-9)/7;
変更は、定数2を3に変更するだけです。これで作動すると思います。
では^^;

弱気なブルート さんのコメント...

早速の回答ありがとうございます。
修正し、コンパイルしてみましたが、表示されませんでした。
MT4を再インストールしたり、ほかのPCにインストールして試したりしてみましたが、やっぱり駄目でした。
いろいろ試していたので返事が遅くなり申し訳ありませんでした。
もう少し、ほかのことも試してみたいと思います、ありがとうございました。

bighope さんのコメント...

弱気なブルートさんへ
表示できませんでしたか?
配信元のdailyfxさんが閉鎖されたため確認方法が無くなってしまいました。
もしかしたらサイトの閉鎖も原因の一つかもしれませんね。
これもフランショックの一部でしょうか?
お力になれず申し訳ありません^^;