
そういえばプログラミングをするにあったっての記事書いていないことに気づいたので今回はこちらを記事にしたいと思うっす!
どのプログラミング言語でも原則同じなのでこの記事が理解出来れば他の言語覚える時もスムーズに学習できると思うっす!
これからプログラムを独学で学ぼうという方で最短ルートでものにしたい方はあっちゃんの考えではプログラミングスクールに通うことが一番の近道だと思っているっす。独学だとどうしてもつまずいたときに諦めてしまったり自分のモチベーション維持ができない場合がほとんだと思うっす。

目次
【MQL4初心者向け】基本用語を徹底解説!
まずは、プログラミングをするにあたりこれだけは理解してほしい用語を解説していくっす!
ソースコード
ソースコードとは、一般的にソースやコードと呼ばれており、アプリやソフトを動かすための文字です。ソースコードが書かれているファイルをソースファイルと呼んでいます。
エディタ
エディタは、文章を書いたり編集できたりするアプリのことを指します。MQLプログラミングではMT4をインストールすると一緒にメタエディタがインストールされるためそちらを利用します。
エディタの種類としてはサクラエディタや秀丸が有名です。エディタの昨日としてはコードの変数や関数などに自動的に色が付きソースを読みやすくしてくれる機能などがあります。メモ帳の上位互換だと思っていただければ大丈夫です。
コンパイル
MQLなどのプログラム言語を実行させるために機械語に変更する作業のことをコンパイルと呼びます。
拡張子
拡張子はファイルの種類を分類するためのものでファイルの最後につきます。初期設定では非表示になっているため拡張子を表示させるには設定を変更する必要があります。
MQLでの拡張子はmq4やex4などが用いられます。
mq4はコンパイル前のファイルでメタエディタでソースを確認することができます。
ex4はコンパイル後のファイルでソースの確認を行うことができません。
コメント
コメントとはソースコード内に記述できるメモ書きのことです。
プログラムの計算処理に影響を与えることがない文字の部分です。
コメント書き方は、//をつけることによって、//から後の文字を処理を行わないようにできます。
ブロックでコメントをする場合は、コメントを付けたい最初に/*をつけコメントの終わり*/とすれば/*~~~~~~*/間に挟まれた文字は処理を行わないようにできます。

//ボタン押下状態
/* ☆☆☆☆☆残高タイトル☆☆☆☆☆ */
上記がコメント部分にあたります。
代入
代入とは変数にデータを入れる処理のことです。
x=5;
y=x+5;
上記の例の場合、xに5を入れます。次にyは一行上の処理でxに5をいれているため、5+5となり10がyに入れられます。
※代入とは右のものを左に入れるという意味です。代入するためには変数の左側に=を付ける必要があります。
予約語
予約語はMQL上、既に役割が決まっている文字列のことを指します。
メタエディタでは文字色が青色で表現されています。

関数
関数は同じ動作を複数行う場合に本文とは別の場所に書き必要に応じで呼び出し処理をさせる為のコードです。関数を用いらずとも同じコードを何度も書いても対応できますがそうするとコードが長くなってしまうため、関数をを使い簡略化することが多いです。


630行目でdisplay関数を呼び出し、1637行目から下のコードを読んでいきます。display関数内の全ての処理が終わったら631行目から引き続きコードを読んでいきます。
変数
変数とは文字列に任意の名前を付けることです。
※文字列の前に型を宣言しないといけません。また、予約語やMQLが既存で用意している意味のある文字列は仕様することができません。

