HistorySelect è una funzione molto costosa. Ma HistorySelectByPosition è ancora più costoso.
Per esempio, se abbiamo bisogno di trovare il primo affare della posizione chiusa, possiamo farlo in due modi
Fate HistorySelectByPosition e poi trovate l'affare necessario dalla piccola lista ottenuta. Ma questa lista si forma come segue Prima di tutto si forma TUTTA la storia (equivalente alla chiamata dell'"infinito" HistorySelect). Poi c'è un ciclo COMPLETO per questa lista e vengono selezionate solo le offerte che hanno un POSITION_IDENTIFIER appropriato.
Fate HistorySelect (potete "infinito", ma è meglio usare un intervallo, se noto), poi nel ciclo for fate una pausa, quando raggiungete il DEAL_ENTRY corrispondente.
Il secondo elemento potrebbe essere molto più economico. Ma certamente non più costoso.
Chiamare le funzioni HistorySelect* nel tester è quasi uno spreco di risorse computazionali. Pertanto si dovrebbe sempre cercare di ridurre al minimo il loro numero. Soprattutto HistorySelectByPosition.
fxsaber: Per i conti Hedge nel testerQuesto significa che il risultato del tester dipende molto dal tipo di conto.
Come si è scoperto in uno dei thread vicini, il risultato del tester dipende anche dal fatto che il test sia fatto su un agente locale o su uno degli agenti della rete distribuita.
Come si è scoperto in uno dei thread vicini, il risultato del tester dipende persino dal fatto che il test avvenga sull'agente locale o su uno degli agenti della rete distribuita.
Cari sviluppatori, come sbarazzarsi degli avvisi in questa situazione?
template <typename T>
T GetValue()
{
T Res; // possible use of uninitialized variable 'Res'return(Res);
}
voidOnStart()
{
MqlTick Tick = GetValue<MqlTick>();
int i = GetValue<int>();
}
Lifehack
template <typename T>
const T GetDefaultValue( void )
{
struct STRUCT_TYPE
{
const T Value;
};
const STRUCT_TYPE Res = {0};
return(Res.Value);
}
voidOnStart()
{
int i = GetDefaultValue<int>();
MqlTick Tick = GetDefaultValue<MqlTick>();
string Str = GetDefaultValue<string>();
}
HistorySelect è una funzione molto costosa. Ma HistorySelectByPosition è ancora più costoso.
Per esempio, se abbiamo bisogno di trovare il primo affare della posizione chiusa, possiamo farlo in due modi
Il secondo elemento potrebbe essere molto più economico. Ma certamente non più costoso.
Chiamare le funzioni HistorySelect* nel tester è quasi uno spreco di risorse computazionali. Pertanto si dovrebbe sempre cercare di ridurre al minimo il loro numero. Soprattutto HistorySelectByPosition.
Per i conti Hedge nel testerQuesto significa che il risultato del tester dipende molto dal tipo di conto.
Come si è scoperto in uno dei thread vicini, il risultato del tester dipende anche dal fatto che il test sia fatto su un agente locale o su uno degli agenti della rete distribuita.
https://www.mql5.com/ru/forum/1111/page1880#comment_4904481
Come si è scoperto in uno dei thread vicini, il risultato del tester dipende persino dal fatto che il test avvenga sull'agente locale o su uno degli agenti della rete distribuita.
https://www.mql5.com/ru/forum/1111/page1880#comment_4904481
Hai descritto BAG, che non è nel contesto di questo thread. La diversa esecuzione dei limitatori è la posizione ufficiale.
Sono d'accordo, volevo solo sottolineare che il tester sta diventando uno strumento sempre più imprevedibile.
Sono d'accordo, volevo solo sottolineare che il tester sta diventando uno strumento sempre più imprevedibile.
Questo significa che il risultato del tester dipende molto dal tipo di account.
Risultato
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2017.04.10 16:53
Cari sviluppatori, come sbarazzarsi degli avvisi in questa situazione?Funzioni di rudimento (non richieste)