Errori, bug, domande - pagina 1925

 

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

Bug, bug, domande

fxsaber, 2017.07.10 20:16

Per alleviare molte domande sulla corretta compilazione della struttura MqlTradeRequest, suggerisco quando si preme F9 nel terminale mentre si compilano manualmente i campi, di fare una nota "Dettagli", dove saranno visibili tutti i campi della struttura di trading corrispondente (con l'opzione di copiare con un clic). Ora questa struttura è completamente disponibile se la catturate in OnTradeTransaction dopo aver premuto F9-window action.

Fallito. L'implementazione della cattura della struttura riempita tramite OnTradeTransaction può essere vista qui.

 
Yury Kirillov:

A partire almeno dalla build 1625 MT5 cade quando viene testata.

Bild 1626:

Gioca almeno nelle modalità "ogni tick..." e "tutti i tick".


Pomeriggio. Servono passi per la riproduzione. Necessità di esperti/indicatori e impostazioni di test. Si prega di scrivere a servicedesk.

 
Alexander:

Buon pomeriggio. Servono passi per la riproduzione. Necessità di esperti/indicatori e impostazioni di test. Si prega di scrivere a servicedesk.


Hanno scritto a TA#1794147.

Il crash sembra essere generato quando si usa HistoryDealGetTicket(i), con un parametro maggiore del numero di transazioni disponibili.

 
Yury Kirillov:

Ho scritto a TP#1794147.

Il crash sembra essere generato quando si usa HistoryDealGetTicket(i), con un parametro maggiore del numero di transazioni disponibili.

Sì, l'ho visto. Grazie

 

Nessun messaggio di errore

struct A {
        int z;
};
void OnStart()
{
        int const b; //'b' - 'const' variable must be initialized
        A   const a; //нет сообщения об ошибке //по сути равнозначно записи: int const а.z; 
}
Deve essere presente un costruttore esplicito o una sequenza di inizializzazione
 
A100:

Nessun messaggio di errore

A causa del costruttore. Quindi va bene.

 
fxsaber:

A causa del costruttore. Quindi va bene.

A causa di un costruttore che non fa nulla?

struct A {
        A() {}
        int a;
}; 
void OnStart()
{
        const A a; //нормально
}

Se è possibile non inizializzare const int A::a, allora perché inizializzare necessariamente const int b nel caso precedente?

 
A100:

A causa di un costruttore che non fa nulla?

Sì, a causa del costruttore di default vuoto.

Se potete disinizializzare const int A::a, allora perché inizializzare necessariamente const int b nel caso precedente?

Perché mostra Errore invece di Avviso? Beh, può essere fatto in questo modo

void OnStart()
{
  int a;
  const int b = a;
}

IMHO, ci deve essere un Warning quando una variabile const di tipo semplice non viene inizializzata. E non dovrebbe esserci Warning quando il valore OrderSend non è controllato. Ma questa sembra essere la visione degli sviluppatori di quella corretta. Cioè il ragionamento è soggettivo.

 
fxsaber:

Perché mostra Errore invece di Avviso? Dopo tutto, puoi farlo in questo modo

Perché usare una variabile costante non inizializzata non ha senso - da qui l'errore (contiene un valore casuale e non può essere cambiato in seguito)

 
A100:

Perché usare una variabile costante non inizializzata non ha senso - da qui l'errore (contiene un valore casuale e il suo ulteriore uso porterà a errori difficili da trovare)

Ho cancellato una parola nella citazione, ma il significato non cambierà se in futuro ci saranno solo operazioni di sola lettura. Per non-const dà Warning, per const dà Error. È solo una delle decisioni controverse degli sviluppatori.

Motivazione: