Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 244

 
forexman77:
Können Sie mir sagen, ob es neben "SymbolInfoTick" noch andere schnelle Möglichkeiten gibt, den aktuellen Preis zu ermitteln? Vielleicht gibt es eine schnellere Möglichkeit, das aktuelle Angebot zu erhalten?

SymbolInfoDouble kann verwendet werden

mit den BezeichnungenSYMBOL_BID undSYMBOL_ASK.

 
Fleder:

SymbolInfoDouble kann verwendet werden

mit den BezeichnungenSYMBOL_BID undSYMBOL_ASK.

Ich danke Ihnen!

Es ist nicht ganz klar, was aus "SYMBOL_BID" folgt (Gebot ist das beste Verkaufsangebot). Ist es immer noch der aktuelle Kurs oder der beste Marktpreis aus dem ESN-Cup?

 
forexman77:

Ich danke Ihnen!

Es ist nicht ganz klar, was aus "SYMBOL_BID" folgt (Gebot ist das beste Verkaufsangebot). Ist es immer noch der aktuelle Kurs oder der beste Marktpreis aus dem ESN-Cup?

Die aktuelle Notierung und der beste Preis im ECN-Marktbecher sind ein und dasselbe.

 
Fleder:

Der aktuelle Kurs und der beste Preis im ECN-Dock sind ein und dasselbe.

Im Allgemeinen stellt sich heraus, dass, wenn wir bei der Abfrage "SymbolInfoDouble" verwenden, ein Handel zu diesem Preis nicht stattfinden kann, d.h. es handelt sich um das aktuelle Bid.

Wenn wir "SymbolInfoTick" verwenden, dann war der Preis genau dort, d.h. dies ist der aktuelle Preis, zu dem der letzte Handel stattgefunden hat, wenn wir double last; // Aktueller Preis des letzten Handels (Last)

 
forexman77:

Im Allgemeinen stellt sich heraus, dass, wenn wir "SymbolInfoDouble" in der Abfrage verwenden, ein Handel zu diesem Preis nicht stattfinden kann, d.h. es ist das aktuelle Bid.

Wenn wir "SymbolInfoTick" verwenden, dann war der Preis definitiv da, d.h. es ist der aktuelle Preis, zu dem die letzte Transaktion stattgefunden hat.

Hinweis

Wenn diese Funktion verwendet wird, um Informationen über den letzten Tick zu erhalten, ist es besser,SymbolInfoTick() zu verwenden. Es ist durchaus möglich, dass es für dieses Symbol seit dem Zeitpunkt, an dem das Terminal die Verbindung zum Handelskonto hergestellt hat, keine Notierung gegeben hat. In diesem Fall ist der angeforderte Wert undefiniert.

SymbolInfoTick kann einen undefinierten Wert zurückgeben, wenn seit der Verbindung des Terminals mit dem Server kein einziger Tick stattgefunden hat.

SymbolInfoDouble schließt diese Situation aus.

 
Fleder:

Hinweis

Wenn die Funktion verwendet wird, um Informationen über den letzten Tick zu erhalten, ist es besser,SymbolInfoTick() zu verwenden. Es ist durchaus möglich, dass es für dieses Symbol keinen Kurs mehr gibt, seit das Terminal mit dem Handelskonto verbunden wurde. In diesem Fall ist der angeforderte Wert undefiniert.

SymbolInfoTick kann einen undefinierten Wert zurückgeben, wenn es keinen einzigen Tick gegeben hat, seit der EA mit dem Diagramm verbunden wurde.

SymbolInfoDouble schließt diese Situation aus.

Ich hab's. Ich danke Ihnen! Jetzt muss nur noch ein einfaches Code-Beispiel gefunden werden, um zu überprüfen, wie viel Zeit jede Funktion benötigt, wenn sie aufgerufen wird?
 
forexman77:
Ich hab's. Ich danke Ihnen! Jetzt muss nur noch ein einfaches Codebeispiel gefunden werden, um zu prüfen, wie lange der Aufruf beider Funktionen dauert?
uint start=GetTickCount();
// здесь Ваш код вызова 
Print("Вызов прошёл за = ",GetTickCount()-start);
 
barabashkakvn:

Dieser Trick wird in dieser Situation wahrscheinlich nicht funktionieren.

Es wird immer eine Nullunterschreitung geben.

Die FunktionenSymbolInfoTick undSymbolInfoDouble sind zu schnell- nicht länger als Einheiten von Mikrosekunden.

 
Fleder:

Dieser Trick wird in dieser Situation wahrscheinlich nicht funktionieren.

Es wird immer eine Nullunterschreitung geben.

Die FunktionenSymbolInfoTick undSymbolInfoDouble sind zu schnell- nicht länger als Einheiten von Mikrosekunden.

Umso interessanter ist es, dass es einen Beispielcode gibt. Wir warten auf das Ergebnis.
 
barabashkakvn:
Fleder:

Dieser Trick wird in dieser Situation wahrscheinlich nicht funktionieren.

Es wird immer eine Nullunterschreitung geben.

Die FunktionenSymbolInfoTick undSymbolInfoDouble sind zu schnell- nicht länger als Einheiten von Mikrosekunden.

In dem Skript habe ich dieses kleine Ding erstellt:

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

Zeit=0

SymbolInfoTick wird am Montag überprüft.

Grund der Beschwerde: