Fehler, Irrtümer, Fragen - Seite 1914

 
nys2000:

Könnten Sie etwas genauer sein?


ganz von vorne anfangen

 
nys2000:

Könnten Sie etwas genauer sein?

for(i=1; i <=OrdersTotal(); i++) Die Aufträge in dieser Liste sind von Null bis einschließlich OrdersTotal()-1 nummeriert (Artem Trishkin möge mich entschuldigen, ich habe gerade die Wartezeit auf nys2000 verkürzt).
 
Aleksei Beliakov:

ganz von vorne anfangen


Dies sind zwei gleichwertige Optionen. Wenn für (i=1...) dann OrderSelect(i-1,...), wenn für (i=0,...) - OrderSelect(i,...)

 
Vladimir:
for(i=1; i <=OrdersTotal(); i++) Die Aufträge in dieser Liste sind von Null bis einschließlich OrdersTotal()-1 nummeriert (Artem Trishkin möge mich entschuldigen, ich habe gerade die Wartezeit auf nys2000 verkürzt).

Danke, aber die Nummerierung der Aufträge von 0 bis OrdersTotal()-1 wird in OrderSelect(i-1,...) berücksichtigt.

 
int OrdersTotalT(int _type)
  {
   int _total=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {

      bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() && OrderType()==_type)
        {
           _total++;
        }
     }
   return(_total);
  }
 
nys2000:

Danke, aber die Nummerierung der Aufträge von 0 bis OrdersTotal()-1 wird in OrderSelect(i-1,...) berücksichtigt.


Führen Sie die Suche in umgekehrter Reihenfolge durch ...

 
nys2000:

Hier ist ein einfacher Code wie dieser:

In dem Moment, in dem die Funktion gestartet wird, sind zwei Kaufpositionen offen. Die Funktion gibt das Vorhandensein von zwei Aufträgen zweimal aus: Passage 1, Passage 2.

Wir entfernen die Kommentare und führen die Funktion erneut aus. Er nimmt einen Kaufauftrag energisch zurück, erklärt "Durchgang 1" und verlässt die Schleife. Die Meldung "Passage #2" erscheint nicht.

Was ist der Zauber?


1. i=1, wir haben die Aufträge berechnet ... geprüfte Bedingung 1<= 2 ? ja. Ausgewählt und den Auftrag abgeschlossen.

2. i++ (i=2)

3. ordersTotal()=1 <---------- durch Schließen der Bestellung innerhalb der Schleife tatsächlich die Bedingung zum Verlassen der Schleife geändert

4. 2<=1 ? nein <----------- hier deine "Magie" und verlasse entsprechend die Schleife

void CloseAllOrders()
{
bool Ans;
int total=OrdersTotal();
   for(int i=1; i <=total; i++)     
      {      
      Print("Проход № ", i);      
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
         {  
         if (OrderSymbol() != Symbol())
            continue;
         if (OrderType()==0)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Bid,Digits),25);
             }           
         if (OrderType()==1)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Ask,Digits),25);
             } 
         }
      }      
         
return;
   
}
 

Warum gibt es eine zusätzliche Diagramm-IDCHART_WINDOW_HANDLE, welchen Zweck erfüllt sie?

 
Konstantin:

Warum gibt es eine zusätzliche Diagramm-IDCHART_WINDOW_HANDLE, welchen Zweck erfüllt sie?

Ich gehe davon aus, dass die Diagramm-ID für die MQL-Umgebung und HWND für Winapi ist.
 

Fehler bei der Ausführung

int f( int t )
{
union U {
        U( int t ) : t1( t ) {}
        int t2;
        int t1;
};
	U u( t );
        return u.t2;
}
void OnStart()
{
        Print( f( 3 ));
}

Ergebnis: Zufallszahl (sicher nicht 3)