Fehler, Irrtümer, Fragen - Seite 2400

 
Slava:

Wenn OnTimer nicht in einer Schleife läuft, sollte es keinen abnormalen Abbruch geben.

Können Sie Ihren Sachverständigen beauftragen, das Verhalten des Client-Terminals zu überprüfen?

Es gibt eine Menge Müll, der Code ist nicht optimal und basiert auf einer 7000 Zeilen langen Vorlage. Ich werde versuchen, es selbst herauszufinden und Ihnen Bescheid geben. Dies ist übrigens ein Ersteller von grafischen Objekten, es ist kein Handel.

Ich danke Ihnen!

 
Vitaly Muzichenko:

Es handelt sich übrigens um einen Bauunternehmer, nicht um einen Handwerker.

Ich hab's. Entfernen von grafischen Objekten in OnDeinit().

Dies wurde bereits behoben

 
Slava:

Ich hab's. Entfernen von grafischen Objekten in OnDeinit().

Es ist bereits repariert.

Können Sie mir sagen, wann es eine neue Version mit Korrekturen geben wird?

 
uint lev[1] = {};
ArrayInitialize(lev, UINT_MAX);  // warring: truncation of constant value
Alert(lev[0] == UINT_MAX);       // Alert: true
 

Ich musste eine neue Seite in MQL5 erstellen, um das Signal zu registrieren, aber es ist nicht aktiviert

https://www.mql5.com/ru/signals/new

 

Können Sie mir sagen, wie man den Preis für Nikkei-CFD-Aufträge korrekt bildet (andere CFDs werden vom Bot geöffnet).

Nehmen wir an, wir haben den Kurs 19661,15, Tick Size = 1.

Wir müssen sie abrunden, aber in welche Richtung? Beispielsweise ergibt der CodeMathRound (price / tickSize) * tickSize; den Preis 19661, d. h. besser als der Markt. Dies führt zu einer Fehlermeldung.

Das Hinzufügen einer tickSize von oben gibt auch einen Fehler.

Wenn ich versuche, die Anfrage so zu senden, wie sie ist, tritt der gleiche Fehler auf.

Der Prüfer schreibt in Protokolle:

failed market buy 1.00 NI225 [Invalid price] // стандартный вывод
OrderSend failed NI225 0 1.0 19662.0 0.0 0.0 with error 4756 // бот выводит параметры ордера и код ошибки
 
Stanislav Korotky:

Welche Art von Server mit diesen Einstellungen?

 
fxsaber:

Was ist der Server mit diesen Einstellungen?

LiteForexInvestitionen-MT5.com


 
Stanislav Korotky:

Können Sie mir sagen, wie man den Preis für Nikkei-CFD-Aufträge korrekt bildet (andere CFDs werden vom Bot geöffnet).

Nehmen wir an, wir haben den Kurs 19661,15, Tick Size = 1.

Wir müssen sie abrunden, aber in welche Richtung? Zum Beispiel ergibt der CodeMathRound(price / tickSize) * tickSize; den Preis 19661, d.h. besser als der Markt. Dies führt zu einer Fehlermeldung.

Das Hinzufügen einer tickSize von oben gibt auch einen Fehler.

Wenn ich versuche, die Anfrage so zu senden, wie sie ist, tritt der gleiche Fehler auf.

In den Protokollen sagt der Prüfer:

Verwenden Sie diese Funktion (überträgt Punkte auf den Preis des Instruments).

//+------------------------------------------------------------------+
//| Expert Points to price function                                  |
//+------------------------------------------------------------------+
double PointsToPrice(const long a_points)
{
  double step_price = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
  double a_price = (double(a_points) * Point() ) / step_price;
  if(a_points < 0)
  {
    a_price = MathFloor(a_price) * step_price;
  }
  else
  {
    a_price = MathCeil(a_price) * step_price;
  }
  return(NormalizeDouble(a_price, Digits()));
}

Dann addieren (subtrahieren) Sie einfach den von der FunktionPointsToPrice() zurückgegebenen Wert zum Preis

Hinzugefügt von

Wenn es nicht richtig funktioniert, dann ist dieses Symbol

wird mitSYMBOL_TRADE_TICK_SIZE übersetzt

 
Stanislav Korotky:

LiteForexInvestitionen-MT5.com

Es sind also die krummen Hände des Servers, die der Tester im Moment nicht zurechtrücken kann. Gleichzeitig wird im Terminal alles geöffnet, da TickSize dort nicht berücksichtigt wird.