EA(自動売買)を効率よく開発するために欠かせないのが関数です。
関数は「よく使う処理を一つにまとめて呼び出せる仕組み」で、プログラミングの作業量を大幅に減らしてくれます。
- 関数とは何か(例えで理解する)
- MQL4で使われる関数の基本構造
- 自作関数の作り方とメリット
本記事はEAプログラミング入門シリーズ「STEP6」です。
STEP5で変数(情報を入れる箱)を扱えるようになったら、次は処理をまとめて再利用できる関数を学んでいきましょう。
ではまず、「関数とは何か」という根本のイメージから整理していきましょう。
🔧 関数とは?|プログラムの“便利な操作ボタン”
関数とは、私たちの日常で例えるなら「テレビのリモコン」のようなものです。
リモコンの電源ボタンを押せばテレビがつきますよね。ほとんどの人は、リモコンがどんな電波を飛ばしているのか詳しく知らなくても、操作できます。
プログラムの関数も同じで、仕組みを完璧に理解しなくても、用意された関数を正しく使えば、期待する結果が得られます。
例えば、前回も出てきた
Comment(Ask);これも実は関数の一種です。これを書くだけでMT4のチャート画面に「現在の買値(Ask)」を表示できます。
もしこのComment()関数がなければ、初心者が一から画面に文字を表示させるのはとても難しい作業になります。
リモコンでテレビの電源をONにするのと同じように、関数を使うことで複雑な処理が簡単になります。
ここまでで「関数のイメージ」はつかめたと思います。 次は、関数がどんな種類に分かれるのか見ていきましょう。
関数の種類
関数は大きく次の3種類に分類できます。まずはこの違いをハッキリ押さえておくと理解がスムーズです。
① 処理だけ実行(戻り値なし)
➤ Comment(Ask);
→ 「画面に表示する」だけのワンボタン操作
② 引数を渡して結果を返す(引数あり・戻り値あり)
➤ dHigh = iHigh(NULL,0,2);
→ 情報を渡すと、計算結果が戻ってくるタイプ
③ 引数なしで結果だけ返す(戻り値あり)
➤ iTotal = OrdersTotal();
→ 「今の状態」を教えてくれるタイプ(ポジション数など)
では順番に見ていきましょう。
① 処理だけ実行するタイプ(戻り値なし)
例)Comment(Ask);
このタイプは、書くだけで何かの「処理」を実行してくれます。
例えば Comment() を使うと、現在のレートなどをチャート画面に表示できます。結果を受け取る必要がなく、初心者がまず使いやすいタイプです。
② 情報を渡して結果を返すタイプ(引数あり・戻り値あり)
例)double dHigh = iHigh(NULL, 0, 2);
これは「情報(引数)を渡すと、その結果(戻り値)が返ってくる」タイプです。
イメージはテレビの録画機能。 「この番組録画して」と指示すれば、録画データ(=結果)が返ってきます。
//変数宣言
double dHigh;
//関数から結果を受け取る
dHigh = iHigh(NULL, 0, 2);
//画面に表示する
Comment(dHigh);
引数の意味は関数ごとに異なります。iHigh(NULL, 0, 2) の場合は「通貨ペア・時間足・バー位置」です。
細かい内容を丸暗記する必要はありません。必要なときにネットで調べればOKです。
③ 情報を渡さず結果だけ返すタイプ(引数なし・戻り値あり)
例)int iTotal = OrdersTotal();
このタイプは引数なしで結果だけ返してくれます。
OrdersTotal() は「現在の保有ポジション数」を返すので、 「ポジションが0なら新規注文する」といった判断にすぐ使えます。
✅ まとめ:関数を使いこなして効率的なEA開発を目指そう!
お疲れさまでした。今回はプログラミングの要である「関数」について解説しました。
- 関数は「便利なリモコン」のようなもの
- 書くだけで複雑な処理を実行できる
- 主に「処理を実行」「情報を渡して結果を返す」「結果だけ返す」の3種類がある
- 必要な関数があるか調べて使うのが基本、無ければ自作も可能
プログラムは関数を使いこなすことで劇的に書きやすく、修正しやすくなります。
まずは「どんな関数があるか」をざっくり把握し、調べるクセをつけることが重要です。
▶ 次回予告
次回は「新規注文の関数」を使って、簡単なEAを作る方法を解説します!
🧩 EAプログラミング入門シリーズ(超初心者向け)
- STEP0:EAとは?仕組みとプログラムの基礎
- STEP1:MT4の基本ソースコードを理解する
- STEP2:実際にコードを書いて動かす
- STEP3:if文の仕組みを理解する
- STEP4:演算子で条件分岐を強化する
- STEP5:変数の基礎を理解する
- STEP6:関数でコードを整理する
- STEP7:OrderSendとOrdersTotalの基礎
- STEP8:移動平均線でエントリーする方法












コメント