再度確認してみたら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)
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
にほんブログ村 |
お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。