Die Anmeldung bei OnBookEvent fällt manchmal aus - gibt es so etwas? - Seite 4

 
Stanislav Korotky:

Alle anderen Arten von Ereignissen sind übrigens Broadcast-Ereignisse, nur dass sie nicht verbunden oder getrennt werden müssen - alles wird automatisch während der Skriptinitialisierung übermittelt.

OnChartEvent verfügt über Broadcasting-Ereignisse - sowie über normale Ereignisse.

Und wenn man die normalen dort machen konnte, kann man sie auch hier machen

 
A100:

Keineswegs - OnChartEvent empfängt Broadcast-Ereignisse - ebenso wie normale Ereignisse

Und wenn man dort Sendungen machen kann, kann man auch hier Sendungen machen.

Und was ist mit anderen Ereignissen OnTick oder OnCalculate? Gibt es Einwände gegen ihre Ausstrahlung? OnChartEvent wird ebenfalls übertragen, trotz der Anhänge. Wenn sich der Einwand gegen das Wort "alle" richtet, werde ich es durch "viele" ersetzen. Der Punkt ist, dass alle bisherigen Optionen die Möglichkeit ausschließen, dass jemand anderes das System deaktiviert.

Wir werden sehen, ob es eine Korrektur gibt.

 
prostotrader:

Eine gute Nachricht.

Um welchen Fehler handelt es sich? Ich sehe genau denselben Beitrag über die deaktivierte Transaktion.

 
prostotrader:

Ihr Abonnement schlägt wegen eines Fehlers bei einerungültigen Buchtransaktion fehl

Es scheitert an einem indirekten MarketBookRelease-Aufruf- seltsam, dass Sie das nicht schon längst herausgefunden haben
 
prostotrader:
Ich rufeMarketBookRelease nicht auf, aber wenneine ungültige Buchtransaktionim Protokoll erscheint

OnBookEvent beendet den Wählvorgang (man könnte sagen, das Abonnement "fällt weg")

Dies ist eine völlig andere Fehlerursache als die, die in diesem Thread diskutiert wird. Wenn man eine Ursache beseitigt, verschwindet die andere nicht von selbst.

Genau wie hier https://www.mql5.com/ru/forum/1111/page2237#comment_8159123 waren die Fehler die gleichen, aber die Art und Weise, den einen Fehler zu beheben, passt nicht zum anderen - die Ursachen sind also unterschiedlich

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.07.23
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
prostotrader:

Ich bin sicher, dass dies der Grund für den Fehler ist.

Die Entwickler haben das Problem behoben, und wenn der neue Build herauskommt, werden wir "Ihren" Fehler überprüfen.

Das Testbeispiel ist einfach: MarketBookAdd( x ) im ersten Expert Advisor aufrufen, dann MarketBookRelease( x ) im zweiten Expert Advisor aufrufen... und dann auf das Ereignis OnBookEvent( x ) im 1st Expert warten
 
A100:
Das Prüfbeispiel ist einfach: Aufruf in 1st EA MarketBookAdd( x ), dann Aufruf in 2nd MarketBookRelease( x )... Und in der 1. Veranstaltung warten

Wenn Sie das tun, was Sie auf das gleiche Symbol schreiben, wird das Abonnement natürlich durch dieses Symbol im gleichen Terminal zerstört!

Und das ist richtig.

Hinzugefügt von

Sie müssen das Abonnement nur richtig nutzen.

//+------------------------------------------------------------------+
//|                                                        Books.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
bool is_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
    is_book = false;
//--- Add books
    if(!MarketBookAdd(Symbol()))
    {
      MessageBox("Не добавлен стакан фьючерса!", "Ошибка", MB_OK | MB_ICONHAND);
      return(INIT_FAILED);
    } 
    else is_book = true;
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    if(is_book = true) MarketBookRelease(Symbol());
   
  }

//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
   if(symbol == Symbol())
   {
     //Plece you code here
   }
   
  }
//+------------------------------------------------------------------+
 
prostotrader:

Wenn Sie das tun, was Sie auf das gleiche Symbol schreiben, wird das Abonnement natürlich durch dieses Symbol im gleichen Terminal zerstört!

Und das ist richtig.

Dann machen Sie folgendes: Rufen Sie MarketBookAdd( x ) in 1st EA, dann MarketBookAdd( x ) und MarketBookRelease( x ) in 2nd EA auf... und dann auf das Ereignis OnBookEvent( x ) im 1st Expert warten
 
A100:
Dann gehen Sie wie folgt vor: Rufen Sie MarketBookAdd( x ) im ersten Experten auf, dann MarketBookAdd( x ) und MarketBookRelease( x ) im zweiten Experten... und dann auf das Ereignis OnBookEvent( x ) im 1st Expert warten

Verwenden Sie meinen Code und Sie werden keine Probleme mit dem Abonnement haben.

 
prostotrader:

Benutzen Sie meinen Code und Sie werden kein Problem haben, sich anzumelden.

Morgen werde ich die magische Kraft Ihres Codes überprüfen... in der Zwischenzeit würde ich gerne Ihre Meinung zu kann die Funktion des Öffnens/Schließens eines Glases mit der Funktion des An-/Abmeldens von Ereignissen auf diesem Glas kombiniert werden oder sollten sie getrennt werden