Fehler, Irrtümer, Fragen - Seite 1548

 
comp:
Dann können Sie die Berechnung nicht durch ein Ereignis unterbrechen.

OK. Dann schauen Sie weg.

Sie können eine künstliche Parallelisierung vornehmen, indem Sie einen zweiten Indikator auf dem Chart platzieren.

Und durch den Zugriff auf GlobalVariableSetOnCondition von beiden.

 
o_O:

OK. Dann schauen Sie weg.

Sie können eine künstliche Parallelisierung vornehmen, indem Sie den zweiten Indikator in das Diagramm einfügen.

Und durch den Zugriff auf die GlobalVariableSetOnCondition von beiden.

Das verstehe ich nicht.
 
comp:
Das verstehe ich nicht.

Der zweite Indikator ist ein Signalgeber, der Ereignisse von ChartEvent an den Hauptindikator als benutzerdefinierten Indikator sendet und den Zustand der globalen Variablen z.B. um die Zeit in ms ändert.

Im Hauptindikator fangen Sie dieses Ereignis ab und starten die Berechnung. Außerdem überprüfen Sie die globale Variable, um sicherzustellen, dass sie dieselbe ms-Zeit hat wie die, mit der Sie die Berechnung gestartet haben.

Wenn sich die Zeit darin geändert hat, bedeutet dies, dass ein neues Ereignis eingetreten ist - und Sie brechen Ihre aktuelle Berechnung ab.

wie diese.

---

Oder Sie können einfach die ms im gp bei jedem Chart-Ereignis ändern und sie nur im Hauptindikator steuern

im Allgemeinen - der zweite Indikator wird parallelisiert

 

Hallo! Eine kleine Hilfe für einen Neuling. Ich kann das OnBookEvent-Ereignis nicht in den Griff bekommen.

Wenn Sie dieses Ereignis von onTick() aus aufrufen, funktioniert alles. Wenn onTick() leer ist, dann funktioniert nichts. Ich verstehe nichts, OnBookEvent wird aufgerufen, wenn es eine Änderung im Glas gibt, d.h. es ist ein separater Event-Handler, im Wesentlichen das gleiche wie onTick() aufgerufen wird, wenn ein Tick auftritt. Warum funktioniert es nicht?

Das funktioniert folgendermaßen. Nun, es funktioniert so, dass "Anything" gedruckt wird, wenn ein Tick auftritt, und nicht, wenn es eine Änderung in der Tasse gibt. Wenn sich zum Beispiel das Volumen der Gebote zu einem bestimmten Preis geändert hat, sollte der OnBookEvent-Handler für die Änderung des Bechers aufgerufen werden, was aber nicht geschieht. Wenn onTick() leer gelassen wird, wird nicht einmal etwas gedruckt.

int OnInit()

{

if ! MarketBookAdd("RTS-6.16" )

{

Print("Fehler ",GetLastError() );

}

sonst

{

Print("Done");

}

void OnDeinit(const int reason)

{

MarketBookRelease("RTS-6.16");

}

void OnTick()

{

OnBookEvent(_Symbol);

}

void OnBookEvent(const string &symbol)

{

MqlBookInfo book[];

MarketBookGet("RTS-6.16", book);

if(ArraySize(Buch) == 0)

{

printf("Laden des Marktbuchpreises fehlgeschlagen. Grund: " + (string)GetLastError());

Rückkehr;

}

Print("Irgendetwas");

}

 
Habe es gerade mit anderen Instrumenten ausprobiert und es funktioniert!!!! Wie kann das sein? Es funktioniert nur nicht bei rts!!!
 
das Problem ist gelöst, es funktioniert von selbst!
 

Fehler in der Hilfe von https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

SL & TP Modification

Ein Handelsauftrag zur Änderung der StopLoss- und/oder TakeProfit-Ebenen. 4 Felder sind erforderlich:

-Aktion

-Symbol

-sl

-tp

-Stelle

Das Feld wurde hinzugefügt, aber die Anzahl der auszufüllenden Felder beträgt immer noch 4.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Fehler in der Hilfe https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

DiePosition des Feldes wurde hinzugefügt, aber die Anzahl der auszufüllenden Felder beträgt immer noch 4.
Alexey, es macht keinen Sinn, hier zu schreiben, Sie müssen eine Anfrage an den Servicedesk schicken. Gleichzeitig wird es + zur Bewertung geben )
 
Alexey Volchanskiy:
Alexey, es hat keinen Sinn, hier zu schreiben, du musst eine Anfrage an Servisdek schicken. Gleichzeitig wird es + zur Bewertung )
Ich bin zu alt, um der Bewertung hinterherzujagen: )))) Sie werden es nicht reparieren und brauchen es auch nicht.
 
o_O:

Sie setzen den zweiten Indikator einen Signalgeber, der Sie an den Hauptindikator als benutzerdefiniertes Ereignis von ChartEvent sendet + ändern Sie den Zustand der globalen Variable zum Beispiel durch die Zeit in ms

Im Hauptindikator fangen Sie dieses Ereignis ab und starten die Berechnung. Außerdem überprüfen Sie die globale Variable, um sicherzustellen, dass sie dieselbe ms-Zeit hat wie die, mit der Sie die Berechnung gestartet haben.

Wenn sich die Zeit darin geändert hat, bedeutet dies, dass ein neues Ereignis eingetreten ist - und Sie brechen Ihre aktuelle Berechnung ab.

wie diese.

---

Oder Sie können den Signalgeber verwenden, um ms in gp bei jedem Chart-Ereignis zu ändern, und ihn nur im Hauptindikator steuern

im Allgemeinen - der zweite Indikator wird parallelisiert

Verstanden, danke. Leider funktioniert diese Lösung nur in einem Expert Advisor (bei dem die Berechnung unterbrochen werden muss). Es wird nicht im Indikator funktionieren, weil der Aufruf des Indikators im Chart keine parallele Chart-Warteschlange erstellt, sondern in dieselbe Ereignis-Warteschlange geht, nicht einmal für einen bestimmten Chart, sondern für ALLE Charts dieses Symbols.

Wie setze ich den Indikator als MQ5-Ressource anstelle der EX5-Ressource?