[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 405

 
hoz:
1. Warum sollte das so plötzlich passieren? Wir müssen nur noch hinzufügen, dass die Funktion einen weiteren Wert zurückgibt, was "Kein Preis" bedeuten würde. Das erscheint logisch. Als ich die Funktion geworfen habe, habe ich mehr an die vorherige Logik gedacht und nicht auf das Ende geachtet. Und warum die Funktion 0 von sich aus 0 zurückgibt, verstehe ich nicht...

2) Wozu brauche ich überhaupt Ask (wenn es um den Kaufpreis geht), wenn ich immer MarketInfo(fs_symbol, MODE_ASK) verwenden kann? Denn wenn man es so betrachtet, kann man sich bei der Bezugnahme auf Ask nicht sicher sein, dass sie zu einem bestimmten Zeitpunkt korrekt ist?

1. Einfach. Die Funktion ist als double deklariert, d.h. wenn sie aufgerufen wird, gibt sie double zurück, unabhängig davon, ob sie return aufruft oder nicht. Wenn wir noch etwas hinzufügen... aber das haben wir noch nicht.

2. Wenn es keinen Unterschied macht, ob Sie 3 oder 30 Tasten drücken, brauchen Sie diese Bid und Ask nicht. Wenn Expert Advisor keine langen Berechnungen durchführt, ist das in Ordnung, es ist bequem, Bid und Ask zu verwenden. Wenn es lange Berechnungen durchführt, können Sie RefreshRates() verwenden. Es gibt mehrere Möglichkeiten, dies zu tun.

 
hoz:


Soweit ich das verstanden habe, ist das nicht das, was wir brauchen. Und wir brauchen die letzten Preise des Ask- und Bid-Servers, nicht die des lokalen Terminals. Richtig?

Deshalb habe ich die Diskussion hier begonnen, um ein für alle Mal zu verstehen, wie man sie logischer und korrekter organisieren kann. Denn in der Theorie ist das richtig, aber in der Praxis...

Der Server ist irgendwo da draußen, und wir erhalten ein Terminal, um mit dem Server Kontakt aufzunehmen. Besteht eine Verbindung, so entspricht der letzte Preis im Terminal dem letzten Preis auf dem Server. Wenn es keine Verbindung gibt, dann ist es völlig egal, welche Preise es gibt.

 
Nach Ausführung der ersten oder zweiten if-Anweisung muss ich die folgenden if-Anweisungen unterbrechen und die Kontrolle an einen Block mit anderen Handelskriterien übergeben. Schleifen haben eine Unterbrechung mit der continue-Anweisung, aber ich muss die Ausführung einer Reihe von Anweisungen unterbrechen. Wie kann ich das tun? Können Sie mir einen Tipp geben?
 
Haben Sie es mit einer Pause versucht; haben Sie eine Pause versucht?
 
Guten Tag. Ich arbeite derzeit an einem Diplom über Handelsroboter. Ich muss nichts Großartiges neu erfinden, denn ich bin Wirtschaftswissenschaftler und kein Programmierer. Aber ich hatte eine Idee, obwohl ich denke, es hat sich viele Menschen, zu verbinden parabolic sar und (da sar ist nicht sehr gut auf flachen) bollinger Bands. Grundsätzlich mit Standard-Einstellungen, und kaufen, wenn Kerze berührt unten BB (und parabolische bewegt sich unter), und nächste schließt über vorherige (und parabolische bewegt sich weiter von Preis wegen accel und zeigt Trend). Dasselbe gilt für die Spitze beim Verkauf. Es wäre interessant, einen Trailing-Stop zu verwenden, dessen Einstellungen manuell festgelegt werden könnten... Hat jemand zufällig eine ähnliche Idee bereits in mql? oder wenn jemand helfen kann, weil ich würde wirklich gerne wirklich zu testen...danke im Voraus
 
Integer:

1. Einfach. Die Funktion ist als double deklariert, so dass sie double zurückgibt, wenn sie aufgerufen wird, unabhängig davon, ob return in ihr aufgerufen wurde. Wenn wir noch etwas hinzufügen... ...aber das andere ist noch nicht da.

2. Wenn es keinen Unterschied macht, ob Sie 3 oder 30 Tasten drücken, brauchen Sie diese Bid und Ask nicht. Wenn Expert Advisor keine langen Berechnungen durchführt, ist das in Ordnung, es ist bequem, Bid und Ask zu verwenden. Wenn es lange Berechnungen durchführt, können Sie RefreshRates() verwenden. Alles kann auf verschiedene Weise geschehen.

1. Ja, ich bin einfach überarbeitet, deshalb habe ich wohl etwas Dummes geschrieben.

