—————————————————————
前々回の14回、そして前回の14.5回と、Bool(ブール)型について解説しました。
改めて、bool型のおさらいにをしておくと、
- プログラム内部では、true=1(厳密には1以上)、false=0 というデータの切り分けを行っている(14.5回)
ということをお伝えしました。
今回はColor(カラー)型というデータ型についてお話ししたいと思います。
※MQL5で自動売買プログラム作るにあたっては、メタトレーダー5(MT5)・メタエディターがお使いのパソコンにインストールされている必要があります。
もし、まだMT5のダウンロードが完了していない方は、
こちらからデモ口座の開設とMT5のダウンロード・インストールを完了して頂ければと思います。
Color(カラー)型とは何か?
Color(カラー)型とはなにかをお話しする前にお断りしておきたいのですが、
プログラミング初心者の方は、今回の記事は最悪、忘れてしまってもそこまで致命的ではありません。
なぜなら、Color(カラー)型という名前からおおよその推察はできると思いますが、
Color(カラー)型とは、色に関するデータを格納する変数を用意を用意する時に使われるデータ型
だからです。
Color(カラー)型の変数は、主にMT5のチャート上に表示する対象物を、プログラムを介して彩ることを目的に使われるので、直接的に売買に関わるような働きをすることはほぼありません。
MQL5では、自動売買プログラム(EA)だけではなく、カスタムインジケ-タ(オリジナルのチャート分析ツール)を作ることもできます。
Color(カラー)型の変数に関する知識は、主にその際に使われることになるかと思いますので、その機会が出てきたときにふとこの記事のことを思い出してくれることを願い書いています(笑)
それを前提にリラックスして読んで下さい<m(__)m>
Color(カラー)型の使い方
Color(カラー)型の変数を用意する文法的な規則は、例によってほかのデータ型と同じです。
のように
colorを書いた後、半角スペース一個分以上スペースをあけて、変数名を入力し、最後にセミコロン(;)をつけます。
ここまでは問題ないんじゃないかと思います。
問題はカラー、すなわち色に関するデータをどう表すか?
ということです。
カラー(色)に関するデータの表し方
カラー(色)に関するデータの表し方には3つの種類があります。
ただでさえ耳なじみのないColor(カラー)型という概念の冒頭に、いきなり3種類もあると学習する上での心理的ハードルを感じてしまうかもしれませんが、基本的な原理を理解すれば、難しい事は特にありません。
落ち着いて、1つずつ順にみていきましょう。
カラー定数型
定数という言葉については、この後の講座第17回で1つの独立したトピックとして取り上げていますが、端的に言えば
定数→定まった数→決まっている、変わらない数
ということですね。変数とは逆の概念になります。
「この色を使いたいなら、こう書いてくださいねー」
という記述方法だと思ってください。
例えば、赤色だったら、
//変数「varColor」に赤色というデータを代入する
color varColor=clrRed;
のように
clrRed
と書けばいいです。どの色もclr~と書くのが基本になっていて、「MQL5公式リファレンスのウェブカラー」に、表記見本がありますのでここを参考にすればいいでしょう。
void OnTick()
{
//変数「varColor」に赤色というデータを代入する
color varColor=clrRed;
MqlRates PriceInformation[];
ArraySetAsSeries(PriceInformation,true);
int Data=CopyRates(_Symbol,_Period,0,Bars(_Symbol,_Period),PriceInformation);
ObjectCreate(0,"MyArrow",OBJ_ARROW,0,TimeCurrent(),PriceInformation[0].high);
ObjectSetInteger(0,"MyArrow",OBJPROP_ARROWCODE,40);
//チャートに表示される電話マークを赤に設定する
ObjectSetInteger(0,"MyArrow",OBJPROP_COLOR,varColor);
ObjectSetInteger(0,"MyArrow",OBJPROP_WIDTH,20);
ObjectMove(_Symbol,"MyArrow",0,TimeCurrent(),PriceInformation[0].high);
}
↑のコード、意味は分からなくても大丈夫です。
Object~という表記がたくさん出てきますが、これはチャート上にいろんなマークを描画できる設定だと思ってください。
注目してほしいのは変数「varColor」のところだけです。赤色のデータを格納して、チャート上に描画するマークを赤に設定した、というのが上記のコードの意味になります。
上記コードのプロフラムファイルの実行結果です。↓
チャートの電話マークが赤になっていますね。
Color(カラー)型の変数はこういった使い方をします。
正直なところ、このカラー定数型だけ覚えておけば全く問題ないです。
一応網羅性を大切にしたいので、残りのRGB型、16進数型についても触れますが、オマケだと思ってください。
RGB型
RGBといいうのは
Red,Green,Blue
の頭文字を合わせたもので、
色の三原色を混ぜ合わせて、幅広く色を再現していこうという加工法を指します。
各色は0から255までの値を取り、これによって幅広い色の範囲を表現できます。
例えば、完全な赤色は(255, 0, 0)
となります。
先ほど赤色をカラー定数型ではclrRedと表現しましたが、RGB型で表現すると↓のようになります
//変数「varColor」に赤色というデータを代入する
color varColor=C'255,0,0';
書き方としては
- 最初に大文字のCを書く。
- その後のRGBコード情報をシングルクォーテーションで挟む
- シングルクォーテーションの間に、RGBコード情報の10進数数字をR,G,Bの順に入力する。(間にコンマ[,]で区切る)
という形ですね。
RGBコード情報に関しては、配色を取り扱っているサイトなどに一覧があるので、そういった諸サイトを参考にしていただくのが良いと思います。
16進数型(hexadecimal)
16進数というのは、数字が16ごとに位(くらい)があがっていく表記法です。
我々が普段の生活で馴染み深いのは10ごとに位(くらい)が上がる10進数ですね。
※16進数については以下の記事で詳しく解説していますので、より詳しく知りたいという方は↓のリンク記事をご覧ください。
16進数をつかって、赤色を表現しようとすると↓のようになります。
//変数「varColor」に赤色というデータを代入する
color varColor=0x0000FF;
先頭の「0x」というのが「これは16進数表記ですよー」という宣言記述です。
それに続く6桁は(緑緑青青赤赤)のような構成要素になっていて、2桁ずつ各原色の色素を表す役割を担っているわけです。
RGB型と16進数型は、カラー定数型が用意できない色をカスタムして使いたい、というときに利用します。
なので、自動売買プログラム(EA)を作る、という限りにおいては、仮にColor(カラー)型を用いるにしてもカラー定数型を使っていれば問題ないでしょう。
まとめ
今回はColor(カラー)型というデータ型について解説しました。
今回は以下のことを学びました。
- Color(カラー)型とは、色に関するデータを格納する変数を用意を用意する時に使われるデータ型である。
- 基本的にはカラー定数型を使っていけば問題ない。
Color(カラー)型を使うことで、視覚的に魅力あるEAやカスタムインジケ-タを作る事が可能になります(この場合の「魅力」というのは、効率性や機能性も含んでいます)
ただその一方で、MQL5のプログラミングスキルを上達させる過程では、Color(カラー)型のような要素も大切な役割を果たします。
プログラミングは、小さな機能を組み合わせて大きなシステムを作ることです。カラー型を使いこなすことで、より高度なプログラミングテクニックに自信を持って挑戦できるようになります。
今は「こんなのもあるんだ~」というぐらいの軽い気持ちで、楽しみながら学んでいきましょう。
最後までお読みいただきありがとうございました<m(__)m>
【超入門】MQL5 EA講座 第14.5回「Bool(ブール)型について補足」←
【超入門】MQL5 EA講座 第14回「データ型その4 Bool(ブール)型」←
→【超入門】MQL5 EA講座 第16回「データ型その datetime型」【EAの作り方】
コメント