オブジェクトで四角形を描いて装飾をする
公開日:2018/08/19
前回の記事「
オブジェクトでスプレッドをチャートに表示させる」で、オブジェクトを使ってスプレッドなどの文字を表示させてみましたが、今回は、四角形をチャート上に表示させてみます。
四角形の大きさや色、枠線、表示位置(X座標とY座標)などを指定して、作成していきます。
以下から作成過程を説明していきます。
ソースコードの説明
まず、最初に横幅200px、高さ200pxの青い四角形をチャートの左上に表示させてみます。
前回、オブジェクトで文字を描いたときのようにオブジェクトの設定をしていきますが、少し処理が増えてコードが長くなります。
オブジェクトを作成するところから、コードを書いていきます。
■オブジェクトの処理
①ObjectsDeleteAll();
②ObjectCreate(0,"四角形",OBJ_RECTANGLE_LABEL,0,0,0);
③ObjectSetInteger(0,"四角形",OBJPROP_CORNER,CORNER_LEFT_UPPER);
④ObjectSetInteger(0,"四角形",OBJPROP_XDISTANCE,30);
⑤ObjectSetInteger(0,"四角形",OBJPROP_YDISTANCE,30);
⑥ObjectSetInteger(0,"四角形",OBJPROP_XSIZE,200);
⑦ObjectSetInteger(0,"四角形",OBJPROP_YSIZE,200);
⑧ObjectSetInteger(0,"四角形",OBJPROP_BGCOLOR,clrBlue);
①ObjectsDeleteAll();
表示されているオブジェクトがあった場合、被ってしまうことがあるので、表示されているオブジェクトをすべて削除します。
②ObjectCreate(0,"四角形",OBJ_RECTANGLE_LABEL,0,0,0);
オブジェクトID「0」、オブジェクト名「四角形」、オブジェクトの種類「長方形」、表示させるウインドウの番号を「0(チャートウインドウ)」、オブジェクトの位置を「0,0,0」に設定。
③ObjectSetInteger(0,"四角形",OBJPROP_CORNER,CORNER_LEFT_UPPER);
オブジェクトの原点を画面左上の中心に指定。
④ObjectSetInteger(0,"四角形",OBJPROP_XDISTANCE,30);
設定した原点からのX軸の画面中央に向かっての距離を「18」に指定。
⑤ObjectSetInteger(0,"四角形",OBJPROP_YDISTANCE,30);
設定した原点からのY軸の画面中央に向かっての距離を「30」に指定。
⑥ObjectSetInteger(0,"四角形",OBJPROP_XSIZE,200);
オブジェクトの横幅を「200」に設定。
⑦ObjectSetInteger(0,"四角形",OBJPROP_YSIZE,200);
オブジェクトの高さを「200」に設定。
⑧ObjectSetInteger(0,"四角形",OBJPROP_BGCOLOR,clrBlue);
オブジェクトの背景色を「Blue」に設定。
それでは、コンパイルして実行してみます。
実行結果
インジゲーターを起動した瞬間のチャートです。
チャートの左上にちゃんと四角形が表示されました。
これで、シンプルな四角形を描くことができましたが、装飾などの設定も加えていきたいと思います。
四角形の装飾
上記で作成した四角形のオブジェクトに装飾の設定をしていきます。
最初に、今のままだとローソク足の前に四角形が表示されていて、ローソク足が隠れて見えない状態になっているので、ローソク足の後ろに四角形を配置します。
ObjectSetInteger(0,"四角形",OBJPROP_BACK,true);
上記のコードを追加することで、ローソク足の後ろに四角形を配置できます。
実行結果は、以下のようになります。
ちゃんとローソク足の後ろに四角形が表示されてローソク足が見えるようになりました。
次に、四角形に枠線を追加してみます。
①ObjectSetInteger(0,"四角形",OBJPROP_BORDER_TYPE,BORDER_FLAT);
②ObjectSetInteger(0,"四角形",OBJPROP_COLOR,clrWhite);
③ObjectSetInteger(0,"四角形",OBJPROP_STYLE,STYLE_SOLID);
④ObjectSetInteger(0,"四角形",OBJPROP_WIDTH,5);
①ObjectSetInteger(0,"四角形",OBJPROP_BORDER_TYPE,BORDER_FLAT);
線のタイプをを「BORDER_FLAT」に指定。
②ObjectSetInteger(0,"四角形",OBJPROP_COLOR,clrWhite);
線の色を「White(白)」に設定。
③ObjectSetInteger(0,"四角形",OBJPROP_STYLE,STYLE_SOLID);
線の種類を「STYLE_SOLID(実線)」に設定。
④ObjectSetInteger(0,"四角形",OBJPROP_WIDTH,5);
線の太さを「5」に設定。
実行結果は以下のようになります。
四角形に枠線が表示されました。
まとめ
いかがだったでしょうか?
今回は、四角形のオブジェクトを作成してみましたが、色や大きさ、表示位置なども自由に指定することができました。
最初はコードの書き方など少し手惑いましたが、一度できてしまえば、設定値などを変更することで、簡単に図形を描いていくことができます。
これを応用していけば、時間帯のBOXや抵抗線のゾーンなども描くこともできそうです。
また、テクニカルなどの値をメーター化して表示させたり、インジゲーターのサインなども表示することができそうなので、応用して利用していきたいと思います。
それでは、また。
今回使用したMQL一覧
関連ページ