Errori, bug, domande - pagina 2750

 
fxsaber:

Mi dispiace, non lo formulo bene.

Sono stato più confuso dalla tua enfasi iniziale sulle stringhe, anche se si tratta della funzione.

Se il test fosse stato fatto con la funzione cache, sarebbe stato molto più chiaro

 
Sergey Dzyublik:

Come possibile soluzione al problema, gli sviluppatori suggeriscono di introdurre una variabile predefinita:

E perché due chiamate consecutive a un intervallo dovrebbero dare lo stesso risultato?

void f()
{
   MqlTick tick1, tick2; 
   SymbolInfoTick(Symbol(),tick1); //1
   /*вычисления*/
   SymbolInfoTick(Symbol(),tick2); //2
}
const MqlTick _Tick;
void f()
{
   MqlTick tick1, tick2; 
   tick1 = _Tick; //1
   /*вычисления*/
   tick2 = _Tick; //2
}
 
A100:

E perché due chiamate consecutive a un intervallo dovrebbero dare lo stesso risultato?

Non dovrebbero, ma per un test su un personaggio nativo, va bene.
 
A100:

E perché due chiamate consecutive a un intervallo dovrebbero dare lo stesso risultato?

Perché stiamo parlando solo di Tester senza usare Sleep- il 99% degli EA.

Non conosco i ritardi arbitrari di Tester, poiché non ho mai visto questa modalità essere utile.

 
fxsaber:

Non posso dire nulla sui ritardi casuali del tester, poiché non ho mai visto questa modalità essere utile.

L'ho usato solo per fare il debug delle funzioni di lavoro con gli ordini

È abbastanza comodo vedere quanto il grafico del tester cambierà la sua pendenza, cioè quanto la logica di trading di lavorare con gli ordini di mercato "ritarda"

 
Sergey Dzyublik:

Un difetto nel debugger ME (build 2370) - dopo l'attivazione di unpunto di interruzione, invece di continuare l'esecuzione del codice premendo (F5), lo stessopunto di interruzioneviene effettivamente attivato di nuovosenza eseguire alcun codice.

Passi di replay:
1) Impostare manualmente
il breakpoint per entrambe le linee " arr.Add()";
2) Avviare il debug (F5);
3) Utilizzare PCM per aprire il file annidato <Generic\ArrayList.mqh> in una nuova scheda.
4) Trova la linea "if(m_size==ArraySize(m_items))" nella funzione "bool CArrayList::Add(T item)" e impostail breakpoint manualmente.
5) Mentre nella scheda "
ArrayList.mqh", continuate a eseguire il codice (F5).

Questo
farà scattare lo stessobreakpoint di prima senza alcuna esecuzione effettiva di codice.

Grazie per il messaggio.

Corretto da

 
fxsaber:

Perché stiamo parlando solo del Tester senza usare Sleep- 99% degli EA.

Non posso dire nulla sui ritardi arbitrari di Tester, poiché non ho mai visto questa modalità essere utile.

Senza cambiare fondamentalmente nulla, è più facile fare (che in effetti è il caso) quella registrazione:

SymbolInfoTick( NULL, tick ); //1

significherebbe

SymbolInfoTick( Symbol(), tick ); //2

almeno non ci sono dubbi sulla copia delle stringhe

 
A100:

Senza cambiare fondamentalmente nulla, è più facile fare (cosa che in effetti è) che la voce

significherebbe

almeno la questione della copia delle linee scompare

Non è quello che chiede, ha bisogno dell'accesso più veloce alla struttura MqlTick su ogni tick.

è una specie di paradosso che ci sia l'accesso a _Symbol .... ma non avete accesso a

const MqlTick _Tick; // Текущий _Symbol-тик.

anche se il linguaggio MQL è posizionato come il linguaggio per lo sviluppo di strategie di trading.... Non so cosa sia il TS se non si conoscono i prezzi attuali sul tick corrente

 
Igor Makanu:

chiede qualcos'altro alla fine, ha bisogno dell'accesso più veloce possibile alla struttura MqlTick su ogni tick

E cosa c'è di sbagliato in

SymbolInfoTick( NULL, tick ); //1

non è abbastanza buono? Mi mostri dov'è il collo di bottiglia? Se è anche lento, allora gli sviluppatori hanno un modo per inlineare/ottimizzare tale chiamata - senza alcun cambiamento fondamentale

 
A100:

Cosa c'è che non va

non è abbastanza buono? Se è anche lento, allora gli sviluppatori hanno un modo per inlineare/ottimizzare tale chiamata

sì, è lento, almeno nel tester, lo scrivo nel testerhttps://www.mql5.com/ru/forum/1111/page2749#comment_16487642

con un gran numero di passaggi dell'ottimizzatore c'è un guadagno


Non so come spiegare, non so come spiegare le cose elementari...

Come si scrivono gli EA? - Si compila una libreria in stile procedurale o OOP, ogni funzione è completamente trasferibile ad un altro progetto, e per garantire questo si scrive Bid, Ask ovunque - il mio esempio. Poi si assembla una strategia di trading dagli spazi vuoti. Cosa offrono gli sviluppatori ora - scrivere SymbolInfoDouble() ovunque