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

 

さて、前回から始めたのが『スプレッドを記録するインジケーター作り』
まずは、チャートに表示するところから始めました。

前回の記事:スプレッドを記録するインジケーター 1

 

この記事は、その続きです。

 

Point表示をPips表示にする!

これも別段トレードする上でそれほど重要ではないと思ってますが豆知識として^^;

業者には、4桁・2桁表示を採用しているところと5桁・3桁表示を採用しているブローカーとがあります。

4桁・2桁表示のブローカーは、最小単位がPipsなのでそのままでいいのですが、問題は5桁・3桁表示です。最小単位が、Pointになってしまいます。

 

そこで、最初に利用のブローカーが何桁を使っているのかを判断して表示させるときに使い分けをさせます。

double Pips_Adjust=0;
if (Digits == 3 || Digits == 5) Pips_Adjusut = 10.0; else Pips_Adjusut= 1;

こんな感じです。

 

単純にDigitsは、利用しているチャート通貨の桁を調べる命令で3桁もしくは、5桁だったら最小単位がPointなので、Pips表示と合わせる為に10で割りたいで10をPips_Adjustに入力してます。

 

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

↓↓

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

と前回書いた、スプレッドの表示部分を書き換えます^^;

コードを書いていると後からちょこちょこ変わっていきます。

20140323140552

それっぽくなってきましたね。

 

スプレッドを記録する。

MT4は、Filesというフォルダで読み書きを出来るように設定されているようです。

ここもそれほど難しく考えずテキストにスプレッドを書き出していくようにします。

はじめて、見る方は。さっぱり笑だと思いますが、1つ1つゆっくり見てください。

 

// ファイルへ出力 
int hFile = FileOpen(Symbol()+".txt", FILE_WRITE|FILE_CSV|FILE_ANSI);
if(hFile == -1) return;
FileWrite(hFile, sp);
FileClose(hFile);

まずは、 // 斜め線2つですが、これはちょっとメモするときに使います。

だんだんとコードが長くなっていくと慣れないあいだは、理解し難くなるのでこの部分で何をしているのかを理解するために、(正確には、自分で思い出すために・・・・)作っておくと後々便利です。

// と書くのその行は、何を書いてもエラーになりませんので日本語でメモってもOK

int hFile = FileOpen(Symbol()+".txt", FILE_WRITE|FILE_CSV|FILE_ANSI);

  ここは、ファイルを書き込むための準備みたいなものです。

if(hFile == -1) return;

エラーがでたら実行せずにいったん戻します。

FileWrite(hFile, sp);

ここで、ファイルに書き込み

FileClose(hFile);

ここで、ファイルを閉じます。

この流れは、テキストファイルに書き込みするときのセットみたいなものなので定型文として覚えてしまう方が楽です。

 

これで実行すると

20140323142210

通貨ペアを名前とした、テキストが出来ています。

20140323142247

ファイルを開くとスプレッドが2.0とうことがメモされてますね。ここまでは成功です。

スプレッドがメモされたのは、いいのですが知りたいのは、スプレッドの変化ですから時間毎に書き込みするように付け加える必要があります。

 

ということで、ちょっとコードを書き換えました。

sp=Month()+"/"+Day()+" "+TimeHour(TimeLocal())+":"+ TimeMinute(TimeLocal()) +" , "+sp;   

// ファイルへ出力 
int hFile=FileOpen(_Symbol+ "_"+ OBJ_NAME+".txt", FILE_WRITE|FILE_TXT|FILE_READ);
if(hFile == -1) return;
FileSeek(hFile, 0, SEEK_END);
FileWrite(hFile, sp);
FileClose(hFile);

 

ここでは、

スプレッドに加えて日付と時間をメモするようにしました。後でエクセルでも管理してみてください。

FileSeekで書き込みの終わり部分を見つけて追加で書き込むように変更。

 

20140323205011

通貨とインジケーター名でテキストを出力してます^^

 

20140323205229

こんな感じでテキストにがんがん書き込んでいきます。

 

EventSetTimer(1);

前回 1秒毎に記録していました。

個人的には、1分ごとでもいいのかな、、、、、ブローカーを見張るなら1秒だけど

とうことで、ここの部分はパラメーターで設定できるように変更しておきます。

 

extern int  intervalSecond = 60;

~省略~
EventSetTimer(intervalSecond);

 

60秒毎に設定になるし、いつでも変更が可能です。

20140323210632

これで、毎分でスプレッドを記録してくれるようになりました。あとは、お好みでお使いください。

ソースでUPしてますので、しっかりとテストしてません。

不具合あったらコメントでも下さい。出来る範囲は、修正します^^

 

Spread_reporterダウンロード

タグ

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

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

このページの先頭へ