上記の例では
170行目にwindowという文字の前にintとかかれておりこれはwindowという変数はint型ですよということを意味しています。
型
型とは変数を宣言する前に用いられその変数に格納するデータの種類が何なのか指定するものです。
int x=5;
string y=5;
上記の例ですと、xとyともに5が代入されますが、xは数値として認識されyは文字として認識されます。
※型の種類が間違っている場合うまく計算しない可能性があるのでちゃんとした型を宣言しましょう!
演算子
算術演算子
算術演算子とは+、-、*、/、%など計算をする時に使う記号のことです。加算、減算、乗算、除算、剰余が算術演算子となります。
v=11+2;
w=11-2;
x=11*2;
y=11/2;
z=11%2;
上記の場合vは13、wは9、xは22、yは5.5、zは1が入ります。
比較演算子
比較演算子とは変数が大きいとか小さいなどを比較するために使われる記号で、<(小さい)、<=(以下)、>(大きい)、>=(以上)、==(等しい)、!=(等しくない)などがあります。
【<】小さい
x = 5;
y = 0;
if( x < 10 ){
y = x + 10 ;
}
上記の場合xは10より小さいため条件式に合致する。よってy=x+10が実行されyの値は15となります。
x = 15;
y = 0;
if( x < 10 ){
y = x + 10 ;
}
上記の場合xは10以上のため条件式に合致しません。よってy=0のままになります。
【<=】以下
x = 5;
y = 0;
if( x <= 10 ){
y = x + 10 ;
}
上記の場合xは10以下ため条件式に合致する。よってy=x+10が実行されyの値は15となります。
x = 10;
y = 0;
if( x <= 10 ){
y = x + 10 ;
}
上記の場合xは10のため10を含めた数値も条件に合致する。よってy=x+10が実行されyの値は15となります。
x = 15;
y = 0;
if( x < 10 ){
y = x + 10 ;
}
上記の場合xは10より大きいため条件式に合致しません。よってy=0のままになります。
【>】大きい
x = 15;
y = 0;
if( x > 10 ){
y = x + 10 ;
}
上記の場合xは10より大きいため条件式に合致する。よってy=x+10が実行されyの値は25となります。
x = 5;
y = 0;
if( x > 10 ){
y = x + 10 ;
}
上記の場合xは10以下のため条件式に合致しません。よってy=0のままになります。
【>=】以上
x = 15;
y = 0;
if( x >= 10 ){
y = x + 10 ;
}
上記の場合xは10以上のため条件式に合致する。よってy=x+10が実行されyの値は25となります。
x = 10;
y = 0;
if( x >= 10 ){
y = x + 10 ;
}
上記の場合xは10のため10を含めた数値も条件に合致する。よってy=x+10が実行されyの値は15となります。
x = 5;
y = 0;
if( x >= 10 ){
y = x + 10 ;
}
上記の場合xは10より小さいため条件式に合致しません。よってy=0のままになります。
【==】等しい
x = "a";
y = 0;
if( x == "a" ){
y = 10 ;
}
上記の場合xはaなので条件式に合致する。よってy=10が実行されyの値は10となります。
x = "a";
y = 0;
if( x == "b" ){
y = 10 ;
}
上記の場合xはbなので条件式に合致しない。よってy=0のままになります。
【!=】等しくない
x = "a";
y = 0;
if( x != "b" ){
y = 10 ;
}
上記の場合xはaなので条件式に合致する。よってy=10が実行されyの値は10となります。
x = "a";
y = 0;
if( x != "a" ){
y = 10 ;
}
上記の場合xはaなので条件式に合致しません。よってy=0のままになります。
論理演算子
論理演算子は比較演算子を使った条件を設定する時に条件が複数ある時に用いる演算子です。
【&&】かつ
x = 10;
y = 0;
if( x == 10 && y == 0 ){
y = x + 10 ;
}
上記の場合xが10でyが0の場合のみ、y = x +10の処理が通りそれ以外の値がx、yに入っていた場合処理は流れません。
【||】または
x = 10;
y = 0;
if( x == 10 || y == 0 ){
y = x + 10 ;
}
上記の場合xかyのどちらかが条件式をみたしていればy=x+10の処理が流れ、両方とも条件式に満たなかった場合は処理はながれません。
ループ
繰り返し同じ処理をさせたいときに使う機能です。
y=0;
for(int i = 1; i <= 5; i++)
{
y++;
}
上記の例の場合iの初期値が1となりiが6となるまでyの値を+1の処理を行います。
フラグ
フラグとはスイッチの役割を果たしています。フラグが立っている場合は処理を行い、フラグが立っていない場合は処理をしないという場合に用います。書き方としてはflg==Trueやflg==0など書き方はプログラミングを行う人によって様々です。
バグ
バグはプログラミングはエラーや間違い、欠陥のことを指します。
バグにも種類があり、認識間違いによる仕様のミスや、変数を間違えた箇所に入れた為におこるバグなど様々です。製品づくりでは一つ一つバグをつぶしていき良い製品を作成していきます。
デバグ
デバグはプログラミング中に表記ミスなどを修正していく過程のことを指します。
ソースコードの読み方
最初に簡単な質問っす!
コードはどうやって流れいくと思うっすか?少し考えてみるっす!
原則として上にかかれているものほど先に処理されて最後の方に書かれているものほど後に処理されていくっす!
イメージとしては川を想像してくれると早いかもしれないっす!
川は高いところから低いところにながれて途中で本流に合流したり、別れたりするっすけど最終的には海に流れ作っす!
他に例えなら昔のゲームのマリオとかが近いかなと思ったっす!最近のマリオはわからないっすけど昔は左から右にスクロールしていくゲームで戻れなかったと思うっす!ドカンで別の場所に行けると思うっすけど、コードにも関数を利用すると別のファイルのコードを読み込んだりできるっす!
【MQL4初心者向け】覚えるべき関数
OnStart
OnStart()関数はtickが動くたびに処理が流れるイベント関数です。
OnInit
OnInit関数はインジケータやEAがチャートに表示される時に1度だけ処理が流れるイベント関数です。
※初期値の設定を行う時に一般的に用いられます。
※表示する通貨や時間を変更しても流れます。
OnDeinit
OnDeinit()関数はチャートからインジケータを削除する際に一度だけ処理を行う関数です。
※チャートをインジケータやEAを表示する前の状態に戻すためにオブジェクトの削除等の処理を使う時に一般的に用いられます。
OnTimer
OnTimer()関数は指定した秒数やミリ秒毎に繰り返し呼び出される関数です。
OnChartEvent
OnChartEvent()関数はチャート上でマウスがクリックされた時など決められた動作をしたときに処理が走る関数です。
OnTick
OnTick()関数はチャートの現在価格が変動した場合にOnTick関数が自動的に呼び出される関数です。
※EAを作成時に用いられるイベント関数です。
OnCalculate
OnCalculate()関数はOnTick()関数同様に現在価格が変動した場合にOnTick関数が自動的に呼び出される関数です。
※カスタムインジケータを作成時に用いられるイベント関数です。
int OnCalculate (
const int rates_total, // 入力された時系列のバー数
const int prev_calculated, // 計算済み(前回呼び出し時)のバー数
const datetime& time[], // 時間
const double& open[], // 始値
const double& high[], // 高値
const double& low[], // 安値
const double& close[], // 終値
const long& tick_volume[], // Tick出来高
const long& volume[], // Real出来高
const int& spread[] // スプレッド
);
※OnTick()との違いは引数を持っていることです。
【MQL4初心者向け】覚えるべき構文
構文とはあらかじめプログラミング言語によって決められている文法のことを指します。
if文
if文とは条件分岐処理を行うための構文で条件に合致したらifの中の処理を行います。条件と不一致の場合は処理を行わずif文の中を飛ばし次の行の処理を行います。
書式
if(条件式){
処理;
}
if(i == 1){
y = 5;
}
上記の場合iが1の場合はyに5を代入しiが1以外の場合は処理を行わず次の行の処理を行います。
if-else文
if-else文はif文と同じく条件式が成立したらif文の処理を行います。if文と違う点は条件式が成立しなかった場合elseの中の処理を行うということです。
書式
if(条件式){
処理1;
}else{
処理2;
}
if(i == 1){
y = 5;
}else{
y = 10;
}
上記の場合iが1の場合yに5が代入され、それ以外のiの場合yには10が代入されます。
下記の書き方でも処理の内容は同じになります。
if(i != 1){
y = 10;
}else{
y = 5;
}
if-else if文
if-else if文はif文が二つあると解釈しても大丈夫です。
書式
if(条件式){
処理1;
}else if(条件式){
処理2;
}
if(i == 1){
y = 5;
}else if( i == 2){
y = 10;
}
上記の場合iが1の場合yに5が代入され、それiが2の場合には10が代入されます。
下記の書き方でも処理の内容は同じになります。
if(i == 1){
y = 5;
}
if( i == 2){
y = 10;
}
※人によって条件分岐構文は書き方が多数あるので自分の書きやすい書き方を見つけてください。
for文
for文では条件式を満たすまで何度もfor文の中の処理を実行します。
※for文の記述を間違えると無限にfor文から抜け出せなくなる可能性があるため注意が必要です。
for(初期設定式; 条件式; 再設定式)
{
処理;
}
for(i = 1; i <= 5 ; i++)
{
y=5+i;
}
上記例ではiの初期値が1として5以上となるとforの処理を抜けます。
ですので、はじめiに1が代入されi=1なのでy=5+1となりyに6が代入されます。次の処理はiがまだ1なのでforの位置まで処理がはしりi++が実行されiに2が入ります。forの処理はy=5+2となりyには7が代入されます。
この繰り返しをi=5と条件式が一致するまで繰り返します。
while文
while文はfor文同様に処理を繰り返すための構文です。for文と異なるところは初期値の設定がないことと条件を抜けるために変数を増やす処理がwhile文の中に存在しているところです。
なのでfor文ではfor文の中の変数を用いて処理を行おうとすると先に再設定式が走りますが、while文では処理の前に置くことも処理の後に置くことも可能となっています。
while(条件式)
{
処理;
変数++;
}
公式LINEに友達登録でインジケーターGET
今回の記事はMQLプログラミングを行うにあたってどうしても避けられない最低限の用語になるっす!覚えなくてもいいのでこんなのがあったな~程度に頭の隅にでも記憶しておいてほしいっす!
ここまで読んでくれた方は独学で勉強しようと思っている人が多いと思うので、これからもMQLでプログラミングする記事など書いていくつもりなので、なるべく安く頑張りたいという方はこれからも読んでくれると嬉しいっす!

公式ラインを作成したので友達登録していただければお得な情報やプレゼント情報などをお送りいたします。
また、WhereTrendをご希望の方はチャットより「プレゼント希望」と送ってください。
※返答AIで対応していただいていますので「」や他の文言を入れてしまうとちゃんと動作しない可能性があるので注意してください。