Características del lenguaje mql5, sutilezas y técnicas - página 80

 
Vitaly Muzichenko:

Lo hice, no mostró ninguna mierda. Lo que es confuso es que el desplazamiento debería ser probablemente -720

P.S. Una vez más, sé que el turno +2 horas - escrito en el sitio, pero el robot no sabe.

No es necesario creer en las páginas web. El turno real es de 3 horas.

El resultado requerido: "Find the current time TimeServer()" No lo he entendido bien, quizás estoy haciendo algo mal.

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

No hay que creer en las páginas web. El turno real es de 3 horas.

Comprobado en 4 terminales, es correcto.


Gracias por su tiempo.

 

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Discusión del artículo "Asesor experto multiplataforma: señales"

fxsaber, 2018.04.03 06:26

MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION) == MQLInfoInteger(MQL_TESTER)
 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bibliotecas: Símbolo

fxsaber, 2018.04.06 08:20

Si necesita cambiar algunas propiedades de un símbolo personalizado, en algunos casos esto debe hacerse ANTES de importar las cotizaciones.

Así que recomiendo encarecidamente establecer primero todas las propiedades de los símbolos, y sólo entonces hacer la importación.

Por ejemplo, si quieres establecerSYMBOL_TRADE_TICK_VALUE y SYMBOL_TRADE_TICK_SIZE, debes hacerlo antes de importar los ticks/barras.

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

Las matrices grandes están bien, pero recuerda que el tamaño sí importa.

 
Nikolai Semko:

Las matrices grandes son ciertamente algo bueno, pero hay que tenerlo en cuenta.

No tiene nada que ver.

 
fxsaber:

Esto no tiene nada que ver.

Quién sabe...
Después de todo, un elemento de MqlRates pesa 60 bytes.

Por supuesto, si se utiliza un solo array de 10000 elementos, no pasa nada.

Pero si tienes un montón de matrices de este tipo formadas por caracteres sintéticos, y cada una de ellas tiene un tamaño de 100000, te enfrentarás a una fuerte caída (más de un orden de magnitud) en la velocidad de acceso a los elementos de la matriz.

No está de más vigilar la optimización del tamaño de los arrays, y es un buen estilo. Eso es todo. Sólo he dicho que es algo a tener en cuenta.

 
Nikolai Semko:

Cómo sabes...
Un elemento MqlRates pesa 60 bytes.

Por supuesto, si usas un solo array de 10000 elementos, no pasa nada.

Pero si tienes un montón de matrices de este tipo hechas de caracteres sintéticos, y cada una de ellas es 100000 grande, entonces espera una disminución drástica (más de un orden de magnitud) de la velocidad de operación.

No está de más vigilar la optimización del tamaño de los arrays, y es un buen estilo. Eso es todo. Sólo he dicho que deberías tenerlo en cuenta.

El ejemplo no se refiere a los tamaños de las matrices de ninguna manera. La cuestión era no llamar a la solicitud de historial del servidor de comercio y, por lo tanto, obtener las barras que ya están presentes en el Terminal tan pronto como sea posible.

 
fxsaber:

El ejemplo no hace referencia al tamaño de las matrices de ninguna manera. Se trataba de no llamar a una solicitud de historial del servidor de operaciones y, en consecuencia, obtener las barras que ya están en el Terminal lo más rápidamente posible.

Sí, no sé de qué se trataba.

Acabo de ver tu línea de código, que probablemente creará un array mayor que el tamaño de la caché de la CPU.

Razón de la queja: