Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 523
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
Welcher Kanon ist das? Es gibt ein offizielles Dokument - es ist genau wie Ihres...alles andere ist nur eine Fälschung.
1. es lohnt sich, die Serialisierung aller verwendeten Arrays in OnCalculate einzustellen
2. bevor Sie in die Schleife einsteigen, geben Sie buff[length]=Bid+size ein; - Sie erhalten dann ungefähr das, was Sie wollen. Eine geschwungene Linie und am Ende ein "Visier" bei Bid+size
3. beobachten Sie die Arraygrenzen. Natürlich ist rates_total < length, aber darüber kann man nicht scherzen :-)
Mit anderen Worten, müssen Sie schreiben ArraySetAsSeries am Anfang und dann tanzen von dort?
Oh ja, ich habe es falsch beschrieben. Diese Linie muss links im Diagramm verlaufen und bei jedem Tick aktualisiert werden
Herzlichen Dank für Ihre ausführliche Antwort!
Ihrem Rat folgend habe ich die Zweige geteilt und alles hat funktioniert.
Ich hatte ein Problem mit der gleichzeitigen Eröffnung von 10-15 schwebenden Aufträgen. Ich habe das Problem gelöst, indem ich Ihren Code danach hinzugefügt habe:
Auch das ist keine Lösung. Der Auftrag kann manuell oder durch einen anderen EA eröffnet werden. Infolgedessen wird der zu entwickelnde EA nichts öffnen. Daher müssen wir die Anzahl der vom Expert Advisor eröffneten Aufträge zählen. Mit diesen Daten können Sie entscheiden, ob Sie einen Auftrag eröffnen wollen oder nicht.
Ich bin sicher, dass es einen besseren Weg gibt.
Erläutern Sie bitte in Bezug auf Ihren Code, was 1; i >=0; --i?
Dies ist die Standard-Auftragsschleife. OrdersTotal() - dies ist die Anzahl der Bestellungen. Die Aufträge werden von Null an indiziert. Wenn es also eine Bestellung gibt, ist ihr Index 0, während die Funktion OrdersTotal() 1 zurückgibt. Die Schleife sollte also mit dem Index beginnen, der um 1 kleiner ist als die Anzahl der Bestellungen. Wir erhalten OrdersTotal() - 1. Der zweite Operand ist die Bedingung für die Ausführung des Schleifenkörpers. In diesem Fall wird die Schleife bei i = -1 beendet. Der dritte Operand ist die Ausführung des Schleifensprungs zum nächsten Index (Abnahme um 1).
Über den Schleifenoperator können Sie in der Dokumentation nachlesen.
Auch das ist keine Option. Der Auftrag kann manuell oder durch einen anderen EA eröffnet werden. Infolgedessen wird der zu entwickelnde EA nichts öffnen. Daher müssen wir die Anzahl der vom Expert Advisor eröffneten Aufträge zählen. Anhand dieser Daten müssen wir entscheiden, ob wir einen Auftrag eröffnen wollen oder nicht.
Ich habe es auf diese Weise versucht, aber es begann wieder 10-15 Aufträge pro 1 Signal zu öffnen:
Der dritte Operand soll zum nächsten Index gehen (Verringerung um 1).
Es werden also alle Aufträge vom Ende her betrachtet?
Dies habe ich versucht, aber es wurden wieder 10-15 Aufträge pro Signal geöffnet:
Es werden also alle Aufträge vom Ende her betrachtet?
Um die Funktion OrderMagicNumber() zu verwenden, sollten Sie zunächst eine Bestellung auswählen. Die Standardschleife zum Sammeln von Informationen über die eigenen Aufträge sieht wie folgt aus (z. B. die Anzahl der eigenen Aufträge zählen):
Nach Ausführung dieses Codes enthält die Variable nCnt die Anzahl der Arbeitsaufträge des Expert Advisors.
Ich löse das Problem wie folgt...
Ich danke Ihnen.
Um die Funktion OrderMagicNumber() zu verwenden, müssen Sie zunächst eine Bestellung auswählen. Der Standardzyklus für das Sammeln von Informationen über die eigenen Aufträge sieht folgendermaßen aus (z. B. die Anzahl der eigenen Aufträge zählen):
Nachdem dieser Code ausgeführt wurde, enthält die Variable nCnt die Anzahl der Arbeitsaufträge des EA.
Herzlichen Dank! Es hat geklappt!
Könnten Sie angeben, ob ++nCnt eine Substitution der erhaltenen Anzahl von Aufträgen in der Variablen nCnt selbst ist?
Herzlichen Dank! Es hat funktioniert.
Können Sie mir sagen, ob ++nCnt die empfangene Anzahl von Aufträgen in der Variablen nCnt selbst ersetzt?
In allen diesen Fällen sollten Sie sofort die Unterlagen einsehen. ))
Herzlichen Dank! Es hat funktioniert.
Können Sie mir sagen, ob ++nCnt die Substitution der erhaltenen Anzahl von Aufträgen in die Variable nCnt selbst ist?
Es gibt eine vollständige Dokumentation der Sprache, schauen Sie einfach im oberen Menü der Website nach.
Seien Sie nicht zu faul, es zu lesen, es ist unmöglich, alles im Kopf zu behalten. Fast alle, nicht nur Anfänger, schaffen es immer.
Es gibt eine ausführliche Dokumentation über die Sprache, schauen Sie einfach im oberen Menü der Website nach.
Seien Sie nicht zu faul, es zu lesen - Sie können nicht alles im Kopf behalten - es ist immer da, für fast alle - nicht nur für Neulinge.
Ich danke Ihnen. Ich bin mir nicht immer sicher, in welchem Abschnitt ich suchen soll, ich bin noch nicht sehr gut darin und der F1-Editor schickt mich nicht immer an die richtige Stelle)
Ich werde versuchen, Sie nicht mit dummen Fragen zu belästigen, danke für Ihre Geduld)
1. Sie meinen, ArraySetAsSeries am Anfang zu schreiben und dann von dort zu gehen?
Oh ja, ich habe es falsch beschrieben. Sie möchten, dass diese Linie im Diagramm nach links verläuft und bei jedem Tick aktualisiert wird
Ziehen Sie also eine horizontale Linie.
Wozu braucht man Puffer und deren Neuberechnung? ObjectSetDoubke(0,myHLine,OBJPROP_PRICE,concrete_price_value);
der Benutzer sieht die Zeile, Sie verschwenden keine Zeit mit der Neuberechnung der Puffer, alle sind zufrieden und gehen fröhlich auseinander
PS: Der Indikatorpuffer dient dazu, die Ergebnisse der durchgeführten Berechnungen zu übertragen (gemeinsam zu nutzen). Das Zeichnen einer horizontalen Linie der Länge N ist anders