expert advisor - verschiedene Fragen - Seite 41

 

Dumm nur, dass ich heute ein paar Mal versucht habe, mit der alten Version von EA alle offenen Orders zu schließen.
Jetzt bin ich verwirrt.

---

Aber trotzdem verwende ich MarketInfo() anstelle von einfachen Bid, und Ask.

 

Normalerweise probiere ich alles aus, um herauszufinden, was am besten funktioniert.

Ich habe ein Skript, das alle Aufträge schließt, wenn es nötig ist.

         for(int order=0; order<=OrdersTotal()-1; order++)
           {
            bool selected=OrderSelect(order,SELECT_BY_POS);
              {
               if(selected==1)
                 {
                  bool close=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,clrNONE);
                 }
              }
           }
Aber wie Sie sehen können nichts wird überprüft, so dass es für die manuelle Implementierung, wo Sie visuell überprüfen können, dass die Aufträge geschlossen sind oder nicht.
 
whroeder1:
  1. Bei Vorhandensein mehrerer Aufträge (ein EA, mehrere Charts, mehrere EAs, manueller Handel)
Max Enrik: RefreshRates() Ich verstehe nicht, wo ich es einfügen kann.
Du stellst die Frage, bekommst die Antwort, ignorierst sie und fragst erneut. Kein Down, keine RefreshRates.

 
whroeder1:
Sie stellen die Frage, Sie erhalten die Antwort, Sie ignorieren sie und stellen die Frage erneut. Kein Down, keine RefreshRates.

Warum ich noch einmal frage. Entschuldigung, ich habe den folgenden Satz nicht verstanden. ( Ich kann ihn nicht übersetzen. )

  • Sie müssenRefreshRates nach dem Sleep und zwischen mehreren Serveraufrufen durchführen, wenn Sie stattdessen diePredefined Variables(Bid/Ask) oderOrderClosePrice() verwenden wollen.
 

@Marco

Nachdem ich ersetzt habe, zeigt der JPY nicht den korrekten Preis an und öffnet den Auftrag nicht.

 
Haben Sie das Codeschnipsel.
 
Marco vd Heijden:
Haben Sie das Code-Snippet.

Hier ist er.

void buyorder()
 {
  Ticket = OrderSend( _Symbol, OP_BUY, lotsize, MarketInfo(OrderSymbol(),MODE_BID), slippage, sl, tp, "trade panel", magic, 0, clrRed );
  return;
 }
 
Ticket = OrderSend( _Symbol, OP_BUY, lotsize, MarketInfo(OrderSymbol(),MODE_BID), slippage, 
  1. Sie können keine Handelsfunktionen verwenden, wenn Sie keinen Auftrag ausgewählt haben.
  2. Prüfen Sie Ihre RückgabewerteWas sind Funktionsrückgabewerte? Wie verwende ich sie? -MQL4-Forum und häufige Fehler in MQL4-Programmen und wie man sie vermeidet - MQL4-Artikel
 
whroeder1:
  1. Sie können keine Handelsfunktionen verwenden, wenn Sie keinen Auftrag ausgewählt haben.
  2. Prüfen Sie Ihre RückgabewerteWas sind Funktionsrückgabewerte? Wie verwende ich sie? -MQL4-Forum und häufige Fehler in MQL4-Programmen und wie man sie vermeidet - MQL4-Artikel

#1 Könnte ich Bid anstelle von MarketInfo verwenden?
#2 Könnte ich es wie unten schreiben?

void buyorder()
 {
  Ticket = OrderSend( _Symbol, OP_BUY, lotsize, Bid, slippage, sl, tp, "trade panel", magic, 0, clrRed );
   if( Ticket < 0 )
   {
      Print("OrderSend failed with error: ", GetLastError() );
      return;
   }
  return;
 }
 

Nur für das Diagrammsymbol.

Ask, Bid, _Period,_Symbol,Symbol(),Period()

Diese beziehen sich alle auf das Diagrammsymbol.

Verwenden Sie MarketInfo, wenn Sie mit anderen Symbolen als dem Diagrammsymbol arbeiten.