2016年6月8日水曜日

[MT4プログラム] MT4 Build971記念 MT4サーバーとの通信速度を取得する/DRAW_NONEを確認する。

MT4のBuild970アップデートが入りました。
再度確認してみたらBuild971がインストールされていました。

ex4の後方互換がなくなりましたので注意です。Build971でコンパイルしたex4はBuild960以前では動作しないようです。

ビルド970:デモ口座開設の簡素化およびMQL4の機能の拡張
https://www.mql5.com/ja/forum/86990

さて、MQL回りにあれこれ修正が入りました。詳細はフォーラムの投稿を見てもらうとして、プログラマ的には純粋仮想関数の導入が肝でしょうか? これで実装忘れがかなり減らすことができますね。フォーラムに詳細が記載されていますので、そちらにお任せします。

それ以外で気になった所を試したいと思います。

MQL4:クライアントターミナルのプロパティENUM_TERMINAL_INFO_INTEGERにTERMINAL_PING_LAST(マイクロ秒単位の取引サーバーまでのPingの最新の既知値)が追加されました。1秒は100万マイクロ秒です。
ちょっとやってみました。

//------------------------------------------------------------------
// ターミナルまでの最新PING値
#property copyright "Copyright 2015,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.00"
#property strict
#property indicator_chart_window

int OnInit()
{
   return(INIT_SUCCEEDED);
}
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[])
{
   int ping = TerminalInfoInteger( TERMINAL_PING_LAST );
   Comment(StringFormat("Lasted Ping: %d ms", ping / 1000));
   return(rates_total);
}


・・・・・・・
AlpariとOandaデモで試しましたが、両方とも、10000000が固定で帰ってきます。使えないです。EAでも試してみましたが同じでした。デモで発注を掛けた後、再取得してみましたが同じでした。
・・・・・・・・うん。現状、使えないです。

2016/06/09追記
MT4起動時の操作履歴で、ログイン履歴が出てきます。
login datacenter on Alpari-Demo through demo.uk.6 (ping: n/a)

ここで、(ping n/a)となっているとアウトのようです。
Orandaのリアル口座の方では、ここがぴping 2.84msとなっていて、値が取れます。デモ口座だからダメなのかな?


MQL4: カスタムインディケータのDRAW_NONEバッファ(チャート構築なし)は、これからはチャートウィンドウの最大/最小値の計算に関与しません。

子ウィンドウに出すようなバッファの場合、描画していないラインに引っ張られて困っていたので、これはいいですね。ちゃんと動けば。ということでやってみました。

//------------------------------------------------------------------
// DRAW_NONEが最大最小値に影響を与えない
#property copyright "Copyright 2015,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.00"
#property strict
#property indicator_separate_window

//バッファーを指定する。
#property indicator_buffers 2

#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

#property indicator_type2   DRAW_NONE

double buffer1[];
double buffer2[];

int OnInit()
{
   SetIndexBuffer(0, buffer1);
   SetIndexBuffer(1, buffer2);
   return(INIT_SUCCEEDED);
}
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[])
{
   for( int i = rates_total - prev_calculated - 1; i >= 0; i--)
   {
      buffer1[i] = close[i];
      buffer2[i] = 10000;
   }
   return(rates_total);
}
お!こちらは書いてある通りに動作しているようです。

そして、フォーラムコメントには早速不具合報告が・・・・・。

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。