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

 
trader781:

Beitrag 844 umgeschrieben, um den Code hier nicht noch einmal schreiben zu müssen

Was das Array mit der Größe Null betrifft, so kann 0 eine ganze Zahl sein, es kann das Äquivalent eines booleschen Falsifikators sein, es kann eine Leere sein und es kann der Ausgangspunkt sein.

Es spielt keine Rolle, was Sie mit Null meinen. Wenn Sie die Größe eines Arrays mit Null angeben, nennen Sie es Null-Lebkuchen und es wird Null sein. Das bedeutet, dass das Feld Null ist.
 
trader781:

Beitrag 844 umgeschrieben, um den Code hier nicht noch einmal schreiben zu müssen

Was das Array mit der Größe Null betrifft - 0 kann eine ganze Zahl sein, es kann das Äquivalent eines booleschen Falsifikators sein, es kann eine Leere sein, und es kann ein Ausgangspunkt sein.

Und bitte zwingen Sie mich nicht, den richtigen Code in den richtigen Beitrag für Sie einzufügen:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int               Ticket;
   double            orderopenprice;
   int               ordertype;
   double            profit;
   double            stoploss;
   double            lot;
  };
myorder orders[];

int    i;
int    Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=0;

   for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
        {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
        }
     }
   ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);

  }
//+------------------------------------------------------------------+

Schauen Sie sich nun an, welches Feld Sie ausfüllen und nach welchem Feld Sie es sortieren. Und das Wichtigste: Warum brauchen Sie diese Sortierung? Was ist der Sinn der Sache?

 
Artyom Trishkin:

Und bitte zwingen Sie mich nicht, den richtigen Code in die richtige Nachricht für Sie einzufügen:

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

dasArray der Aufträge in aufsteigender Reihenfolge ab dem Wert Nullsortieren

Wenn wir zum Beispiel 20 Aufträge haben und 18 davon zufällig um ein paar Punkte gestiegen sind und ich sie sofort mit meinen Händen geschlossen habe

 
trader781:

dasArray der Aufträge in aufsteigender Reihenfolge ab dem Wert Nullsortieren

Wenn wir zum Beispiel 20 Aufträge haben und 18 davon zufällig um ein paar Punkte gestiegen sind und ich sie sofort mit den Händen geschlossen habe.

Wenn Sie unbedingt eine Sortierung nach Ticket benötigen, müssen Sie 2 Arrays erstellen. Das eine ist ein Array von Strukturen und das zweite ist ein zweidimensionales Array, das in der ersten Dimension das Auftragsticket und in der zweiten den Zählerindex enthält, also den Index, unter dem die Auftragsinformationen im Array von Strukturen gespeichert sind. Und füllen Sie diese Arrays gleichzeitig in einer Schleife.

Sie versuchen schon so lange, diese Frage zu lösen, dass ich mich nicht einmal mehr an das Ziel erinnern kann, das Sie erreichen wollten. Und wahrscheinlich auch alle anderen.

Wenn ich mich richtig erinnere, müssen Sie eine bestimmte Zahl aus der Liste der Aufträge auswählen. Wo liegt also das Problem? Machen Sie einfach ein einfaches eindimensionales Array, sortieren Sie es, und dann orderSelect(array[required], SELECT_BY_TICKET) und das war's...dann machen Sie mit diesem Auftrag, was Sie wollen.

 
Alexey Viktorov:

Wenn Sie unbedingt nach Tickets sortieren müssen, müssen Sie zwei Arrays erstellen. Das eine ist ein Strukturarray und das zweite ist ein zweidimensionales Array, das in der ersten Dimension das Auftragsticket und in der zweiten den Zählerindex enthält, also den Index, unter dem die Auftragsinformationen im Strukturarray gespeichert sind. Und füllen Sie diese Arrays gleichzeitig in einer Schleife.

Sie versuchen schon so lange, diese Frage zu lösen, dass ich mich nicht einmal mehr an das Ziel erinnern kann, das Sie erreichen wollten. Und wahrscheinlich auch alle anderen.

Wenn ich mich richtig erinnere, müssen Sie eine bestimmte Zahl aus der Liste der Aufträge auswählen. Wo liegt also das Problem? Machen Sie einfach ein einfaches eindimensionales Array, sortieren Sie es, und dann orderSelect(array[required], SELECT_BY_TICKET) und das war's...Dann können Sie mit diesem Auftrag machen, was Sie wollen.

Ich weiß auch nicht mehr, was ich dort tun soll. Aber das Gute daran ist, dass es das tut.

Ich bitte ihn ausdrücklich darum, zunächst eine Sache zu schreiben, und dann bitte ich ihn, sich genau anzusehen, was er geschrieben hat, damit er selbst versteht, dass es so nicht funktionieren wird - er braucht ein weiteres lokales Array direkt in der Funktion, das wir sortieren und dann das globale Array aus dem sortierten Array ausfüllen müssen.

 
Alexey Viktorov:

Wenn Sie unbedingt nach Tickets sortieren müssen, müssen Sie zwei Arrays erstellen. Das eine ist ein Strukturarray und das zweite ist ein zweidimensionales Array, das in der ersten Dimension das Auftragsticket und in der zweiten den Zählerindex enthält, also den Index, unter dem die Auftragsinformationen im Strukturarray gespeichert sind. Und füllen Sie diese Arrays gleichzeitig in einer Schleife.

Sie versuchen schon so lange, diese Frage zu lösen, dass ich mich nicht einmal mehr an das Ziel erinnern kann, das Sie erreichen wollten. Und wahrscheinlich auch alle anderen.

Wenn ich mich richtig erinnere, müssen Sie eine bestimmte Zahl aus der Liste der Aufträge auswählen. Wo liegt also das Problem? Machen Sie einfach ein einfaches eindimensionales Array, sortieren Sie es, und dann orderSelect(array[required], SELECT_BY_TICKET) und das war's...dann machen Sie mit diesem Auftrag, was Sie wollen.

Nein, ich verstehe, dass es viele Möglichkeiten gibt, es anders zu machen und Arrays zu vermeiden. Warum brauche ich 2, wenn ich nur eines der Arrays verwenden will?
 
trader781:
Nein, ich verstehe, dass es viele Möglichkeiten gibt, es anders zu machen und ohne Arrays auszukommen. Warum 2, wenn es eine der Strukturen gibt?

Denn ein einfaches Array wird nach den Werten in der ersten Arraydimension sortiert, und wie ein Array mit Strukturen sortiert wird, weiß ich nicht.

Aber eine interessante Frage... Jetzt werde ich versuchen, ein Array von Strukturen zu sortieren.

 
Alexey Viktorov:

Denn ein einfaches Array wird nach den Werten in der ersten Array-Dimension sortiert, aber wie ein Array mit Strukturen sortiert wird, weiß ich nicht.

Das ist allerdings eine interessante Frage... Jetzt werde ich versuchen, ein Array von Strukturen zu sortieren.

Ich habe keine Ahnung, wozu sie überhaupt in Form einer Struktur dienen soll. Das mq-Programm ist in einer einzigen Datei geschrieben, das Array wird in einem einzigen Bildlauf verarbeitet und passt auf einen einzigen Bildschirm. Welchen Sinn hat eine Struktur in diesem Fall, wenn es um sportliches Interesse geht?
 
Alexey Viktorov:

Denn ein einfaches Array wird nach den Werten in der ersten Array-Dimension sortiert, aber ich habe keine Ahnung, wie ein Array mit Strukturen sortiert wird.

Obwohl die Frage interessant ist... Ich werde versuchen, eine Reihe von Strukturen zu sortieren.

Ich habe keine Ahnung, was es ist oder worum es geht.

Aber jetzt, wo das Thema aufgeworfen wurde, ist es dumm, es wegzuwerfen. Es gibt auch Arrays von Klassen.

 
Vitaly Muzichenko:
Ich habe keine Ahnung, warum es überhaupt in Form einer Struktur benötigt wird. Das mq-Programm wird in einer einzigen Datei geschrieben, das Array wird in einem einzigen Bildlauf verarbeitet und passt auf einen einzigen Bildschirm. Welchen Sinn hat eine Struktur in diesem Fall, wenn es um sportliches Interesse geht?

Wir schreiben alles um des Sports willen. Zuerst verstehen wir, was funktioniert und wie es funktioniert, und dann überlegen wir, wie wir es besser schreiben können.


Was das Sortieren der Strukturmatrix angeht: Wie erwartet, ist das Experiment fehlgeschlagen. Schon beim Kompilieren sagte der Compiler"Ausdruck hat keine Wirkung".

Grund der Beschwerde: