L'iscrizione a OnBookEvent a volte cade - esiste una cosa del genere? - pagina 4

 
Stanislav Korotky:

A proposito, tutti gli altri tipi di eventi sono eventi broadcast, solo che non hanno bisogno di essere collegati o scollegati - tutto viene comunicato automaticamente durante l'inizializzazione dello script.

OnChartEvent ha eventi di trasmissione - così come eventi normali.

E se puoi fare quelle normali lì - puoi farle anche qui

 
A100:

Niente affatto - OnChartEvent riceve eventi di trasmissione - così come eventi normali

E se si possono fare trasmissioni lì, si possono fare anche qui.

E che dire di altri eventi OnTick o OnCalculate? Qualche obiezione alla loro trasmissione? OnChartEvent è anche trasmesso, nonostante gli allegati. Se l'obiezione è alla parola "tutti", la sostituisco con "molti". Il punto è che tutte le opzioni finora hanno escluso la possibilità che qualcun altro la disabiliti.

Vedremo se ci sarà una correzione.

 
prostotrader:

Buone notizie.

Di quale errore si tratta? Vedo lo stesso identico post sulla transazione disabilitata.

 
prostotrader:

La tua iscrizione sta fallendo a causa di un errore ditransazione libro non valido

Fallisce a causa di una chiamata indiretta a MarketBookRelease- strano che tu non l'abbia ancora capito
 
prostotrader:
Non chiamoMarketBookRelease ma quando unatransazione di libro non validaappare nel log

OnBookEvent smette di comporre (si potrebbe dire che l'abbonamento "cade")

Questa è una causa di errore completamente diversa da quella discussa in questo thread. Se si elimina una causa, l'altra non scomparirà da sola

Proprio come qui https://www.mql5.com/ru/forum/1111/page2237#comment_8159123 gli errori sono gli stessi ma il modo di risolvere uno non si adatta all'altro - quindi le cause sono diverse

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

Sono sicuro che questa è la ragione del bug.

Gli sviluppatori l'hanno risolto e quando uscirà la nuova build, controlleremo allora il "tuo" errore.

L'esempio di test è semplice: chiama MarketBookAdd( x ) nel 1° Expert Advisor, poi chiama MarketBookRelease( x ) nel 2° Expert Advisor... e poi aspettare l'evento OnBookEvent( x ) nel 1° Expert
 
A100:
Il controllo dell'esempio è semplice: chiama nel 1° EA MarketBookAdd( x ), poi chiama nel 2° MarketBookRelease( x )... E aspetta 1 evento

Se fai quello che scrivi sullo stesso simbolo, naturalmente l'abbonamento sarà distrutto da quel simbolo nello stesso terminale!

E questo è corretto.

Aggiunto da

Devi solo usare correttamente l'abbonamento.

//+------------------------------------------------------------------+
//|                                                        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:

Se fai quello che scrivi sullo stesso simbolo, naturalmente l'abbonamento sarà distrutto da quel simbolo nello stesso terminale!

E questo è corretto.

Poi fai come segue: chiama MarketBookAdd( x ) nel 1° EA, poi chiama MarketBookAdd( x ) e MarketBookRelease( x ) nel 2° EA... e poi aspettare l'evento OnBookEvent( x ) nel 1° Expert
 
A100:
Poi fai come segue: chiama MarketBookAdd( x ) nel 1° esperto, poi chiama MarketBookAdd( x ) e MarketBookRelease( x ) nel 2° esperto... e poi aspettare l'evento OnBookEvent( x ) nel 1° Expert

Usate il mio codice e non avrete problemi di abbonamento.

 
prostotrader:

Usa il mio codice e non avrai problemi ad abbonarti.

Domani controllerò il potere magico del tuo codice... nel frattempo, vorrei la tua opinione su... la funzione di apertura/chiusura di un bicchiere può essere combinata con la funzione di iscrizione/disiscrizione a/da eventi su questo bicchiere o devono essere separate
Motivazione: