Fehler 4756 - Seite 2

 
angevoyageur:
Welche Funktion, Klasse/Methode verwenden Sie zum Senden/Ändern Ihrer Aufträge?
OrderSend() nach dem Einrichten desMqlTradeRequest
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
RaptorUK:
OrderSend() nach dem Einrichten desMqlTradeRequest

Haben Sie das hier gesehen (aus dem OrderSend-Dokument)?

Es ist zu beachten, dass der erfolgreiche Abschluss der OrderSend()-Methode nicht immer den erfolgreichen Abschluss eines Geschäfts bedeutet, wenn eine Marktorder platziert wird. Überprüfen Sie den Retcode-Wert, der den Rückgabewert des Handelsservers enthält, sowie die Werte des Deal- oder Order-Feldes, je nach Art der Operation im zurückgegebenenErgebnis.


Es wäre einfacher zu helfen , wenn Sie den Code sehen könnten .

 
angevoyageur:

Haben Sie das gesehen (aus dem OrderSend-Dokument)?


Es wäre einfacher zu helfen , wenn Sie den Code sehen könnten .

Ich prüfe das zurückgegebene Ergebnis und versuche nur dann, die SL & TP zu platzieren, wenn TRADE_RETCODE_PLACED oder TRADE_RETCODE_DONE zurückgegeben wird.

         if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
            {
            SetTPandSL = false;
            Print("Return code # ", result.retcode, " Bid ", result.bid, " Ask ", result.ask, " Deal price ", result.price);
            }
         else SetTPandSL = true;

         if(SetTPandSL && ECN)
            {
            // now modify Position to add SL & TP
            ZeroMemory(request);
            ZeroMemory(result);
            request.action = TRADE_ACTION_SLTP;                   // setting the TP & SL
            request.symbol = _Symbol;                             // symbol
            request.sl = lastTick.ask - SL_Size * _Point;        // Stop Loss
            request.tp = lastTick.ask + TP_Size * _Point;        // Take Profit  
            
            //--- send a trade request
            OrderSend(request,result);
            
            //--- write the server reply to log  
            Print(__FUNCTION__,": Placeing SL & TP ",result.comment, " Return code # ", result.retcode);  
            if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
               Print("Return code # ", result.retcode, " Bid ", lastTick.bid, " Ask ", lastTick.ask, " Deal price ", 
                  result.price, " SL: ", request.sl, " TP: ", request.tp, " Freeze: ", Freeze, " Stoplevel: ", Stop );
            }
 
RaptorUK:

Ich prüfe das zurückgegebene Ergebnis und versuche nur dann, die SL & TP zu platzieren, wenn TRADE_RETCODE_PLACED oder TRADE_RETCODE_DONE zurückgegeben wird.


Es ist zu beachten, dass der erfolgreiche Abschluss der OrderSend()-Methode nicht immer einen erfolgreichen Geschäftsabschluss bei der Platzierung einer Marktorder bedeutet. Überprüfen Sie den Retcodewert, der den Rückgabewert des Handelsservers enthält, und die Werte des Geschäfts- oder Auftragsfelds je nach Art der Operation im zurückgegebenenErgebnis.

Sie müssen die Ticketnummer des Geschäfts überprüfen:

  if( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE) || result.deal == 0) 

Dies ist nicht das letzte Wort, denn wenn Ihr Deal-Ticket 0 ist, wird Ihre Änderung von SL/TP sowieso nicht ausgeführt. Immer noch auf der Suche...


 
angevoyageur:

Sie müssen die Deal-Ticket-Nummer überprüfen:

Das ist nicht das letzte Wort, denn wenn Ihr Deal Ticket 0 ist, wird Ihre Änderung von SL/TP sowieso nicht ausgeführt. Ich suche noch...

Ich kann das tun, aber das Problem ist, dass der Handel erfolgreich war und die Position eröffnet wurde ... doch als ich versuchte, SL & TP hinzuzufügen, schlug es mit Ungültige Stops fehl, obwohl sie nicht ungültig waren. Es scheint, dass ich warten muss, bis etwas passiert, bevor ich die Anfrage zum Setzen von TP & SL senden kann ... aber ich weiß nicht wirklich, was das offizielle, dokumentierte Ding ist, auf das ich warten sollte.

