Errori, bug, domande - pagina 1145

 
Renat:

Quindi dai i tuoi numeri, assicurati di iniziare con zero contatori, misurando 5 minuti per esempio su EURUSD e avviando entrambi i programmi allo stesso tempo.

ps: il fatto che tu legga il contatore nell'inite è un buon modo per imbrogliare te stesso se sei negligente. inizia il contatore da zero se vuoi fare un esperimento pulito.

Hmmm... Grazie. Ho guardato l'EURUSD nel DC - tutto è a posto. Sto contando uniformemente da zero.

Non posso ripetere questo esperimento ora (la borsa di Mosca è chiusa), ma è stato così durante il giorno nel mercato attivo:

ExpCount (Si-6.14,M1) OnTick_count=697
TicksCount (Si-6.14,M1) OnCalculateCount=1326

Letteralmente un paio di minuti. C'è qualcosa che non va con il broker?

 
Fry:

Ehm... Grazie. Ho guardato l'EURUSD nel DC - è OK. Sto contando uniformemente da zero.

Non posso ripetere questo esperimento ora (la borsa di Mosca è chiusa), ma era così nel mercato attivo di giorno:

ExpCount (Si-6.14,M1) OnTick_count=697
TicksCount (Si-6.14,M1) OnCalculateCount=1326

Letteralmente un paio di minuti. C'è qualcosa che non va con il broker?

No, non dipende dal broker. Il terminale riceve un flusso di tick che viene dato sia agli indicatori che agli Expert Advisors.

Di solito significa che l'indicatore lavora velocemente e riceve tutti i tick. Tuttavia, è probabile che l'esperto ritardi nei suoi calcoli e non possa lasciare il gestore prima dell'arrivo del prossimo tick. Hai citato un semplice codice come esempio, ma in realtà hai calcolato i tick su un Expert Advisor funzionante che ha eseguito molti calcoli. Per lo meno, non era così vuoto come nell'esempio.

Come risultato, l'Expert Advisor salta i tick che sono arrivati più velocemente del suo gestore. Se non si saltano le zecche in questo caso, si può facilmente mettere l'esperto al lavoro nel duro passato. Per esempio, a causa dei suoi costi, l'Expert Advisor riceverà quotazioni non aggiornate per diversi secondi/minuti dalla coda di tick e leggerà un profilo di mercato completamente obsoleto.

 
Renat:

No.

Di solito significa che l'indicatore lavora velocemente e riceve tutti i tick. L'Expert Advisor, d'altra parte, è molto probabilmente lento nei calcoli e non ha il tempo di lasciare il gestore prima che arrivi il prossimo tick.

Di conseguenza, l'esperto salterà i tick che arrivano più velocemente del suo gestore. Se non si saltano le zecche in questo caso, si può facilmente mettere l'esperto al lavoro nel duro passato. Per esempio, a causa dei suoi costi, l'Expert Advisor riceverà quotazioni non aggiornate per diversi secondi/minuti dalla coda di tick e leggerà un profilo di mercato completamente obsoleto.

Grazie. Capito. Lo sospettavo a causa della coda. Non potevo credere che questa coda vuota rallentasse così tanto mentre quasi la metà del flusso vola via.
 
Renat:

Non abbiamo un errore.

Hai cercato di inserire un URL non documentato nella pagina del clip dal tuo browser invece di un URL di inserimento effettivo documentato e supportato. Non possiamo tenere traccia di ogni piccolo cambiamento nel motore della pagina di YouTube e hackerare l'URL condivisibile in base all'URL della pagina.

Puoi spiegare perché https://www.youtube.com/watch?v=XXXXXX è considerato "documentato" e https://www.youtube.com/watch?v=XXXXXX "non documentato"?

Questa è la linea regolare da controllare: ^https?:\/\(www.)?youtube\.com\/watch\?v=\S+$

 
Roffild:

Puoi spiegare perché https://www.youtube.com/watch?v=XXXXXX è "documentato" e https://www.youtube.com/watch?v=XXXXXX è "non documentato"?

