Diskussion zum Artikel "Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL5" - Seite 17

 
Sehr schön! Ich danke Ihnen!
 

Ich habe die Datei heruntergeladen und den Code debugged, und es zeigte diese Warnung könnte jemand mir helfen mit diesem?


Rückgabewert von'OrderSend' sollte überprüft werden


 

Hallo, ich bin ein Neuling und ich teste auch den Roboter

Versuchen Sie dies:

// OrderSend(mrequest,mresult);

bool res=OrderSend(mRequest,mResult);

// Erhalte den Ergebniscode

if(res && (mresult.retcode==10009 || mresult.retcode==10008)) //Anfrage ist abgeschlossen oder Bestellung aufgegeben

{

Alert("Eine Kaufbestellung wurde erfolgreich mit Ticket#:",mresult.order,"!");

}

sonst

{

Alert("Die Kaufauftragsanfrage konnte nicht abgeschlossen werden - Fehler:",GetLastError());

ResetLastError();

zurück;

}

Wenn ich falsch liege, korrigieren Sie mich bitte!

Forschungsquelle: https://www.mql5.com/en/forum/23663

return value of 'OrderSend' should be checked
return value of 'OrderSend' should be checked
  • 2014.05.03
  • www.mql5.com
Hi ! I'm wondering how to do that ...:/ the warning appeared @ the last update...
 

Bei der Fehlersuche erhalte ich immer einen Fehler, wenn ich die Bestellung abschicke. Ich dachte, es war mein Code, aber auch wenn ich die mql5-Datei für das Herunterladen testen gibt es auch mir einen Fehler.



 
northedan:

Bei der Fehlersuche erhalte ich immer einen Fehler, wenn ich die Bestellung abschicke. Ich dachte, es war mein Code, aber auch wenn ich die mql5-Datei für das Herunterladen testen gibt es auch mir einen Fehler.



Ich denke, das Beispiel ist in Währungen, so dass die Lot-Variable, die 0,1 ist nicht geeignet für Ihren Test, versuchen Sie es so zu ändern (Änderung der mrequest.volume Variable):


double minSymbolLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);

mrequest.action = TRADE_ACTION_DEAL; // sofortige Orderausführung

mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // letzter Briefkurs

mrequest.sl = NormaliseDouble(letzter_Preis.ask - STP*_Point,_Digits); // Stop Loss

mrequest.tp = NormaliseDouble(letzter_Kurs.ask + TKP*_Point,_Digits); // Take Profit

mrequest.symbol = _Symbol; // Währungspaar

mrequest.volume = minSymbolLot; // Anzahl der zu handelnden Lots

mrequest.magic = EA_Magic; // Magische Auftragsnummer

mrequest.type = ORDER_TYPE_BUY; // Kaufauftrag

mrequest.type_filling = ORDER_FILLING_FOK; // Ausführungsart der Order

mrequest.deviation=100;

 
Weiß jemand, ob ich diesen EA für Mini-Indizes oder Mini-Dollars verwenden kann?
 
Sella170:
Weiß jemand, ob ich diesen EA für Mini-Indizes oder Mini-Dollars verwenden kann?

Haben Sie die Strategie verstanden? Sind Sie sich der Risiken bewusst? Haben Sie die SL- und TP-Niveaus analysiert? Kennen Sie die verwendeten technischen Indikatoren? Wissen Sie, wie Sie diese parametrisieren können? Wissen Sie, wie Sie die Variablen für jeden Vermögenswert (WIN und WDO) anpassen können?

Der Code selbst wurde für jeden Vermögenswert entwickelt und Sie können dies durch das "_Symbol" und für jede Chartzeit "_Period" erkennen.

Jetzt ist es wichtig, dass Sie wissen, was Sie tun, wenn Sie den EA ausführen. Wenn Sie sich dafür entscheiden, schlage ich vor, dass Sie nur auf Demokonten arbeiten, bis Sie das Tool beherrschen und ein besseres Verständnis des Aktienmarktes haben.

[ ]'s

 

Leute,

Dies ist ein einfacher, schnell geänderter Code, wenn Sie einen Fehler mit mehreren Aufträgen zur gleichen Zeit öffnen haben.

Ersetzen Sie diesen Code: von Zeile 167 -177

   if(PositionSelect(_Symbol)==true) // wir haben eine offene Position
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //Es ist ein Kauf
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // Es ist ein Verkauf
        }
     }

mit diesem:

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //Es ist ein Kauf
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // Es ist ein Verkauf
           }
        }
      }

Danke @Samuel Olowoyo

 
Korobejnik:

Bitte beraten Sie mich, wie das Problem zu lösen ist. Der Expert Advisor öffnet mehrere Positionen in einer Reihe zu kaufen, das gleiche für den Verkauf.

Der Expert Advisor sieht nicht, dass es bereits offene Kauf- und Verkaufspositionen gibt und eröffnet neue, obwohl es eine Prüfung im Code gibt.

für bereits offene Positionen. Die Prüfung funktioniert aus irgendeinem Grund nicht.

Da die Troll-Moderatoren hier nicht helfen können, kopiere ich die Antwort aus dem englischen Forum:

Leute, dies ist ein einfacher, schnell modifizierbarer Code, wenn ihr einen Fehler mit mehreren gleichzeitig geöffneten Aufträgen habt. Ersetzen Sie diesen Code: von Zeile 167 -177

   if(PositionSelect(_Symbol)==true) // wir haben eine offene Stelle
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //Es ist ein Kauf
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // Es ist ein Verkauf
        }
     }

Mit diesem:

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //Es ist ein Kauf
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // Es ist ein Verkauf
           }
        }
      }
 
Locus_Neminis:

Da ich von den Troll-Moderatoren hier keine Hilfe bekommen kann, kopiere ich die Antwort aus dem englischen Forum:

Leute, dies ist ein einfacher, schnell modifizierbarer Code, wenn Sie einen Fehler mit mehreren gleichzeitig geöffneten Aufträgen haben. Ersetzen Sie diesen Code: von Zeile 167 -177

mit diesem:

Das wird nicht helfen. Ich habe einen Thread in meinem Profil zu diesem Thema. Dort finden Sie die Ursache und die Lösung für das Problem.
Ich verstehe das mit den Trollen nicht.