2. Lang ist ein relativer Begriff. Schlagen Sie vor, dass wir die Geschwindigkeit der Durchschnittsberechnung messen?

Ganzzahlig:

Der Server ist irgendwo da draußen und wir erhalten ein Terminal, um mit dem Server Kontakt aufzunehmen. Besteht eine Verbindung, so entspricht der letzte Preis im Terminal dem letzten Preis auf dem Server. Wenn es keine Verbindung gibt, spielt es keine Rolle, welcher Preis auf dem Server liegt.

Wenn wir davon ausgehen, wie Sie geschrieben haben, dass der letzte Wert der variablen Marktdaten (in unserem Fall der Preis ) dem letzten Wert des Servers entspricht, dann bedeutet das, dass das Terminal die Marktumgebungsvariablen aktualisiert, wenn es mit dem Server verbunden ist. Dem ist aber nicht so, denn diese Funktion existiert und bedeutet, dass die Preise nicht ständig aktualisiert werden, oder?

Ich streite nicht, ich frage, ich vertrete meinen Standpunkt. Bitte beachten Sie das!

 
hoz:

Wenn wir, wie Sie schreiben, davon ausgehen, dass das Terminal den neuesten Wert der Marktdatenvariablen, in unserem Fall des Preises, hat, der dem neuesten Serverwert entspricht, dann bedeutet das, dass das Terminal die Marktumgebungsvariablen selbst aktualisiert, wenn eine Verbindung mit dem Server besteht, was bedeutet, dass die Funktion RefreshRates() nicht benötigt wird. Dem ist aber nicht so, denn diese Funktion existiert und bedeutet, dass die Preise nicht ständig aktualisiert werden, oder?

Ich streite nicht, ich frage, ich vertrete meinen Standpunkt. Bitte beachten Sie das!


Wenn neue Ticks während der Berechnungen im EA eintreffen (wenn die start()-Funktion läuft), weiß der EA nichts von ihnen (Ticks). RefreshRates() ermöglicht die Verwendung der zuletzt aktualisierten Preise, aber diese Funktion greift nicht auf den Server zu. Er aktualisiert das dem Terminal bekannte Marktumfeld. Keine der Funktionen, mit Ausnahme der Handelsfunktion, greift auf den Server zu
 
Vinin:

Wenn neue Ticks während der Berechnungen im EA eintreffen (wenn die start()-Funktion ausgeführt wird), weiß der EA nichts von ihnen (Ticks). RefreshRates() ermöglicht die Verwendung der neuesten, aktualisierten Preise, aber diese Funktion greift nicht auf den Server zu. Er aktualisiert das dem Terminal bekannte Marktumfeld. Keine der Funktionen, mit Ausnahme der Handelsfunktionen, greift auf den Server zu.

Wenn die Anfrage also lokal und nicht an den Server gerichtet ist, dann sollte diese Funktion sofort funktionieren! Wie oben erwähnt, hat die Funktion RefreshRates() möglicherweise keine Zeit, die Marktumfelddaten zu aktualisieren...
 
hoz:

Wenn die Anfrage also lokal und nicht an den Server gerichtet ist, dann sollte diese Funktion sofort funktionieren! Und oben wurde gesagt, dass die Funktion RefreshRates() möglicherweise keine Zeit hat, die Marktumfelddaten zu aktualisieren...

Es funktioniert. Und sie wird aktualisiert, wenn es etwas zu aktualisieren gibt. Aber wenn es kein neues Häkchen gab, gibt es auch nichts zu aktualisieren.
 
Vinin:

Und es wird klappen. Und sie wird aktualisiert, wenn es etwas zu aktualisieren gibt. Aber wenn es kein neues Häkchen gibt, gibt es auch nichts zu aktualisieren.


Wenn es also kein neues Häkchen gibt, ändert sich der Preis nicht... und natürlich sind die vorherigen Preise weiterhin gültig. Es gibt also keinen Grund, die Dinge zu verkomplizieren!

Und Vadim schrieb oben, dass es notwendig sei, diesen Punkt zu überprüfen. Aber es lag keine Logik in seinen Worten, und auch keine Argumentation. Es ist seltsam... Ich füge also überall RefreshRates() ein, und in diesem Moment werden die zuletzt bekannten Daten aus dem Terminal anstelle der vorherigen verwendet, und alles läuft wie es soll. VorausgesetztRefreshRates() gibt TRU zurück. Wenn es False ist, bedeutet das, dass sich die Daten nicht geändert haben und mit früheren Preisen funktionieren... Liege ich mit meiner Argumentation richtig?

Rufen Sie einfachRefreshRates() auf, und es wird mit aktuellen Daten funktionieren...