• カテゴリー別アーカイブ 「新MT4対応ライブラリによるメタトレーダーEA実践プログラミング」
  • kindle実践本のサンプルプログラムがMT4 Build1080でコンパイルできない理由

    先日発売しました『新MT4対応ライブラリによるメタトレーダーEA実践プログラミング』ですが、そのサンプルプログラムでコンパイルエラーが出て、コンパイルできない場合があります。

    ただし、これはMT4のBuildに依存するもので、Build1065以前のMT4では問題ありません。現在のところ判明しているのは、Build1080のMT4のみです。

    具体的には、コンパイル時に

    ‘i’ – variable already defined    LibEA4.mqh    67    15

    というエラーが表示されます。

    これは、本書ライブラリ「LibEA4.mqh」で発生しているエラーなので、このファイルをインクルードしているすべてのサンプルプログラムでエラーとなってしまうのです。

    このエラーの原因は既に明らかになっています。エラーの発生している箇所は以下の関数です。

    この関数では、

    というコードが2か所に書かれています。同じ関数の中で変数「i」が2か所で宣言されているので、2か所目でエラーが出ていると思われる方も多いでしょう。

    しかし、このファイルの最初に、

    #property strict

    と書かれているので、仕様が若干異なります。詳しくは、

    https://docs.mql4.com/mql4changes

    に説明されていますが、この場合、変数のスコープ(有効範囲)はブロックの中となります。ここでは、for文がひとつのブロックとなるので、それぞれのfor文で宣言した変数は、そのfor文の中だけで有効となります。そのため、各for文で変数を宣言しなくてはいけないのです。

    では、なぜ、Build1080からエラーが出るようになったのかというと、「LibEA4.mqh」に記述してあるにも関わらず、「#property strict」が無視されたからです。どうやら、コンパイルするファイルに直接「#property strict」が記述されていれば、有効なのですが、インクルードする別のファイルに記述しても無視されるようです。

    おそらくこれはバグだと思われますので、現在、メタクオーツ社に問い合わせをしています。今後のアップデートでこのバグが修正される可能性もありますが、もし、これがバグではなく、インクルードファイル中の「#property strict」は無視されるという仕様に変更されたという場合、サンプルプログラムの全部を修正する必要があります。

    具体的には、すべてのサンプルプログラム「*.mq4」の始めに「#property strict」を記述することになります。これは、kindle入門書のサンプルプログラムと同じなので、ご理解いただけると思います。

    もし、Build1080でサンプルプログラムをお試しになりたい方は、とりあえず、上記のようにプログラムを修正してお使いになることをお勧めします。

    今後のメタクオーツ社の対応や、アップデートの情報については、わかり次第ご報告いたします。

    [2017/05/17 追記]
    この記事の不具合はMT4の次のアップデートで修正されると、メタクオーツ社より返信がありました。

    [2017/05/21 追記]
    MT4 Build1090では、この記事の不具合は修正されています。kindle実践本のサンプルプログラムをお試しの方は、MT4 Build1090以降をご利用ください。

     



  • 『新MT4対応ライブラリによるメタトレーダーEA実践プログラミング』発売

    先日予告していましたメタトレーダープログラミングのkindle本がアマゾンで販売開始されました。

    今回、実践プログラミングの本ということで、既出の「FXメタトレーダー実践プログラミング」の改訂版のように見えますが、単なる改訂版ではありません。

    MQL4のプログラミングの入門を終えたばかりの人を対象としていますが、プログラミングのなかでも、EAのプログラムに絞り、カスタム指標のプログラムには触れませんでした。

    いくら詳しく説明しても、MQL4のプログラムは初心者にとっては難しいと思います。そこで、本書の独自ライブラリを使うことを前提として、できるだけ簡単にプログラミングできる方法を紹介しました。

    やはり、ライブラリを使うことでプログラムを簡単にすることができるのは、EAのほうです。また、ほんとに自分でプログラムを作れるようになるには、同じようなパターンの繰り返しが必須なので、EAに絞ることにしました。

    さらに、サンプルプログラムとその説明を読んでわかった気になるのではなく、自分でEAが作れるようになることを目標としたので、これまでの本とは異なり、例題と練習問題を交互に提示する形にしました。

    例題では、売買システムの仕様と、それをプログラミングするための説明をしたうえで、サンプルプログラムを示していますが、練習問題は売買システムの仕様と簡単なヒントのみです。解答例はありますが、例題がわかっていれば説明の必要はないということで、かなり突き放した構成となっています。

    このように、EAプログラミングを自分で勉強するための練習問題集のような内容なので、そういう人を応援するという意味で、アカデミック価格として500円で提供することにしたのです。

    今回もkindle本ということで、編集、校正など自前でやりましたが、表紙デザインだけは外注しました。最終的に「かっぱデザイン。」様に依頼しましたが、担当の方がMT4を利用されており、前作のkindle本もお読みになっていたということで、こちらのイメージにマッチしたデザインを作成してくださりました。素敵な表紙デザインありがとうございました!

     



  • 次回Kindle本の案内

    取り急ぎ、次回Kindle本のカバーと目次です。
    現在、最終校正に入っていますので、来週中には出版できると思います。