• MT4入門(3) – カスタムインディケータの作り方(1)

    MT4入門の第3回目です。
    今回は「カスタムインディケータの作り方」ということですが、1回じゃ説明しきれないので、まずは、その1回目として
    「カスタムインディケータの作り方(1) – 雛形から始めよう」
    です。まずは一番簡単な雛形を見ながら、MetaEditor の使い方を含めて説明していきたいと思います。
    下のプログラムは一番基本的な単純移動平均のインディケータを表示するものです。

    ここでは、Sample1_Ind.mq4 というファイル名にしてあります。
    (Sample1_Ind.mq4 のダウンロード)
    ファイル名は何でもよいのですが、カスタムインディケータのプログラムということで、Ind という名前をつけています。
    このファイルを前回説明したフォルダーにコピーしてみましょう。
    C:\Program Fies\MetaTrader 4\experts\indicators
    の下です。コピーした後でMetaTrader を起動してください。
    すると、Navigator ウインドウの Custom Indicators の下に Sample1_Ind という項目が表示されるはずです。ない場合は、コピー先を確認してください。
    ここで、Sample1_Ind に合わせて右クリックすると、サブメニューが現れます。ここでModify を選ぶと、MetaEditor が起動し、Sample1_Ind.mq4 ファイルをオープンします。
    このファイルはわかりやすいように日本語でコメントを書いていますが、もし文字が化けている場合は、
    MetaEditor のメニューの、[Tools] – [Options] で Font を日本語のものに変えてみてください。ここでは、Terminal の10ポイントのフォントに変えてみました。

    この記事では、プログラムのコメントには日本語を使いますが、MetaTrader自身は英語のメニューで説明します。(日本語のメニューが中途半端で逆にわかりにくいためです。)
    MQL4の文法はC言語によく似ているので、C言語をご存知の方は飛ばしてもらって構いません。ここでは、プログラムは初めてという人のために基本的な説明から始めます。
    まず、// から始まる行はコメント行です。実行には全く関係ありません。
    コメント行の使い方は実際のコメントを書いたりすることはもちろんですが、プログラムを書き換えるときに、完全に上書きするのではなく、元の行をコメントにして残しておいて、その次の行に新しく書くようにすることをお勧めします。そうすると、書き換えた箇所がはっきりしますし、もし問題があれば簡単に元に戻すことができます。
    複数行をまとめてコメントにしたい場合は、/**/ で、囲みます。これもC言語と同じ仕様です。MetaEditor 上ではコメント行がグレーで表示されます。
    次に、#property から始まる行が並んでいます。
    この # から始まる命令はプリプロセッサ命令と呼ばれるもので、プログラム全体に関わる設定です。
    まず、
    #property copyright “Copyright ゥ 2006, Toyolab FX”
    #property link “http://forex.toyolab.com”

    この二つは著作権とリンクを表すだけで実際の実行とは関係ありません。
    次に
    #property indicator_chart_window
    は、インディケータをチャート上に表示することを指定します。
    オシレータのように別のウインドウに表示させたい場合は、代わりに
    #property indicator_separate_window
    と書きます。
    #property indicator_buffers 1
    は、表示させたいインディケータの数を指定します。この場合、1個です。
    とここまで説明したところで力尽きてしまった(^^;ので、プログラムの説明の続きは次回ということで、とりあえずコンパイルしてみましょう。
    コンパイルは、MetaEditor のメニューの[File]-[Compile]を選ぶかF5キーを押すだけで実行されます。下のウインドウに
    0 error(s), 0 warning(s)
    と表示されればOKです。

    ついでですが、右側のNavigator ウインドウに、MQL4のクイックレファレンスがあります。詳しく知りたい方はここから調べてみてください。私もこれを調べながらMQL4の勉強をしています。
    さて、コンパイルされたカスタムインディケータは、MetaTraderのNavigator ウィンドウの Sample1_Ind のところでダブルクリックするか、メニューの[Insert]-[Indicators]-[Custom] から選ぶと、チャートに表示されます。
    このインディケータは単純移動平均なので、こんな感じです。

    なんか地味ですが、これからバージョンアップしていきます。
    お楽しみに。
    にほんブログ村 為替ブログへ為替ブログランキング 現在9位
    へーっと思った方はクリックにご協力ください↑



  • MT4入門(2) – MQL4で何ができるの?

    MT4入門の第2回目は、「MQL4で何ができるの?」です。
    MQL4というのはMetaTrader4で使われるプログラミング言語のことです。
    普通のチャートソフトや業者のウェブサイトで提供されているチャートにも、いくつかのテクニカルインディケータを表示させることはできます。表示されるインディケータが予め決まっている場合、プログラミング言語を搭載する必要はありません。
    しかし、ユーザーが自分でインディケータを作る場合には、プログラムによってそのインディケータを定義する必要があります。そのための決まりごとがプログラミング言語として定められているわけです。MQL4 は、MetaQuotes Language Veriosn 4 の略ですが、MetaQuotes が開発した言語ということです。
    MQL4で何ができるかということは、MQL4で書いたプログラムがMetaTrader の中でどういう働きをするかということになります。
    MQL4プログラムを作るためには、MetaEditor というプログラムを使います。これは、mq4 という拡張子のファイルをダブルクリックすることでも起動できますし、MetaTrader のメニューの[Tools]-[MetaQuotes Language Editor]からも起動されます。
    MetaEditorから、[File]-[New] を選ぶと次のような画面が表示されます。これがMQL4でできることです。

    ここで関係があるのは上の二つ
    Expert Advisor
    Custom Indicator

    です。そのうち、下のCustom Indicator というのは、文字通り、チャート上に表示させるインディケータを自分で作ったものです。
    上のExpert Advisor というのはインディケータなどがどういう条件のときに売買するかというルールを書いたプログラムです。これは、チャートにアタッチしておけば、そのチャート上で自動的に売買が行われますし、Strategy Tester で過去のデータに対して適用させてバックテストを行うことができます。
    参考までにその下のScriptというのは、いくつかの決まった操作をまとめてやるためのプログラム、エクセルのマクロのようなものです。さらにその下のLibrary、Include は、MQL4 のプログラムを作るためのプログラムみたいなもの、なので、上級者向けと考えていただいて結構です。
    ここでは、MQL4でできることに、Expert Advisor とCustom Indicatorの大きく二つあると理解してください。それぞれのプログラムは .mq4 という同じ拡張子のファイルとして作成されますが、ファイルの置き場所、プログラムの書き方、MetaTrader上での実行の仕方などすべてにおいて異なるので注意してください。
    まずはプログラムファイルを置く場所について見てみます。
    MetaTraderは通常、以下のフォルダーの下にインストールされます。
    C:\Program Files\MetaTrader 4\
    ここをMetaTraderをインストールしたフォルダと呼びます。このフォルダーを開くとさらにたくさんのサブフォルダーが現れます。たいていの人はここでわけがわからなくなって戻ってしまうでしょうが、ここで関係があるのは、experts というフォルダーです。
    下の図のようにExpert Advisor のプログラムは experts フォルダーに入っています。
    またCustom Indicator のプログラムは experts フォルダーの下の indicators フォルダーに入っています。
    MetaTraderFolderSelect.png
    これらのフォルダーに入っている mq4 ファイルは、MetaTrader 起動時に自動的に ex4 ファイルに変換されます。
    ここで mq4ファイル とex4ファイル の違いですが、mq4ファイルは、人が読めるテキストとしてプログラムが書かれていますが、ex4ファイルはテキストではないので直接人が読むことはできません。しかし、MetaTrader 自身がコンピュータプログラムなので、人が読みやすいテキストファイルはそのままでは実行しにくいので、MetaTrader が実行しやすい形に変えておく必要があるのです。これがコンパイルという操作で、通常のプログラムを作るときに行っているのと同じことです。
    実際にはex4ファイルさえあればMetaTrader で実行できるわけですが、ex4ファイルだけではプログラムの変更ができません。しかし、プログラムの中身を他人に知らせたくないけど、使ってもらいたいときに、ex4ファイルだけを配布したりすることがあります。販売されているインディケータやシステムはex4ファイルだけというのが多いです。
    ところで、ex4ファイルであれば中身が絶対にわからないかというとそうではなく、ex4ファイル中の人には読めない命令を解読すれば中身がわかることもあります。でも、それをやるには相当の技術が必要となりますし、仮にできたとしても解読したものを著作権者に無断で配布するなどは著作権法に違反するので注意が必要です。
    この連載では、mq4ファイルを自分で作ることが目的ですので、これからは mq4 ファイルの書き方について説明していきます。
    次回はカスタムインディケータの作り方の予定です。
    にほんブログ村 為替ブログへ為替ブログランキング 現在14位
    へーっと思った方はクリックご協力ください↑



  • MT4入門(1) – MetaTraderって何?

    いきなり始まりましたMT4(MetaTrader4)入門シリーズ第1回です。
    まず、MetaTraderって何?ということですが、既にチャートソフトとしてMetaTrader を使っている人は多いと思います。
    が、ここで説明するのは、カスタムインディケータやトレーディングシステムを作るためのプログラミング言語についてです。
    さらに、トレーディングシステムを過去のデータに対して適用させるバックテストのやり方についても説明していきたいと思います。
    ところで、MetaTraderの前に他の同様なソフトをいくつか紹介します。
    TradeStation
    海外では非常に有名なトレーディングプラットフォームです。
    EeasyLanguage という言語でシステム記述でき、バックテストや自動売買などができます。
    トレーディングシステムをEeasyLanguage のコードとして掲載している本も多数あります。
    但し、有料で月々の支払いが必要となります。
    eSignal
    これも海外で有名なトレーディングプラットフォームです。eSignal’s formula script (EFS)という言語でシステムを記述できます。月々の支払いの必要な有料ソフトです。
    VT Trader
    FXA証券など国内の業者で採用しているところがあるので、デモアカウントで無料で使うことができます。プログラミング言語を装備しており、インディケータやシステムを記述することができます。
    IntelliChart
    FXに特化したチャートソフトです。デスクトップ版とWeb版があり、それぞれ月払いの有料ソフトです。
    IntelliScriptという言語で、インディケータやシステムを記述することができます。
    データはFXCMから供給されています。
    他にもいくつかあるのですが長くなるので本命の MetaTrader を紹介します。
    MetaTrader3
    既にMetaTrader4 が出ているので開発は終了していますが、パッケージが小さく軽いので、このバージョンを採用しているブローカーもあります。デモアカウントで無料で使用できます。MQL2 という言語でインディケータ、システムを記述します。
    MetaTrader4
    MetaTrader3の後継ソフトです。同じくデモアカウントで無料で使用できます。これを採用しているブローカーもいくつかあります。MQL4という言語でインディケータ、システムを記述でき、ストラテジーテスターというバックテストを行う機能が強化されています。但し、MQL2との互換性はありません。
    私も最初は MetaTrader4をチャートソフトとしてしか使っていなかったのですが、システムトレーディングをやり始めると、結構便利なことが多いのに気が付きました。
    まず、お勧めなのは無料で使えるという点です。これからシステムトレーディングを始めようという人には非常に導入しやすいと思います。
    でも、無料だからといって機能的に劣るわけでもありません。MQL4はC言語に近い文法になっており、ファイルやメールに関する関数も組み込まれており、外部ソフトとの連携もしやすくなっています。私は個人的にこの辺が気に入っています。
    この連載記事では、MQL4 を使ってカスタムインディケータ、トレーディングシステムを作り、そのシステムをバックテストする方法まで解説していきたいと思います。
    ただ、不定期な連載になると思いますし、内容が合わない人もいるかと思いますので、同じような内容を掲載しているサイトやブログを紹介しておきます。
    お急ぎの方はそちらへどうぞ。
    SKILL UP FX!
    為替ロボット
    プログラマーなFX
    はー、長くなった。次回は「MQL4で何ができるの?」についてを予定しています。
    にほんブログ村 為替ブログへ為替ブログランキング 現在15位
    へーっと思った方はクリックご協力ください↑



  • バックテストの薦め

    データは非情です。今日はそんな話です。
    まず、この資産曲線を見てください。

    これは、このブログの「今週の手ぶらで取引」で報告している資産曲線です。
    去年9月からのバックテスト、途中からフォワードテストの結果です。
    システムトレーダーの方なら、ちょっとバックテストの期間が短いと思われることでしょう。
    確かにそうです。しかし、1分足チャートのデイトレシステムなので、これまで去年の9月からしかデータがなかったし、トレード数は300近くあるので、十分だろうと考えていました。
    最近、BIG WAVE のTEDさんより1分足のヒストリカルデータを公開しているサイトを教えてもらいました。
    MetaTrader をプラットフォームとして採用しているalpariというブローカーです。
    そこで、2004年6月からの GBP/USD のデータを入手し、早速バックテストを行って見ました。
    これが驚愕の結果です。

    なんと私がバックテストを始めた去年の9月からは上昇しているものの、その前はずっと下がり続けているではありませんか。
    ちょうど都合のいいところだけ見ていたわけです。これだと最大ドローダウンが300pipsなんて幻です。
    2000pips以上のドローダウンがあるシステムだったのです。
    これを見て自動取引システムを停止させたのは言うまでもありません。
    これでまた一つシステムを失ってしまいました。しかし、今回の教訓は、
    「システムのバックテストの精度は単に期間や回数だけの問題ではない。重要なのはそのシステムが安定かどうかである。」
    ということです。
    要するに今回のシステムはプライスのわずかなずれや、パラメータの変動に過敏に反応するシステムだったのです。明らかにカーブフィッティングだったわけです。
    また得意技のカーブフィッティングをやってしまいました。
    またやり直しです。
    にほんブログ村 為替ブログへ為替ブログランキング 現在10位



  • あなたはシステムを信用できますか?

    システムトレーディングに関して以前、何かで読んだのですが、
    儲かるシステムはたくさんあるが、それを使いこなせるシステムトレーダーは少ない
    ということです。なるほどと思う人はどれくらいいるでしょうか?
    私も最初は、裁量取引では感情に流されてしまい、正確な判断ができないが、システムトレーディングでは感情を排除しているので、流されやすい弱い人間もできる取引だと思っていました。
    しかし、それは間違いで、いくらシステムに従って売買をしていたとしても、そのシステムに不信感をもってしまうと、システムに従うことが裁量取引以上の苦痛になってしまい、その結果、そのシステムトレードをやめてしまうことが多くあります。
    ここでやめたシステムは本当に悪いシステムだったのでしょうか?たいていの場合、そうではありません。普通システムを採用する場合、何らかのバックテストの結果を参考にします。たいてい長期にわたるバックテストの方が信頼できます。しかし、ここに落とし穴があります。仮に長期にわたり、資産曲線がきれいに増えているように見えたとしても、短期的にはかなりの凹凸があるのです。
    そういう短期的に落ち込みがあることを認識しないでシステムトレーディングを始めてしまうと、ちょっと負けが続いた時点でシステムに不信感をいだいてしまいます。ここで感情に流されてやめてしまえば、本当は儲かるシステムを使いこなせていないわけです。
    裁量でもシステムでも、デモアカウントでうまくいったから、リアルアカウントでも同じようにいくだろう、と安易に考えるのは危険です。人間はリアルマネーの前では人間ではなくなります。システムトレーディングは裁量トレーディングよりも遥かに強い感情との戦いなのかもしれません。
    にほんブログ村 為替ブログへ為替ブログランキング 現在13位