[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 4

 
splxgf:

Wie stellen Sie fest, welcher der beiden Fälle der richtige ist?

https://book.mql4.com/ru/trading/orderclose

Und filtern Sie bei Bedarf nach Symbolen, voll funktionsfähiges Beispiel

https://book.mql4.com/ru/trading/ordermodify


Ich verwende das folgende Beispiel, um zu bestimmen, aber es schließt nur den letzten schwebenden Auftrag statt des ersten, obwohl alle Bedingungen für den ersten schwebenden Auftrag erfüllt sind. Helfen Sie mir, einen Fehler zu finden!!!!!!!!!!!!!

 if (Bid>=Openup-0.0005)
 {
 for(int count = OrdersTotal()-1; count >= 0; count--)
  {  
     OrderSelect(count, SELECT_BY_POS, MODE_TRADES);
     if (OrderType() == OP_BUYLIMIT)
       {  
        OrderDelete(ticket,CLR_NONE);
       }
  }
 }
 
Andreev:


Ich verwende das folgende Beispiel, um zu bestimmen, aber es schließt nur den letzten schwebenden Auftrag statt des ersten, obwohl alle Bedingungen für den ersten schwebenden Auftrag erfüllt sind. Helfen Sie mir, einen Fehler zu finden!!!!!!!!!!!!!


Am einfachsten lässt sich die Reihenfolge der beiden Abschlüsse anhand der magischen Zahl bestimmen. Weisen Sie ihnen beim Einrichten unterschiedliche Nummern zu. In dem Beispiel, das Sie oben gezeigt haben, fehlt diese Prüfung. Schreiben Sie auch OrderTicket() anstelle von ticket.
 
tol64:

Am einfachsten lässt sich die Reihenfolge der beiden Abschlüsse anhand der magischen Zahl bestimmen. Weisen Sie ihnen beim Einrichten unterschiedliche Nummern zu. In dem Beispiel, das Sie oben gezeigt haben, fehlt diese Prüfung. Schreiben Sie auch OrderTicket() anstelle von ticket.

Vielen Dank für die Antwort! Man hat mir bereits eine magische Zahl genannt, aber wo ich sie bei der Definition eines schwebenden Auftrags eingeben soll und wie ich sie mit einem Ticket in Verbindung bringe, verstehe ich nicht.
 
Andreev:

Vielen Dank für die Antwort! Man hat mir bereits geraten, die magische Zahl zu verwenden, aber ich verstehe nicht, wo ich sie bei der Definition eines schwebenden Auftrags platzieren und wie ich sie mit einem Ticket verknüpfen soll.


Nachfolgend finden Sie einen Link zu einer vollständigen Beschreibung der OrderSend-Funktion, in der alle Variablen aufgeführt sind, die bei der Eröffnung einer Bestellung gesetzt werden können. Sie sollten sich für die magische Variable interessieren, aber um korrekt zu funktionieren, sollten alle Variablen vor ihr ausgefüllt werden, alle Variablen danach - wie Sie es für richtig halten

https://docs.mql4.com/ru/trading/OrderSend

 
LazarevDenis:


Magie sollte gesetzt werden, wenn eine Bestellung zu öffnen, aber stellen Sie sicher, dass die Anzahl der verschiedenen Aufträge unterschiedlich ist, sonst macht es keinen Sinn, unten ist ein Link zu einer vollständigen Beschreibung der OrderSend-Funktion, wo alle Variablen, die gesetzt werden können, wenn eine Bestellung zu öffnen, sollten Sie in der magischen Variable interessiert sein, aber um richtig zu arbeiten alle Variablen vor es sollte ausgefüllt werden, alle Variablen nach - wie Sie sehen, passen

https://docs.mql4.com/ru/trading/OrderSend


Warum brauchen unterschiedliche Aufträge unterschiedliche Magie?
 

Bitte geben Sie mir den korrekten Code. Ich habe einen EA geschrieben und er erzeugt nur zwei Fehler während der Kompilierung - ich weiß nicht, wie ich sie loswerden kann.

diese Fehler 1) 'SL' - Variable bereits definiert C:\Programmdateien\MetaTrader Finam\experts\$.mq4 (43, 11)

