オブジェクトでスプレッドをチャートに表示させる

sitemap
世界最強のFXキャッシュバックサイト
オブジェクトでスプレッドをチャートに表示させる
公開日:2018/08/14
今回は、チャートの左上にオブジェクトを使ってスプレッドを表示させてみます。 なにげに初挑戦。

今までは、取得した値などをCommentなどを利用して表示させていましたが、文字が小さくて大きさを変更することができないのと、決まった位置にしか表示ができませんでした。

しかし、今回利用したオブジェクトを使えば、好きな大きさ、色、位置に文字などを表示させることができます。

Commentとは、やり方が少し違ってコードも増えますが、やってみると意外と簡単でした。

今回は、OnInit内で処理をさせるので、起動時に1回だけスプレッドの値を取得して表示させます。

常にスプレッドが更新されるたびに表示を更新させるインジゲーターは、こちら「Spread Checker」。

以下から作成過程を説明していきます。
ソースコードの説明
今回は、例としてスプレッドの値を取得して、チャートの左上に大きさなどを指定して表示させてみます。

まず、スプレッドの値を取得します。

用意した変数にスプレッドの値を代入するために変数を以下のように定義します。
①double spread = MarketInfo(Symbol(),MODE_SPREAD);

①double spread = MarketInfo(Symbol(),MODE_SPREAD);
double型の変数spreadにMarketInfoを利用してスプレッドの値を代入します。

■オブジェクトの処理

取得したスプレッドの値をオブジェクトを使って、表示させていきます。

①ObjectsDeleteAll();
②ObjectCreate( "spread",OBJ_LABEL,0,0,0);
③ObjectSet("spread",OBJPROP_XDISTANCE,5);
④ObjectSet("spread",OBJPROP_YDISTANCE,18);
⑤ObjectSetText("spread",spread,20,"MS ゴシック",clrWhite);

①ObjectsDeleteAll();
表示されているオブジェクトがあった場合、被ってしまうことがあるので、表示されているオブジェクトをすべて削除します。

②ObjectCreate( "spread",OBJ_LABEL,0,0,0);
オブジェクト名「spread」、オブジェクトの種類「ラベル」、表示させるウインドウの番号を「0(チャートウインドウ)」、オブジェクトの位置を「0,0,0」に設定。

③ObjectSet("spread",OBJPROP_XDISTANCE,5);
設定した原点からのX軸の画面中央に向かっての距離を「5」に指定。

④ObjectSet("spread",OBJPROP_YDISTANCE,18);
設定した原点からのY軸の画面中央に向かっての距離を「18」に指定。

⑤ObjectSetText("spread",spread,20,"MS ゴシック",clrWhite);
オブジェクトの文字列を上記で代入した変数「spread」、フォントサイズ「20」、書式を「MS ゴシック」、カラーを「白」に設定。

オブジェクトの処理は、意外と短く、これだけです。

それでは、コンパイルして実行してみます。

実行結果
インジゲーターを起動した瞬間のチャートです。

チャートの左上にちゃんと表示されました。
起動時

15と表示されているのは、気配値ウインドウに表示されているスプレッドの値が取得されているからです。
保有中

これだと少し、わかりにくいので、表示を変えてみます。
変数にスプレッドの値を代入するところを少し変更します。

double spread = MarketInfo(Symbol(),MODE_SPREAD)*0.1;

単純に0.1をかけただけですが、表示させてみます。

10分後

ちゃんと表示されました。

ついでに、「Spread:」という文字列も追加してみます。
文字列「Spread:」を変数spreadと合体させます。

ObjectSetText("spread","Spread:"+spread,20,"MS ゴシック",clrWhite);

文字列の合体はできないかと思ったけどできちゃいました。

損益

うまく表示されました。これで、スプレッドが表示されていることがわかりやすくなりました。
まとめ
いかがだったでしょうか?

今回は、初めてオブジェクトを使って文字列を表示させてみましたが、意外と簡単にできました。

これで、好きな位置に好きな書式の文字などを表示することができるようになったので、インジゲーターの幅が広がりそうです。

文字以外にも、線や図形なども描画することができるみたいなので、今度作ってみたいと思います。

それでは、また。
今回使用したMQL一覧
関連ページ
big_candlestick_judgment
スポンサードリンク
Twitter