Wünsche für MQL5 - Seite 99

 
Henry_White >> :

Was ich mir für künftige Veröffentlichungen wünschen würde:

  1. Fähigkeit, seine Prozeduren außerhalb des Inhalts des Tick-Handlers auszuführen (bei MT4 ist dies start()) (z. B. in einer separaten Spur, zur Berechnung von Statistiken, zur Optimierung usw.),
  2. Die einfachsten Funktionen zur Handhabung der Maus. Zum Beispiel, auf "OnClick"-Ereignis ist es möglich, Zeiger-Koordinaten in MT Dimension (auf X - bar Index, auf Y - y-Koordinate des aktuellen Fensters zu erhalten.

1. Was hindert sie jetzt daran?

2. In MQL5 werden EAs in der Lage sein, Fensterereignisse (EMNIP) zu behandeln.

 
TheXpert >> :

1. Was ist im Moment im Weg?

Wenn Sie wissen, wie das geht, wäre ich Ihnen sehr dankbar, wenn Sie diese Fähigkeit bzw. dieses Wissen weitergeben könnten.

 
TheXpert >> :

2. In MQL5 werden die Expert Advisors in der Lage sein, die Fensterereignisse (EMMNIP) zu behandeln.

Der ChartEvent Event-Handler wird übrigens nur in EAs verfügbar sein... Eine ziemlich seltsame Diskriminierung ))) Ich denke, die Notwendigkeit ist die gleiche in Indikatoren (die Expert Advisors brauchen es nicht).

 
Henry_White >> :

Wenn Sie wissen, wie das geht, wäre ich Ihnen sehr dankbar, wenn Sie diese Fähigkeit bzw. dieses Wissen weitergeben könnten.

Nicht wie zwei Finger auf dem Asphalt, aber man kann es. DLL verbinden, Berechnungen in einem neuen Thread aufrufen - WinAPI hilft hier, Beendigung durch Timer oder Callback.

Henry_White >> :

Der ChartEvent Event-Handler wird übrigens nur in Expert Advisors verfügbar sein... Eine ziemlich seltsame Diskriminierung ))

Mir gefällt das auch nicht. Aber jetzt sind die Indizes nicht mehr an das Diagramm gebunden.

 
TheXpert >> :

Nicht wie zwei Finger auf dem Asphalt, aber es ist möglich. Verbinden Sie die DLL, führen Sie die Berechnungen in einem neuen Thread durch - WinAPI hilft hier, beenden Sie sie per Timer oder Callback.

Ich habe über die DLL-Variante nachgedacht, aber es ist mir nicht ganz klar, wie ich einen RICHTIGEN Zugriff auf Zeitreihen und die Werte von mehr als 10 verschiedenen Indikatoren erhalten kann, und das alles in einer angemessenen Tiefe über die Historie. Und wenn wir bedenken, dass die Berechnungszeit mehr als eine Minute dauert (ich arbeite mit Minuten), dann ist es absolut unklar, worauf sich die Zeiger der DLL nach dem Hinzufügen eines neuen Balkens im Client-Terminal beziehen werden. Außerdem müssen wir ein paar Dutzend berechnete Parameter zurückgeben und verschiedene Diagramme zu den Preisreihen hinzufügen. Alles in allem ist es nicht trivial...

Nachdem ich mir das alles angeschaut und abgeschätzt hatte, wie viel Zeit ich für Experimente, verschiedene Prüfungen und Fehlersuche aufwenden würde, schrieb ich eine Zeit-Cluster-Verarbeitung in MQL... Es funktioniert, aber... Das ist nicht schön. Aber meine Seele verlangt es! ))) Und es ist bereits das 21. Jahrhundert... Und du willst dem Alter gerecht werden. ))

 

Ich schlage vor, den Begriff "Punkt" zu klären (zu definieren).

Ein Pip ist die 5. signifikante Stelle: 1,2345.

Wenn eine Notierung durch eine andere Ziffer dargestellt wird (1,23456) und der Spread = 0,00018, dann beträgt der Spread in Pips 1,8 p und nicht 18 p.

Dadurch wird die Terminologie vereinheitlicht und Verwirrung vermieden.

 
SK. >> :

Ich schlage vor, den Begriff "Punkt" zu klären (zu definieren).

Ein Pip ist die 5. signifikante Stelle: 1,2345.

Wenn eine Notierung durch eine andere Ziffer dargestellt wird (1,23456) und der Spread = 0,00018, dann beträgt der Spread in Pips 1,8 p und nicht 18 p.

Dadurch wird die Terminologie vereinheitlicht und Verwirrung vermieden.

Sie haben völlig Recht - die Makler schreiben auf ihren Websites "Spread 1,8", nicht 18 - sie wissen genau, was sie tun :)

 

Функция OnCalculate() вызывается только в пользовательских индикаторах
при необходимости произвести расчет значений индикатора по событию Calculate.

Ich habe immer noch keine Ahnung, wie ich einen Indikator mit Objekten und ohne Kenntnis der Anzahl der geänderten Balken erstellen kann

 

Wie ich sehe, gibt es eine printf-Funktion

und wie toll es wäre, ein weiteres sprintf zu bekommen



 
Roffild >> :

Ich habe immer noch keine Ahnung, wie ich einen Indikator mit Objekten und ohne Kenntnis der Anzahl der geänderten Balken erstellen kann

In der MQL5-Hilfe heißt es:

int OnCalculate (const int rates_total, // die Größe der Eingabezeitreihe
const int prev_calculated, // beim vorherigen Aufruf verarbeitete Balken
const datetime& time[], // Zeit
const double& open[], // Öffnen
const double& high[], // Hoch
const double& low[], // Niedrig
const double& close[], // Schließen
const long& tick_volume[], // Tick-Volumen
const long& volume[], // Real Volume
const int& spread[] // Spread
);

Die Beziehung zwischen dem von OnCalculate() zurückgegebenen Wert und dem zweiten Eingabeparameter prev_calculated sollte beachtet werden. Der Parameter prev_calculated beim Aufruf der Funktion enthält einen Wert, der von OnCalculate() beim vorherigen Aufruf zurückgegeben wurde. Dies ermöglicht sparsame Algorithmen für die Berechnung des benutzerdefinierten Indikators, um wiederholte Berechnungen für die Balken zu vermeiden, die sich seit dem letzten Aufruf dieser Funktion nicht verändert haben.

Dazu reicht es in der Regel aus, den Wert des Parameters rates_total zurückzugeben, der die Anzahl der Takte im aktuellen Funktionsaufruf enthält. Wenn sich seit dem letzten Aufruf von OnCalculate() die Preisdaten geändert haben (es wurde eine tiefere Historie geladen oder es wurden Lücken in der Historie gefüllt), wird der Wert des Eingabeparameters prev_calculated vom Terminal auf Null gesetzt.