Errori, bug, domande - pagina 1564

 
Anton Zverev:

iCustom+IndicatorRelease. Probabilmente non è una soluzione di stampella per produrre entità complesse sul posto. Sui gusti non si discute. La domanda è quanto una tale stampella su più agenti andrà a sprecare risorse.

Beh, quasi tutto è figo in 5. La velocità è al top. E qui, scusate, un po' di pelosità totale dove non ci si aspetterebbe.

Perché fare un indicatore di rilascio?

Lascia che invii un evento grafico all'esperto in prova ad ogni nuovo tick.

Creare un indicatore su ogni tick seguito da un rilascio - ecco dove sono le risorse sprecate

 
Anton Zverev:

Vasiliy ha menzionato che su FORTS (non nel tester) il meccanismo funziona tramite sottoscrizione e BookEvent. Questo elimina la necessità di collegare l'EA a qualsiasi grafico.

BookEvent non è ancora implementato nel tester
 
Slawa:

Perché rilasciare un indicatore?

Lascia che invii un evento grafico all'esperto in prova ad ogni nuovo tick.

Creare un indicatore ad ogni tick e poi rilasciarlo - è uno spreco di risorse

Non sono molto bravo ad esprimermi, quindi non capisci. Clicca qui per i dettagli https://www.mql5.com/ru/code/280

E quante risorse consuma questa soluzione per implementare una cosa così semplice!

Мультивалютный обработчик событий OnTick(string symbol)
Мультивалютный обработчик событий OnTick(string symbol)
  • voti: 27
  • 2011.02.01
  • Konstantin Gruzdev
  • www.mql5.com
Упрощенная реализация полноценного мультивалютного режима в MetaTrader 5. Нет необходимости вникать в то, как это работает. Минимум простых настроек. Максимум удобства для пользователей. Работает в тестере.
 
Slawa:
BookEvent non è ancora stato implementato nel tester
Allora, a cosa serve nel tester se non funziona nemmeno nel mercato forex? Vasiliy ha fatto quello che penso sia un suggerimento sensato sopra.
 
Slawa:

E non in loop per un secondo, ma per poco meno di un'ora. Con controllo obbligatorio di IsStopped()

Il sonno, a proposito, è obbligatorio. Altrimenti si blocca il tester. E le risorse del sistema saranno devastate durante il normale funzionamento dell'Expert Advisor.

Non testare nemmeno la tua variante

2016.04.26 19:39:05     Core 1  2016.04.25 00:16:48   infinite Sleep loop detected while testing
2016.04.26 19:39:05     Core 1  EURUSD : 2016.04.25 00:00 - 2016.04.26 00:00  1439 minute bars absent in total while real ticks present
2016.04.26 19:39:05     Core 1  EURUSD : real ticks begin from 2016.01.04 00:00:00
2016.04.26 19:39:05     Core 1    SleepPause=10
2016.04.26 19:39:05     Core 1    TimerInterval=1000

Codice

sinput uint TimerInterval = 1000; // Через сколько секунд вызывать OnTimer
sinput uint SleepPause = 10;      // На сколько милисекунд делать Sleep
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
   EventSetTimer(TimerInterval);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   const uint Amount=TimerInterval*1000/SleepPause;

   for(uint i=0;(i<Amount) && (!IsStopped()); i++)
      Sleep(SleepPause);
  }
//+------------------------------------------------------------------+
 
Anton Zverev:

Nemmeno per testare la tua opzione

Codice

E cosa stavi testando qui?
 
Slawa:
E cosa stavi testando qui?
Eseguo quel codice nel tester. Ottengo un blocco con unciclo infinito di Sleep rilevatodurante i test.
 
Anton Zverev:
Lancio quel codice nel tester. Mi si blocca conSleep loop infinito rilevato durante i test.

È stato detto molte volte: "Leggete la documentazione".

Non hai detto: "Ho letto tutta la documentazione. Diverse volte"?

Avete letto questo? Sembra che tu non abbia...

Se il tempo corrente nel tester supera la fine del periodo di test quando viene eseguita la funzione Sleep(), si otterrà un errore "un ciclo infinito in Sleep". Se si verifica un tale errore, i risultati dei test non vengono scartati, tutti i calcoli vengono eseguiti per intero (quantità di operazioni, drawdown, ecc.) e i risultati vengono passati al terminale.

 
Slawa:

Avete letto questo?

L'ho fatto e l'ho letto molto attentamente. Il punto è che se Sleep è usato in OnTimer, il programmatore non può determinare quando lascia l'intervallo di test. IsStopped (l'ho messo subito nel codice perché ho letto la documentazione) non funziona al momento dell'uscita. Di chi è la colpa?
 
Slawa:

E per quanto riguarda i tick mancanti nel ciclo di OnTimer, avete bisogno di prove riproducibili. Li avete?

L'hai scritto nella documentazione!

Nel tester, le chiamate Sleep() non ritardano il processo di test. Quando si chiama Sleep(), i tick generati vengono "suonati" entro il ritardo specificato, di conseguenza gli ordini pendenti, gli stop e così via possono scattare. Dopo aver chiamato Sleep(), il tempo modellato nel tester è aumentato dell'intervallo specificato nel parametro della funzione Sleep.

Quindi, l'Expert Advisor non può essere chiamato ad ognuno di questi tick. La prova è accettata?