Danke für die Antwort :-)

 
RaptorUK:

Ich kann das tun, aber das Problem ist, dass der Handel erfolgreich war und die Position eröffnet wurde ... doch als ich versuchte, SL und TP hinzuzufügen, schlug es mit Ungültige Stops fehl, obwohl sie nicht ungültig waren. Es scheint, dass ich warten muss, bis etwas passiert, bevor ich die Anforderung zum Setzen von TP und SL senden kann ... aber ich weiß nicht wirklich, was das offizielle, dokumentierte Ding ist, auf das ich warten sollte.

Danke für die Antwort :-)

Ich weiß schon. Ich überprüfe alle mql5-Seiten, um eine Antwort zu finden :-D

Bearbeiten:

Es gibt absolut nichts auf dieser Seite , die zeigt, wie man eine sl / tp mit einer Handelsausführung Art vonMarkt setzen.

Eigentlich habe ich das gleiche Problem, aber mit PositionOpen anstelle von OrderSend, ich kann es auch manuell tun.

 
angevoyageur:

Ich weiß. Ich überprüfe alle mql5-Seiten, um eine Antwort zu finden :-D

Bearbeiten:

Es gibt absolut nichts auf dieser Website zeigt, wie eine sl / tp mit einer Handelsausführung Art vonMarkt zu setzen.

Eigentlich habe ich das gleiche Problem, aber ich benutze PositionOpen anstelle von OrderSend, ich kann es auch manuell machen.

Ich habe gefunden. Es ist ein Problem der Synchronisation zwischen Ihrem EA und dem Handelsserver. Sie müssen den Event-Handler OnTradeTransaction() verwenden.

Das Ergebnis der Ausführung der Handelsanfrage auf einem Server, die von der Funktion OrderSend() gesendet wurde, kann vom OnTradeTransaction-Handler verfolgt werden. Es ist zu beachten, dass der OnTradeTransaction-Handler mehrmals aufgerufen wird, wenn eine Handelsanfrage ausgeführt wird.

Wenn zum Beispiel ein Marktkaufauftrag gesendet wird, wird er bearbeitet, ein entsprechender Kaufauftrag wird für das Konto erstellt, der Auftrag wird dann ausgeführt und aus der Liste der offenen Aufträge entfernt, dann wird er zur Auftragshistorie hinzugefügt, ein entsprechendes Geschäft wird zur Historie hinzugefügt und eine neue Position wird erstellt. Die Funktion OnTradeTransaction wird für jedes dieser Ereignisse aufgerufen.

RTFM ;-) Probieren Sie es aus...morgen für mich.
 
angevoyageur:

Ich habe gefunden. Es ist ein Problem der Synchronisation zwischen Ihrem EA und dem Handelsserver. Sie müssen den Event-Handler OnTradeTransaction() verwenden.

RTFM ;-) Probieren Sie es aus...morgen für mich.
Ahhhh, danke, werde ich mir mal ansehen :-)
 
RaptorUK:
Ahhhh, danke, ich werde es mir ansehen :-)
War das der Thread, den du gefunden hast?https://www.mql5.com/en/forum/10850 Er berichtet über das gleiche Problem, das ich habe
 

Mein EA bringt u seltsame Fehler mit Build 778. Das Volumen von 0,1 ist normalisiert und eindeutig nicht ungültig.

2013.03.12 07:29:57 pivots (SILVER,M5) SILVER failed ORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 check code: 10014 Kommentare: Ungültiges Volumen

2013.03.12 07:20:00 pivots (SILVER,M5) SILVER failed ORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 returned code: 10014, Broker-Kommentare: Ungültiges Volumen

Hier ist der Code, der das Problem hervorruft

      ResetLastError();
      if(OrderCheck(_request,_check)){
         if(!OrderSend(_request,_result)){
            Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);
            return(false);}
         else{
            if(_result.retcode!=(0||TRADE_RETCODE_PLACED||TRADE_RETCODE_DONE)){
               Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);}}}
      else{
         Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," check code: ",_check.retcode," comments: ",_check.comment);
         return(false); }


Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5