Sistemi Esperti: Gestore dell'evento multicurrency OnTick(simbolo stringa) - pagina 3

 

Riletto con interesse, hmmm.

Queste danze con il tamburello non sarebbero necessarie se gli MQ attivassero di default la trasmissione del bicchiere sul server del DC e non permettessero ai DC di disattivarla. Che sia una puntata vuota con solo bid e ask, ma che venga trasmessa.

Allora un tick multicurrency può essere facilmente tracciato in OnBookEvent sottoscrivendo lo strumento richiesto.

In effetti, OnBookEvent è un gestore standard di tick multicurrency.

Ma finora è possibile solo nei dillings che traducono il vetro.

 
micle:

Il codice dell'articolo è obsoleto.

Sì, il codice è stato scritto quando il gestore OnChartEvent non funzionava ancora nel tester.

Urain:

Riletto con interesse, hmmm.

Tutte queste danze del tamburello non sarebbero necessarie se gli MQ abilitassero di default la trasmissione dei beaker sul server DC e non permettessero ai DC di disattivarla. Che sia una puntata vuota con solo bid e ask, ma che venga trasmessa.

Quindi un tick multicurrency può essere facilmente tracciato in OnBookEvent sottoscrivendo lo strumento richiesto.

In effetti, OnBookEvent è un gestore standard di tick multicurrency.

E finora è possibile solo nei dillings che traducono il bicchiere.

Ho giocato una volta con OnBookEvent. Per gli esperti, in generale, funzionerebbe. Anche se eliminerei la "trasmissione" e farei una sottoscrizione per i grafici. Un altro punto a sfavore: non funziona negli indicatori. Non l'ho provato nel tester.

Dalle prime pubblicazioni su questo argomento sono stati uccisi molti tamburelli. È apparso qualcosa di più accettabile. Forse prima o poi lo pubblicherò.

 
Lizar:

Sì, il codice è stato scritto quando il gestore OnChartEvent non funzionava ancora nel tester.

Stavo giocando con OnBookEvent. Per gli esperti, in generale, andrebbe bene. Anche se eliminerei la "trasmissione" e farei una sottoscrizione per i grafici. Un altro punto a sfavore: non funziona negli indicatori. Non l'ho provato nel tester.

Dalle prime pubblicazioni su questo argomento sono stati uccisi molti tamburelli. È apparso qualcosa di più accettabile. Forse prima o poi lo pubblicherò.

C'è un modo più sottile di farlo: c'è un abbonamento non per i grafici, ma per specifici Expert Advisor.

Pertanto, senza abbonamento non si ricevono i segnali del grafico. Pertanto, la trasmissione è elaborata in modo abbastanza qualitativo.

Eseguite i gufi in allegato su due grafici che hanno uno stack. Ogni civetta riceverà solo il segnale a cui è abbonata.

File:
 

Ciao Lizar,

Vorrei utilizzare il tuo codice, ma il mio broker utilizza il linguaggio mql4 (TradeMasterFX Meta, versione: 4.00 Build 890),

C'è un modo per aggiornare il mio terminale al terminale che supporta mql5?

Grazie per il tuo consiglio,

Emre

 
Konstantin Gruzdev:

Benvenuti nella discussione ;)

Forum sul trading, sui sistemi di trading automatizzati e sul test delle strategie di trading

Caratteristiche del linguaggio mql5, sottigliezze e tecniche di lavoro

Andrey Khatimlianskii, 2018.10.09 23:18

Quando si esegue un EA vuoto utilizzando la spia su 50 strumenti, i messaggi iniziano a riversarsi nel log:

2018.10.09 22:49:24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please

Se si aggiunge un filtro all'indicatore per la frequenza di invio di eventi kastum in 500 ms, gli errori diventano meno frequenti, ma non scompaiono.

È un problema solo mio?


Codice EA:

#define  ForEach(index,array)   for(int index=0, max_##index=ArraySize(array);  index<max_##index;  index++)

string Symbols[];

int OnInit()
{
   ArrayResize( Symbols, SymbolsTotal(true) );

   ForEach( i, Symbols )
   {
      Symbols[i] = SymbolName(i,true);

      if( Symbols[i] != _Symbol )
         iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i );
   }
   return(INIT_SUCCEEDED);
}

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if( id == CHARTEVENT_CUSTOM )
      OnTickMS( Symbols[ (int)lparam ] );
}

void OnTick()
{
   CheckSignal( _Symbol );
}

void OnTickMS(const string &Symb)
{
   CheckSignal( Symb );
}

void CheckSignal(const string symbol)
{
   //Commento( simbolo, ": ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 )) );
   return;
}


Il profiler mostra che il 95% delle volte iCustom, OnChartEvent non richiede quasi nulla. Il processore (i5-3570) è caricato al 75%.


Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.09.21
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Andrey Khatimlianskii:

Invito alla discussione ;)


C'è un suggerimento per cercare di utilizzare IndicatorRelease() e IndicatorDelete () un numero appropriato di volte in OnDeinit() del vostro EA.
 
nra_:
Ho un suggerimento per cercare di utilizzare IndicatorRelease() e IndicatorDelete () il numero appropriato di volte in OnDeinit() del vostro EA.

Non dovrebbe arrivare a OnDeinit, ho bisogno che tutto funzioni.

Dopo aver cancellato l'EA è tutto ok, la memoria viene rilasciata dopo qualche tempo.

 
Andrey Khatimlianskii:

Non è necessario che si arrivi a OnDeinit, ho bisogno che tutto funzioni.

Dopo aver cancellato l'Expert Advisor è tutto ok, la memoria viene liberata dopo qualche tempo.

Suggerisco di profilare l'indicatore per scoprire dove vengono sprecati esattamente 4281 ms. Forse nell'invio del messaggio stesso.

 
Stanislav Korotky:

È ragionevole profilare l'indicatore per scoprire dove vengono sprecati esattamente 4281 ms. Potrebbe essere nell'invio stesso del messaggio.

L'abbiamo fatto.

EventChartCustom a un certo punto inizia a funzionare per più di 3 secondi.

 
Mi rendo conto che OnDeinit nell'EA non dovrebbe arrivare a OnDeinit, ma questo è l'ideale. Sei sicuro che durante le 15 ore del tuo test OnInit sia stato chiamato 1 volta nell'Expert Advisor?