Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 84
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Dann beantworten Sie bitte meine vorherige Frage
1) Schreiben eines Arrays von Strukturen
2) Übertragen auf andere Funktionen
3) Abrufen und Vergleichen von Elementen eines Arrays von Strukturen
4) Drucken einer Reihe von Strukturen
Es ist wichtig für mich, es in Form von Code zu schreiben, damit ich verstehe, wie es aussehen muss.
Das hängt ganz von der jeweiligen Aufgabe ab. Da die Aufgaben so unterschiedlich sein können, wie Sie wollen, was soll angezeigt werden?
Nun, ich werde es schreiben, ich werde meine Zeit verschwenden und was ich geschrieben habe, ist quadratisch. Und das Loch ist dreieckig. Und wo bringe ich dann den quadratischen an?
Das hängt ganz von der jeweiligen Aufgabe ab. Da die Aufgaben so vielfältig sein können, wie Sie wollen, was soll gezeigt werden?
Nun, ich werde es schreiben, meine Zeit verschwenden, aber was ich geschrieben habe, ist spießig. Und das Loch ist dreieckig. Und wo bringe ich dann den quadratischen an?
Nehmen wir den Beitrag 699 und darüber
wie man dies an andere Funktionen weitergibt und ein Element in der Struktur mit dem vorherigen vergleicht
so kann ich eine beliebige Reihenfolge nehmen und alle Werte auf dem Drucker ausgeben
Der Unterschied besteht darin, dass es sich nicht um eine Zahl handelt und dass es andere Regeln für die Aufzeichnung gibt.
Nehmen wir den Beitrag 699 und darüber
wie man dies an andere Funktionen weitergibt und das Strukturelement mit dem vorherigen vergleicht
und so kann ich eine beliebige Reihenfolge nehmen und alle Werte ausdrucken
Der Unterschied ist, dass es sich nicht um eine Zahl handelt und andere Schreibregeln gelten.
Sie müssen alle notwendigen Aufträge in einer Schleife durchlaufen.
Nachdem der nächste notwendige Auftrag ermittelt ist, erhöhen Sie die Matrix um 1 und tragen alle Daten zu diesem Auftrag in die neue Zelle ein. Die Array-Zelle selbst wird mit der Öffnungszeit des Auftrags gefüllt (wenn Sie nach geschlossenen Aufträgen suchen, mit der Schließzeit). Der Rest der Daten sollte in die Felder der Struktur geschrieben werden.
Nach dem Ende der Schleife sortieren Sie das Array in aufsteigender Reihenfolge der Werte.
Sie sollten dies zuerst tun. Über den Rest kann weiter diskutiert werden.
Dies ist kein Problem, das in einem einzigen Zyklus gelöst werden kann.
Ich danke Ihnen.
//| test.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
struct myorder
{
int Ticket;
double orderopenprice;
int ordertype;
double profit;
double stoploss;
double lot;
};
myorder orders[][5];
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=-1;
ArrayResize(orders,AccountInfoInteger(ACCOUNT_LIMIT_ORDERS),10);
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
{
count1++;
orders[count1][0].Ticket=OrderTicket();
orders[count1][1].lot=OrderLots();
orders[count1][2].orderopenprice=OrderOpenPrice();
orders[count1][3].ordertype=OrderType();
orders[count1][4].profit=OrderProfit();
orders[count1][5].stoploss=OrderStopLoss();
}
}
ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
}
//+------------------------------------------------------------------+
Ich habe Ihren Code in Ihren Beitrag eingefügt.
Wenn Sie jetzt anfangen, die Sache zu klären
Ich habe Ihren Code in Ihren Beitrag eingefügt.
Wenn Sie jetzt anfangen, die Sache zu klären
1) dachte, dass die Parameternummer X in der Reihenfolge Y für die gegebene Aufgabe besser geeignet ist
2) Ich habe es gleich 50 oder 100 je nach Kontotyp, und nichts anderes
3) wenn alsocount1++; bei jedem Durchlauf zunimmt und das Feld seinen Wert erhält
1) ist der Ansicht, dass die Parameternummer X der Ordnung Y für diese Aufgabe besser geeignet ist
2) Sie beträgt 50 oder 100, je nach Kontotyp, und sonst nichts.
3) wenn alsocount1++; bei jedem Durchlauf zunimmt und das Feld seinen Wert erhält
1. Wofür ist die Struktur dann?
2. Sie benötigen diesen Parameter für eine Reihe von "was ging und was geht"-Marktpositionen... Das Array vor der Schleife muss eine Größe von Null haben.
3. Das ist richtig. Das Array hat am Anfang eine Größe von Null. Mit jeder neu gefundenen Bestellung wird das Array so groß wie die Anzahl der benötigten Bestellungen.
1) Wofür ist die Struktur dann?
2. Sie benötigen diesen Parameter für die Reihe der Marktpositionen "was ging und was geht". Das Array vor der Schleife muss eine Größe von Null haben.
3. Das ist richtig. Das Array hat am Anfang eine Größe von Null. Mit jeder neu gefundenen Bestellung wird das Array so groß wie die Anzahl der benötigten Bestellungen.
1) der Compiler wird sich beschweren, wenn die zweite Dimension nicht angegeben wird; es erscheint sofort die Meldung "specify class type, unknown parameters"
2) der Bot stirbt sofort nach dem Start mit der Meldung "Kritischer Fehler - Array außerhalb der Reichweite".
3) setzeint count1=-1; dann durchlaufe die Schleife. Was ist hier los?
1) der Compiler wird sich beschweren, wenn die zweite Dimension nicht gesetzt ist
2) dann stirbt der Bot sofort beim Start mit "critical error array out of range"
3) setze einfachint count1=-1; Was ist hier falsch?
Es sagt Ihnen nur, dass eine der Dimensionen entfernt werden sollte. Sie deklarieren ein eindimensionales Array und wollen es in ein zweidimensionales Array umwandeln. Was werden Sie am Ende bekommen? Natürlich wird der Compiler eine Fehlermeldung ausgeben.
2. Sie müssen das Array in der Schleife richtig füllen, und nicht nur eine Variable mit zufälliger Größe angeben und dann etwas mit zufälliger Größe hineinschieben.
3. Sie sind derjenige, der die Variable auf -1 setzt. Und das Array muss vor der Schleife die Größe Null haben. Was verstehst du nicht?
Lassen Sie uns ein Assoziationsspiel spielen:
- Stellen Sie sich vor, Sie haben einen leeren Luftballon (leeres Feld), der kein internes Volumen (keine Feldgröße) hat. In diese Sprechblase (im Array) wollen Sie die Münzen (die gewünschten Aufträge) legen. Hier vergrößert jede Münze, sobald Sie entscheiden, dass sie in den Ballon passt (jede gefundene gewünschte Reihenfolge), das Innenvolumen des Ballons (nur die Münze selbst dehnt den Ballon aus, und Sie müssen es selbst tun - vergrößern Sie das Feld um 1 und stopfen Sie eine Reihenfolge hinein).
Hier ist eine Assoziation für Sie.Am Ende, wenn du alle Münzen gefunden und in den Ball gestopft hast, wird dieser nicht entleert - sein inneres Volumen wurde durch die Münzen gedehnt (am Ende des Suchzyklus wird die Größe des Feldes gleich der Anzahl der gefundenen notwendigen Aufträge sein, da du die Größe des Feldes mit jedem gefundenen notwendigen Auftrag um 1 erhöht hast).
Stellen Sie sich nun vor, dass Sie Ihre Münzen anfangs nicht in eine Kugel stecken, die aus Gummi ist und ihre Größe verändern kann, sondern in eine kleine Spardose, die eine begrenzte Größe hat (Sie haben die Größe des Feldes anfangs festgelegt und sie nicht weiter vergrößert). Was wird geschehen? Nicht alle Münzen passen in das Sparschwein. Der Ballon wird.