Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1257
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
Sie brauchen diesen Code nicht in OnInit, sondern in OnTick() zu schreiben.
Nein, das können Sie nicht.
Ich kann nicht erklären, wie.... Vorlagen funktionieren es ist so - bis Sie eine solche Funktion aufrufen, weiß der Compiler nichts von ihrer Existenz (oft gibt es sogar keine Compilerfehler, wenn es keinen Aufruf gibt)
dann rufen Sie eine solche Vorlagenfunktion auf und der Compiler füllt die benötigten Typen aus und prüft erst dann, ob alles richtig funktioniert
und dann rufen Sie die Vorlage erneut mit anderen Parametern auf - und der Compiler erstellt eine neue Funktion, d.h. eine weitere, d.h. als ob Sie 2 Funktionen schreiben würden, die dasselbe tun, aber mit unterschiedlichen Parametern
Puh, so funktioniert das ))))
UPD:
Sie können, aber wenn die Typen in der Vorlage übereinstimmen, hier ist ein Beispiel, funktioniert es richtig:
Vielen Dank, noch klarer als in den Dokumenten) Es stellt sich heraus, in der Vorlage Vordefinition von Variablen nicht erlauben, sie nicht angeben. Ich brauche sie für den Druck in eine Datei. Das Protokoll gibt mir nicht die Möglichkeit, die Datensätze aufzuteilen. Ich wünschte, es gäbe 5 Protokolle). Infolgedessen bieten Vorlagen die Möglichkeit, den Variablentyp nicht auf den gewünschten Typ zu bringen; dies kann innerhalb einer Vorlagenfunktion geschehen, aber die Anzahl der Variablen muss vollständig angegeben werden. Und eine einfache Funktion mit vordefinierten Variablen des gewünschten Typs bietet die Möglichkeit, weniger Variablen bei einem Aufruf anzugeben, aber die Typen der Variablen sollten auf den gewünschten Typ gebracht werden. Natürlich kann dies auch bei der Aufforderung geschehen, aber die Aufzeichnung wird dann zu lang sein.
Guten Tag zusammen!
Ich habe eine Funktion zur Änderung des Stoploss erstellt. Aber wenn es funktioniert, gibt es EURUSD,H1: OrderModify Fehler 130.
Und der Preis ist weit von dem Ort entfernt, an dem der Stoploss gesetzt werden sollte.
Hier ist die Funktion:
Versuchen Sie es auf diese Weise:
Danke, es hat funktioniert!
Aber zwei weitere Nuancen:
1 Welche Bedingung ist hinzuzufügen, damit Aufträge, die am Freitag der aktuellen Woche geöffnet wurden, nicht geschlossen werden, und am Freitag der vorangegangenen Wochen geschlossen wurden?
2. wie man den Code korrigiert - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
um die Warnung"möglicher Datenverlust durch Typkonvertierung" zu entfernen? Es scheint sich um "...MarketInfo(nameSym,MODE_DIGITS)..." zu handeln.
Bitte beraten Sie mich.
Im Testgerät ergibt der Rückgabewert der Los-Summierungsfunktion GetAmountLotFromOpenPos einen Wert von -1717986918.
Ich habe den Grund gefunden. Ich hätte OrderTakeProfit() in OrderModify anstelle von OrderProft() einsetzen sollen. Ich habe sie ein wenig durchgesehen.
Trotzdem vielen Dank für die Hilfe.
Danke, es hat funktioniert!
Aber zwei weitere Nuancen:
1 Welche Bedingung ist hinzuzufügen, damit Aufträge, die am Freitag der laufenden Woche geöffnet wurden, nicht geschlossen werden, und welche, die an den Freitagen der vorangegangenen Wochen geöffnet wurden, geschlossen werden?
2. wie man den Code korrigiert - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
um die Warnung"möglicher Datenverlust durch Typkonvertierung" zu entfernen? Es muss sich um "...MarketInfo(nameSym,MODE_DIGITS)..." handeln.
Für die erste Frage müssen Sie diese Funktion ausführen:
{Drucken("Fehler bei der Auswahl der Bestellung ", GetLastError();}
Bei der zweiten Frage ist folgender Eintrag zu machen:
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);
Viel Glück!