• 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本のカバーと目次です。
    現在、最終校正に入っていますので、来週中には出版できると思います。



  • 月替わりセール540円1月31日まで

    拙著Kindle本『新MT4対応 FXメタトレーダープログラミング入門』ですが、1月のKindle月替わりセールで4割引きの540円で販売されています。
    MT4の最新版Build1031に対応させるために、内容を更新したばかりです。
    1月31日までですので、この機会にお買い求めください。



  • 「新MT4対応 FXメタトレーダープログラミング入門」更新しました

    皆さん、こんにちは。

    1年前に出版したKindle本『新MT4対応 FXメタトレーダープログラミング入門』ですが、MT4のアップデートに伴い、内容が古くなってきたので、更新を行いました。

    修正箇所をすべて書き出すことはできませんが、基本的に、MT4 Build 1031に合わせてメニュー項目などの修正と一部画像の差し替えを行いました。

    内容としては、細かい誤植の修正が何か所かありますが、以下の部分でちょっと多めに文章の削除、追加を行いました。

    1-1  MT4のダウンロードとインストール

    現在、MetaQuotes社のサイトからMT4をダウンロードすると、MT4ではなくMT5がインストールされるようなので、その旨を追加し、MetaQuotes社のサイトからダウンロードする説明を削除しました。

    3-5  繰り返しを使ったチャート全体への プロット
    チャート全体にプロットのところで、rates_totalとprev_calculatedの説明を少し補足しました。

    本日以降、新規に購入された方には更新版が配信されています。既に購入済みの方については、アマゾンの「コンテンツと端末の管理」をご確認ください。個別に連絡は行かないと思いますが、更新版があることが表示されるか、設定で「本の自動更新」がONになっていれば、自動的に更新されるのではないかと思います。

    なお、更新版では、最初の免責事項のページと最後の著者紹介のページに、MT4 Build 1031対応と記載されています。ご確認ください。

    追記:Kindle本を更新すると、ハイライト、ブックマーク、メモなどのデータが消えてしまいますので、既存の読者全員に更新をお願いするものではありません。今回の更新では、「本の自動更新」がONになっていても、自動的には更新されません。更新しても問題がなければ、一旦、本書を端末より削除してください。その後、アマゾンの「コンテンツと端末の管理」より配信の手続きをすると、更新版が配信されると思います。

    追記の追記:アマゾンの公式見解では、書籍を端末より削除しても更新版は配信されないということです。更新版の配信を希望する場合には、アマゾンの「問い合わせフォーム」から連絡してくださいとのことです。(自分も含めて端末から削除しただけで更新版が配信された人はいるみたいなんだけど、間違った配信なの?)