【無料】メールマガジン配布します!

真実!しか流さないメールマガジン《不定期》

メルマガのお申し込みはコチラ

スプレッドを記録するインジケーター 1

 

『知り合いに、スプレッドを記録するインジケーター知らない?』

っと何気に聞かれた。

 

ちょっと調べてみるとこんなん有料で売っているところもあるのかと

ふーん、と思いながら見ていた。

 

面倒なので、ちょっと作ってみることに

 

ついでなので、興味ある人がいるのかは謎だがちょっと解説を入れながら記事にしてみる。

 

20140323074540

MEtaEditorの新規作成からインジケーターを作成。もちろんこの時点では、まっさらだ。

 

//+——————————————————————+
//|                                              Spread_reporter.mq4 |
//|                                             Copyright 2013, tomo |
//|                             http://xn--fx-5f5cr13csqi9uodiz.com/ |
//+——————————————————————+
#property copyright "Copyright 2013, tomo"
#property link      "http://xn--fx-5f5cr13csqi9uodiz.com/"
#property version   "1.00"
#property strict
#property indicator_chart_window

//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int OnInit()
  {
//— indicator buffers mapping
//—
   return(INIT_SUCCEEDED);
  }
//+——————————————————————+
//| Custom indicator iteration function                              |
//+——————————————————————+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//—
//— return value of prev_calculated for next call
   return(rates_total);
  }
//+——————————————————————+
//| Timer function                                                   |
//+——————————————————————+
void OnTimer()
  {
//—
  }
//+——————————————————————+

 

最初は、こんな感じ^^; ※Builde610

 

取りあえず、チャート上にスプレッドを表示させるところからやってみよう。

イキナリ複雑なことは、出来ませんので1つ1つステップを踏めば出来上がったときにはそこそこの物が出来るのです。やれば簡単、難しいと思い込んでる内は難しい。

 

 

extern color LabelColor = White;

この行を最初の方に追加します。

extern というの、、、、なんと読むかもしらないが^^;パラメーターの変更を可能にしてくれます。

 

20140323081322

こんな感じに、色が設定できるようになるので便利です。

なんとなく白がいいかなと思いWhite

Color の設定も必ず最初の1文字が大文字からという決まりがあるみたいです。決まりなので何も考えずいつも大文字にしてます。

プログラムは、動くのが優先^^;郷に入っては郷に従えです。

 

string OBJ_NAME="Spread_reporter";

 

オブジェクトネームを入力しておきます。これは、繰り替えし使うので代入していた方があとあと楽ちんだからですね。

Spread_reporterを何度も使うからです。

まあ^^; OBJ_NAME と文字数それほど変わらないと思うのですが、慣用句的な感じで使ってます。くせになってますね。ここは

ざっと他のコードは、こんな感じ

チャートに文字を表示したいので、、、、、、

コメントでさらっとやってもいいけどそれじゃあまりにも味気ないので

 

ObjectCreate(OBJ_NAME, OBJ_LABEL, 0, 0, 0);

これで、クリエイトでオブジェクトを設定するイメージです。OBJ_LABEL まぁラベルで使いますよって設定しています。文字が使えるようにセットした感じです。他にも、OBJ_HLINE(水平線)とか OBJ_ARROW(矢印)とかいろいろあるので用途に応じで選べます。

 

ObjectSet(OBJ_NAME, OBJPROP_CORNER, 0);
ObjectSet(OBJ_NAME, OBJPROP_YDISTANCE, 20);
ObjectSet(OBJ_NAME, OBJPROP_XDISTANCE, 20);

ObjectSet は、プロパティを指定するためのものです。ここでは、ラベルの座標を決めるのに使います。

OBJPROP_CORNER は、

チャートの左上が 0
チャートの右上が 1
チャートの右下が 2
チャートの左下が 3

となってます。

指定したコーナーを基準として、OBJPROP_YDISTANCE と OBJPROP_XDISTANCEでラベルの設置する場所を決めるという具合です。

ここは、実際に入力している数値を変えてみて感覚的に身につけたが早いです。はい

 

string sp= "Spread: "+DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 1);

そして、この行は、スプレッドを取得しているところとなります。

MarketInfo(Symbol(), MODE_SPREAD) がセットしているチャート上のスプレッドを取得する命令です。もちろん、Ask-Bid で計算しても構いません。

違いがあるのかは、tomoは知りません^^;

何かあるのかな・・・・

 

DoubleToStr(  ,0)~は、数字を文字変換してくれてます。ラベルが文字扱いだから必要みたいです。

ここも郷には入ったら郷に従え方式でそうなんだと思ってやっています。

 

ObjectSetText(OBJ_NAME,sp, 20, "Times New Roman", LabelColor);

最後に、ObjectSetText で実際にチャートに表示されるのです。

sp というのが、先ほど代入した”Spread: @@”とう文字が入ってインジケーターに表れます。

あとは、字体や冒頭で設定した色もここで使います。

 

するとどうでしょうw

20140323083645

チャートの左上に、スプレッドが表示されているのです。

勘違いしがちですが、最小単位で数字がでてきています。このままだとPointが単位となりますので、Pipsでは2.0pipsとうことになります。

ここをPips表示にするのは、後日説明します。

 

それと最後にですが、インジケーターをチャートから削除したときに表示を消すように設定しておかないといけません。残るとウザイですから

ObjectDelete(OBJ_NAME);

この一文をいれましょう。

 

それと今回、void OnTimer() を意図的に使っています。void OnTick() だとティックが動く度に記録されるので、、ウザイということで。

EventSetTimer(1);

とう命令を使うと これで1秒単位でvoid OnTimer() を呼び出すとう芸当がいかも簡単にできるのだそうです。これは、元々MQL5での機能のようなので今回のバージョンUPでMQL4でも使えるという解釈でいいのかな?

MetaEditorが5になった時点でもうMQL4じゃないのよねきっと。

 

なかなか、記事にするのに時間がかかったので続きは次に^^;

 

20140323085927 またまたバージョンUPしてますよ。
Builde610→625です。

今度はどんな不具合が修正されたのやらトホホですね。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

tomoよりのお願い

参考になったちょっと役に立ったお疲れさんって
少しでもおもったかた(*゜▽゜ノノ゛☆

 

ポッチっとお願いします。その1ポチ!ありがとう

にほんブログ村 為替ブログ FX初心者本人(1年目)へ
にほんブログ村

 

このエントリーをはてなブックマークに追加 はてなで広めてください。この記事が役に立つ人がいると思います。
←左のボタンをクリックして共有してください。

 

 

タグ

2014年3月23日 | コメント/トラックバック(1) |

カテゴリー:インジケーター

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント


コメントをどうぞ

このページの先頭へ