Discusión sobre el artículo "Algoritomo de generación de ticks en el téster de estrategias del terminal MetaTrader 5" - página 4

 
Renat :
Pero usted está participando en el tema MetaTrader 5 + MQL5 + Tester y está compitiendo directamente con los desarrolladores.


Puesto que usted no conoce el terminal MetaTrader 5, usted no es consciente de los modos de comercio en Tester y ni siquiera han prestado atención a mi explicación de estos modos con una imagen en la primera página de este tema.

Los modos de prueba están especialmente diseñados para aleccionar a los traders y escribir Asesores Expertos robustos. Esto mejorará dramática y cualitativamente los Asesores Expertos.

He escrito repetidamente sobre los modos agresivos en el probador en los foros (MQL4.com y MQL5.com).

Esta es la raíz de los problemas - la falta de voluntad para probar en la práctica.

En general, nuestro diálogo parece una discusión entre opositores y partidarios de los bloqueos,

Cada parte no quiere escuchar a la otra (probablemente porque una parte ha sufrido algunas soluciones que los oponentes no ven y no entienden).

Sería bueno que tuvieras razón y que la práctica lo demostrara,

Te deseo buena suerte y creeme que es un deseo sincero ya que para mi es mas importante usar un terminal mejor.

(y tener beneficios con su ayuda) que tener razón en alguna disputa.

 
Renat писал(а) :

...
4. Recordando su "habilidad" en el modelado y su actitud al respecto en MT4. Puedo hacer una pregunta más. ¿Tienes el mismo número de ticks en una barra? En MT4 solías tirar el 20% de los ticks. ¿Cómo es ahora? Si una barra real tiene 100 ticks, ¿cuántos ticks tendrás en el modelado?

Coincide, pero no quieres comprobar nada. Te basta con el pensamiento teórico.

Vale, vamos a comprobarlo. He esbozado un experto. Aquí está el código.

  int ticks=0; 
  double  old_bid=0, old_ask=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {return(0);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick)) // получаем тик по символу
     {
     // ограничение по времени, собираем смоделированные тики за 1 час. 2010.05.21   22:00
      if(last_tick.time>"2010.05.21 21.00.00" && last_tick.time<"2010.05.21 23.00.00") {
      if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  { // если нет изменения цены это не тик, пропускаем
         // это тик запоминаем цену, увеличиваем счетчик тиков и выводим принт для проверки
         old_bid=last_tick.bid;
         old_ask=last_tick.ask;
         ticks++;
         Print("ticks=", ticks," ",last_tick.time,": Bid =",last_tick.bid," Ask =",last_tick.ask);
     }      
     }
     }
   else Print("SymbolInfoTick() failed, error =",GetLastError());
//---
  }

Aquí está el resultado.

Los números no coinciden. Ahora una de dos. O mis manos están torcidas o estás mintiendo. Cualquiera puede descargarlo y comprobarlo por sí mismo. Si encuentras un error en mi código, te lo agradecería.

Archivos adjuntos:
111.mq5  3 kb
 

La prueba práctica dio como resultado la primera opción. Cometiste un error en los límites al especificar 2 horas en lugar de una.

Aquí está la variante correcta del tiempo límite:

      if(last_tick.time>="2010.05.21 21:00" && last_tick.time<"2010.05.21 22:00") 

Y los resultados:

2010.05.23 20:13:07     Core 1  ticks= 2315   2010.05.21 21:59:59 : Bid = 1.25721  Ask = 1.25738

Se generaron 2315 ticks cuando en realidad se generaron 2318 ticks. Una pérdida de 3 ticks de 2318 es una variante normal.


 

Estupendo. Está de acuerdo en que este código se puede comprobar. Sólo tiene que introducir el intervalo de tiempo correcto. Por favor, introduzca este.

      if(last_tick.time>"2010.05.19 12.00.00" && last_tick.time<"2010.05.19 13.00.00") {

¿Explique dónde fueron 5200 ticks?

 

Es bueno que sigas con las pruebas prácticas.

No tengo 5869 ticks en este reloj, tengo 679. Aquí están mis resultados de la ejecución de este período - 679 garrapatas. 100% de los ticks fueron simulados.


Aparentemente, usted tiene un reloj cacheado (y los minutos fueron correctos para un total de 679 ticks) - encendimos el ticker por un corto tiempo el día 19, pero luego lo retrocedimos.

Basta con invocar el comando "Actualizar" en el gráfico y ejecutarlo de nuevo.

Preste atención al formato correcto de la hora AAAA.MM.DD HH:MM:SS.

 

un tema que se me olvido tratar en este articulo

con la aparición de datos de volumen real en mt5

cómo se generará esta información

 

Entiendo perfectamente los comerciantes pips, aunque Urain y Prival descartarlo. Pero mis TSs se construyen por el contrario en el máximo filtrado de ruido posible, TSs se vuelven inmunes a las cualidades de las garrapatas. Tales TSs se pueden utilizar con cualquier proveedor de cotizaciones. En cuanto a NN, que Urain mencionó - no tiene sentido construir un TS en NN sensible a la calidad de las garrapatas.

También entiendo bien a los desarrolladores.

Veo un compromiso en la creación por parte de los desarrolladores de un complemento al generador de ticks estándar que permitiría regular la "esponjosidad" de los ticks generados, con la posibilidad de regular la frecuencia de aparición y el tamaño de las emisiones en los ticks. En mi opinión, esto no es lo mismo que ajustar el "grado de agresividad" de las pruebas. Tal vez deberíamos considerar una variante de algún tipo de analizador del grado de correspondencia entre los ticks generados en el probador y los ticks reales, para poder mostrar entonces los parámetros disponibles para que los usuarios los ajusten.

En cualquier caso, los desarrolladores tienen que hacer algo para proteger sus intereses y los de los operadores finales. Casi siempre se pueden encontrar soluciones de compromiso.

PD Sí, y una cosa más. No sé por qué necesitamos el historial de ticks (porque se requieren pruebas reales adecuadas), si DC puede cambiar los filtros incluso cada día, haciendo que el historial de ticks acumulado sea inútil, ya que el comportamiento futuro del ST será bastante diferente de lo que se esperaba después de las pruebas incluso en el historial de ticks real. Por eso considero que la variante con ajuste de "esponjosidad" por el usuario es más preferible que la posibilidad de tener un historial de ticks real.
 
joo писал(а) :

Entiendo perfectamente los comerciantes pips, aunque Urain y Prival descartarlo. Pero mis TSs están construidas por el contrario sobre el máximo filtrado de ruido posible, las TSs se vuelven inmunes a las cualidades de los ticks. .....

Y no entiendo a la gente que etiqueta sin entender. Una vez más, aquí está el enlace de la primera página. https://www.mql5.com/ru/forum/115584/page11#150512. Echa un vistazo más de cerca a la imagen !!! se puede ver todo lo que hay - oficios se trazan en el gráfico.

Parámetros - tamaño medio de comercio en pips 650, el tiempo mínimo para mantener un comercio de 1 hora. ¿SOY UN HOMBRE DE PIPS?

¿Por qué me prohibes analizar los ticks? ¿Te prohíbo trabajar y analizar la información entrante como TÚ creas conveniente? Usted piensa que al trabajar en ticks cada hora automáticamente se deshizo del ruido - esto es un engaño, le sugiero una variante aún mejor - trabajar en velas anuales, el sistema será aún mejor, aún más robusto, incluso sin ruido, los proveedores de datos no tienen problemas, dio 5 dígitos de OHLC y "volumen" una vez al año para el comerciante y le dejó el comercio. Todos contentos, el trader tiene un sistema robusto, no hay ruido, el proveedor no tiene problemas con el escalado, etc. (existe este método en ciencia, sustitución de casos extremos para entender si una idea es un disparate o no... saquen sus propias conclusiones).

Ahora escribiré una respuesta a Renat y ya está. Intentaré describir dónde veo discrepancias entre el modelado y las citas reales. Esta es su idea, decidió modelar ticks, y cree que muchos parámetros de no son importantes en la modelización.

Nuestro negocio es entender dónde podemos confiar en el probador y en qué. Y dónde nos engañará el probador. No podemos hacernos cambiar de opinión. Renat cree que es posible crear un modelo mejor que el real. Yo no lo creo así.

Se nos da la oportunidad de estudiar el TC sólo en el modelo y no hay posibilidad de ejecutar el TC creado en los datos reales (malo o bueno, esponjoso o no, no importa). No tenemos esta oportunidad!!!. ¿Por qué no nos dan la oportunidad de descargar el histórico al menos de forma independiente, digamos desde aquí http://www.dukascopy.com/swiss/russian/data_feed/historical/, meterlo en el tester y ejecutar el TS sobre estos datos? El resultado todos ustedes saben muy bien, ¿nadie ha encontrado? En el probador todo es bueno, pero en la vida real, incluso si usted encontró el TS, usted puede conseguir tan maravillosamente en la cara https://www.mql5.com/ru/forum . Y tienes que ser un paranoico absoluto para modelar tal cosa (incluso con la ayuda de un generador) y tratar de crear un TS que será resistente a tal cosa y trabajar en tales condiciones....

Ahora sobre comparar el número de ticks de la historia y los ticks modelados....

Sí, es un problema con la historia (esto es exactamente de lo que estamos hablando).

Escribí al Service Desk #14710 2010.05.18 08:42 a.m. sobre los fallos en las comillas. Tardaron mucho en solucionarlo, parece que no lo han solucionado. El 20.05 borré todas las cotizaciones manualmente, las descargué todas nuevas, así que no es eso (estuvieron experimentando el 19). Cotizaciones tengo fresco por correspondencia de Service Desk descargado todo nuevo alrededor de 2010.05.20 12:08.

Para que no hubiera más malentendidos. Una vez más completamente borrado los historiales de carpetas y cargado uno nuevo.

  1. Sí, en efecto, cuando hice clic en el botón de actualización - la historia cambiado. Los datos coincidían con ticks= 678.
  2. Desde el punto de vista del proveedor de datos es bueno, puede cambiar la historia como un mago.
  3. Desde el punto de vista del comerciante es una pesadilla. Excluya esta situación. Tengo estos datos en mi terminal, participan en los cálculos, en los indicadores, se utilizan para construir TSs y tomar decisiones.

Qué más he prestado atención a, esta comprobación es inútil.

if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  

1. Usted no tiene situaciones en las que sólo cambia la oferta o demanda (vendedor o comprador se desmonta). Y esto sucede muy a menudo. Bid se mantiene, solo ask cambia y viceversa.

2. El spread es igual a una constante. Esto tampoco se corresponde con la realidad.

3. Si quieres ayuda para investigar la calidad del modelo. Recopile usted mismo los ticks, preferiblemente de 3-4 fuentes y publíquelos. Muestre los resultados de la modelización de estos ticks no en forma de una imagen, donde el precio baja 30 puntos por 1000 ticks. Pero digamos para un día, donde hay diferentes situaciones, incluyendo grandes movimientos en un corto intervalo de tiempo.

4. Dar características numéricas de la desviación de los datos reales, al menos el RMS en ambos ejes.

5. Esto se hace en todo el mundo, se puede confiar en los resultados si otra persona con los mismos datos iniciales obtiene el mismo resultado.

6. En caso contrario, la situación será como la anterior, tú tienes 678 ticks en el terminal, yo tengo 5800. Si aquí añadimos todos los matices de recogida de ticks, nunca daremos con la verdad.

7. Sentarse durante 2-3 días recogiendo ticks para mostrar o demostrar algo a alguien, lo siento, ya he recogido en mi tiempo. Me basta con ver cómo se generan las tics para formarme una opinión.

8. Es una pena que debido al formato elegido para almacenar y alimentar el historial en el terminal, los comerciantes perdamos información. Renat, por mucho que lo intentes, no podrás construir un gráfico, digamos en forma de Renko, Kagi. Será redibujado y diferente de lo que se construye con datos reales.

Mis conclusiones y recomendaciones para los traders. Puedes tenerlas en cuenta o no, depende de ti.

  1. El modo de prueba es inútil. Es una pérdida de tiempo, porque la estructura de los ticks dentro de la barra no se reproduce con precisión.
  2. El método más correcto de prueba es probablemente el mismo que en MT4 en los precios de apertura. Más concretamente, hay que asegurarse de que ha comenzado una nueva barra y tomar los precios de la anterior. Al mismo tiempo, en el trading real hay que utilizar comprobaciones "paranoicas" de la presencia y sincronización de datos como esta https://www.mql5.com/ru/forum/993 y los resultados pueden seguir sin coincidir.
  3. Si prueba el sistema con un valor de stop o arrastre pequeño, los resultados pueden diferir incluso en los precios de apertura, debido a una posible falta de coincidencia entre el momento de Low y High. (Se pueden reordenar).
  4. Antes de que el Asesor Experto funcione en la vida real, al inicializarlo, debe comprobar de alguna manera la corrección de la historia (simule pulsar el botón de actualización).
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
  • www.mql5.com
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
 
Prival :

No entiendo a la gente que etiqueta a las personas sin saber de qué están hablando. Una vez más, aquí está el enlace de la primera página. https://www.mql5.com/ru/forum/115584/page11#150512. Fíjate bien en la foto !!! ahí se ve todo - los tratos están trazados en el gráfico.

Parámetros - tamaño medio de la operación en pips 650, tiempo mínimo para mantener una operación 1 hora. ¿SOY UN HOMBRE DE PIPS?

¿Por qué USTED me prohíbe analizar los ticks? ¿Te prohíbo trabajar y analizar la información entrante como TÚ creas conveniente? Piensas que trabajando con ticks horarios automáticamente te libras del ruido - esto es un error, te sugiero una opción aún mejor - trabajar con candeleros anuales, el sistema será aún mejor, aún más robusto, incluso sin ruido, los proveedores de datos no tienen problemas, dan 5 dígitos de OHLC y "volumen" una vez al año al trader y le dejan operar. Todos contentos, el trader tiene un sistema robusto, no hay ruido, el proveedor no tiene problemas de escalado, etc. (existe tal método en la ciencia, sustitución de casos extremos para entender si la idea expresada es un disparate o no... puedes sacar tus propias conclusiones).

................

¿Por qué reaccionas tan violentamente, estoy un poco desconcertado? Estaba apoyando tu punto de vista. No me gusta la palabra "mequetrefe", la retiro. Siento haberle causado una tormenta de emociones negativas.

Entiendo la palabra "pipero" en un sentido más amplio. Un pipero es una ST sensible a la calidad de las garrapatas. Eso es todo. Como si sólo hubieras leído la primera línea de mi post. Y más adelante en mi post, ofrecí una solución de compromiso.

PS Yo uso otros métodos de filtrado de ruido que cambiar a un mayor TF (en negrita en mi post). Mi investigación se centra en M1.

 
joo писал(а) :

....

Si te has tomado esta información como algo personal, te pido disculpas. Sí, reacciono violentamente, porque en lugar de operar y ganar un pedazo de pan para mi familia, me siento y escribo. Esto fue escrito más bien para aquellos que piensan que si una persona analiza los ticks, es un jugador de pips. Esto no es cierto. Intento demostrarlo en la medida de lo posible.

No existe el concepto de tick cualitativo/no cualitativo. En consecuencia, no existe un agregado de ticks cualitativos o no cualitativos. Un tick es una realidad que nos viene dada en el terminal de trading. Nos llega, se lanza el Asesor Experto y lo analizamos. Quien esté aquí presente podrá decir. ¿Este tick es de calidad y éste no?

Alguien analiza sólo el cierre de barras = un tick que llegó al final de la hora. ¿En qué se diferencia este tick en calidad del tick que llegó un segundo antes? Digamos que alguien afirma que es más "esponjoso", ¿qué es eso y con qué? Espero que vea lo absurdo de tales afirmaciones.

Ahora piénsalo, los proveedores de cotizaciones trabajan a nivel de ticks, sí, los filtran, tienen varios proveedores, nos dan lo que consideran necesario y rentable para ellos en un momento dado. Pero trabajan con ticks, no con OHLC, sino con ticks. Los que luego doblan en barras. Es que todos los DC que hay allí son tontos y no ven que es un suicidio trabajar a nivel de ticks?

Si no es así, ¿son inteligentes y competentes? ¿Por qué hay que trabajar con la temperatura media del hospital y no con garrapatas? A partir de las garrapatas puedes cortar lo que quieras, cualquier tipo de gráfico. No puedes hacer eso con minutos, porque es una forma de compresión de datos con pérdida, pérdida irreversible.

Es como un algoritmo de empaquetado, el mismo *.rar comprimía la información, se la pasaba a otro, lo descomprimía y lo leía, digamos que es un libro. Y ahora cambiamos el algoritmo, descomprimimos sólo la primera(Abrir) y la última(Cerrar) letra de la frase, bueno, puedes añadir dos letras más, la más gruesa (análogo de Alta) y la más fina (análogo de Baja). ¿Qué te parece? ¿A quién quiere leer un libro así? Es lo mismo aquí ((((