Questa è la linea regolare da controllare: https?:\/\\(www.)?youtube\.com\/watch?v=\S+.

Se stiamo parlando del riconoscimento dell'URL in background nel corpo del messaggio, non si tratta di regolarità, semplicemente non ci stiamo arrampicando tra le risorse HTTPS alla ricerca di dati strutturati.

Se stiamo parlando della normale funzione di embed dei clip di YouTube che si trova nel pannello dell'editor, produce ancora link HTTP da YouTube per gli sharer come http://youtu.be/ZI67sr0RXzU anche se si entra via HTTPS.


Quando parlo di URL documentato, parlo solo di quello che viene inserito nel pulsante speciale "Video", dove accettiamo solo URL speciali resi per il puntellamento di YouTube. Ma se usi i link all'interno del testo di un post, stiamo cercando di riconoscere i dati strutturati all'interno di quella pagina per fare un'anteprima.

Questo è l'aspetto dei dati strutturati per il video:

        <meta property="og:site_name" content="YouTube">
    <meta property="og:url" content="https://www.youtube.com/watch?v=ZI67sr0RXzU">
    <meta property="og:title" content="MetaTrader 5 Strategy Tester 3D Visualization">
    <meta property="og:image" content="http://i1.ytimg.com/vi/ZI67sr0RXzU/maxresdefault.jpg">

      <meta property="og:description" content="MetaTrader 5 Strategy Tester 3D Visualization">

      <meta property="og:type" content="video">
          <meta property="og:video" content="https://www.youtube.com/v/ZI67sr0RXzU?version=3&amp;amp;autohide=1">
        <meta property="og:video:type" content="application/x-shockwave-flash">
        <meta property="og:video:width" content="960">
        <meta property="og:video:height" content="720">
e questo è il modo in cui viene visualizzato:
MetaTrader 5 Strategy Tester 3D Visualization
MetaTrader 5 Strategy Tester 3D Visualization
  • www.youtube.com
MetaTrader 5 Strategy Tester 3D Visualization
 

Saluti, signori sviluppatori. Che ne dite di dare la possibilità di inizializzare le costanti statiche direttamente nel corpo della struttura/classe, come è implementato in C++:

struct TStruct {   static const int a = 10; };

Questo è di solito molto più conveniente e chiaro, piuttosto che rimuovere l'inizializzazione al di fuori della classe, sprecando linee extra di codice.

Ora il compilatore genera un errore: '=' - uso illegale dell'assegnazione

 
Fry:
Grazie. Capito. Sospettavo che fosse la coda. Non potevo credere a quanto fosse lenta questa cosa, con quasi metà del flusso che passava.
Forse non sono i freni, ma il flusso di tick dal server commerciale. Se i tick provengono dal server "a pacchetto", allora OnTick() dell'Expert Advisor è chiamato una volta per "pacchetto" e non per ogni tick in esso.
 
meat:

Saluti, signori sviluppatori. Che ne dite di dare la possibilità di inizializzare le costanti statiche direttamente nel corpo della struttura/classe, come è implementato in C++:

Questo è di solito molto più conveniente e chiaro, piuttosto che rimuovere l'inizializzazione al di fuori della classe, sprecando linee extra di codice.

Ora il compilatore genera un errore: '=' - uso illegale dell'assegnazione

Ci sono costruttori per questo scopo che funzionano anche per le strutture.
 
Renat:
Ci sono costruttori per questo, che funzionano anche per le strutture.

I costruttori sono progettati per inizializzare i membri locali di un oggetto. E stiamo parlando di variabili statiche di classe. Sono inizializzati o fuori dal corpo della classe, o nel corpo della classe al posto della dichiarazione (se sono costanti) - questo è il secondo caso di cui sto parlando, funziona in C++, e in MQL produce un errore.

 
meat:

Saluti, signori sviluppatori. Che ne dite di rendere possibile l'inizializzazione di costanti statiche direttamente nel corpo della struttura/classe, come implementato in C++:

In realtà solo in plus l'inizializzazione dei membri statici è presa al di fuori della classe. Solo le costanti di tipo integrale possono essere inizializzate internamente.