expert advisor - verschiedene Fragen - Seite 17

 

#Bestellungen Berechnungen & Account Info's Updates - Offen

( Ich habe schon einmal gefragt - aber ich brauche immer noch Hilfe )

Ich rufe meine Berechnungsfunktionen durch OnTick() oder Start() auf, und sie hängen von Chart Symbol Ticks ab.
Und ich habe begonnen zu recherchieren, wie kann ich meine EA's Berechnung Updates nicht abhängig von Ticks und Symbole ( / Chart - Ticks, Symbole ).
Ich versuche gerade, alle Auftragsberechnungen und Kontoinformationen mit Terminal > Trade zusynchronisieren (in Echtzeit).

Bitte helfen Sie mir, danke.
Vielen Dank im Voraus.

 
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
  • www.mql5.com
Language Basics / Functions / Event Handling Functions - Reference on algorithmic/automated trading language for MetaTrader 5
 
Marco vd Heijden:

Und SymbolName(x,1);

Guter Kommentar, der mir sehr geholfen hat, vielen Dank.
Nun, ich benutze OnTick() und OnTimer(), beide Funktionen funktionieren gut für mich. (Ich verwende zum ersten Mal OnTimer() für EA's)

---

Ich würde auch gerne Ticks ausprobieren. Ich brauche nur Ticks von welchen Symbolen (Paaren) auf 'Terminal > Trade' und dem aktuellen Chart Symbol. Ist dieses SymbolName() könnte mir helfen?
Bitte, helfen Sie mir oder geben Sie mir einen Rat, wie ich das machen kann?

Ich wünsche Ihnen alles Gute.

 
   for(int i=0;i<SymbolsTotal(1);i++)
     {
      Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
     }
 
Marco vd Heijden:
   for(int i=0;i<SymbolsTotal(1);i++)
     {
      Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
     }

Erstaunliches Beispiel und wirklich nützlicher Kommentar für mich, vielen Dank, Mann.

Ist es möglich, dass die Ticks von den Handelspaaren/Symbolen kommen, bitte?
Denn fast die ganze Zeit mein Market Watch zeigt alle Symbole - speziell ich suche nach neuen guten Paare für Trades und das ist nur Grund, ich bin die Erforschung einige Möglichkeiten für wie kann ich ' Terminal > Trade ' Symbole / Paare, nur derzeit Eröffnung Trades Ticks erhalten.

Vielen Dank im Voraus.

 
nein, aber Sie können den Preis in der Funktion OnTimer() aktualisieren, die auf einen niedrigen Wert eingestellt ist, z.B. 250 Millisekunden entsprechen 4 Ticks pro Sekunde, warum brauchen Sie das?
 
Marco vd Heijden:
nein, aber Sie können den Preis in der Funktion OnTimer() aktualisieren, die auf einen niedrigen Wert eingestellt ist, z.B. 250 Millisekunden entsprechen 4 Ticks pro Sekunde, warum brauchen Sie das?

Vielen Dank für Ihren Kommentar.

( Unterthema -#Auftragsberechnungen & Kontoinformationen Updates - Offen) Wie ich bereits erwähnt habe, verwende ich die Order-Gewinnberechnung und diese läuft nicht synchron mit "Terminal > Trade", das ist der einzige Grund.
Also, manchmal Volatilität sehr niedrig, Ticks kommt am wenigsten Beträge, und ich denke, Funktionen könnten 4 mal in einer Sekunde ausgeführt werden, so dass läuft für nichts ( / vergeblich ).

Wenn ich den Weg nicht finden kann, die es mir ' Terminal > Handel ' ticks für Aufträge Gewinnberechnungen und Kontoinformationen ( / Updates ) synchronisieren kann. Ich werde Ihre sehr nützlichen Methoden verwenden - welche Sie mir in Ihren letzten Kommentaren gezeigt haben, vielen Dank. ( Ich habe bereits getestet und dieser Weg funktioniert bei mir )

Vielen Dank im Voraus.

 

Nun, wenn Sie wirklich in sie können Sie verwenden:

struct MqlTick
  {
   datetime     time;          // Time of the last prices update
   double       bid;           // Current Bid price
   double       ask;           // Current Ask price
   double       last;          // Price of the last deal (Last)
   ulong        volume;        // Volume for the current Last price
   long         time_msc;      // Time of a price last update in milliseconds
   uint         flags          // Tick flags
  };

Die Struktur für die Rückgabe der aktuellen Preise (MqlTick)

Dies ist eine Struktur zum Speichern der letzten Preise des Symbols. Sie ist für den schnellen Abruf der am häufigsten nachgefragten Informationen über aktuelle Preise gedacht.

Die Variable vom Typ MqlTick ermöglicht es, die Werte von Ask, Bid, Last und Volume mit einem einzigen Aufruf der Funktion SymbolInfoTick() zu erhalten.

Die Parameter jedes Ticks werden unabhängig davon ausgefüllt, ob es Änderungen im Vergleich zum vorherigen Tick gibt. So ist es möglich, einen korrekten Preis für einen beliebigen Zeitpunkt in der Vergangenheit zu ermitteln, ohne in der Tick-Historie nach früheren Werten suchen zu müssen. Selbst wenn sich z.B. nur der Geldkurs während eines Ticks ändert, enthält die Struktur noch andere Parameter, wie z.B. den vorherigen Briefkurs, das Volumen, usw.

Sie können die Tick-Flags analysieren, um herauszufinden, welche Daten genau geändert wurden:

  • TICK_FLAG_BID - ein Tick hat einen Geldkurs geändert
  • TICK_FLAG_ASK - ein Tick hat einen Ask-Kurs geändert
  • TICK_FLAG_LAST - ein Tick hat den Preis des letzten Geschäfts geändert
  • TICK_FLAG_VOLUME - ein Tick hat ein Volumen geändert
  • TICK_FLAG_BUY - ein Tick ist das Ergebnis eines Kaufgeschäfts
  • TICK_FLAG_SELL - ein Tick ist das Ergebnis eines Verkaufsgeschäfts

Beispiel:

void OnTick()
  {
   MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);
     }
   else Print("SymbolInfoTick() failed, error = ",GetLastError());
//---
  }

Siehe auch

https://www.mql5.com/en/docs/constants/structures/mqltick

Strukturen und Klassen, CopyTicks(), SymbolInfoTick()

Sie können damit also überprüfen, ob es einen neuen Tick für ein bestimmtes Symbol gab, aber das ist eigentlich ein Schritt mehr als das direkte Lesen der Preisniveaus, also noch einmal, warum sollten Sie es brauchen.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
 

Marco vd Heijden:

Nun, wenn Sie wirklich daran interessiert sind, können Sie verwenden: ...
So können Sie es verwenden, um zu überprüfen, ob es einen neuen Tick für ein bestimmtes Symbol, aber das wird tatsächlich einen Schritt mehr als direkt lesen die Preisniveaus direkt so noch einmal, warum sollten Sie es brauchen.

Vielen Dank für Ihren informativen Kommentar, den ich sehr schätze.

---

Wenn ich richtig bin, ist dieser Teil des Satzes eine Frage.

... warum sollten Sie es brauchen.
Es
gibt nur einen Grund, ich versuche, irrelevante Funktionsschleifen/-läufe zu verhindern.

(Ich möchte erwähnen, heute, während ich testete meine EA's Orders Profit Berechnung, Berechnung wurde kontinuierlich aktualisiert (/ Schleifen für nichts) Ich war es auf EURUSD-Chart zu testen, und während ich testete, sah ich sehr geringes Volumen fast 20 (nicht über) eine Minute.
Und während ich testete, ein weiteres Mal war ich sicher wissen, ich konnte einen Weg finden, die es mir nur ' Terminal > Handel ' Ticks geben wird. Ich möchte noch einmal sagen, dass es keinen Grund dafür gibt.
Ich weiß nur, dass Wege, die mir Ticks geben können OnTick() nur Ticks könnte von Chart Symbol kommen. Und andere OnTimer() könnte mir 4 Ticks pro Sekunde geben... und so weiter, was ich von Ihren sehr nützlichen und großartigen Kommentaren gelernt habe, noch einmal vielen Dank dafür. )

Und ich muss meine Situation beschreiben.

Meine Orders Profit Calculation könnte mit dem Terminal Trade Panel synchronisiert werden, während mein EA auf dem Chart-Symbol läuft (z.B. EURUSD), wenn das Chart-Symbol mit dem Order-Symbol übereinstimmt, aber wenn ich eine neue Position für GBPUSD eröffne, dann wird die Synchronisation mit dem Terminal Trade Panel unterbrochen.
Und wenn ich Aufträge für EURUSD habe, aber ich versuche, neue gute Paare für den Handel auf einem anderen Chart-Symbol zu suchen (z. B. GBPUSD, NZDUSD usw.), wird die Gewinnberechnung der Aufträge nicht mit dem Terminal > Trade"-Panel synchronisiert.
(Vergessen Sie nicht, dass ich bereits OnTimer() kenne, die Sie mir geholfen haben, wie kann ich es für 4 Ticks pro Sekunde verwenden. )

All diese Bedenken kommen von hier.

Heute eröffne ich Positionen für kurze Laufzeiten, wenn ich Positionen für lange Laufzeiten eröffne, werde ich nicht auf die Synchronisierung mit Terminal Trade achten.

---

Ich hoffe, Sie verstehen mich jetzt besser.

Ich wünsche Ihnen alles Gute.

 

Nun, wenn Sie wirklich auf jeden Tick warten wollen, müssen Sie für jedes Symbol einen eigenen EA schreiben und die Funktion OnTick() verwenden.

Aber ich kann Ihnen sagen, dass ich auch Mikrocontroller programmiere und diese sich in einer endlosen while-Schleife (für immer) befinden, bis ein Stromausfall oder eine Unterbrechung auftritt.

Um zu prüfen, ob eine Bedingung wahr oder falsch ist, wird der kleinste boolesche Datentyp verwendet, und Ihr Prozessor macht das bereits Millionen, wenn nicht Milliarden Mal pro Sekunde mit all den im Hintergrund laufenden Prozessen und der Grafik usw.

Erst wenn Sie anfangen, umfangreiche Berechnungen mit größeren Datentypen durchzuführen, wird dies zu einem Problem.