チャートの端の位置を取得する

上下は価格、左右は時間のバーインデックス

チャートの端っこの位置を知りたい時、皆さんはどうしていますか?

黄色い線を引いている4ヶ所のことです。

チャートの端

例えば、テキストオブジェクトを端っこに常駐させておきたい時などに必要になりますよね。

チャートの上端・下端は簡単です。

開いているチャートの一番上あるいは一番下の価格を取得してくれるMT4の組込み関数、WindowPriceMax関数(上端)とWindowPriceMin関数(下端)を呼ぶだけです。

じゃあ左端と右端はどうかと言いますと、左端は上下と同様に組込み関数のWindowFirstVisibleBar関数を呼ぶだけです。

チャートの左端(見えている範囲)のバーインデックスを返してくれる関数なので、Time[WindowFirstVisibleBar()]みたいに使うと良いと思います。

バーインデックスについて
バーインデックスはちょっと特殊で、0が現在の足の位置(起点)で、過去に遡るほど数字が大きくなります。0番目が現在足、1番目が1本左隣の足、2番目が2本左隣の足となります。マイナスは存在しません。

問題はチャートの右端(見えている範囲)です。

なぜか、チャートの右端だけは一発で取得させてくれません。

どうしたもんかなーと他の組込み関数を眺めていたら、WindowBarsPerChart関数を見つけました。

これはチャートに表示されている(可視範囲の)バー数を返してくれる関数です。

WindowBarsPerChart関数WindowFirstVisibleBar関数を合わせればチャートの右端を導き出せそうです。

というわけで、チャートの上下左右の端は以下の式で取得できます。

double UpPrice   = WindowPriceMax(); // 上端
double DownPrice = WindowPriceMin(); // 下端
datetime LeftTime  = Time[WindowFirstVisibleBar()]; // 左端
datetime RightTime = Time[0] + (WindowBarsPerChart() - WindowFirstVisibleBar() - 1) * Period() * 60; // 右端

右端の式に存在する「-1」の理由は冒頭のチャートの左上にあるComment関数の出力結果を見ながら考えてみてください!(チャートをクリックすれば拡大します)

ヒントは「WindowFirstVisibleBar関数で取得できるものはバーインデックスであってバー数ではない」です。

なお、「テキストオブジェクトなんか使わずにラベルオブジェクトを使えば良いんじゃないの?」という突っ込みはスルーです。

MT4の無料プログラミング講座

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG