メッシです。
前回の続きになりますが、今回は実際にメタエディタに文字を入力してみるところまでをお話したいと思います。
※前回の内容はこちらからどうぞ → 第1回 FX初心者でも作れるEA(自動売買)の自作方法とは?今さら聞けない基礎的なことから解説
コードを書くにあたり、どこにどうやって書いていくのかなど書き方のルールがありますので、しっかり押さえていきましょう。
ということで今回は、メタエディタの構成の解説~コード入力のルールに関してお話したいと思います。
目次
メタエディタの構成について
前回はメタエディタを起動させ、行の左に「//」が付いている行を消すところまで解説しましたね。
「//」を消すと、メタエディタはこんな感じになっていると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { } |
行の構成に関して説明していきますね。
まず、#propertyで始まる最初の4行ですが、特に重要なものではないので気にせずOKです。
1 2 3 4 |
#property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict |
そして、#Propertyの下から実際に処理されるコードが始まっていくわけなのですが、int OnInit()から以下は3つに分けることができます。
Int OnInit()
1 2 3 4 5 |
int OnInit() { return(INIT_SUCCEEDED); } |
初期化イベントと言い、EAをスタートさせる時に最初に一回だけ処理されるコードを書く場所になります。
※このInt OnInit()は、最初の方は必要ないのでザックリ把握しておくだけでOKです。
void OnDeinit(const int reason)
1 2 3 4 5 |
void OnDeinit(const int reason) { } |
Int OnIint()とは逆に、終了する際に一回だけ処理されるコードを書く場所になります。
※こちらのvoid OnDeinit(const int reason)も最初は必要ないので、ザックリ把握するだけでOkです。
void OnTick()
1 2 3 4 5 |
void OnTick() { } |
void OnTick()は、EAのルールなどを記載していく場所になります。
ということでEAを作成していくにあたり、使用するのはvoid OnTick()の部分になるということを覚えておきましょう。
コードの入力の前に知っておくべきポイントとは?
プログラミングにおいて押さえておくこととして、全角と半角は別物として扱われるということを押さえておきましょう。
コードの入力は、基本的には半角で行います。
ほとんど半角での入力になりますが、半角で入力しなければいけない所を間違って全角で入力してしまうと、エラーになってしまいます。
半角と全角で間違えやすいのが、スペースや数字です。
間違えて入力してしまうと、どこで間違ったのかわからなくなるので注意が必要ですね。
下を見て頂きたいのですが、半角と全角の違いがわかるでしょうか?
数字は比較的に半角と全角の区別がしやすいので、エラーになっても修正の対処がしやすいのですが、スペースの場合は全角と半角の区別が非常にわかりづらく、エラーが出た際にどこで半角と全角を間違えたのか見付けることが大変です。
こういったように間違って入力してしまうと、どこで間違ったのか見つけるのが非常に大変になるので、コードを書く時には半角で入力することを徹底しましょう。
コードを実際に書いてみよう
EAに限らずプログラミングを学ぶ時は、Hello Worldという文字を表示させてみることから始めます。
ですので、ここでもHello Worldを入力するところから始めてみましょう。
コードの入力する場所やコードの書き方は?
コードを書く場所ですが、void OnDeinit(const int reason)の{ から }の範囲に書いていきます。
1 2 3 4 5 |
void OnTick() { } |
要するに { から書き始め、 }で書き終わるということですね。
コードの書き方は?
MQL4の場合は、Printという命令文を使います。
※Printの P は大文字で入力するので注意して下さい
そして()を打ち込み、()の中に表示させたい文字を入力するのですが(今回はHello World)、その際にダブルクォーテーション ” で文字を挟むようにしましょう。
最後にセミコロン ; を付けてその行の入力を終了します。
上記のルールで実際に入力してみるとこんな感じになります。
1 2 3 4 5 |
void OnTick() { Print("Hello World"); } |
入力が終わったら実行してみましょう。
実行するには、メタエディタの上部にあるコンパイルから行います(※コンパイルというのは、プログラミングの内容をPCの方で変換する処理です)。
コンパイルの表示をクリックしましょう。
そうすると、画面下に結果が表示され、問題なければ 0 error(s), 0 warning(0), と表示されるはずです。
エラーが出ていなければ、MT4のエキスパートアドバイザに先ほど実行したものが反映されているはずなので、メタエディタを閉じてMT4を確認してみましょう。
※エキスパートアドバイザは、ナビゲーター(☆のアイコン)をクリックすると表示されます
※コンパイルした際に、 0 error(s), 0 warning(0), と表示されていても エキスパートアドバイザにtest と表示されない場合は、次の原因が挙げられます。
メタエディタを起動してから表示される新規ファイル作成ウィザードでのファイル名を付ける所で、最初から表示してあるExperts¥を消してファイル名を付けてしまっていることが原因になります。
ですので、Experts¥を消さずにファイル名を追記するようにしましょう。
エキスパートアドバイザの中に表示された test を、ドラッグ&ドロップでチャートに入れます。
そうすると下の表示がでますので、OKをクリックすると実行されます。
ターミナルウインドウのタブからエキスパートを選択して見てみると、Hello Worldがエキスパートアドバイザの中で、自動でどんどん表示されているのを確認できると思います。
どういうことかというと、先ほどvoid OnTick() の所で入力した Hello World の一行が、ターミナルのエキスパートアドバイザの中で反映されて表示されているということです。
この処理を終了させるには、チャート上で右クリックし、エキスパートアドバイザから削除を選択します。
そうすると、Hello Worldが自動で表示されるのが止まります。
今回はここまでにしますので、今回の内容をしっかり落とし込んでおきましょう。
まとめ
今回はメタエディタの構成~どこにどうやってコードを書くのかなどのルールに関して説明しました。
void OnTick()はルールを記載していく場所になり、{ から }の範囲でコードを基本的には半角で書いていくということでしたね。
MQL4の場合は、Printという命令文を使用し、コードを入力する際はカッコとダブルクォーテーション、そして末にセミコロンを付けることを忘れないようにしましょう。
特に注意することとしては、スペースの全角と半角の区別です。
スペースの半角と全角は区別がしずらく、コードの入力を終えて実行する時にエラーが出ると、どこで半角と全角を間違えたのかを見付けるのに手間がかかるので、コードの入力は半角で徹底するようにして下さい。
More from my site
利益を上げ続けるために
逆算して身に付けていく3つのポイントとは?
Midas FX公式メルマガでは一つ一つポイントを絞ってわかりやすくお伝えしています
さらに「Trade Workbook」&「レンジブレイクアウト攻略法」で
より具体的なスキル(手法やマルチタイムフレーム分析力)を身に付けることが可能です
※「Trade Workbook」と「レンジブレイクアウト攻略法」は
メルマガ登録後すぐ手に入ります
Midas FX公式メルマガ登録【今なら無料】
この記事へのコメントはありません。