【※この記事にはプロモーションが含まれています。MQL5を使って自作したEAをシステムトレードに利用するには、取引プラットフォームとしてMT5を提供しているFX会社に口座を開設しなくてはいけません。OnTick関数がどのように作用するのか?という点について解説しました。OnDeinit関数がどのように作用するのか、という事を説明しました。FileがMT5のチャート上から削除された際に、一度だけ処理を行う...mqlinvestmentlab.com2022.06.13改めて前回の内容をおさらいしておくと、OnTick関数は値動きに変化があるたびに、{}内に記述されている内容を実行する関数である。いう事をお話ししました。これで今までに、OnInit関数、OnDeinit関数、OnTick関数という3つのイベントハンドラーについて解説してきたことになります。※「EA作ろう講座」の記事ではないですが、↓でOnStart関数というイベントハンドラーについても書いていますのでよろしければご覧ください。実行を行うの必要な関数です。()内に、実現させたい処理を記述していきます。MQL5における「スクリプ...mqlinvestmentlab.com2022.06.06以前、講座記事の第2回で↓イベントハンドラー=自動売買プログラムを動かす時に、重要な役割を果たす関数のこと。値動きの変化のたびに処理をするOnTick関数が、その中でも自動売買プログラムにおいてもっと重要であり、大半の記述はこのOnTick関数の{}の中に書いていけば良い・・・という事が何となく想像がつきますでしょうか?今回の記事からは、OnTick関数に具体的に、何を、どのように記述していけばよいか?という話をしていきたいと思います。これからEAを作っていく上での核心に徐々に迫っていきますので、是非楽しみながらお読みいただければと思います。※MQL5で自動売買プログラムを作るにあたっては、メタトレーダー5(MT5)・メタエディター5がお使いのパソコンにインストールされている必要があります。メタトレーダー5(MT5)のダウンロードが完了していない方は、こちらからデモ口座の開設とメタトレーダー5のダウンロード・インストールを完了して頂ければと思います。変数(Variable)とは何か?変数の使い方1:データ型を決める(=箱に入れる材料の種類を決める)2:変数の名前を決める(=箱にラベルを張る)予約語とは?3:変数にデータを代入する(=箱に材料を詰める)順次進行についてまとめ変数(Variable)とは何か?今回は、変数という概念についてお話していきたいと思います。どのプログラミング言語を勉強していても、この変数という概念は必ず最初に出てきます。大体において以下のような説明がなされます。変数は、データを入れておける箱のようなものです。データを保存できる便利な仕組みです。これは大事な概念だから、しっかりと理解しよう・・・と続くわけです。́)ゞ・・・でもこうは思いませんでしょうか?「データを保存できる箱があることが、なぜそんなに重要なんですか?」と。・・・そしてしばらくプログラミングの勉強を投げ出しました(-_-;))従って、今回の講座では変数の概念をわかりやすく説明する事はもちろんの事、変数という概念がなぜ重要なのか?という事もプログラム未経験の方が理解できるような構成を心掛けました。最終的には「変数という概念がなぜ重要なのか?」という事が具体的にわかるようなサンプルコードを作っていきます。その前にまずは、変数をどうやって使うのか?というところから見ていきたいと思います。変数は以下の工程を踏んで使います。データ型を決める(=箱に入れる材料の種類を決める)変数の名前を決める(=箱にラベルを張る)変数にデータを代入する(=箱に材料を詰める)それぞれの工程を順番にみていきましょう。1:データ型を決める(=箱に入れる材料の種類を決める)先ほど、変数はデータを保存できる箱のようなものだ、という説明が一般にされているとお伝えしました。その例に従うのであれば、まずは変数という箱を用意しなくてはいけません。データ型を決める、というのは「変数という箱を用意する」作業に当たります。箱に何か物を入れる以上、特定の目的がある訳で、なんでもぶち込んでいいわけではないですよね。生魚と野球のグローブを一緒の箱にいれたりしたら、どちらも本来の役割を果たせなくなるの明らかです。(部屋を片付けられない人の中には、そんな人もいるかもしれませんが・・・)データ型には「この変数に入れるデータの種類はこれだけだよ!」というルールを決める、という意味があります。データ型を決めるには、例えば↓のような記述をします。int※復習:スラッシュを2つ記述した後に書かれた文字列は、コンピューターが命令として認識しないようになります。これをコメントアウトと言います。詳しくは↓をご覧ください。いうところまでお話ししました。「MQL5ウィザードって何?」という方は↓をご覧ください。「これから整数データを格納する変数を用意するよー」という事を意味しています。(intというのは英語で整数を意味する単語、Integerの略です)※整数は1・2・3・4・・・と続く数の総称です。-4・・・というマイナスの連なりも含みます。データ型には整数型を表すint型の他にも、複数あります。「データ型」については次回の講座記事で解説しています。「先に内容を確認したい!」という方は↓の記事をご覧ください。前回は、変数についてお話ししました。変数は、データを入れておける箱のようなものである。変数は(1)データ型を決める(=箱に入れる材料の種類を決める)、(2)変数の名前を決める(=箱にラベルを張る)...mqlinvestmentlab.com2022.06.17データ型をint型(整数型)に決定したところで、今度は変数名を決めましょう。2:変数の名前を決める(=箱にラベルを張る)例えば、箱に入れたものを宅配便でどこかに送る時も、送り状を貼り付けますよね。したないと、宅配業者さんが、たくさんある荷物の区別がつかないですから。それと同じノリで、変数にも「この箱は、あの箱とは違うんだ」という区別をつける必要があります。変数に名前を付けるという行為は、データを入れる箱の区別をつける作業に他なりません。変数の名前は以下のルールに従っていれば、自由に付けられます。使える文字はアルファベットと数字、_(アンダースコア)のみ。アルファベットの大文字と小文字は「違う文字」として認識される。文字の先頭に数字を使うことはできない。予約語を使うことはできない。予約語というのは、MQL5側であらかじめ、プログラム上この言葉を書いたらこういう処理をするよー」という役割が決まっている言葉のことを言います。それこそintは「これを書くことで、整数型の変数を使うという宣言をする」役割を事前に与えられているので、予約語となり変数として使うことはできません。//↓整数型の変数を使う。//先頭が小文字の「variable」と、大文字の「Variable」は違う変数である。}変数の名前に関するルールを踏まえてコードを書いてみました。上記のような記述は全てコンパイルエラーにつながります。(ピリオド)みたいなもので、MQL5においては、セミコロン(;)がついていると、いったん記述に一区切りがついたことを意味します。セミコロン(;)がついていないと、これもコンパイルエラーになってしまうので忘れないようにしましょう。コンパイルって何?という方は↓をご覧ください。いう事をお話ししました。プログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする関数、という説明をしました。変数の名前を決める(箱にラベルを貼る)、という所までやってきました。次は変数にデータを入れる(=箱に材料を詰める)作業を見ていきましょう。この変数にデータを入れる作業のことを代入(subsutitution)といいます。変数への代入は以下のように行います。//↓整数型の変数を使う。variable;//変数variableに「1」を代入する。variable=1;変数にデータを入れる、すなわち代入をするときは「=(イコール)」を使います。この時、必ずデータを入れられる側の変数は左辺に、代入する値は右辺に置かれます。//↓整数型の変数を使う。variable;//左辺に値、右辺に変数がきているためにコンパイルエラーになる。1=variable;※変数のデータ型を決めるのに使った、intはもう使う必要がありません。defined(すでにその変数は定義済みです)」というコンパイルエラーになります↓)注意したいのが、「variable=1」→「variableと1は等しい」という意味ではない、ということです。「variable==1」とイコールを2つ続けて書く必要があります。イコール1つ→代入イコール2つ→等しいという違いを押さえておきましょう。//変数variableに「1」を代入する。variable=1;//↓変数variableと1は等しいとい意味variable==1;//逆ではだめ。1=variable;実際に、「variable=1;」によって、変数が1という数字を格納することができたのか見てみましょう。//↓整数型の変数を使う。//変数variableに「0」を代入する。//変数variableに「1」を代入する。Print(variable);変数「variable」に最初「0」を代入し、次に「1」を代入しました。進行についてプログラムには順次進行という原則があります。要は「プログラムは記述されている内容が、上から下に向かって順番に処理される」ということです。変数「variable」に「1」というデータを入れた(0というデータが1に上書きされた)という処理が順番になされているはずです。Print関数でMT5のエキスパートタブに変数「variable」の値がログに残るような記述をしました。予想通りの結果になりました。変数というものの、概要がおわかりいただけましたでしょうか?「いやいや、だからそれのなにがそんなに便利なのよ!?」という所に話を戻したいと思います。確かに変数という箱に0や1が格納されることの重要性と言われてもピンときません。2);何が書かれているのか、わからなくてもちろん大丈夫です。何かを計算しているデータだと思ってください。これを別に「variable」という変数に格納しなくても、右辺に書いてある式を必要な時に書き直せばいいともいえますが、それって大変そうだな・・・というのはお分かりいただけるかと思います。変数に一度代入しておけば、ややこしい数式を再び書き直さなくても、その変数を使いまわすだけで同じ結果が得られるのです。野球ボール1個程度なら、べつに箱に入れなくても持ち運びできますが、その個数が30個とかになったら話は別ですよね。プログラムというのは、なにかしらの計算をする↓それを変数に入れて整理する。↓その変数を使って処理をする。大半がこれの繰り返しなわけです。適切な変数を用意し、適切なデータを変数に格納する、これができればプログラムは恐れるに足りない、という訳です。まとめ今回は、変数について解説しました。今回の記事では以下のことをお伝えしました。変数は、データを入れておける箱のようなものである。変数は1データ型を決める(=箱に入れる材料の種類を決める)、2変数の名前を決める(=箱にラベルを張る)3変数にデータを代入する(=箱に材料を詰める)というプロセスを経て利用する。変数にデータを代入をするときは「=(イコール)」を使う。プログラムには「プログラムは記述されている内容が、上から下に向かって順番に処理される」という、順次進行の原則がある。変数のメリットは変数に一度代入しておけば、ややこしい数式を再び書き直さなくても、その変数を使いまわすだけで同じ結果が得られるところにある。今回は以上となります。※変数については今後、以下の講座記事でも解説を予定しております。↑MQL5やFX関連の用語リンク集です。当サイトでは、元々わからない言葉や概念に出くわしたら、すぐその言葉に立ち戻れるよう、かなり細かく内部リンクを張り巡らせており、多様な用語を網羅しています。興味のある内容に直接アクセスし、疑問の解決にお役立ていただければと思います。【※この記事にはプロモーションが含まれています。MQL5を使って自作したEAをシステムトレードに利用するには、取引プラットフォームとしてMT5を提供しているFX会社に口座を開設しなくてはいけません。前回は整数型のデータ型についてお話ししました。前回はfor文について解説しました。for文は、do-while文や、while文と同じく「繰り返し処理」命令をする記述の1つである。コンストラクタとは、クラスのインスタンスを生成した段階で発動する、クラスのメンバ関数のことである。値渡しは、関数の引数(パラメーター)に、値のコピーを渡す際の記述方法の種類である。