第2回 MT4プログラム勉強会(条件分岐と繰り返し)

第2回のホワイトボード

今回は6人の方に来ていただけました。

講義内容

・条件分岐のif, else if, else
・論理式
・繰り返しのwhile, for

なかなか難しいようで、次回は復習をしたいと思います。

 

やってきてもらう課題

1+2+3+・・・+98+99+100
この答えを出力

 

次回の開催予定

2018年6月29日 大阪梅田

ゴールとなるプログラムを書いてきます。それを見ながら、今まで学んだ意味を理解していきます。

Print()関数とComment()関数

プログラムを書いてその結果を出力したいことがよく出てきます。そのときに使うプリント関数です。

Print()関数

Print()は非常によく使います。ちょっとした結果を知りたいときなど便利です。

PrintFormat()やprintf()もありますが、Print()がいちばん簡単で分かりやすいです。まずはPrint()を覚えてください。

プリント関数

()括弧の中に”文字”を入れます。数値でも表示されます。

結果は、ターミナルのエキスパートで出力されます。ターミナルはメニューバーから起動することができます。

ターミナルのエキスパート

 

Comment()関数

似たものにComment()関数があります。

comment()関数

これはチャート上の左上に表示されます。

コメントの結果

初めてのプログラム

これから基本的なプログラムの勉強をしていきます。

インジケーターの新規作成をすると、メタエディターに以下のコードが表示されます。

どこに書けばいいのか?

まずオレンジ部分は最初は無視してください。後々説明していきます。

プログラムを書く場所はピンクの部分です。

int OnInit()
{
 
 ここに書いていきます
 
 return(INIT_SUCCEEDED);
}

この { から } の中に書いていきます。このピンクの部分はインジケーターをチャートにセットしたときに、1度だけ実行される場所です。またインジケーターを表示後、通貨ペアを変更したり、時間足(タイムフレーム)を変更したり、パラメーターの設定を変更した時も、1度実行されます。

逆に青い部分は、サーバーから送られてくるティックという情報を受け取るごとに実行されます。日本時間のあまりチャートが動かないときは1分間に数回実行されるぐらいですが、雇用統計とか大きなイベントのときは1分間に100回を超えるときもあります。

コメントの書き方ときれいなコードの書き方

意外と大事なのがコメントです。このプログラムがどういったプログラムなのか、後から読んでも分かるようにコメントを書きます。コメントの書き方でプロのプログラマーかどうか分かります。

2つの書き方

コメントの書き方は2つあります。どちらもよく使います。

//はその行の最後までをコメントとなります。

コメント

 

きれいなコードを書く

コンパイラーは「;」(セミコロン)までを一文と認識します。

一文

キーボードのTabを押して、プログラムの先頭を合わせるように心がけます。スペースも使い読みやすいプログラムにします。

MQL4のコンパイル

必ずやること

コードが完成したら必ずコンパイルという作業をします。メタエディターのメニューバーにある「コンパイル」をクリックするだけです。(もしくはキーボードのF7を押します)

コンパイル

 

コードに誤りがなければ、ツールボックスに下の図のように表示されます。

エラーなし

コードに誤りがあれば、どこが間違えているのかある程度ヒントを教えてくれます。

エラー箇所

たくさんエラーがあったとしても一か所コードを修正すればコンパイルできることもあります。

 

コンパイルができましたら、インジケーターのフォルダーにex4ファイルが必ず作成されます。

ex4ファイル

 

これでMT4のインジケーター一覧にも表示されるようになりました。

ナビゲーター

 

全角のスペース

プログラムを作るときによくやるのが全角のスペースを入力してしまうことです。全角のスペースを入力してしまうと、エラーの原因となります。そしてどこに全角のスペースがあるのか、探すのが大変です。ソース内では半角のスペースを使うようにしましょう。

インジケーターの新規作成

実際にファイルを作ります。メニュバーの「新規作成」をクリックします。

新規作成

 

MQL4 ウィザードが始まります。インジケーターを作りたいので、「カスタムインディケータ」を選び、「次へ」を押します。

カスタムインジケーター

 

まずインジケータの名前を決めます。今回は「test1」というインジケーターを作るとします。その場合は名前のところに Indicators¥test1 と入力します。

カスタムインディケータの一般プロパティ

(著作者は自分の名前を。リンクはブログやHPのアドレスを入力してください。)

この段階でパラメータも設定できますが、特に必要ありません。

名前を入力したら、次へを押してください。

 

カスタムインディケータのイベントハンドラが出ますが、次へ。

カスタムインディケータのイベントハンドラ

(OnTimer、OnChartEventは今の段階では必要ありません。必要になったとしても後からいくらでも追加できます。)

 

カスタムインディケータの描画プロパティも特に設定は必要ありません。完了を押してください。

カスタムインディケータの描画プロパティ

ファイルが作成されました。

新規作成終了

インジケーターのフォルダーに「test1」(test1.mq4)というファイルが入っていると思います。

インディケータのフォルダー

 

インジケーターの場所

インジケーターのフォルダーは、MT4のメニューの「ファイル」から「データフォルダを開く」を選びます。

データフォルダを開く

MQL4フォルダー内のIndicatorsフォルダーにインジケーターがあります。

メタエディター(MetaEditor)の起動と設定

メタエディターの起動

メタエディター(MetaEditor)というものを使ってプログラムを書いていきます。

メタエディターはメニューバーの「ツール」から起動します。またはMT4上のアイコンをクリック。

メタエディター

キーボードのF4(ファンクションキー)を押しても起動します。

 

最初の設定

メタエディターを日本語化します。View → Languages → Japanese をクリック。

日本語化

メタエディターを再起動するか聞いてきますので、Restartを選びます。

Restart

メニューなど日本語になります。一部英語のままです。

 

フォントの設定

次にフォントを変更します。ツールのオプションを選択します。

 

オプションのフォントから「MS ゴシック」を選びます。そのときにサイズも12か14にすると文字が大きくなり見やすいです。

第1回 MT4プログラム勉強会(変数の宣言)

新しい方が1人入られて、5人の方に来ていただけました。

講義内容

・エディター(MetaEditor)の設定
・Print関数
・型(int, double, string, bool)
・コメントのつけ方 /*~*/, //
・パラメーターからの入力 input int a = 0; //りんご
・if文

 

やってきてもらう課題

今回習ったことの復習と作ったコードをいじる。

 

次回の開催予定

2018年6月22日 大阪梅田

第0回 MT4プログラム勉強会(自己紹介)

5人の方に来ていただけました。

講義内容

・私の自己紹介、トレードの歴史
・作ってきたインジケーターの紹介、裏話
・「聖杯がない理由」を考えてもらいました。

 

この講座のルール

・自己責任 自助努力
・批判しない。特に手法に関して。こういう考え方もあるということを認める。
・楽しく学ぶ。自由。

 

これから勉強する上で参考にしてほしいサイト

http://fx-dollaryen.seesaa.net/
http://d.hatena.ne.jp/fai_fx/
https://www.mql5.com/ja/code/mt4/indicators
https://www.forexfactory.com/forum.php

 

参考書

・新MT4対応 FXメタトレーダープログラミング入門
・FXメタトレーダー入門

C言語のやさしい入門書は勉強になります。ただ挫折する可能性もあり。

 

やってきてもらう課題

未定

 

次回の開催予定

2018年6月15日 大阪梅田

情報交換ツールとしてSlackを使います。女性の方、お一人だけ、まだ連絡が来てません。一度メールを送っていただけないでしょうか。よろしくお願いいたします。