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

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

4XP => メタトレーダー対応、固定スプレッド、最小1000通貨
50種類以上の通貨ペア、各種CFD(金、株など)対応

にほんブログ村 為替ブログ FX システムトレード派へ

今回は、重要指標を表示するインジケーターを作成します。

作成するといってもかなり難しいので、慣れてきてから応用してください。
いつもなら関数の説明などもしていますが、今回は省きます。

ダウンロードは、ここから。
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|

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

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

※日本語は表示できないと本文中で記載しましたが、表示することができます。

メタトレーダーで日本語を表示してみる」で紹介していますので参考にしてください。

※DailyFXのCSV出力のURL変更、書式変更に対応しました。 ’09/11/10

にほんブログ村 為替ブログ FX システムトレード派へ 人気ブログランキングへ

タグ

トラックバック&コメント

この記事のトラックバックURL:

トラックバック

  1. [...] めたぷろで紹介した「重要指標を表示するインジケータを作ってみる」で紹介した重要指標を表示するインジケータです。 [...]

    ピングバック投稿者: ImportantNews 重要指標を表示するインジケータ | MT4 めたぷろ ダウンロードセンター — 2009年06月30日

  2. [...]  重要指標を表示するインジケータを作ってみるにコメントを下さった犬養さんに感謝です。 [...]

    ピングバック投稿者: メタトレーダーに日本語を表示してみる | メタトレーダープログラミング めたぷろ — 2009年07月10日


コメント

  1. [...] めたぷろで紹介した「重要指標を表示するインジケータを作ってみる」で紹介した重要指標を表示するインジケータです。 [...]

  2. 犬養 より:

    めっちゃありがとうございます!!
    楽しみにしてました!
    これを元にいろいろ勉強してみたいと思います。

    少し疑問に思ったのですが
    「MT4は、英語しか表示できない」
    とはどういう意味でしょうか?

    文字スタイルを変えれば、明朝体なども使用できると思うのですが><

    • kei より:

      英語しかの件は、日本語表示はMetaEditorなどプログラムで使えないっていう意味(メニューなどは可能です)で書いたのですが、私が知らないだけかもしれません。

      文字のスタイルを変えるのは、どうやるのですか?

  3. 犬養 より:

    チャート画面で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);
    }

  4. 犬養 より:

    Editorでの日本語表記は
    ツール→オプション→ フォント→明朝
    です。

    • kei より:

      ありがとうございます。

      興味が少ないと気がつかないものですね。
      メタトレーダーでの日本語表示は、記事にして見ます。

  5. [...]  重要指標を表示するインジケータを作ってみるにコメントを下さった犬養さんに感謝です。 [...]

  6. より:

    ダウンロードしてみて入れてもたのですが、うまく動かないようです。CSVのリンク先?や項目の配列?が変わっているような気がします。プログラムはあまりわからないので(勉強中)・・・・。

    • kei より:

      遅くなりました。
      指摘通り、URLの変更とCSVのファイル形式が変更になっていました。
      対応しましたので、参考にしてください。


コメントを投稿する



この記事のコメントだけのRSSフィードを取得

Spam Protection by WP-SpamFree


FX自動売買ロボット作成マニュアル »
« Excel用にデータを出力してみる