Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 613

 
Tigerfreerun:
Wenn (OP_BUY==0)

Warum sind Sie irreführend? Entweder wissen Sie es selbst nicht, dann halten Sie Ihre Unwissenheit bitte aus einem HILFE-Thread heraus, oder Sie scherzen nur herum und haben vergessen, dass Sie sich in einem ernsthaften Anfängerhilfe-Thread befinden.

SanNneK:
Hier ist die Bedingung, wenn alle Aufträge Null sindif(OrdersTotal()==0). und welche Bedingung zu schreiben, wenn es Null Buchten?

Wir müssen eine Schleife durch alle Aufträge ziehen und die Anzahl der Aufträge mit OrderType()==ORDER_TYPE_BUY berechnen

 
Artyom Trishkin:

Warum sind Sie irreführend? Entweder wissen Sie es nicht, dann halten Sie Ihre Unwissenheit bitte aus einem HILFE-Thread heraus, oder Sie scherzen nur herum, haben aber vergessen, dass Sie sich in einem ernsthaften Hilfe-Thread für Anfänger befinden.

Ich muss eine Schleife durch alle Aufträge ziehen und die Anzahl der Aufträge mit OrderType()==ORDER_TYPE_BUY berechnen.

Hört, hört. Ich wäre Ihnen dankbar, wenn Sie mir bei der auf der vorherigen Seite erwähnten Funktion helfen könnten, die ich selbst zum Zählen von Aufträgen verwende:

int Count(int type,string sy)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {if(sy==OrderSymbol() && OrderMagicNumber()==Magic && (type==-1 || OrderType()==type)) count++;}
     }
   return(count);
  }
 
Tigerfreerun:

Hört, hört. Ich wäre Ihnen dankbar, wenn Sie mir bei der Funktion helfen könnten, die ich auf der letzten Seite beschrieben habe und die ich selbst zum Zählen von Aufträgen verwende:

Welche Art von Hilfe brauchen Sie? Es ist eine ziemlich funktionierende Funktion in Kims Stil.
 
Alexey Viktorov:
Welche Hilfe brauchen Sie? Es ist eine ziemlich funktionierende Funktion in Kims Stil.

Auf der letzten Seite habe ich eine Funktion geschrieben, bei der die Startposition 0 für dieFunktion ArraySort falsch ist.Und eine Bitte um eine Erklärung der Funktion. Ich dupliziere

void MaxMinProfit()
{
int i, N, MaxTic, MinTic;
double   MinProf=0, MaxProf=0, OP, g, a[][2];
string MinSym, MaxSym;
ArrayResize(a, 0);
 
for (i=OrdersTotal()-1; i>=0; i--) 
  {    
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
    { 
     if (OrderType()==OP_SELL ||  OrderType()==OP_BUY )
      {
       OP = NormalizeDouble(OrderProfit()+OrderSwap()+OrderCommission(),2);
       
      if (MinProf>OP) 
      {
       
          MinProf=OP;
          MinTic=OrderTicket();
          MinSym=OrderSymbol();
          
         }
         
      if (OP>0) 
      {
       
          N++;
            ArrayResize(a, N);
            a[N-1][0]=OP;
            a[N-1][1]=OrderTicket();
          
         }
         
         }
         }
         
         }
         
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);//MODE_ASCEND);
      
      for (i=0; i<Level; i++) 
       {
     
     g+=a[i][0];
     //int ti=a[i-2][1];
     }
         
         
     
     if(MinProf <0 && (g+MinProf)>=ProcMax)
      {
       for (i=0; i<Level; i++) 
       {
       if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
        {
        //Alert(a[i][1]);
         if (OrderType()== OP_BUY)
         {
          OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
           OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }
         }
          
          
          
          if (OrderSelect(MinTic, SELECT_BY_TICKET, MODE_TRADES))
        {
         if (OrderType()== OP_BUY)
         {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }}       
return;
}
 

Wie lassen sich Parameter am besten zwischen Klassenelementen übergeben, die ihrerseits ebenfalls Klassenelemente sind?

Gegeben:

class element{
public:
int a;
        void fnc(){
        a++;            
        }
};

class elementBase{
public:
	 int b;
        element one;
        element two;
};

Gibt es eine Möglichkeit, den Wert von two.a in der Funktion a.fnc() zu ändern?


In meinem Problem sollten die Variablen der Klasse zwei neu berechnet werden, wenn Elemente der Klasse eins geändert werden. (Können Sie mir sagen, wie man das am besten macht?)

Gibt es eine Möglichkeit, den Wert von b aus der KlasseelementBase zu erhalten?

 
Tigerfreerun:

Auf der letzten Seite habe ich eine Funktion geschrieben, bei der die Startposition 0 für dieFunktion ArraySort falsch ist.Und eine Bitte um eine Erklärung der Funktion. Duplizieren Sie

Die Denkrichtung: Wenn der Gewinn kleiner als Null ist... Wie groß wird das Feld beim Sortieren sein?

Wie groß wird das Feld sein, wenn es überhaupt keine Aufträge gibt?
 
Alexey Viktorov:

Richtung zum Nachdenken: Wenn der Gewinn kleiner als Null ist... Welche Größe hat das Array beim Sortieren???

Und wie groß wird das Feld sein, wenn es gar keine Aufträge gibt?
Ich verstehe nicht ganz, was genau diese Funktion bewirkt. Aber, wie der Autor erwähnte, besteht meine Aufgabe darin, zwischen den Symbolen verlustbringende Aufträge mit gewinnbringenden zu überlappen. Ich würde mich freuen, wenn Sie mir helfen könnten, diese Funktion zu korrigieren und zu verstehen.
 
Tigerfreerun:
Ich verstehe nicht wirklich, was genau diese Funktion bewirkt. Aber wie der Autor schon sagte, besteht seine Aufgabe darin, zwischen den Symbolen verlustbringende Aufträge mit gewinnbringenden zu überlagern. Ich würde mich freuen, wenn Sie mir helfen könnten, die Funktion zu korrigieren und zu verstehen

Was sind Ihre Kompilierungsfehler? Zeigen Sie einen Screenshot.

Es gibt keine Fehler im Code, aber es gibt einige kleinere Mängel, die die Funktionalität nicht beeinflussen

 
Vitaly Muzichenko:

Was sind Ihre Kompilierungsfehler? Zeigen Sie einen Screenshot.

Es gibt keine Fehler im Code, aber einige kleinere Bugs, die die Leistung nicht beeinträchtigen

Beim Ausführen des Roboters "Falsche Startposition 0 für dieFunktionArraySort" könnten Sie diese Funktion erklären, vielleicht verstehe ich dann, was falsch ist...
Dateien:
yOXZsAXZ-X4.jpg  479 kb
Pe3JLH8tgCc.jpg  556 kb
 
Tigerfreerun:
Wenn der Roboter startet "Falsche Startposition 0 für die ArraySortFunktion", könnten Sie diese Funktion erklären, vielleicht verstehe ich dann, was falsch ist...

Nun, Sie haben die unkritischen Fehler aufgezeigt.

Wie die Funktion funktioniert, haben Sie selbst beantwortet:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Alle Fragen, die Neulinge zu MQL4 haben, Hilfe und Diskussion über Algorithmen und Codes

Tigerfreerun, 2018.09.06 21:53

Ich verstehe nicht wirklich, was diese Funktion genau macht. Aber wie der Autor schon sagte - die Aufgabe besteht darin, zwischen den Symbolen verlustbringende Aufträge mit gewinnbringenden zu überlagern. Ich würde mich freuen, wenn Sie mir helfen könnten, diese Funktion zu korrigieren und zu verstehen