初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 244

 
forexman77:
SymbolInfoTick」以外に、現在の価格を 素早く取得する方法があれば教えてください。もしかしたら、もっと早く現在の見積もりを取得する方法があるのでは?

SymbolInfoDoubleを 使用することができます。

を、SYMBOL_BID およびSYMBOL_ASK 識別子で指定する。

 
Fleder:

SymbolInfoDoubleを 使用することができます。

を、SYMBOL_BID およびSYMBOL_ASK 識別子で指定する。

ありがとうございました。

SYMBOL_BID」(Bidは売却のための最良の提案)から何が続くのか、よくわからない。やはりESNカップからの現在の見積もりや最良の市場価格なのでしょうか?

 
forexman77:

ありがとうございました。

SYMBOL_BID」(Bidは売却のための最良の提案)から何が続くのか、よくわからないのです。やはりESNカップからの現在の見積もりや最良の市場価格なのでしょうか?

現在の気配値とECNマーケットカップのベストプライスは同じものです。

 
Fleder:

現在の気配値とECNドックのベストプライスは同じものです。

一般に、"SymbolInfoDouble "を使って問い合わせをすると、この価格での取引は発生しない、つまり現在のBidであることが判明します。

SymbolInfoTick "を使用する場合、価格は正確にそこにあった、つまり、これは最後の取引が発生した現在の価格 です、使用時 double last; // 最後の取引の現在の価格(Last)。

 
forexman77:

一般に、クエリーで "SymbolInfoDouble "を使用すると、この価格での取引は起こらないかもしれない、つまり、それは現在のBidであることが判明しました。

SymbolInfoTick "を使用する場合、価格は間違いなくそこにあった、つまり、最後の取引が行われた現在の価格 である。

備考

この関数で最後のティックの情報を取得する場合は、SymbolInfoTick() を使用したほうがよいでしょう。端末が取引口座に接続した時点から、このシンボルの気配 値がない可能性があります。この場合、要求された値は未定義となる。

端末がサーバーに接続してから1ティックも経過していない場合、SymbolInfoTickは未定義値を返す場合があります。

SymbolInfoDoubleはこのような状況を排除しています。

 
Fleder:

備考

最後のティックに関する情報を取得するためにこの関数を使用する場合は、SymbolInfoTick() を使用する方がよいでしょう。端末が取引口座に接続されて以来、このシンボルの相場が ない可能性があります。この場合、要求された値は未定義となる。

SymbolInfoTickは、EAがチャートに接続されてから1ティックも経過していない場合、未定義値を返すことがあります。

SymbolInfoDoubleはそのような状況を排除しています。

了解です。ありがとうございました。あとは、それぞれの関数が呼び出されたときにどれくらいの時間がかかるかを確認するための簡単なコード例を探すだけでしょうか。
 
forexman77:
了解です。ありがとうございました。あとは、両方の関数を呼び出すのにどれくらい時間がかかるか、簡単なコード例を見つけるだけですね。
uint start=GetTickCount();
// здесь Ваш код вызова 
Print("Вызов прошёл за = ",GetTickCount()-start);
 
barabashkakvn:

このトリックは、おそらくこの状況では使えないでしょう。

アンダーシュートは必ずゼロになる。

SymbolInfoTick関数とSymbolInfoDouble 関数は、マイクロ秒の単位より長くない ため、速すぎる。

 
Fleder:

このトリックは、おそらくこの状況では使えないでしょう。

アンダーシュートは必ずゼロになる。

SymbolInfoTick関数とSymbolInfoDouble 関数は、マイクロ秒の単位より長くない ため、速すぎる。

さらに興味深いのは、サンプルコードがあることだ。結果を待っているところです。
 
barabashkakvn:
フレーダー

このトリックは、おそらくこの状況では使えないでしょう。

アンダーシュートは必ずゼロになる。

SymbolInfoTick関数とSymbolInfoDouble 関数は、マイクロ秒の単位より長くない ため、速すぎる。

スクリプトの中で、こんな小さなものを作りました。

void OnStart()
  {
uint start=GetTickCount();
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
Alert("ask=",ask);
uint time=GetTickCount()-start;
Alert("time=",time);
   
  }
//+------------------------------------------------------------------+

時間=0

SymbolInfoTickは 月曜日にチェックされます。