Fehler, Irrtümer, Fragen - Seite 2936

 
x572intraday:

Ergebnis:

Was ist die ungerade, ungeklärte Zahl? In der Hilfe nicht gefunden oder gegoogelt. Sieht nicht aus wieEMPTY_VALUE.

Irgendein Unsinn.

Eingestellter Wert

int Arr[1]={0};
 
Vitaly Muzichenko:

Einiges an Unsinn

Stellen Sie den Wert ein.

Nicht für die Praxis, sondern aus rein theoretischer Neugierde. Eine andere Nummer (9xxx - ich kann mich nicht mehr genau erinnern) sah eher nach Müll aus und erschien nur einmal und konnte nicht mehr reproduziert werden, während die obige Nummer konstant war und sich von Zeit zu Zeit wiederholte. (Ich frage mich, ob das bei Ihnen und anderen auch so ist?) Es ist mir egal, Hauptsache, andere Programmierer stolpern nicht schmerzhaft darüber.

 
x572intraday:

Es ging nicht um die Praxis, sondern um eine rein theoretische Neugierde. Eine andere Nummer (9xxx - ich weiß es nicht mehr genau) war eher Müll und erschien nur einmal und konnte nicht mehr reproduziert werden, während die obige Nummer konstant war und sich von Zeit zu Zeit wiederholte. (Ich frage mich, ob das bei Ihnen und anderen auch so ist?) Es ist mir egal, Hauptsache, andere Programmierer stolpern nicht schmerzhaft darüber.

Ich habe "0", habe es mehrmals überprüft

 
Vitaly Muzichenko:

Ich habe eine 0 erhalten und mehrere Male nachgesehen.

Hmm ... Ich weiß nicht, wie der eine Umstand mit dem anderen zusammenhängt, aber ich habe ihn als Indikator auf verschiedenen Währungspaaren laufen lassen - die Zahlen steigen unterschiedlich (auf jedem Instrument wird dieselbe Zahl bei jedem Tick wiederholt), es gab sogar eine Null. Das ist seltsam. Aber es sieht so aus, als ob es ohne die Initialisierung mit seiner eigenen Nummer wirklich Unsinn ist.

 
x572intraday:

Hmm ... Ich weiß nicht, wie der eine Umstand mit dem anderen zusammenhängt, aber ich habe ihn als Indikator auf verschiedenen Währungspaaren laufen lassen - die Zahlen steigen unterschiedlich (auf jedem Instrument wird dieselbe Zahl bei jedem Tick wiederholt), es gab sogar eine Null. Das ist seltsam. Aber es scheint, dass es ohne Initialisierung mit seiner eigenen Nummer wirklich Unsinn ist.

Überprüfen Sie es erneut, indem Sie den Code durch Ankreuzen einfügen

in mt4 ist es immer 0.

in mt5 ja, 0 ist extrem selten, die Zahl ist 511026368

 
x572intraday:

Hmm ... Ich weiß nicht, wie der eine Umstand mit dem anderen zusammenhängt, aber ich habe ihn als Indikator auf verschiedenen Währungspaaren laufen lassen - die Zahlen steigen unterschiedlich (auf jedem Instrument wird dieselbe Zahl bei jedem Tick wiederholt), es gab sogar eine Null. Das ist seltsam. Aber es scheint, dass es ohne Initialisierung mit seiner eigenen Nummer wirklich Unsinn ist.

Dem Array (und allen anderen Variablen) wird bei seiner Erstellung Speicherplatz zugewiesen. Wenn das Array nicht initialisiert ist, ist alles, was dort von früheren Verwendungen übrig geblieben ist, Müll.

Wenn Sie die Werte im Programm nicht ändern, passiert mit diesem Speicher nichts, der Müll behält seinen Wert.

In MT4 sind alle Variablen und Arrays gezwungen, mit Null initialisiert zu werden.

 

CExpert.TradeEventOrderTriggered() nicht aufgerufen

Bei der Arbeit mit dem FORTS Markt, BCS-Demo Server, ist eine gewisse Instabilität des CExpert.TradeEventOrderTriggered() Aufrufs aufgetreten, wenn Pending Orders ausgelöst werden.
Der Code der Methode CExpert::CheckTradeState der MQL5-Standardbibliothek berücksichtigt nicht den möglichen asynchronen Empfang von Informationen über Positionen, Aufträge, Geschäfte und die Historie.

1446://--- check triggering of a pending order
1447:   if(hist_ord_tot==m_hist_ord_tot+1 && ord_tot==m_ord_tot-1)
1448:     {
1449:      //--- triggering of a pending order
1450:      if(deal_tot==m_deal_tot+1)

Wenn der Code auf historischen Daten ausgeführt wird, funktionieren die Bedingungen korrekt. Bei der Arbeit mit realen Daten kann es Situationen geben, in denen die Informationen über Änderungen von Positionen, Geschäften, Aufträgen und der Historie nicht gleichzeitig vorliegen, und die Reihenfolge, in der die Informationen vorliegen, ist zufällig.

Protokoll der Aufrufe der Methode bool CExpert::CheckTradeState(void). Ein Aufruf vonCheckTradeState() entspricht 2 Zeilen " CheckTradeState: .....".

//Сработал отложенный ордер открытия позиции
CheckTradeState: hist_ord_tot = 613 ord_tot = 0 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 613 m_ord_tot = 1 m_deal_tot = 543 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 614 ord_tot = 1 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 614 m_ord_tot = 1 m_deal_tot = 544 m_pos_tot = 1

//Сработал отложенный ордер открытия позиции 
CheckTradeState: hist_ord_tot = 615 ord_tot = 1 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 545 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 615 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 546 m_pos_tot = 1
CheckTradeState: hist_ord_tot = 616 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 616 m_ord_tot = 0 m_deal_tot = 546 m_pos_tot = 1

Sie können aus dem Protokoll ersehen:
1. Wenn ein schwebender Auftrag ausgelöst wird, wird die Länge der Historie später aktualisiert als die Informationen über Geschäfte, Aufträge und Positionen, was dazu führt, dass die erste Bedingung des Codes nicht erfüllt wird.
2. Mögliche Unsynchronisierung des Empfangs von Informationen über Änderungen in der Anzahl der Aufträge, Trades und Positionen, was dazu führt, dass die zweite Bedingung im Code nicht erfüllt werden kann (wenn man das erste Problem irgendwie umgehen und das erste if ausführen kann). Vielleicht trat diese Desynchronisation auf, wenn ein Auftrag in 2 Schritten ausgeführt wurde (in Teilen: 1 Lot+1 Lot), aber warum in diesem Fall die Anzahl der Geschäfte +1 und nicht +2.

Ich bin bei diesem Code hängen geblieben:

//--- establishment of the checkpoint history of the trade
   bool isSyncMode = MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_VISUAL_MODE);
   if(!isSyncMode)
      HistorySelect(m_beg_date,TimeCurrent());
   else
      HistoryPoint(true);
//---
   return(res);

Der Sinn des Blocks: wenn wir im asynchronen Modus zum Ende der Prozedur gekommen sind, ist das möglich, wenn die Historie nicht geladen ist, wir holen die Historie, aber wir speichern nicht die Werte der Bestellmengen usw.

P.S. Es scheint, dass dieser Teil der Standardbibliothek unterentwickelt ist. Besonders beunruhigend ist ein Codefragment, das dreimal hintereinander geschrieben wurde.

1458: res=TradeEventOrderTriggered();
1459: //--- establishment of the checkpoint history of the trade
1460: HistoryPoint(true);
1461: return(res);

Ich schreibe hier in der Hoffnung, dass das Problem bemerkt wird und dass irgendwo etwas korrigiert wird.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ich habe mir die Größe der EX5 EA-Dateien auf dem Markt angesehen. Alle, die ich mir angesehen habe, sind weniger als 200 KB groß. Wie kommen Sie zu solch kleinen Größen? Ein einfacher Code?
 
fxsaber:
Ich habe mir die Größen der EX5 Expert Advisor-Dateien auf dem Markt angesehen. Alle diese Dateien sind kleiner als 200 KB. Wie können Sie eine so geringe Größe erreichen? Ein einfacher Code?

Ich denke, die Autoren sind Genies, 90% der Top-Seller haben überhaupt keine Fragen zur Plattform - also schreiben sie die Codes mit einem natürlichen Instinkt ))))


Hier ist die Frage:

Ich gebe die Daten ein:

#resource "Common\\Files\\EURUSD_tick.bin" as const MqlTick HistoryData[]

Ich erhalte eine Fehlermeldung:

Ressourcendatei 'Common\Files\EURUSD_tick.bin' nicht gefunden

Die Ressourcendatei .....\\\\MQL5\Experts\Virtual\Common\Files\EURUSD_tick.bin' kann nicht geöffnet werden (3)

Wenn ich die Datei im Ordner EA oder im Ordner Dateien ablege, ist alles in Ordnung.


Ich kann also keine Ressource aus dem Ordner "Common" mounten? -Oder muss ich einen anderen Pfad angeben?

 
Igor Makanu:

Ich denke, die Autoren sind Genies, 90% der Top-Seller haben überhaupt keine Fragen über die Plattform - also schreiben sie die Codes mit angeborenem Wissen ))))

Bei Fragen zu anderen Konten.

Sie können die Ressource nicht mit dem Ordner Common? -oder brauchen Sie eine andere Möglichkeit der Verschreibung?

Ich weiß es nicht.

Grund der Beschwerde: