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

 

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

Bichos, errores, preguntas

Renat Fatkhullin, 2017.03.31 09:10

Utilice ArraySize para los objetos dinámicos y aplique sizeof sólo a los objetos estáticos. Sizeof cuenta en tiempo de compilación y es siempre una constante.

 

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

SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) y SymbolIsSynchronized(_Symbol)

Slawa, 2017.04.04 08:05

En los expertos y en los scripts cuando se llama a las funciones de copia se hacen varios intentos - se comprueba la primera fecha en el servidor, se comprueba la primera fecha en el terminal del cliente, se compara con la fecha solicitada, se comprueba la sincronización de los símbolos, se envía la solicitud de reanudación, una pequeña espera y una ronda con la comprobación de la sincronización. Si el símbolo sigue sin estar sincronizado, se le da lo que es y satisface las condiciones de la solicitud. No se comprueba la sincronización de la serie temporal solicitada, ya que se completa sobre la marcha al paginar los datos.

En los indicadores sólo se hace una petición: ¡no hay bucle! Entonces, todo lo que se logró tomar se da inmediatamente.

 

En el probador MT5 en modo "ticks reales" la base del historial no son los ticks reales, sino las barras M1. Esto significa que si los ticks reales no se corresponden con las barras, se ignoran, y en su lugar se generan ticks artificiales, que deben corresponder a las barras.

Al mismo tiempo, si se solicita CopyTicks para más de 128K, entonces en el probador, se tomarán no de la caché (ticks reales + generados), sino de una base de datos - ticks reales. Y obtener el desajuste en el probador de la historia de la garrapata y lo que el probador estaba generando.

 
fxsaber:

En el probador MT5 en modo "ticks reales" la base del historial no son los ticks reales, sino las barras M1. Esto significa que si los ticks reales no se corresponden con las barras, se ignoran, y en su lugar se generan ticks artificiales, que deben corresponder a las barras.

Al mismo tiempo, si se solicita CopyTicks para más de 128K, entonces en el probador, se tomarán no de la caché (ticks reales + generados), sino de una base de datos - ticks reales. Y conseguir un desajuste en el probador entre el historial de ticks y lo que el probador estaba poniendo.

¡Qué horror! ¿Es realmente así? - ¿Escribiste en SD?

Qué creer ahora, cómo vivir... (casi sin triste ironía)

 
Andrey Dik:

¡Qué horror! ¿Es realmente cierto? - ¿Lo escribiste en SD?

Esta es una paráfrasis muy abreviada de las respuestas de los desarrolladores, no de mi solicitud a la SD.
 
fxsaber:

Al mismo tiempo, si se solicita CopyTicks para más de 128K piezas de borde,

¿Qué borde? ¿128K los últimos?

¿O el primero?

 
George Merts:

¿Cuál es la ventaja? 128K de la última ?

¿O el primero?


El más reciente.
 
Andrey Dik:

¡Qué horror! ¿Es realmente cierto? - ¿Escribieron en la SD?

Qué creer ahora, cómo vivir... (casi sin triste ironía)

https://www.mql5.com/ru/docs/runtime/testing#real_ticks
 

En las pruebas, los datos por minutos se consideran más fiables.

¿Son más fiables las barras de minutos? ¿No son los datos de las garrapatas el último recurso? ¿Para qué se necesitan los datos reales de las garrapatas si no se tienen en cuenta?

Era ingenuo cuando probaba en minutos, luego probé en ticks, luego en ticks reales como comprobación final de precisión. Ahora entiendo que no tiene sentido la tercera comprobación.

 
Andrey Dik:

En las pruebas, los datos por minutos se consideran más fiables.

¿Son más fiables las barras de minutos? ¿No son los datos de las garrapatas el último recurso? ¿Por qué necesitamos los datos reales de las garrapatas si no se tienen en cuenta?

Ingenuamente, solía hacer esto: probaba en minutos, luego probaba en ticks, luego probaba en los ticks reales como la comprobación final de la precisión. Ahora entiendo que el tercer cheque no tiene mucho sentido.


No hay necesidad de sacar la frase de contexto. La frase suena así:

Para garantizar la mayor precisión en las pruebas, también se utilizan barras de minutos en el modo de ticks reales. Los datos de las garrapatas son comprobados y corregidos por ellos. También ayuda a evitar la divergencia de los gráficos en el Probador de Estrategias y en el terminal del cliente.

El comprobador verifica la conformidad de los datos de los ticks con los parámetros de la barra de minutos: un tick no debe ir más allá de los precios Alto/Bajo, los ticks de apertura y cierre deben coincidir con los precios de Apertura/Cierre de la barra. También se compara el volumen. Si se detecta un desajuste, se descartarán todos los ticks correspondientes a esa barra de minutos. En su lugar se utilizarán los ticks generados (como en el modo "Todos los ticks").

Si hay una barra de minutos en el historial de símbolos, pero no hay datos de ticks para ese minuto, el probador generará ticks en el modo "Todos los ticks". Esto permite al probador construir el gráfico correcto en caso de que los datos de los ticks estén incompletos en el corredor.

Si no hay una barra de minutos en el historial de símbolos, pero hay datos de ticks para ese minuto, se pueden utilizar en el comprobador. Por ejemplo, las barras de los símbolos bursátiles se forman con los últimos precios. Si sólo llegan del servidor ticks con precios Bid/Ask sin precios Last, la barra no se formará. El probador utilizará estos datos de ticks, ya que no se contradicen con los datos de los minutos.

Los datos de los ticks pueden no coincidir con las barras de los minutos por diversas razones. Por ejemplo, debido a interrupciones de la conexión u otros fallos durante la transmisión de datos desde la fuente al terminal cliente. Durante las pruebas, los datos por minutos se consideran más fiables.

Como puede ver, si no intenta manipular, resultará que ha interpretado mal la referencia.