Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 273
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
int tip=OrderType();
if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
Sie haben bereits erfahren, dass die zweite Zeile dieses Fragments einen Fehler enthält: Bevor die Funktion OrderType() aufgerufen wird, muss die Bestellung mit der Funktion OrderSelect() ausgewählt werden.
Es gibt einen Fehler in Zeile 3: Aber gibt es einen Auftrag mit der Nummer 1? Wenn die Mindestanzahl 1 wäre, d.h. das Konto beginnt mit 1, dann wäre die Höchstanzahl gleich der Nummer (es gäbe insgesamt 5 Aufträge: Auftragsnummern 1, 2, 3, 4, 5). Aber die Aufträge sind von 0 an nummeriert - setzen Sie den Cursor auf OrdersHistoryTotal und drücken Sie F1, um ein Beispiel zu sehen. Wie hoch ist also die maximale Bestellmenge?
Sie haben vorhin vorgeschlagen, das Datum des Monats durch 7 zu teilen und zu runden, was in der zweiten Tabelle auch geschieht.
Ich verstehe Ihren Algorithmus nicht.
Nun, ich denke Folgendes:
1 Bestimmen Sie den Wochentag des ersten Tages des Monats.
2. Finde heraus, wie viele Tage bis zum Ende der Woche noch übrig sind (war Mittwoch (3) bis Montag 7-3 = 4).
3. Der 5. Tag - der Beginn der zweiten Woche
4. In der Schleife suchen wir dann nach einer Woche, wenn die Zahl in den Bereich von 5 + 7 * x bis 5 + 7 * (x +1) fällt, wobei x - Zahl der Woche minus eins, dann haben wir die Woche gefunden.
Aber das ist kompliziert, vielleicht gibt es einen einfacheren Weg?
Alexey, wir sprechen über unterschiedliche Dinge. Das Problem bestand nicht darin, festzustellen, welche Woche des Monats die Nummer des Monats ist, sondern der erste Tag der Woche mit diesem Namen im Monat. Es handelt sich um unterschiedliche Aufgaben und folglich auch um unterschiedliche Lösungen.
Seit 63 Jahren kann ich immer noch nicht herausfinden, wie man die Anzahl der Wochen im Monat berechnet. In Russland zum Beispiel gilt der Montag als erster Tag der Woche. Wenn der Monat am Sonntag beginnt, wie zählt man dann den Montag? Hat die zweite Woche begonnen? Oder was??? Die Frage ist rhetorisch, es gibt keinen Grund, eine Polemik darüber anzufangen.
Alexej, wir sprechen über unterschiedliche Dinge. Das Problem bestand nicht darin, festzustellen, in welcher Woche des Monats die Nummer des Monats liegt, sondern ob es sich um den ersten Tag der Woche mit diesem Namen in diesem Monat handelt. Es handelt sich um unterschiedliche Aufgaben und folglich auch um unterschiedliche Lösungen.
Seit 63 Jahren verstehe ich immer noch nicht, wie man die Zahl der Woche im Monat zählt. Nehmen wir an, dass in Russland der erste Tag der Woche der Montag ist. Wenn der Monat am Sonntag beginnt, wie wird dann der Montag gezählt? Hat die zweite Woche begonnen? Oder was??? Die Frage ist rhetorisch, es gibt keinen Grund, eine Polemik darüber anzufangen.
Ich verstehe. Für mich ist das eine eindeutige Frage...
Alexej, wir sprechen über unterschiedliche Dinge. Das Problem bestand nicht darin, festzustellen, in welcher Woche des Monats die Nummer des Monats liegt, sondern ob es sich um den ersten Tag der Woche mit diesem Namen in diesem Monat handelt. Es handelt sich um unterschiedliche Aufgaben und folglich auch um unterschiedliche Lösungen.
Seit 63 Jahren kann ich immer noch nicht herausfinden, wie man die Anzahl der Wochen im Monat berechnet. In Russland zum Beispiel gilt der Montag als erster Tag der Woche. Wenn der Monat am Sonntag beginnt, wie zählt man dann den Montag? Hat die zweite Woche begonnen? Oder was??? Die Frage ist rhetorisch, es gibt keinen Grund, eine Polemik darüber anzufangen.
Sie haben bereits erfahren, dass die zweite Zeile dieses Fragments einen Fehler enthält: Bevor die Funktion OrderType() aufgerufen wird, muss die Bestellung mit der Funktion OrderSelect() ausgewählt werden.
Es gibt einen Fehler in Zeile 3: Aber gibt es einen Auftrag mit der Nummer 1? Wenn die Mindestanzahl 1 wäre, d.h. das Konto beginnt mit 1, dann wäre die Höchstanzahl gleich der Nummer (es gäbe insgesamt 5 Aufträge: Auftragsnummern 1, 2, 3, 4, 5). Aber die Aufträge sind von 0 an nummeriert - setzen Sie den Cursor auf OrdersHistoryTotal und drücken Sie F1, um ein Beispiel zu sehen. Wie hoch ist also die maximale Bestellmenge?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Ist sie jetzt korrekt?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) - так какой наибольший номер ордера?
int tip=OrderType();
und ist es jetzt richtig?
ein Skript schreiben und nach jedem Operator die Informationen ausgeben + GetLastError() mit Alert() - siehe das Beispielskript oben
aber man sollte besser den Fehlercode aus der _LastError-Variable nehmen, um ihn zu drucken, sonst kann man die Logik mit einem leichten "Debug-Print" zerstören
GetLastError() tut gleichzeitig etwas für GetXXX() Unverständliches - es ändert seinen internen Zustand und setzt den Fehlercode auf 0 zurück.
nur für das Drucken ist es besser, den Fehlercode aus der _LastError-Variable zu übernehmen, da es sonst möglich ist, die Logik durch einen leichten "Debug-Druck" zu zerstören
GetLastError() tut gleichzeitig etwas für GetXXX() Unverständliches - es ändert den internen Zustand und setzt den Fehlercode auf 0 zurück.
Nun, das ist Geschmackssache - entweder speichern Sie den Fehlercode in einer Variablen und setzen den Fehler zurück oder Sie speichern ihn in _LastError zur späteren Verwendung
hier ist der Algorithmus von unten nach oben zu lesen