Tavolo di tutti i mestieri. Accesso tramite MQL5 - pagina 2

 
prostotrader:
Trovato un bug e ottimizzato il funzionamento.

Un buon esempio, anche se c'è ancora molta strada da fare prima di ottenere prestazioni ottimali. Finora i freni principali sono tre:

1. CopyTiks ogni OnBookEvent copia tutti i tick dall'inizio:

int copied= CopyTicks(Symbol(),ticks,COPY_TICKS_ALL,start_time,0);

Questo può essere ottimizzato facendo dei tagli dinamici.

2. Enumerazione completa di tutti i tick ricevuti in OnBookEvent

for(int i=1; i<copied; i++)
{
   if(( ticks[i].flags  &TICK_FLAG_BUY)==TICK_FLAG_BUY)
   {
      buy_deals++;
   }
   else
   if(( ticks[i].flags  &TICK_FLAG_SELL)==TICK_FLAG_SELL)
   {
      sell_deals++;
   }
}

Anche questo può essere aggiustato, se volete.

3. Enumerazione completa di tutte le barre in OnCalculation:

for(int i=rates_total-1; i>0; i--)
{
   SellBuffer[i]= SellBuffer[i-1];
   BuyBuffer[i] = BuyBuffer[i-1];
}
 
Su richiesta dei membri del forum, ho completato l'indicatore
File:
DealsLent.mq5  9 kb
 
Vasiliy Sokolov:

Un buon esempio, anche se c'è ancora molta strada da fare prima di ottenere prestazioni ottimali. Finora, i freni principali sono due:

1. CopyTiks ogni OnBookEvent copia tutti i tick dall'inizio:

Questo può essere ottimizzato facendo dei tagli dinamici.

2. Enumerazione completa di tutti i tick ricevuti in OnBookEvent

Anche questo può essere aggiustato, se volete.

3. Enumerazione completa di tutte le barre in OnCalculation:

Grazie, ma non hai ragione ovunque.

1. Non tutte le zecche (guardare da vicino)

2. come vuoi farlo?

3. facile da fare

Ora, mettiamolo a punto...

 
Qui, modificato.
File:
DealsLent.mq5  9 kb
 
prostotrader:

Grazie, ma non hai ragione su tutto.

1. Non tutte le zecche (guardare attentamente)

2. facile da fare

3. facile da fare.

Ora lo stiamo facendo bene...

Sì, infatti non tutte le zecche.

Per quanto riguarda il terzo punto, non sono sicuro che sarà facile da fare. L'indicatore è a ticchettio e richiede quindi un serio re-rendering.

Ma nel complesso va bene. Grazie per l'esempio.

 
prostotrader:
Qui, l'ho modificato.
Grazie.
 
Vasiliy Sokolov:

Sì, infatti non tutte le zecche.

Per quanto riguarda il terzo punto, non sono sicuro che sarebbe facile da fare. Perché l'indicatore è un indicatore di tick e quindi richiede qualche serio re-rendering.

Ma nel complesso va bene. Grazie per l'esempio.

Infatti, l'indicatore è basato su tick, quindi solo i dati attuali (recenti) sono importanti.

Se l'utente vuole prendere una storia più lunga dai buffer,

è molto facile da fare.

Sec.

 

Qui, l'utente può scegliere la dimensione dei dati che gli interessano.

Se ActSize = 0 - tutta la storia disponibile

File:
DealsLent.mq5  9 kb
 
Il tocco finale...
File:
DealsLent.mq5  10 kb
 

Qualcuno sa qual è l'errore?

L'indicatore funziona correttamente, ma vengono visualizzate più barre,

di quello per cui è stato impostato.