Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1013

 

Wie kann ich schwebende Aufträge in MQL5 kontrollieren?


Das Problem ist, dass ich die folgenden Funktionen benötige: "Positionen und schwebende Aufträge nicht verwechseln".


Wie erhalte ich dann Informationen über diese ausstehenden Aufträge?

 
Alexandr Sokolov:

Wie kann ich schwebende Aufträge in MQL5 kontrollieren?


Das Problem ist, dass ich die folgenden Funktionen benötige: "Positionen und schwebende Aufträge nicht verwechseln".


Wie kann ich dann Informationen über diese ausstehenden Aufträge erhalten?

Ich muss nur die ausstehenden Aufträge lesen. Diese Funktion ist zum Beispiel nur für schwebende Stop-Aufträge vorgesehen:

//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
  {
   count_buy_stops   = 0;
   count_sell_stops  = 0;

   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
            if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
               count_buy_stops++;
            else
               if(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
                  count_sell_stops++;
           }
  }
 
Vladimir Karputov:

Sie müssen nur die ausstehenden Aufträge lesen. Diese Funktion ist zum Beispiel nur für schwebende Stop-Aufträge vorgesehen:

Herzlichen Dank!


Ich habe mir gerade das Beispiel angesehen, und es ist alles durch Position...

 
Alexandr Sokolov:

Herzlichen Dank!


Es ist nur so, dass ich mir das Beispiel angesehen habe und es ist alles durch Position...

Hier ist ein Beispiel, das sich kompilieren lässt:

//+------------------------------------------------------------------+
//|                                    CalculateAllPendingOrders.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//---
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
COrderInfo     m_order;                      // object of COrderInfo class
//--- input parameters
input ulong    InpMagic             = 200;         // Magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name");
      return;
     }
//---
   int count_buy_stops=0,count_sell_stops=0;
   CalculateAllPendingOrders(count_buy_stops,count_sell_stops);
  }
//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
  {
   count_buy_stops   = 0;
   count_sell_stops  = 0;

   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
            if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
               count_buy_stops++;
            else
               if(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
                  count_sell_stops++;
           }
  }
//+------------------------------------------------------------------+
 
Alexandr Sokolov:

Wie kann ich schwebende Aufträge in MQL5 kontrollieren?


Das Problem ist, dass ich die folgenden Funktionen benötige: "Positionen und schwebende Aufträge nicht verwechseln".


Wie erhalte ich dann Informationen über diese ausstehenden Aufträge?

Der Unterschied besteht darin, dass die Funktion OrdersTotal() in mql4 die Gesamtzahl der Markt- und Pending-Orders zurückgibt. Und in mql5 wird nur die Anzahl der ausstehenden Aufträge angezeigt. Und um die Anzahl der Positionen in Form von mql4-Marktaufträgen zu ermitteln, verwenden Sie die Funktion PositionsTotal()

 
Alexey Viktorov:

Ich habe den Thread im Forum nicht gesehen, aber nachdem ich mir ein paar Anleitungen angeschaut habe, finde ich diese hier verständlicher. Ich habe es ausprobiert, es hat funktioniert, aber ich sehe noch keine Notwendigkeit, es anzuwenden. Allerdings halte ich es für eine gute Idee, die Historie aller Terminals in einem Ordner zusammenzufassen.

Ich habe den Artikel über den Link gelesen. Es ist brillant. Und es ist eine super Lösung für diejenigen, die viele Terminals haben. Jetzt kann es einen mql4-Ordner für verschiedene Terminals geben, ohne dass ständig Dateien hin und her kopiert werden müssen.

herzlichen Dank!!!

 
Sergey Likho:

Ich habe den Artikel über den Link gelesen. Es ist brillant. Und es ist eine super Lösung für diejenigen, die viele Terminals haben. Jetzt kann es einen mql4-Ordner für verschiedene Terminals geben, ohne dass ständig Dateien hin und her kopiert werden müssen.

Ich danke Ihnen vielmals!!!

Ich bin nicht derjenige, dem zu danken ist. Ich habe die Beiträge von Sergei Tabolin aufmerksam verfolgt und einige der darin enthaltenen Wörter mit dem Wunsch von Seric29 abgeglichen, ja, ich habe selbst nachgeschaut.

 

Hallo.

Bitte helfen Sie mir, den Code zu entschlüsseln.