und 2) 'TP' - Variable bereits definiert C:³ Files\MetaTrader Finam\experts\$.mq4 (45, 11)

Der Code des Expert Advisors unten:

 
extern int  

            Diapazon=1200,
            Slipege=500,
            TP=1500,
            SL=15000;   
            
double pa, pb, pt;
int    ls, dg;                  

  int start()                                // Спец. функция start()
  {  
   
   pa=MarketInfo(Symbol(),MODE_ASK);
   pb=MarketInfo(Symbol(),MODE_BID);
   pt=MarketInfo(Symbol(),MODE_POINT);
   dg=MarketInfo(Symbol(),MODE_DIGITS);
   ls=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   //---------------------------------------+
    
   if
   
   {
   
   double variable1 = NormalizeDouble(pa+ls*pt,dg); 
  
   double variable2 = NormalizeDouble(pb-ls*pt,dg);
   
   //---------------------------------------------+ 
  
   double pa = NormalizeDouble(Ask+Diapazon*Point,Digits);
   
   double SL = NormalizeDouble(Bid+(Diapazon-SL)*Point,Digits);
  
   double TP = NormalizeDouble(Ask+(Diapazon+TP)*Point,Digits);

 
  
   double pb = NormalizeDouble((Bid+Diapazon*Point,Digits);
  
   double SL = NormalizeDouble(Bid+(Diapazon+SL)*Point,Digits);
  
   double TP = NormalizeDouble(Bid+(Diapazon-TP)*Point,Digits);
   
   }
  
                                       // Открытие BUY
                                         
   OrderSend(Symbol(),OP_BUYSTOP, 0.05,Ask+Diapazon*Point,3,Bid+(Diapazon-SL)*Point,Ask+(Diapazon+TP)*Point);
   
                                     // Открытие SELL
   
   OrderSend(Symbol(),OP_SELLSTOP,0.05,Bid+Diapazon*Point,3,Bid+(Diapazon+SL)*Point,Bid+(Diapazon-TP)*Point);  

   return;                                   // Выход из start()
  }
  
 
Vinin:

Und warum brauchen verschiedene Haftbefehle unterschiedliche Magie?

Offensichtlich dafür - ein paar Beiträge weiter oben :-))) - Der einfachste Weg, um zu bestimmen, welche der beiden Reihenfolgen zu schließen ist, ist die magische Zahl. Weisen Sie ihnen beim Einrichten unterschiedliche Nummern zu. In dem Beispiel, das Sie oben gezeigt haben, fehlt diese Prüfung. Schreiben Sie auch OrderTicket() anstelle von ticket".
 
tol64:

Am einfachsten lässt sich die Reihenfolge der beiden Abschlüsse anhand der magischen Zahl bestimmen. Weisen Sie ihnen beim Einrichten unterschiedliche Nummern zu. In dem Beispiel, das Sie oben gezeigt haben, fehlt diese Prüfung. Schreiben Sie außerdem anstelle von Ticket OrderTicket().

Erinnern Sie sich an den Zeitpunkt der Einstellung von Aufträgen, vergleichen Sie dann die Zeit in der Schleife und löschen Sie den ältesten.
 
Andreev:


Ich verwende das folgende Beispiel, um zu bestimmen, aber es schließt nur den letzten schwebenden Auftrag statt des ersten, obwohl alle Bedingungen für den ersten schwebenden Auftrag erfüllt sind. Helfen Sie mir, einen Fehler zu finden!!!!!!!!!!!!!


Schließen Sie die Variante der Umwandlung der ersten Order in eine Marktorder nicht aus, und folglich die Unmöglichkeit ihrer Entfernung durch diesen Zyklus bei Limit-Orders?