2011/04/14

MT4用EA開発時代 - 独自インジケータを作ってみた



さて前回は、 旧SmoothMADIシステム 」の「ウォークフォワード分析 」結果を纏めようとしたところ、設定ミスがあり再スキャン中でForexTester2が使えないので、MetaTrader4(以下MT4)によるEA開発を進めるべく、FX業者を仮決めしたところまで話しました。
今回は、さっそく「旧SmoothMADIシステム 」のMT4EA化に向けて、「SmoothMADI 」「SmoothMABand 」というMT4で2つの独自インジケータを作っている様子を書いてみたいと思います。

さて、MT4をインストールして、過去データをたくさん取り込みたかったが、前回仮決めしたC社は、過去データが少ないところらしい。

でも、よくよく考えてみると、トレード手法という意味では、ForexTester2で検証すればいいので、過去データ取得に労力をかけることはやめることに。

なので、さっそくMQL4なるMT4のインジケータやEAを開発する為の言語を勉強せねば!
といっても、過去使い倒したC言語と似ているという事もあるので、ForexTester2よりかは構文的には結構楽。

とはいいつつも、相変わらずヘルプは英語だし、MQL4が故のクセも知りたいので、MT4関連書籍2冊を購入。


FXメタトレーダー入門」  2,940円







累積していく購入書籍代と新規購入したPC代、

元が取れる日が来るのだろうか。。。


さっそくインストールにあたって本を読むと、我がPCのOSであるWindows7(書籍ではVista以上と書かれていた)だと注意点が!!
#実はそもそもMT4自体がWindows7を正式サポートしてないっぽい。。

インストールするときは、デフォルトのインストール先ではなく、”C:\Users\[ユーザ名]\”の配下にMT4をインストールしなきゃいけないらしい(セキュリティ制御の関係らしい)。

そして、MT4からMQL4プログラミングをする画面を起動。
そして、新規作成で表示されるウィザードに従って、テンプレートが完成。

そしてパコパコと、プログラミングを進めていると。




落ちた。。。



直前に保存してあったソースでプログラミング再開。




落ちた。。。

どうも、文字列をCtrl+Cでコピーしたとき落ちるっぽい。
そしたら、マウスの右クリックのメニューから文字列コピーしたらどうなる?




落ちた。。。


Windows7/64bitが原因かなぁなんて事をTwitterでつぶやいていると、またしても神の手が!!
IMEの設定がよくないみたい。
#確かに本にも書いてあった。。。

つまり、「Micro Office IME 2010」だとダメみたいで、
「Microsoft IME」への変更が必要とのこと。



購入した本に書いてある事。

ちゃんと読めよ


その後は、わりとサクサクとプログラミングが進んで無事独自インジケータ2つとも完成!

でも2点程、ForexTester2と構造が異なる事が。

それは、ForexTester2で独自インジケータを作る場合、バーが進む毎にコールバックされる関数に、インデックスが引数指定されてくるが、MT4にはそのインデックスが無い!

そこで登場するのが、「IndicatorCounted()」なる関数で、過去変化しなかったバーの数が返却される。これと、Barsを組み合わせて自分でループ処理を書かなければいけないって所。

もうひとつは、チャート上非表示にしたい途中計算用のバッファを作るときの構造。MQL4の通常のバッファ準備方法ではダメで、別途ForexTester2みたく、バッファを作成するAPIの呼び出しが必要な点。

あとは言語は異なるものの、考え方はほぼ同じ。

そして、楽勝!なぁんて思いながら「FXシステムトレード初心者奮闘記」は、MT4のEA開発へと進むのでした。これが思った以上に難敵とも知らずに。
#いつも助けていただいている方、ありがとうございます!
#まだ「ウォークフォワード分析 」のスキャン、4/5実行中。

0 件のコメント:

コメントを投稿