Ich habe versucht, das Raster in den Markt zu stellen, und sie fingen an, mich zu beschimpfen:2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1: Ungültige Losgröße für dieFunktion FreeMarginCheck

angehängte Expert Advisor-Datei.

Ich danke Ihnen im Voraus.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
Dateien:
123.mq4  87 kb
 
Dmitriy Prigodich:

Hallo.

Bitte helfen Sie mir, den Code zu entschlüsseln.

Ich habe versucht, das Raster in den Markt zu stellen, und sie fingen an, mich zu beschimpfen:2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1: Ungültige Losgröße für die Funktion FreeMarginCheck

angehängte Expert Advisor-Datei.

Ich danke Ihnen im Voraus.

Es heißt auch: Ungültige Losgröße

Die Funktion FreeMarginCheck prüft keine Expert Advisor-Argumente und fügt keine normalisierte Losgröße hinzu.

PS - gut, nicht alles in einer Reihe auf dem Markt, desto mehr, dass sie selbst nicht verwenden. Benötige Bewertung, fülle bessere Codobasis

 

Ich wollte ein Video machen, aber ich habe keine Kamera, und ich habe ein altes Telefon aus der Zeit der Zarenerbsen. Ich habe also einen Experten erstellt und ihn 111.mq4 genannt.

Hier ist der primitive Code.

#property strict
#import "111б.ex4"//111б.mq4
int Funi(string Soob);
#import

int OnInit(){Funi(Symbol());return(INIT_SUCCEEDED);}
void OnDeinit(const int reason){}
void OnTick(){Funi(Symbol());}


und dann habe ich eine Bibliothek erstellt und sie 111b.mq4 mit dem primitiven Code genannt

#property library
#property strict
 string  st_mas[]; //export
 int Funi(string Soob)export
 {st_mas[(ArrayResize(st_mas,ArrayRange(st_mas,0)+1))-1]=Soob;
 Print("Размер массива = ",ArrayRange(st_mas,0));
 for(int i=0;i<ArrayRange(st_mas,0);++i)
 Print("Вывод массива ",st_mas[i]);
 return 2;}

. Ich habe ein String-Array in der Bibliothek deklariert, aber es stellte sich später heraus, dass die Entwickler keine Möglichkeit zum Export und Import von Arrays und Variablen vorgesehen haben. Es stellt sich heraus, dass es keine Möglichkeit gibt, ein globales Array zu erhalten, das sich die Informationen merken würde. Aber das macht nichts, ich habe einen anderen Weg genommen. Ich habe die FunktionFuni() erstellt. Dann habe ich harte Verknüpfungen mit der Taste H erstellt, die wie folgt gesetzt sind

Die Original-Dateien sind in Forex4you, und Links in Forex4you1 Ich warf den Roboter Original und Link auf das Diagramm, die ersten Berechnungen erhalten wurden, aber wenn die Zecken ging nur original Forex4you aktualisiert die Informationen und Arrayst_mas in der Größe erhöht, aber wenn Zecken ging zu Forex4you1 nichts passiert nur, wenn die Datei manuell auf das Diagramm bekommt. Dann habe ich einen anderen Weg genommen. Ich habe einen Expert Advisor namens 333.mq4 erstellt und in MT4 Forex4you1 installiert und die Bibliothek 111b.mq4 damit verbunden und das Programm auf einen Chart geworfen. Der Roboter 333.mq4 war in der Lage, sich mit dem Bibliothekslink zu verbinden und die Sache begann online zu funktionieren, aber wie sich später herausstellte, war die Bibliothek ein Prototyp und das darin deklarierte Array funktioniert nur in einem einzigen Diagramm

Das Beispiel zeigt, dass der Roboter zwar mit einer Bibliothek mit einem globalen Array verbunden ist, dieses Array aber als Bild funktioniert und trotzdem keine Kommunikation ermöglicht. Wir müssen gemeinsame Variablen erstellen, die von allen Seiten verfügbar sind. Wer weiß, ob es möglich ist, Arrays und Variablen zu exportieren. Ich denke, die zweite Möglichkeit ist, die Informationen in eine Datei zu schreiben, da die Datei kein Proxy ist und von beiden Seiten gelesen wird und somit Terminals und Roboter miteinander kommunizieren können. Wer weiß, wie man mit Dateien arbeitet, kann diese Theorie überprüfen, da ich noch nicht über diese Erfahrung verfüge.

Wisst ihr, ob man Arrays und Variablen exportieren kann?

Grund der Beschwerde: