前回は タイプキャスト(型変換)について解説しました。
改めて前回の内容をおさらいをしておくと、
- タイプキャスト(型変換)とはあるデータ型の値を、異なるデータ型に変換するプロセスのことである。
- タイプキャスト(型変換)はデータが破損したり、コピーエラーが発生せずに適切に移動・複製する為におこなわれる。
- タイプキャスト(型変換)する時は、データ変換したい変数や、値、数式の前に()で括った変換先のデータ型を記述する
ということをお伝えしました。
今回はinput変数というのものについて、解説していきたいと思います<m(__)m>
input変数はEAを実運用する際に、各種パラメーターを変更可能にする為に用いられます。
今の段階ではどういうことかピンと来なくても全く問題ありません。この講座記事を読み終わった頃には理解できているはずです。
input変数を理解できるようになると、より柔軟性のある本格的なEAが作れるようになります。
この記事では、input変数の基本から応用までをわかりやすく解説し、皆さんが自信を持ってEAをカスタマイズし、最適化する手助けをしますので、楽しみながら今回もお読みいただければと思います。
※MQL5で自動売買プログラム作るにあたっては、MT5・メタエディター5がお使いのパソコンにインストールされている必要があります。
もし、まだMT5のダウンロードが完了していない方は、
こちらからデモ口座の開設とMT5のダウンロード・インストールを完了して頂ければと思います。
input変数とは?
input変数は、EAをチャートにセットした直後の設定画面で、ユーザー自身が任意に値を変更できる変数のことです。input変数に設定した変数は、EA制作したプログラマー本人じゃなくても、EAを使うにあたってカスタマイズができるという訳です。
input変数の作り方
input変数を作るための、基本的なサンプルプログラムを書いてみます。
//inputを使って、設定画面で変更できる変数群を作る
input int parameter_1=1;
input double parameter_2=2.5;
input string parameter_3="テスト用のパラメータです";
void OnTick()
{
}
最初に
というキーワードを記述し、その後は普通の変数宣言と同様に、
データ型の種類を記述→変数名を記述→必要に応じて初期値を代入
というプロセスを踏んでいけば大丈夫です。
サンプルコードを見てもらえればわかるように、基本的にEnum列挙型を含め、どのデータ型でもinput変数にすることができます。(配列と構造体は駄目です( 一一))
input変数はOnTick関数やOnStart関数などのイベントハンドラーの外の領域(=グローバル領域)に記述します。慣習的には、プロパティ命令の下、イベントハンドラーやグローバル変数の上に記述するのが一般的です。
※イベントハンドラー=「プログラムを動かす時に、重要な役割を果たす関数」と今はお考え下さい。
サンプルコードを実行すると、こんな↓設定画面を確認できます。
これがinput変数の作り方の基本です。
今度はもうすこしだけ発展させて、各input変数に説明コメントを加えて、ユーザーフレンドリーなインタフェースにしてみましょう。
移動平均線(Moving Average)を利用したEA、という想定で、移動平均線に関するパラメーターを実装したい・・・という時は↓のような記述になります。
//inputを使って、設定画面で変更できる変数群を作る
input int maPeriod=20;//移動平均の期間
input ENUM_MA_METHOD maMethod=MODE_SMA;//移動平均の種類
void OnTick()
{
}
移動平均線の期間を調整する変数「maPeriod」のデータ型は 整数型 です。移動平均線の期間を「15.5」などの実数型にする必要はありませんからね(^^♪
サンプルコードの初期値は「20」にしています。
着目してほしいのは、セミコロン(;)の後のダブルスラッシュ(//)です。
過去の講座記事MQL5 EA講座 第3回「コメントアウト」
にて、
スラッシュを2つ書くと(「//」)コンピュータはそれ以降に書かれた部分を命令として認識しない。
と書きました。(これをコメントアウトと言います)
ですが、input変数の宣言記述の後ろにつくダブルスラッシュだけは少しだけ事情が違っていて、
ダブルスラッシュ以降に記述した文言がinput変数名の代わりに、パラメーター設定画面に表示される
ということなんです。
今回の例でいくと、普通は変数名の「maPeriod」がパラメーター設定画面に表示されるのですが、//以降の文言である「移動平均線の期間」が表示される、
という形になります。
移動平均線の種類を調整する変数「maMethod」のデータ型はMQL5型で事前に定義しているEnum列挙型の1つ、ENUM_MA_METHOD です。移動平均線の種類が定数リスト化されていて、設定画面で自由に変更できるようになっています。
サンプルコードの初期値は「MODE_SMA(=単純移動平均)」にしています。
普通は変数名の「maMethod」がパラメーター設定画面に表示されるのですが、//以降の文言である「移動平均線の種類」が表示されるようになっています。
MQL5 Program Fileの実行動画で確認すると↓・・・
いかがでしょうか?
動画の中で着目していただきたいのは以下の点です。
- 設定画面に表示される「変数名」の箇所が、ダブルスラッシュ以降に記述した文言になっている。
- 変数「maPeriod」のデータ型は整数型なので、値は手入力で変更できるようになっているのに対して、変数「maMethod」のデータ型は、MQL5型で事前に定義しているEnum列挙型の1つ、ENUM_MA_METHOD なので、移動平均線の種類が定数リスト化されていて、そのリストから選択できるようになっている。
※移動平均線について詳しく知りたいという方は下記の記事をご参照ください。
input変数は、EAの動作を調整するためのパラメータとして機能します。
たとえば、リスク管理の設定、取引戦略のパラメータ、またはトレーディング時間など、EAのさまざまな側面を制御するために使用されます。
これらの変数を適切に設定することで、異なる市場条件や個々のトレーダーのリスク許容度に合わせたEAを作成することができます。
さらに、input変数を理解することでEAのテストと最適化が簡単になります。
※最適化については別途解説記事を作成予定ですのでもうしばらくお待ちください。
異なるパラメータの組み合わせを試すことで、最も効果的な設定を見つけ出し、EAの性能を最大限に引き出すことが可能になります。
このプロセスは、EA開発において非常に楽しい部分でもあります。実際の市場データを用いてバックテストを行い、自分のEAがどのように動作するかを観察することは、トレーディングの知識を深めると同時に、システムトレーディングのスキルを磨く絶好の機会となります。
input変数を理解し活用することで、MQL5を使ったトレーディングが一層充実し、より成果を出すものになることでしょう。
コメント