Errori, bug, domande - pagina 1205

 
ozhiganov:

Tutti i terminali dei broker hanno smesso di funzionare, compreso quello che ho scaricato da questo sito...

Riavviare non aiuta, riavviare e reinstallare anche, tutto funzionava bene prima, non ho installato nulla sul mio computer, non ho installato nulla nemmeno sul terminale. solo acquisti nel mercato.

Smontate pezzo per pezzo gli indicatori in esecuzione e gli EAs per vedere qual è il problema.

Clicca su "Dettagli" nella finestra di descrizione dell'errore per scoprire i dettagli. Copia il testo completo qui per favore.

 

vuoto, senza un solo indicatore e terminale EA, stessa cosa...

 
Renat:

Cattura gli indicatori in esecuzione e gli EAs pezzo per pezzo per vedere qual è il problema.

Clicca su "Dettagli" nella finestra di descrizione dell'errore per ottenere i dettagli. Copia il testo completo qui, per favore.

Immagino che tu lo voglia?

incidente --> 000007FCE8441F4F 48396B10 cmp [rbx+0x10], rbp

000007FCE8441F53 7530 jnz 0x7fce8441f85


000007FCE8441F55 488B03 mov rax, [rbx]

000007FCE8441F58 4C8BCF mov r9, rdi

000007FCE8441F5B 4D8BC7 mov r8, r15

000007FCE8441F5E 8BD6 mov edx, esi

000007FCE8441F60 488BCB mov rcx, rbx


: #021 00000000000011C8 EIP: 0000000000000000 ESP: 00000000000000000000


: #022 0000000000001068 EIP: 000007FCF54245DB ESP: 0000006818CFFAC8

000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)

000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)

000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk(kernel32.dll)

000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)


: #023 000000000000111C EIP: 000007FCF54245DB ESP: 0000006818E5FB18

000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)

000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)

000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk (kernel32.dll)

000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)

 
Ho inviato il testo completo in un messaggio privato
 

Analizzando l'esempio precedente, abbiamo scoperto una differenza cruciale tra MQL e C++

class A {};
class B : public A {};
class C {
public:
        virtual int g( A* a ) { return ( 1 ); }
        virtual int g( B* b ) { return ( 2 ); } //здесь полное совпадение
};
class D : public C {
public:
        virtual int g( A* a ) { return ( 3 ); }
};
void OnStart()
{
        B* b = new B;
        D* d = new D;
        Print( d.g( b ));
}

In MQL(build 978) il risultato è: 2 (viene chiamato C::g), e in C++ il risultato è: 3 (viene chiamato D::g)

Così si scopre che MQL dà la priorità a una corrispondenza esatta del tipo dell'argomento, anche se è in una classe base, mentre C++ dà la priorità alla classe più vicina possibile che può non avere una corrispondenza esatta del tipo ma può avere una conversione implicita del tipo.

Controllate i risultati su compilatori C++ recenti e se la differenza è confermata, decidete preferibilmente a favore del C++ ai fini dell'unificazione.

 
ozhiganov:
Ho inviato il testo completo in un messaggio privato.
Grazie, lo esamineremo.
 

Il costruttore di copie e l'operatore di assegnazione sono previsti in futuro?

La classe base A ha 15 campi, ha due discendenti B e C - ognuno ha +5 campi in più.

E il resto è una ricerca di 20 minuti.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

A100, 2014.08.29 16:28

Errore durante l'output tramite Print(...)

void OnStart()
{
        const int n = 300;
        Print( "n=", n );
        for ( int i = 0; i < n; i++ )
        {
                Print( i );
                if ( i == 0 )
                        Sleep( 2000 );
        }
}

quando si stampa, la prima parte dell'output salta da 1 a 53 (ogni volta una parte diversa - nessun modello chiaro), a volte salta nel mezzo

poi stampa fino a 299 senza salti

Se avete un po' di tempo, provate ad eseguirlo e se ci sono dei salti nell'output, scrivetemi. Se non ci sono salti - provare ad aumentare n (ho iniziato a saltare a n >= 300) e/o rimuovere

        if ( i == 0 )
                Sleep( 2000 );

Su richiesta #1060016 | 2014.08.29 16:30https://www.mql5.com/ru/users/A100/servicedesk/closed/14774

È sorta una domanda: "Come posso informare di un salto di stampa? - L'opzione più semplice è una singola linea con una linea tratteggiata al posto delle linee saltate

Quando l'utente vede questa linea, capisce che ci sono omissioni e deve fare riferimento al file .log (i numeri di linea non sono necessari - solo come esempio)
 
A100:

Analizzando l'esempio precedente, abbiamo scoperto una differenza cruciale tra MQL e C++

In MQL(build 978) il risultato è: 2 (viene chiamato C::g), e in C++ il risultato è: 3 (viene chiamato D::g)

Così si scopre che MQL dà la priorità a una corrispondenza esatta del tipo dell'argomento, anche se è in una classe base, mentre C++ dà la priorità alla classe più vicina possibile che può non avere una corrispondenza esatta del tipo ma può avere una conversione implicita del tipo.

Controllate i risultati su compilatori C++ recenti e se la differenza è confermata, decidete preferibilmente a favore del C++ ai fini dell'unificazione.

Proprio così. La priorità è data a una corrispondenza esatta. Ed è davvero giusto.

Perché abbiamo bisogno di questa unificazione? Unificazione del trattamento dei programmi impropri

 
ALXIMIKS:

Il costruttore di copie e l'operatore di assegnazione sono previsti in futuro?

La classe base A ha 15 campi, ha due discendenti B e C - ognuno ha +5 campi in più.

E il resto è una ricerca di 20 minuti.

Sì, lo faremo, ma nel prossimo futuro non è ancora nei piani.