Fragen von einem "Dummy" - Seite 66

 
Yedelkin:

Es hängt alles von der Logik des benutzerdefinierten Indikators ab. Im Prinzip kann er seine Werte einmal am Tag neu berechnen und alle anderen Ticks überspringen. Sozusagen nach dem Willen des Autors.

Im Grunde versuchen einige Leute, diesen Monsteransatz zu verwenden: Erstellen einer Kopie des Indikators über iCustom, Kopieren der erforderlichen Daten, Löschen der Kopie des Indikators. Das Verfahren wird nach Bedarf wiederholt.

Es gibt auch die Funktion OnTimer(), mit der ich selbst noch nicht gearbeitet habe, aber vielleicht können Sie sie an Ihre Aufgabe anpassen.

Ich danke Ihnen. Das dachte ich mir schon. Der OnTimer ist nicht geeignet.

Es gibt eine Situation, in der der Indikator auf M5 steht, aber z. B. einmal pro Stunde aufgerufen wird. Es stellt sich heraus, dass der Indikator im Expert Advisor alle 5 Minuten im Leerlauf berechnet wird, damit er einmal pro Stunde aufgerufen werden kann. Deshalb frage ich mich, ob es eine Möglichkeit gibt, die Neuberechnung des Indikators zu unterbrechen.

 
masharov:

Es gibt eine Situation, in der der Indikator auf M5 steht, aber zum Beispiel einmal pro Stunde aufgerufen wird. Es stellt sich heraus, dass der Indikator im Expert Advisor alle 5 Minuten untätig berechnet wird, damit er einmal pro Stunde aufgerufen werden kann.

Und Sie können den Indikator nicht so umschreiben, dass er stündlich aufgerufen wird?
 
Yedelkin:
Kann ich den Indikator so umschreiben, dass er auch stündlich rechnet?
Der Handel findet auf der M5 statt. Es ist nicht bekannt, wann der Indikator aufgerufen werden wird. Das kann einmal alle zwei Stunden oder dreimal pro Stunde sein. Der Indikator wird verwendet, um die Entscheidung zu bestätigen, einen Handel zu tätigen.
Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
masharov:
Der Handel läuft auf der M5. Es ist nicht bekannt, wann der Indikator aufgerufen werden wird. Das kann einmal alle zwei Stunden sein oder dreimal in einer Stunde. Der Indikator wird verwendet, um die Handelsentscheidung zu bestätigen.
Die Logik ist klar. In solchen Fällen habe ich es auf eine clevere und einfache Weise gemacht: Ich habe den Berechnungsblock aus dem Indikator direkt in den Expert Advisor übertragen. D.h. anstelle der externen Datenquelle (Indikator) verwendete der Expert Advisor eine seiner Funktionen - diejenige, die den Berechnungsalgorithmus des Indikators wiedergibt. In diesem Fall wurde diese Funktion bei Bedarf aufgerufen, wobei die erforderlichen Werte vollständig neu berechnet wurden.
 

Hallo, könnten Sie mir bitte sagen,

1) Was ist bei Fehlern wieTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZEN zu tunund in welchem Fall ist die Anfrage blockiert oder die Position/Auftrag eingefroren?

2) Ich frage mich auch, was mitTRADE_RETCODE_INVALID_FILLzu tun istund in welchem Fall es auftritt?

 
PunkBASSter:

Hallo, könnten Sie mir bitte sagen,

1) Was ist bei Fehlern wieTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZEN zu tunund in welchem Fall ist die Anfrage blockiert oder die Position/Auftrag eingefroren?

2) Sie fragen sich auch, was mit TRADE_RETCODE_INVALID_FILL zutun istund in welchem Fall es auftritt?

1) Überprüfen Sie die Forumssuche. Es wurde vor etwa einem Jahr diskutiert.

2) Schauen Sie in der Referenz ENUM_ORDER_TYPE_FILLING nach . Wahrscheinlich eine Unstimmigkeit in der Handelsanfrage für die angegebene "Ausführungsauftragsart" mit dem Ausführungsmodus und führt zu dem angegebenen Rückgabecode.

Zum Beispiel ORDER_FILLING_FOK und SYMBOL_TRADE_EXECUTION_MARKET.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin, vielen Dank)
 
masharov:

Ich habe den Verdacht, dass, wenn der Indikator über iCustom aktiviert wird, er bei jedem Tick berechnet wird. Und es hängt nicht von den Aufrufen durch den CopyBuffer ab. Ist das richtig?

Wenn dies richtig ist, ist es dann möglich, die Berechnung des Indikators zu deaktivieren und ihn nur vor dem Aufruf des CopyBuffer zu aktivieren?

Wenn ich Sie richtig verstanden habe, dann können Sie versuchen, die Berechnungen auf die nächsten Ticks zu begrenzen, wie es in der iFractals-Hilfe beschrieben ist (siehe mehrere Bedingungen in OnCalculate).

Vielleicht können Sie auch in OnCalculate die anfängliche Ausführung der Indikatorberechnungen für alle erforderlichen Balken kennzeichnen und die Serverzeit des Terminals überprüfen, und nachdem dies geschehen ist, das Flag auf false zurücksetzen, wodurch die Neuberechnung ermöglicht wird, und es wieder auf true setzen... und so weiter.

Oder auch so: Schreiben Sie eine externe Funktion mit Berechnungen, rufen Sie sie in OnInit auf, wo sie einmal beim ersten Start des Indikators ausgeführt wird (sowie beim Ändern von TFs usw., was auf Initiative des Benutzers geschieht), und rufen Sie dann dieselbe Funktion in OnCalculate auf die zweite Art und Weise auf (zum angegebenen Zeitpunkt auf dem Server und durch Flagging).

Aber die erste Methode ist gut, nicht nur, dass sie den Prozessor nicht bei jedem Tick mit vollen Neuberechnungen belastet (was oft zu keinen neuen Ergebnissen führt), sondern sie führt auch keine vollen Neuberechnungen in einem bestimmten Zeitintervall durch und berechnet nur die neuesten Balken (wenn bei jedem Tick, dann einen neuen, und wenn einmal t, dann mehrere, die während dieser Zeit aufgelaufen sind)... Obwohl diese Version besser ist, um persönlich zu überprüfen, kann ich mich irren... Außerdem hängt alles von dem spezifischen Zweck des Indikators ab. Wenn sie von einer großen oder sogar der gesamten Markthistorie abhängt, kann man sich der Neuberechnungen der gesamten Historie nicht entledigen.

 

Er hat den Witz nicht verstanden (er schreibt einen Indikator, aber das macht keinen Unterschied):

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[4];

Kompiliert ohne Fehler oder Warnungen.

int elements=4;

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[elements];

Kompiliert mit1 Fehler(n), 0 Warnung(en): 'elements' - ungültiger Indexwert.

Was kann hier über den offensichtlichen gesunden Menschenverstand hinausgehen?

 
x100intraday:


Was kann hier über den offensichtlichen gesunden Menschenverstand hinausgehen?

die Anzahl der Array-Elemente wird durch eine Konstante angegeben

Wenn die Anzahl der Elemente vorher nicht bekannt ist, verwenden Sie ArrayResize, um die Größe mithilfe von Variablen festzulegen.

Dies sind die Grundlagen von C++.

Also entweder

#define  elements 4
Grund der Beschwerde: