今回はMQL4プログラミングでエラーが出てしまう原因について解説をしていきます。
MQL4プログラミングをしていれば、必ずエラーが発生します。
エラーが発生したら、その原因を突き止めて解決しなければいけません。
せっかく頑張って書いたコードがエラーで動かない・・
とても悲しいですよね。
しかし、諦めてしまうのはもったいないです。
MQL4プログラミングを初めて見たけどもエラーが発生してしまい悩んでいる。そんな方に向けてこの記事を書きました。
この記事を最後まで読めば、エラーを解決できるヒントが見つかるはずです。
この記事の目次
MQL4プログラミングにおけるエラーとは?
MQL4プログラミングにおけるエラーとは、作成したプログラムが正常に動作がしないことを言います。
エラーにも大きく2つあり
- コンパイルエラー
- コンパイルできたけど正常に動作しない
コンパイルとは、自分が書いたプログラムをコンピューターが実行可能なソフトにしてくれる機能です。
まずコンパイルの段階で実行できないと判断した場合、コンパイルエラーとなってしまい使用できません。
コードのどこかに異常があるため動かないですよ、というメッセージがメタエディターから届きます。
さらにコンパイルできたとしても正常に動かない場合もあります。
これもどこかしらコードに問題があるため正常に動作しない場合が多いです。
プログラミングをしていればエラーは必ず起きる現象のため、必ず越えなければいけない壁であると思います。
というのも私も完璧ではないため、今でもコンパイルをした後エラーが出てしまうことはあります。
しかしエラーの解決方法をある程度知っているため、すぐに修正して正常に動作せせることができるのです。
エラーが出てしまうのは仕方ないことなので、エラーを解決できる問題解決能力を身に付けましょう。
MQL4プログラミングでエラーが出てしまう原因とは?
エラーの原因を突き止めて修正することで正常に動作するようになります。
エラーが出てしまうのには、必ずどこかに原因があります。
例えば、プログラミングでは空白は半角スペースを入れるのですが、どこか1か所にでも全角スペースが入っているとエラーが出てしまいます。
もしも全角スペースが入っていてエラーになっていた場合、どこかに全角スペースが入っていないか?チェックしなければいけません。
また数値が適切に読みこめていない場合もエラーになります。
また書いてあるプログラムが実際には通らないのが原因でエラーになる場合もあります。
などなどエラーの原因は他にもたくさんあります。
MQL4プログラミングを行うにあたって、エラーはつきものなため原因を1つ1つ修正する必要があります。
また思ったところにサインが出ない場合は、サインの条件文が正しくないこともあります。
例えば、RSIの値が70以下から70以上になったときにサインを出したいという条件でプログラムをするとき、
ただRSI>=70と書いてしまうと、RSIが70以上の時に連続してサインが出てしまいます。
そのため、1本前のRSIは70以下で現在足のRSIが70以上の時にサインという感じで書いていけば、思った通りの場所にサインが出るはずです。
上記のケースではエラーとまではいかないけども、思った通りに動かないのを修正し、完成させていくという流れになります。
僕も初めは1つのインジケーターを作るのに1週間以上かかりました。
しかも作成したのは移動平均線からローソク足の終値が5pips以上離れたらサインを出すという、簡単なサインツールです。
全部プログラムを書けたと思ってコンパイル(確定のこと)を押したら、エラーメッセージがたくさん出てきたときは正直焦りました。
1つ1つエラーの原因を調べて、コンパイルできた!と思ったら今度はサイン矢印が出ない・・
そんなこんなを繰り返していたら1週間くらいたってしまったという経験があります。
ただ、エラーが出ても途中で諦めずに最後まで作った経験が現在につながっていると思っています。
エラーの原因を調べたり、人からアドバイスをもらいながら、自分自身で完成させたことでプログラムのスキルを付けることができました。
エラーを何度も経験することで、今では簡単なツールでしたら1時間もあれば作れるようになりました。
エラーが出ても諦めずに最後まで完成させるのがとても大事です。
MQL4プログラミングで出現する代表的なエラーとは?
MQL4プログラミングで出現する代表的なエラーも紹介していきましょう。
- 変数が定義されていない
- {}の位置が合わない
- 全角スペースが入ってしまっている
- ;(セミコロン)の付け忘れ
大体パターンがあるため覚えておくといいですね。
変数が定義されていない
まず1つ目のエラーは、変数が定義されていないケースです。
このエラーの意味は、一番上ならeprice2という変数が定義されていないのに文中で使われていますよ。という意味です。
プログラミングでは一度変数の定義というものを行ってから、変数を使っていく流れになります。
変数が定義されていないのにつかわれている場合、上のようなエラーが出てしまいます。
{}の数が合わない時
{}が抜けている場合は、上記のようなエラーが出てしまいます。
「 { 」の方はあるのに、「 } 」が抜けている場合などに上記のエラーは発生します。
カッコが合っていない場合、{ が合っていないよー。というエラーメッセージが表示されるためわかりやすいとは思いますね。
全角スペースがはいっている
全角スペースが入っていてもエラーが起こります。
基本的には全角スペース以降より下の文にエラーメッセージが出ます。
そのためエラーメッセージの一番上の行付近に全角スペースが入ってしまっている可能性が高いです。
これを知らずに上からすべてスペースをチェックして、かなりの時間を無駄にしたため覚えておくとよいでしょう。(笑)
セミコロン(;)の付け忘れ
全角スペースと同じエラーで、セミコロン(;)の付け忘れでもエラーは出ます。
各文の終わりにセミコロンを付けなければいけないのですが、セミコロンを付け忘れると、付け忘れた文より後ろでエラーメッセージが表示されます。
エラーメッセージ付近でセミコロンを付け忘れていないかチェックしましょうね。
コンパイルエラーを解決するデバック方法を紹介!
エラーを解決するデバックの手順を解説していきましょう。
まずはエラーメッセージが確認出来たら、エラーメッセージの行付近にエラーが発生している可能性が高いです。
今回は278と58行付近を見ていきます。
{}が書いてあるため{}を見ていきます。
58行付近です。
見てみると、init関数の}が抜けていてそのままstart関数に入ってしまっています。
エラーの原因はおそらくここです。
return(INIT_SUCCCEDED)の後に}を入れたらエラーは解消されました。
こんな感じでエラーメッセージが表示されている行の周りに何か原因がある場合が多いです。
エラーコードが出ている文の付近をもう一度確認し、怪しい部分を修正してエラーがなくなるか確認してみる。
これを繰り返せばエラーは解決できます。
エラーが出てしまい諦めてしまってはこれまでの努力が無駄になってしまうため、諦めずに完成させましょう。
MQL4プログラミングでエラーが解決できない時はどうしたらいい?
上記で説明した流れで行ってもなかなかエラーが解決できないこともあります。
自分が怪しいと思った部分を修正したがまだエラーが出てしまう・・
こんな場合もあります。
エラーが何時間も解決できない場合は、私は一度思考を整理するために、作業から離れます。
エラーがなかなか解消できない場合は、思考がごちゃごちゃになっていることが多いからです。
思考を整理して次の日などに、もう一度見直してみると治る場合はよくあります。
それでもエラーがなくならない場合は詳しい人に聞くのがよいです。
自分よりも詳しい人に聞けば、同じエラー経験をしたことがある場合も多いため改善できる可能性が高いです。
一度思考回路を落ち着かせて、どうしても解決できなかったら詳しい人に質問してみる。
エラーが解決できなかった場合は、上記のような流れで解決していくとよいと思います。
まとめ
- MQL4プログラミングにおけるエラーとは作成したプログラムが正常に動作がしないことを言います
- エラーが出てしまうのは仕方ないことなので、エラーを解決できる問題解決能力を身に付けるのが大事
- 変数が定義されていない・{}の数が合わない時・セミコロン(;)の付け忘れ・全角スペースがはいっているなどが代表的なエラーとなる
- エラーが出た場合はエラーメッセージで出た行付近のプログラムが正しいかどうか確認するとよい
- もしも解決できない場合は一旦思考を整理して、それでも解決できなければ詳しい人に相談してみるとよい
MQL4プログラミングを行うときはエラーは必ず出てくるものですので、すぐに諦めるのではなくて解決できるようになるまでエラーの原因を追究してください。
僕も初めはわけのわからないエラーメッセージが出てきて何日も解決できなかったことがありました。
自分ではなかなか気づけないが、詳しい人が見たら大したエラー出ない場合が多いため、どうしても解決できない場合は詳しい人に聞くのが一番いいと思います。
当サイトでもプログラミングスクールをやっておりますので、本気でMQL4プログラムを勉強したいと思っている方は、ぜひこちらをご覧になってください。