Características da linguagem mql5, subtilezas e técnicas - página 80

 
Vitaly Muzichenko:

Fê-lo, não mostrou nenhuma merda. O que é confuso é que o turno provavelmente deveria ser -720

P.S. Novamente, eu sei que o turno +2 horas - escrito no site, mas o robô não sabe.

Não há necessidade de acreditar nos sites. O turno real é de 3 horas.

O resultado necessário: "Find the current timeServer()" Eu não acertei, talvez eu esteja fazendo algo errado.

// https://www.mql5.com/ru/docs/dateandtime/timetradeserver
datetime TimeTradeServer()
{
  return(TimeGMT() - TimeServerGMTOffset());
}
 
fxsaber:

Você não precisa acreditar nos sites. O turno real é de 3 horas.

Verificado em 4 terminais, está correcto.


Obrigado pelo seu tempo!

 
 

Fórum sobre negociação, sistemas de negociação automatizados e testes estratégicos

Bibliotecas: Símbolo

fxsaber, 2018.04.06 08:20

Se você precisar alterar algumas propriedades de um símbolo personalizado, em alguns casos isso precisa ser feito ANTES de importar cotações.

Por isso, recomendo vivamente a definição de todas as propriedades dos símbolos primeiro, e só depois fazer a importação.

Por exemplo, se você quiser definirSYMBOL_TRADE_TICK_VALUE e SYMBOL_TRADE_TICK_SIZE, você deve fazer isso antes de importar ticks/bars.

 
// Копирование всех баров без обращения к торговому серверу
CopyRates(Symb, PERIOD_M1, 0, (int)SeriesInfoInteger(Symb, PERIOD_M1, SERIES_BARS_COUNT), Rates);
 
fxsaber:

Grandes matrizes são bonitas, mas lembre-se que o tamanho é importante.

 
Nikolai Semko:

Grandes matrizes são certamente uma coisa boa, mas você tem que ter isso em mente.

Não tem nada a ver com isso.

 
fxsaber:

Isto não tem nada a ver com isto.

Quem sabe...
Afinal, um elemento de MqlRates pesa 60 bytes.

Claro, se você usar apenas um conjunto de 10000 elementos, tudo bem.

Mas se você conseguir um monte de tais arrays feitos de caracteres sintéticos, e cada um com 100000 de tamanho, você enfrentará uma queda brusca (mais de uma ordem de magnitude) na velocidade de acesso aos itens da matriz.

Não custa nada estar de olho na otimização do tamanho da matriz, e é um bom estilo. É tudo. Eu só disse que é algo a ter em mente.

 
Nikolai Semko:

Como é que sabe...
Um elemento MqlRates pesa 60 bytes.

Claro, se você usar apenas um conjunto de 10000 elementos, está tudo bem.

Mas se você tem um monte de tais matrizes feitas de caracteres sintéticos, e cada uma delas é 100000 grande, então espere uma diminuição drástica (mais de uma ordem de magnitude) da velocidade da operação.

Não dói ficar de olho na otimização do tamanho da matriz, e é um bom estilo. É tudo. Eu só disse que devias ter isso em mente.

O exemplo ali não se refere de forma alguma a tamanhos de matriz. O assunto não era chamar o pedido de histórico do servidor comercial e, portanto, obter as barras que já estão presentes no Terminal o mais rápido possível.

 
fxsaber:

O exemplo não se refere de forma alguma ao tamanho das matrizes. Tratava-se de não chamar um pedido de histórico do servidor de negociação e, portanto, obter as barras que já se encontram no Terminal o mais rápido possível.

Sim, eu não sei do que se tratava.

Acabei de ver a sua linha de código, que provavelmente irá criar um array maior do que o tamanho do cache da CPU.