重要指標を表示するインジケータを作ってみる
50種類以上の通貨ペア、各種CFD(金、株など)対応
作成するといってもかなり難しいので、慣れてきてから応用してください。
いつもなら関数の説明などもしていますが、今回は省きます。
ダウンロードは、ここから。
ImportantNews 重要指標を表示するインジケータ
今回は、WindowsのAPIを利用してインターネット経由で重要指標を取得。
それを解析して、インジケータとして画面にプロットします。
重要指標の入手元は、
DailyFX
http://www.dailyfx.com/
で、ここはcsv形式で重要指標を入手できます。
こんな感じでcsvを入手できます。
http://www.dailyfx.com/calendar/Dailyfx_Global_Economic_Calendar.csv?direction=none&collector=allInFolderDateDesc&view=week&timezone=GMT
http://www.dailyfx.com/calendar/cal.csv?sort=dateDesc&timezone=¤cy=|&importance=|
MT4は、英語しか表示できないので(日本は表示可能です)英語のサイトのほうが都合がいいのとcsv形式でリアルタイムに入手できるので解析しやすいのが利点です。
csvファイルを入手して読み込ませる方法もありますが、せっかくなのでインターネットから直接入手します。
MT4には、外部DLLを利用する機能があるので、Windows標準のDLL(wininet.dll)を利用して、インターネットのアクセスを可能にします。
※外部DLLの利用はデフォルトなしになっているので、インジケータ組み込み時にありにする必要があります。
↑赤丸のところ
ソースのはじめの方に
#import “使いたいDLL”
使いたい関数
#import
という宣言があると思います。
ここで、インターネット接続関係の関数を利用できるようにします。
・インターネット接続確認
InternetAttemptConnect()
・インターネット接続
InternetOpenA()
・URLオープン
InternetOpenUrlA()
・インターネット読み込み
InternetReadFile()
・インターネットクローズ
InternetCloseHandle()
オリジナルで作成している関数は、
ReadHttp()
StrToSplitArray()
の2つあります。
ReadHttp()は、インターネットに接続し、内容を文字列として読み込みます。
StrToSplitArray()は、文字列を区切り文字で分割して配列に格納します。
今回は、DailyFXへインターネット経由でアクセスして、csvファイルを取得していますから、ReadHttp()を使ってアクセスした結果がcsvファイルの内容で、戻り値にstringとしてメモリ上に展開されます。
csvファイルを取得してもらうと分かりますが、改行など無駄な部分もたくさんあるので、start()の中でStrToSplitArray()を利用して、改行を区切り文字として行データを配列へ格納、行データを「,」で分割して各項目データとして取得しています。
start()で行っていることは、
1.15分ごとの更新
2.表示データの削除
3.csvデータ(重要指標)の取得
4.データの分割
5.年月日など表示用に適した形への変換
6.タイムゾーンの一致
7.データの表示
今回のタイムゾーンは、デフォルト日本時間を採用しています。
server_timezone
show_timezone
で設定しています。
サーバ時間と表示時間を分けていますが、通常は同じでかまわないでしょう。
自分の環境に合わせてください。
データ表示で書かれている文字ですが、今の状態の上のほうから書き始めていますので、スクロールなどすると消えてしまいます。
次の更新で復活しますので、その辺は我慢してください。
デフォルトで取得している重要指標はすべてです。
URLの問い合わせで
&importanceFilter=Medium|Low|
&importance=Medium|Low|
などを追加して、Highのみにすることも可能です。
また、通貨ペアのフィルターも可能です。
¤cyFilter=GBP|CHF|CAD|AUD|NZD|
¤cy=GBP|CHF|CAD|AUD|NZD|
今回は、ちょっと難しいので少しずつ理解して行ってください。
慣れてきてから、応用するのもありだと思います。
※日本語は表示できないと本文中で記載しましたが、表示することができます。
「メタトレーダーで日本語を表示してみる」で紹介していますので参考にしてください。
※DailyFXのCSV出力のURL変更、書式変更に対応しました。 ’09/11/10
タグ
2009年06月30日 コメント&トラックバック(10) | トラックバックURL |
カテゴリ: MQL4 インジケータ メタトレーダープログラミング メタトレーダー入門
50種類以上の通貨ペア、各種CFD(金、株など)対応
トラックバック&コメント
トラックバック
-
[...] めたぷろで紹介した「重要指標を表示するインジケータを作ってみる」で紹介した重要指標を表示するインジケータです。 [...]
ピングバック投稿者: ImportantNews 重要指標を表示するインジケータ | MT4 めたぷろ ダウンロードセンター — 2009年06月30日
-
[...] 重要指標を表示するインジケータを作ってみるにコメントを下さった犬養さんに感謝です。 [...]
ピングバック投稿者: メタトレーダーに日本語を表示してみる | メタトレーダープログラミング めたぷろ — 2009年07月10日
コメント
コメントを投稿する



![[image]投資で失敗しない7つの法則:無料CDプレゼント](http://www.affiliatecenter.jp/invest/img/FX_freeCD/banner165x100seven_rule5e.gif)
![[image]無料レポートプレゼント:ドルが紙くずになった時に資産を守る方法](http://www.affiliatecenter.jp/invest/img/dollar/MNL4_165x100.jpg)



MyBlog

[...] めたぷろで紹介した「重要指標を表示するインジケータを作ってみる」で紹介した重要指標を表示するインジケータです。 [...]
めっちゃありがとうございます!!
楽しみにしてました!
これを元にいろいろ勉強してみたいと思います。
少し疑問に思ったのですが
「MT4は、英語しか表示できない」
とはどういう意味でしょうか?
文字スタイルを変えれば、明朝体なども使用できると思うのですが><
英語しかの件は、日本語表示はMetaEditorなどプログラムで使えないっていう意味(メニューなどは可能です)で書いたのですが、私が知らないだけかもしれません。
文字のスタイルを変えるのは、どうやるのですか?
チャート画面でTextのプロパティーを開くと選択があると思うのですが
プログラムだとこうなります。
extern string FontStyle =”HGP創英角ゴシックUB”;
void aaa (string name,int count ,string text ,int x ,int y)
{ObjectCreate(name+count, OBJ_LABEL, 0, 0, 0);
ObjectSetText(name+count, text, FontSize, FontStyle, FontColor);
ObjectSet(name+count, OBJPROP_XDISTANCE, LocationX+x);
ObjectSet(name+count, OBJPROP_YDISTANCE, LocationY+y);
ObjectSet(name+count, OBJPROP_CORNER, Corner);
}
Editorでの日本語表記は
ツール→オプション→ フォント→明朝
です。
ありがとうございます。
興味が少ないと気がつかないものですね。
メタトレーダーでの日本語表示は、記事にして見ます。
[...] 重要指標を表示するインジケータを作ってみるにコメントを下さった犬養さんに感謝です。 [...]
ダウンロードしてみて入れてもたのですが、うまく動かないようです。CSVのリンク先?や項目の配列?が変わっているような気がします。プログラムはあまりわからないので(勉強中)・・・・。
遅くなりました。
指摘通り、URLの変更とCSVのファイル形式が変更になっていました。
対応しましたので、参考にしてください。
ありがとうございます。
早速、参考にして使わさせて頂きます。