Fehler, Irrtümer, Fragen - Seite 934

 
uncleVic:
So ist das nun mal.

Vielen Dank für all Ihre Hilfe! Alles ist einfach und schön )

Ich habe ursprünglich versucht, Event map, aber nicht verstehen, es bis zum Ende, so dass ich beschlossen, OnEvent() selbst überladen...

P.S. Es wäre schön, wenn in jedem Code, der mit dem Terminal kommt, oder in seiner Dokumentation gab es einige Beispiele für die Verwendung von Event-Map (von ON_EVENT zu ON_EXTERNAL_EVENT) - es wäre viel einfacher, sie zu verstehen. Es gibt nur ON_EVENT Beispiele - Experts/Examples/Controls/ControlsDialog.mq5 und Indicators/Examples/Panels/PanelDialog.mq5 - zumindest habe ich keine anderen Beispiele gefunden. Und eine Suche auf der Website ergab, abgesehen von ein paar Wörtern im Artikel, nichts.

 
Rone:

Vielen Dank für all Ihre Hilfe! Alles ist einfach und schön )

Ursprünglich und versucht, Event-Map, aber nicht verstehen, es vollständig, daher habe ich beschlossen, OnEvent() selbst überladen...

P.S. Es wäre schön, wenn in jedem Code, der mit dem Terminal kommt, oder in seiner Dokumentation gab es einige Beispiele für die Verwendung von Event-Map (von ON_EVENT zu ON_EXTERNAL_EVENT) - es wäre viel einfacher, sie zu verstehen. Es gibt nur ON_EVENT Beispiele - Experts/Examples/Controls/ControlsDialog.mq5 und Indicators/Examples/Panels/PanelDialog.mq5 - zumindest habe ich keine anderen Beispiele gefunden. Und eine Suche auf der Website ergab, abgesehen von ein paar Wörtern im Artikel, nichts.


1. Ich bitte Sie. Bitte zögern Sie nicht, mich zu kontaktieren.

2. Zum Hinzufügen.

 
CTrade::OrderSend: buy stop 0.94 USDCHF bei 0.93366 sl: 0.93016 tp: 0.94816 [ungültiges Volumen]

Warum habe ich den Fehler 0.94 lot volume auf USDCHF erhalten ?

Dies ist ein ungültiges Volumen oder ich hatte nicht genug Geld, um dieses Volumen zu platzieren?

 
Konstantin83:
CTrade::OrderSend: buy stop 0.94 USDCHF bei 0.93366 sl: 0.93016 tp: 0.94816 [ungültiges Volumen]

Warum habe ich den Fehler 0.94 lot volume auf USDCHF erhalten?

Dies ist ein ungültiges Volumen oder ich hatte nicht genug Geld, um dieses Volumen zu platzieren?

Wie hoch ist der Volumenschritt in den Werkzeugeinstellungen? 0,10 oder 0,01 der Menge? Wenn es 0,10 ist, dann ist alles richtig - ungültiges Volumen
 
Renat:
Was ist die Lautstärkestufe in den Werkzeugeinstellungen? 0,10 oder 0,01 Lot? Wenn 0,10, haben Sie recht - falsches Volumen

Demo-Server von metaquotes, haben Sie 0,01 Schritt.

das Los wird kontrolliert



CSymbolInfo       Exp_Symbol_Info;              // symbol info object

...
double CBaseTrade::GetCorrectLot(double pLot)
 {
      double   dLot   = pLot;
      double   dLotMin   = Exp_Symbol_Info.LotsMin();
      double   dLotMax   = Exp_Symbol_Info.LotsMax();
      double   dLotStep  = Exp_Symbol_Info.LotsStep();
    
      dLot=dLotStep*NormalizeDouble(pLot/dLotStep, 0);
 
      if(dLot < dLotMin) dLot=dLotMin;
 
      if(dLot > dLotMax && dLotMax !=0) dLot=dLotMax;

 
  return(dLot);
 }

 

Drucken Sie den Volumenwert bitte 4-8-stellig aus.

Hier wurde eindeutig nicht auf die zweite Stelle aufgerundet:

dLot=dLotStep*NormalizeDouble(pLot/dLotStep, 0);
 
Renat:

Drucken Sie den Volumenwert bitte 4-8-stellig aus.

Hier wurde eindeutig nicht auf die zweite Stelle aufgerundet:

Ja, aber warum gibt es keine Rundung?

Nehmen wir an, die Losgröße beträgt 0,01

Eingabe Los 2.111

Ergebnis = 0,01 * NormalizeDouble(2,111/0,01)=0,01*NormalizeDouble(211,1)=0,01*211=2,11

Oder es gibt Broker, bei denen die Losgröße 0,25 beträgt, dann können Sie das Ergebnis nicht einfach auf das 2.

Angenommen, die Losgröße beträgt 0,25

Eingehende Partie 2.3

Ergebnis = 0.25 * NormalizeDouble(2.3/0.25)=0.25*NormalizeDouble(9.2)=0.25*9=2.25


Im Testgerät kein Problem. Ich habe diesen Fehler heute ein paar Mal in der Demo bekommen.

Ist der Volumenschritt der CSymbolInfo-Klasse normalisiert?

 

Bitte um Rat!

So ändern Sie die Hintergrundfarbe der Währungspaare in der Marktübersicht

Oder entfernen Sie die Farbe ganz!

Vielen Dank im Voraus!

 
Konstantin83: Ergebnis = 0,01 * NormalizeDouble(2,111/0,01)=0,01*NormalizeDouble(211,1)=0,01*211=2,11
Das Produkt zweier Doppelzahlen ist eine nicht normierte Zahl. 0.01*NormalizeDouble(211.1)=0.01*211.***********=2.11*************
 
Konstantin83:

Ja, aber warum ist sie nicht abgerundet?

Denn das Ergebnis der Matrizenoperationen der höchstnormalisierten Werte ist keine normalisierte Zahl.

Deshalb ist es ein Ort des Irrtums.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
Grund der Beschwerde: