Fehler, Irrtümer, Fragen - Seite 147

 
Vladix:

Gibt es in mql5 eine Möglichkeit, den Status einer offenen Position zu verfolgen, z. B. dass sie jetzt geschlossen wird?

...

Aber dann kommt der nächste Tick, alle oben genannten Schritte werden wiederholt, die Positionsauswahl wird durchgeführt, das Volumen wird genommen und EINE weitere Position wird in Richtung Schließung platziert.

Was kann getan werden, um dies zu vermeiden?

Es muss nichts getan werden. Bis der aktuelle Tick von der Funktion OnTick() verarbeitet wird, werden alle eingehenden Ticks übersprungen.

Was mit der Position in Echtzeit geschieht, kann mit der Funktion OnTrade () verfolgt werden.

Обработка торговых событий в эксперте при помощи функции OnTrade()
Обработка торговых событий в эксперте при помощи функции OnTrade()
  • 2010.06.01
  • KlimMalgin
  • www.mql5.com
В 5-ой версии языка MQL появилась масса нововведений, в том числе работа с событиями различных типов (события таймера, торговые события, пользовательские и т.д.). Возможность обработки событий позволяет создавать совершенно новый тип программ для автоматического и полуавтоматического трейдинга. В этой статье мы рассмотрим торговые события и напишем для функции OnTrade() код, который будет обрабатывать событие Trade.
 
Valmars:

Es gibt keinen Grund, etwas zu tun. Solange der aktuelle Tick nicht von der Funktion OnTick() verarbeitet wird, werden alle neu eingetroffenen Ticks übersprungen.

Was mit der Position in Echtzeit geschieht, kann mit der Funktion OnTrade () verfolgt werden.

Wäre da nicht die asynchrone Ausführung der Anfrage, wäre alles in Ordnung. Aber wenn ein Tick kommt, wird die Position geschlossen, während sie beim nächsten Tick immer noch in der Liste steht. Wie können wir also verstehen, ob die Position eröffnet, geöffnet oder geschlossen ist? Wie verarbeitet man Handelsereignisse? Imho sollte eine grundlegende Operation nicht so kompliziert sein.

Im Idealfall erhält eine Position beim Versuch, sie zu schließen, den Status "Geschlossen" oder "In Bearbeitung" oder etwas anderes, woran man erkennen kann, dass sie gerade in Bearbeitung ist, dann kann man sie ruhigen Gewissens in Ruhe lassen.

Und jetzt muss man viel in die Geschichte schauen und verstehen, wie alles passiert ist, und es gibt keine Garantie, dass alles richtig ist.

 
Vladix:

Wäre da nicht der asynchrone Charakter der Anfrage, wäre alles in Ordnung. Aber wenn ein Tick kommt, ist die Position geschlossen, und wenn der nächste Tick kommt, sind sie immer noch in der Liste, also wie können wir verstehen, ob sie geöffnet oder geschlossen sind? Wie verarbeitet man Handelsereignisse? Imho sollte eine grundlegende Operation nicht so kompliziert sein.

Im Idealfall erhält eine Position beim Versuch, sie zu schließen, den Status "Geschlossen" oder "In Bearbeitung" oder was auch immer, was darauf hinweisen würde, dass sie gerade in irgendeiner Form bearbeitet wird, und dann kann sie guten Gewissens in Ruhe gelassen werden.

Und jetzt muss man viel in die Geschichte schauen und verstehen, wie alles passiert ist, und es gibt keine Garantie, dass alles richtig ist.

Eröffnen und schließen Sie Positionen nicht bei jedem Tick, sondern halten Sie sie nach jeder Handelsoperation auf.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
EQU:

Warum... Wer sagt denn, dass die NewBar keine Veranstaltung ist? )))))))))

OnNews - die Nachricht kommt rein, der Bot muss sie lesen... Offiziell. Nicht, indem man WinAPI auf linkshändige Weise durchstöbert.

1.NewBar - Ein Ereignis, das Sie selbst implementieren können. Dazu werden sie wahrscheinlich auch raten. Ich habe einmal nach Connect gefragt, und die Antwort war einfach: Sie müssen es selbst implementieren.

Das ist kein Problem - ich habe es implementiert und versuche nun, fast alles, was ich brauche, mit Hilfe des Timers zu verfolgen (ich habe bereits etwa 30 Ereignisse). Wenn ich fertig bin, kann der Benutzer keinen der Parameter, an denen ich interessiert bin, ändern, so dass der Experte nichts davon weiß.

2. onNews - Die Idee im Allgemeinen ist verständlich, man könnte sich anschließen. Allerdings werden die Entwickler wahrscheinlich auf das Vorhandensein von News.wav hinweisen.

Obwohl, ich habe lange von den Entwicklern gesucht, um die Funktionalität der Sprache durch die Möglichkeit der Arbeit mit dem Kalender der wirtschaftlichen Nachrichten und andere FA zu erweitern. Glauben Sie, dass sie alles richtig machen werden? Das glaube ich nicht.

Ich habe meine Bewerbung bei dieser Gelegenheit bereits abgeschickt, die Hoffnung lebt noch. Es wäre schön, wenn ein Experte selbst etwas arbeiten würde...

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
Vladix:

Wäre die asynchrone Anfrage nicht, wäre alles in Ordnung. Aber wenn ein Tick kommt, wird die Position geschlossen und beim nächsten Tick sind sie immer noch in der Liste, und wie können wir verstehen, ob sie geöffnet, geöffnet oder geschlossen sind? Wie verarbeitet man Handelsereignisse? Imho sollte eine grundlegende Operation nicht so kompliziert sein.

Wenn Sie versuchen, eine Position zu schließen, erhält sie im Idealfall den Status "Geschlossen" oder "In Bearbeitung" oder was auch immer, woran Sie erkennen können, dass sie gerade in irgendeiner Form bearbeitet wird, dann können Sie sie guten Gewissens in Ruhe lassen.

Und jetzt muss man viel in die Geschichte schauen und verstehen, wie alles passiert ist, und es gibt keine Garantie, dass alles richtig ist.

Auch heute noch kann man das mit Leichtigkeit tun, wenn man weiß, wie es geht. Die Entwickler haben versprochen, OnTrade() umzuschreiben und die erforderlichen Parameter hinzuzufügen. Wenn dies geschieht, wird die Verarbeitung noch einfacher.

Niemand hindert Sie daran, solche Situationen vor Ort zu behandeln, in OnTick() oder OnTime() - am Ort der Handelsoperation; oder in OnTrade(), wenn Sie Benutzeraktionen oder Handelsoperationen abfangen wollen, die nicht direkt vom Code gesteuert werden.

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

1.NewBar - Ein Ereignis, das Sie selbst implementieren können. Dazu werden sie wahrscheinlich auch raten. Ich habe einmal nach Connect gefragt, und die Antwort war einfach: Sie sollten es selbst einführen.

...

Ich bin ein wenig verwirrt, wie ich OnNewBar sehe...))

OnNewBar(ulong Param), wobei Param - bitweise in 1 in Timeframe-Positionen mit einem neuen Balken gefüllt... - Nicht alle Diagramme werden gleichzeitig nach der Anzahl der Balken aktualisiert...

Zum Beispiel ...

...00001 - nur eine Minute aktualisiert

...00111 - nur eine Minute, 2 und 3 werden aktualisiert... und so weiter...

Es ist nur eine Idee, aber ich denke, es wäre nützlich. Obwohl...?;)

 
EQU:

Ich bin etwas verwirrt, wie ich OnNewBar sehe...)

OnNewBar(ulong Param), wobei Param - 1 in Timeframe-Positionen mit einem neuen Balken auffüllen... - Nicht alle Diagramme werden gleichzeitig nach der Anzahl der Balken aktualisiert...

Zum Beispiel ...

...00001 - nur die Minute wurde aktualisiert.

...00111 - nur eine Minute, 2 und 3 werden aktualisiert... und so weiter...

Es ist nur eine Idee, aber ich denke, es wäre nützlich. Obwohl...?;)

Es ist notwendig, auf Kosten des Parameters zu denken. Lohnt es sich, dies zu tun (vielleicht ist es einfacher, TF als ENUM_TIMEFRAMES anzugeben)?

Zumindest wollte ich so etwas machen, aber dann habe ich aufgegeben...

PS

Ich vergaß zu sagen, dass ich OnNewBar in der Chart-Klasse nachholen wollte, an der ich gerade fleißig arbeite (im Moment packe ich noch Standardkram + meine eigenen angenehmen Kleinigkeiten hinein).

Fragen Sie mich nur nicht, warum ich das Standard-CChart nicht mag ... :)

 

Wenn Sie einen neuen Balken verfolgen müssen, schauen Sie sich meinen Code an. Er könnte nützlich sein. Ich habe verschiedene Varianten ausprobiert - diese Methode ist die zuverlässigste

https://www.mql5.com/ru/code/107

isNewBar
isNewBar
  • Stimmen: 7
  • 2010.05.07
  • Prival
  • www.mql5.com
Функция анализа появления нового бара на заданном таймфрейме.
 
Prival:

Wenn Sie einen neuen Balken verfolgen müssen, schauen Sie sich meinen Code an. Er könnte nützlich sein. Ich habe verschiedene Varianten ausprobiert - diese Methode ist die zuverlässigste

https://www.mql5.com/ru/code/107

Was stimmt nicht mit der Öffnungszeit des letzten Balkens im Vergleich zur Symbol-Periode SERIES_LASTBAR_DATE? Das ist viel einfacher als Ihre Version und Sie brauchen keinen Indikator.


Darüber hinaus sollte für einen EA mit mehreren Währungen für jedes Symbol ein neuer Balken definiert werden, d.h. der Indikator sollte für alle Symbole initialisiert werden.

 
Prival:

Wenn Sie einen neuen Balken verfolgen müssen, sehen Sie sich meinen Code an. Er könnte sich als nützlich erweisen. Ich habe verschiedene Varianten ausprobiert - diese Methode ist am zuverlässigsten

https://www.mql5.com/ru/code/107

Nochmals - Code... Code... Code ist gut... aber auch Taktiken, Schleifen... ;)

Bekommt das Diagramm nicht die Meldung, dass ein neuer Balken erstellt wurde? Ich kann es nicht glauben...)))

Ist es ein Problem, daraus ein Ereignis zu machen? Ist zumindest eine Variable vordefiniert?

Im Allgemeinen ist es einfacher, Ereignisse zu verarbeiten, als einen Berg von Code zu füllen. Und außerdem - mit Fehlern (FEHLERFREIE PROGRAMME gibt es NIE!!! )))))

Grund der Beschwerde: