Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 821
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
Bitte achten Sie auf meine Frage. Ich schreibe einen Indikator, der einige Berechnungen durchführt und diese in einem Array (keine Zeitreihe) speichert, das genauso groß ist wie die Anzahl der Kerzen im Diagramm. Ursprünglich dachte ich, dass, wenn ich 2000 Candlesticks im Diagramm in der Terminal-Parameter haben, dann beim Erscheinen eines neuen, die erste wird der Wert des zweiten, die zweite - die dritte, usw. Daher, wenn immer prev_calculated gleich Null, ich neu berechnen das gesamte Array, sonst nur die letzte Bar tun. Ich habe jedoch festgestellt, dass mit jeder neuen Kerze der Wert von rates_total steigt und den Grenzwert von 2000 überschreitet.
Es ist daher nicht sinnvoll, das Feld neu zu berechnen.
Aber warum passiert das, wenn das Terminal genau 2000 Candlesticks setzt?
Wenn das Terminal schließt, wird die Anzahl der Balken wieder auf 2000 erhöht und beginnt wieder zu steigen, wenn neue Kerzen erscheinen.
Nachmittag . Könnten Sie mir einen Tipp geben? Wie würde der Code für diese Bedingung lauten? Wenn sich der Kontostand erhöht oder verringert hat, dann führen Sie die Funktion
//Deklarieren Sie eine Variable außerhalb von Funktionen:
double Balance=Kontostand();
//Ergänzen der Tick-/Berechnungsfunktion:
if (Kontostand!=Kontostand())
{
Saldo=KontoSaldo();
MeineFunktion(); // <-- Ihre Funktion
}
Ich habe Geld auf meinem echten Konto, aber hier steht, dass man nur Löhne abheben kann?
Echtes Konto, wo haben Sie es?
weil das Terminal folgendermaßen funktioniert
Es handelt sich also um ein normales Verhalten und nicht um einen Fehler? Denn einige grundlegende benutzerdefinierte Indikatoren werden ohne Berücksichtigung dieses Faktors geschrieben und führen bei jedem prev_calculated==0 eine vollständige Neuberechnung durch.
diese Lösung ist nur für den Tester, was passiert, wenn ich das Terminal überladen? was, wenn ich eine zweite EA auf diesem Konto laufen?
Sie müssen mit der Auftragshistorie arbeiten, es gibt keine offenen Aufträge bei unserem Magier - prüfen Sie den Gewinn des letzten Auftrags in der Historie
Nachladen? Oder nachladen? Ist letzteres der Fall, ändert sich das Verhalten des EA nicht. Wenn Sie einen zweiten EA starten, wird der Algorithmus auf ähnliche Weise und ohne Fehler ausgeführt.
Womit der Autor arbeiten muss, hängt von der Aufgabe ab, die er sich gestellt hat. So wie er die Frage gestellt hat, habe ich sie beantwortet. Ich habe meine Frage nicht genauer formuliert.
Bitte achten Sie auf meine Frage. Ich schreibe einen Indikator, der einige Berechnungen durchführt und diese in einem Array (keine Zeitreihe) speichert, das genauso groß ist wie die Anzahl der Kerzen im Diagramm. Ursprünglich dachte ich, dass, wenn ich 2000 Candlesticks im Diagramm in der Terminal-Parameter haben, dann bei Erscheinen einer neuen Kerze, die erste wird die zweite, die zweite - die dritte, usw. Daher, wenn immer prev_calculated gleich Null, ich neu berechnen das gesamte Array, oder nur die letzte Bar. Ich habe jedoch festgestellt, dass mit jeder neuen Kerze der Wert von rates_total steigt und den Grenzwert von 2000 überschreitet.
Es ist daher nicht sinnvoll, das Feld neu zu berechnen.
Aber warum passiert das so, wenn das Terminal genau 2000 Candlesticks setzt?
Wenn das Terminal schließt, wird die Anzahl der Balken wieder auf 2000 erhöht und beginnt wieder zu steigen, wenn neue Kerzen erscheinen.
//Deklarieren Sie eine Variable außerhalb von Funktionen:
double Balance=Kontostand();
//Ergänzen der Tick-/Berechnungsfunktion:
if (Kontostand!=Kontostand())
{
Saldo=KontoSaldo();
MeineFunktion(); // <-- Ihre Funktion
}
Vielen Dank, es hat funktioniert!
Metatreder 4 Anwendung
Forum für Handel, automatisierte Handelssysteme und Strategietests
Alle Fragen für Anfänger auf MQL4, Hilfe und Diskussion über Algorithmen und Codes
Artyom Trishkin, 2019.04.28 16:55
Echtes Konto, wo haben Sie es?Und warum sollte man versuchen, herauszufinden, wie es intern funktioniert? Nun, wenn Sie Ihre eigene Funktion schreiben wollen, ist es wahrscheinlich bequemer, zu sortieren und den Wert eines der äußersten Indizes zu nehmen. Aber sie wird kaum schneller sein als die eingebaute Funktion. Außerdem können Sie mit der integrierten Funktion nach einem Wert innerhalb der festgelegten Indexgrenzen suchen. Eine einfache Sortierung wird also nicht funktionieren. Wir müssen also einen Teil des Arrays in ein Zwischenarray kopieren und dieses bereits sortieren und den gewünschten Wert daraus entnehmen, aber das Kopieren von Arrays ist keine sehr "billige" Funktion.
Sie müssen es verstehen, damit sich Ihr Gehirn entwickeln kann. Gestern saß ich lange und machte Skizzen, es scheint, dass es möglich ist, ohne Sortierung auf dem Prinzip der Aufzählung zu tun, aber wir brauchen immer noch Variablen, die Werte zu speichern, und noch mehr können wir den Wert auf einmal zurück, nicht der Index, der die Arbeit vereinfacht. Sie können besser Ihre eigenen Funktionen im Bereich und verschiedene Modifikationen zu speichern Berechnungen. Bei den eingebauten Funktionen fehlen viele Details. Aber eingebaute Funktionen sind sehr schnell, ich verstehe nicht, woran das liegt, vielleicht sind sie in C++ geschrieben, denn ich schreibe meine Funktionen sehr sorgfältig und berücksichtige dabei alle Details: Geschwindigkeit, Qualität, Codeeinsparungen, implementiere Änderungen, die die Anzahl der Überprüfungen und Durchläufe innerhalb von Funktionen reduzieren, aber aus irgendeinem Grund gehen eingebaute Funktionen immer noch an der Geschwindigkeit vorbei, nicht an der Qualität, aber ich wende mich mit dieser Frage schon lange an die Forumsgemeinschaft.