2009年06月30日の記事一覧

重要指標を表示するインジケータを作ってみる

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
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=&currency=|&importance=|

MT4は、英語しか表示できないので日本は表示可能です)英語のサイトのほうが都合がいいのとcsv形式でリアルタイムに入手できるので解析しやすいのが利点です。

csvファイルを入手して読み込ませる方法もありますが、せっかくなのでインターネットから直接入手します。

MT4には、外部DLLを利用する機能があるので、Windows標準のDLL(wininet.dll)を利用して、インターネットのアクセスを可能にします。
※外部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|

&currency=GBP|CHF|CAD|AUD|NZD|

今回は、ちょっと難しいので少しずつ理解して行ってください。

慣れてきてから、応用するのもありだと思います。

→この記事の続きを読む

タグ