Tiki en tiempo real

 

Buenos días a todos.

Se hizo necesario probar el algoritmo de negociación en ticks reales del broker "Otkritie".
Así, el algoritmo muestra resultados diferentes en el modo online y en el probador en el modo de ticks reales.
Partiendo de esto, el siguiente paso fue la recopilación de ticks en ticks reales y su comparación con la historia (history ticks), obtenida por la función CopyTicksRange().
Las garrapatas se recogieron en los futuros de la SBRF para el 21.01.2020.

Se han obtenido resultados interesantes y han surgido algunas preguntas.

1. El número de ticks reales y de ticks históricos difiere considerablemente, pero hay los mismos ticks al principio y al final de la jornada.
Tal vez, esto se ve afectado por una característica del manejador OnTick(), que puede omitir el procesamiento de los ticks.

Más de la mitad de los ticks históricos, además de las banderas estándar (TICK_FLAG_BID ... etc.) tienen una bandera adicional de 9 bits habilitada.
No lo vemos en los ticks reales: no hay ni un solo tick con la bandera de 9 bits activada.

3. No pudimos encontrar ninguna diferencia sistemática entre los ticks reales y los históricos, así como la inclusión del bit 9 en los ticks históricos.
Los ticks históricos pueden corresponder completamente a los ticks reales, y el 9º bit de su bandera puede activarse o desactivarse.
Los ticks reales e históricos pueden ser incoherentes incluso en períodos de baja actividad comercial, cuando la recepción de ticks en el terminal no es tan intensiva.

Ticks out

Y las preguntas son en consecuencia:

A los desarrolladores: ¿qué significan los 9 bits de la bandera del tic?

Y a la comunidad: ¿alguien se ha encontrado con una colisión de este tipo?
¿Cómo se prueban los algoritmos con garrapatas reales? ¿Sólo en línea?

Se adjuntan archivos con el colector y el analizador de ticks.
Y ticks reales en SBRF-3.20 para el 21.01.2020.

Archivos adjuntos:
ticks.zip  553 kb
 
Vladimir Mikhailov:

Buenos días a todos.

Es necesario probar el algoritmo de negociación en ticks reales del broker "Otkritie".
Así, el algoritmo muestra resultados diferentes en el modo online y en el probador en modo de ticks reales.
Por ello, el siguiente paso es la recopilación de ticks en tiempo real (ticks reales) y su comparación con el historial de ticks (ticks históricos), obtenidos por la función CopyTicksRange().
Las garrapatas se recogieron en los futuros de la SBRF para el 21.01.2020.

Se han obtenido resultados interesantes y han surgido algunas preguntas.

1. El número de ticks reales y de ticks históricos difiere considerablemente, pero hay los mismos ticks al principio y al final de la jornada.
Tal vez, esto se ve afectado por una característica del manejador OnTick(), que puede omitir el procesamiento de los ticks.

2. más de la mitad de los ticks históricos, además de las banderas estándar (TICK_FLAG_BID ... etc.) tienen una bandera adicional de 9 bits habilitada.
No lo vemos en los ticks reales: no hay ni un solo tick con la bandera de 9 bits activada.

3. No pudimos encontrar ninguna diferencia sistemática entre los ticks reales y los históricos, así como la inclusión del bit 9 en los ticks históricos.
Los ticks históricos pueden corresponder completamente a los ticks reales, y el 9º bit de su bandera puede activarse o desactivarse.
Los ticks reales e históricos pueden ser incoherentes incluso en períodos de baja actividad comercial, cuando la recepción de ticks en el terminal no es tan intensiva.

Y las preguntas son en consecuencia:

Para los desarrolladores: ¿qué significan los 9 bits en la bandera del tick?

Y a la comunidad: ¿alguien se ha encontrado con una colisión de este tipo?
¿Cómo se prueban los algoritmos con garrapatas reales? ¿Sólo en línea?

Se adjuntan archivos con el colector y el analizador de ticks.
Y ticks reales en SBRF-3.20 para el 21.01.2020.

Me has hecho reír con tu coleccionista de garrapatas :)

Toma como base la "Cinta de todos los oficios".

https://www.mql5.com/ru/code/16210

Hecho

Y olvídate del probador de instrumentos de intercambio

Лента всех сделок
Лента всех сделок
  • www.mql5.com
Хитрый усреднитель Hello Smart Эксперт усредняет убыточные позиции по определенному алгоритму. ColorJSatl_Digit Сглаженный быстрый цифровой фильтр JSatl с цветовой индикацией направления движения, с отображением последнего значения в виде ценовой метки и с возможностью округлять уровни...
 
prostotrader:

Me haces reír con tu coleccionista de garrapatas :)

Tome como base "All Transactions Feed".

https://www.mql5.com/ru/code/16210

Completado

Y olvídate del probador de instrumentos de cambio

El ejemplo anterior es sólo una forma de agregar la cinta de operaciones, y de nuevo la referencia es el historial.
Lo cual no querría hacer, ya que ralentiza el algoritmo. En primer lugar, nos interesan los ticks que son procesados por el evento OnTick().

¿Olvidar el probador de MetaTrader en general o el probador en MT5?

 
Vladimir Mikhailov:

Este ejemplo es sólo uno de los métodos de agregación de operaciones, y de nuevo es una referencia a la historia.
1. Lo que no se quiere hacer, porque ralentiza el algoritmo. En primer lugar, nos interesan los ticks que son procesados por el evento OnTick().

2. ¿Olvidaste el probador de instrumentos de la Bolsa en principio o el probador en MT5?

1. Nada se ralentiza ni se ralentizará.

Se le ha dado una solución preparada, que sólo tiene que ajustarse a sus necesidades.

El evento OnTick() no muestra todos los cambios en el pick, es decir, ¡no considera todos los ticks!

He aquí un sencillo ejemplo para que lo compruebe

//+------------------------------------------------------------------+
//|                                                   Ticks_test.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
bool is_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
    is_book = MarketBookAdd(Symbol());
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
    if(is_book == true) MarketBookRelease(Symbol());
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    Print(__FUNCTION__ + " Tick is done!");
   
  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
    if(Symbol() == symbol)
    {
      Print(__FUNCTION__ + " Tick is done!");
    }
   
  }
//+------------------------------------------------------------------+
2020.01.23 16:56:53.226	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.226	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.712	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.712	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.930	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.996	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.996	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.016	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.280	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.392	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!

2. Para los instrumentos bursátiles (ya lo escribí para las acciones)

Añadido

Si has decidido "arrastrarte" de FOREX a la Bolsa, te recomiendo que busques el tema en este

Sección "Ayuda para principiantes" y léala con detalle.

En la Bolsa, Glass, y no OnTick(), es la "cabeza" de todo.
 
prostotrader:

1. Nada se ralentiza y nada se ralentizará.

Se le ha dado una solución ya hecha, que sólo tiene que ajustarse a sus necesidades.

El evento OnTick() no muestra todos los cambios en el vaso, es decir, ¡no se tienen en cuenta todos los ticks!

He aquí un sencillo ejemplo para que lo compruebe

2. Para los instrumentos negociados en bolsa (ya lo escribí para las acciones)

Añadido

Si has decidido "arrastrarte" de FOREX a la Bolsa, entonces te recomiendo que busques este tema en este

sección "Guía para principiantes" y léala en detalle.

En la Bolsa, Glass, y no OnTick(), es la "cabeza" de todo.

1. Tienes razón. El evento OnTick() no está exactamente relacionado con el evento OnBookEvent().
El primer evento se encarga de la llegada de nuevos ticks - cambio de cotizaciones, acuerdos de intercambio.
El segundo evento maneja el cambio de la garrapata, que no siempre da lugar a una operación bursátil.
Como el acuerdo de intercambio no pasa necesariamente por el ticker.
. Es decir, podemos decir que el primer evento se refiere al ticker de los acuerdos, y el segundo evento se refiere al ticker.

2. Lo que se utiliza para el análisis y la toma de decisiones - la tira de ofertas o el deslizador o ambos, depende del algoritmo de negociación.

Parece que tendré que utilizar el evento OnTimer() con un periodo de milisegundos para analizar la tira.
Seguiré experimentando.

 
Vladimir Mikhailov:

1. Tienes razón. El evento OnTick() no está exactamente relacionado con el evento OnBookEvent().
El primer evento se encarga de la llegada de nuevos ticks - cambio de cotizaciones, operaciones bursátiles.
El segundo evento maneja el cambio de la garrapata, que no siempre da lugar a una operación bursátil.
Tampoco un intercambio tiene que pasar necesariamente por la copa.
Es decir, podemos decir que el primer evento se refiere a la cinta de oficios y el segundo a la copa.

2. Qué utilizar para el análisis y la toma de decisiones -el ticker de la operación o el mercado, o ambos- depende del algoritmo de negociación.

Parece que tendré que utilizar el evento OnTimer() con un periodo de milisegundos para analizar la franja de ofertas.
Seguiré experimentando.

No es una buena idea utilizar un temporizador.

Tienes que decidir qué quieres: trabajar en tiempo real o por temporizador...

Tu cabeza está en un estado de confusión.

Cualquier cambio en la pila es un tick, que incluye la "alimentación de operaciones".

Cuando se activa OnBookEvent(), significa que:

1. Se ha producido un intercambio o

2. Se ha producido un nuevo ASK o

3. Ha aparecido una nueva oferta, o

4. Alguien retiró su pedido pendiente o

5. 5. Cambio de volumen de ASK o

6 El volumen de la oferta ha cambiado

Todo esto se refleja en OnBookEvent() ....

Buena suerte.

Añadido

A diferencia del FOREX, en el que se negocia con el ordenador DC,

En el FOREX, tienes verdaderos adversarios (particulares y empresas).

La bolsa sólo "empareja" sus órdenes(no de forma gratuita, por supuesto :) ) .

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
<br / translate="no">

A diferencia del FOREX, donde se opera con un ordenador DC,

En FOREX tienes contrapartes reales (personas y empresas reales).

La Bolsa sólo "empareja" sus pedidos(no de forma gratuita, por supuesto :) ) .

¿Ha oído hablar de la ECN?

 
Aleksey Mavrin:

¿Ha oído hablar de la ECN?

)))))))))

Leer sobre ECN


Обсуждение статьи "Выцарапываем профит до последнего пипса"
Обсуждение статьи "Выцарапываем профит до последнего пипса"
  • 2019.07.25
  • www.mql5.com
Опубликована статья Выцарапываем профит до последнего пипса: Автор: fxsaber...
 
Aleksey Mavrin:

¿Nunca ha oído hablar de la ECN?

¿Por qué has venido aquí?

Sigue buscando el grial en el FOREX...

 
prostotrader:

¿Por qué has venido aquí?

Sigue buscando el grial en FOREX...

¿Cuál es su territorio privado aquí?

Y no es educado decir a la gente que no sabes qué hacer. Demuestra un poco el bajo nivel de su desarrollo.

 
Vladimir Mikhailov:

Para los desarrolladores: ¿qué significa el bit 9 en la bandera de la garrapata?

No sé sobre el bit 9, la pregunta era sobre el bit 7 no documentado:

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

Nueva versión de MetaTrader 5 build 1930: ventanas de gráficos flotantes y bibliotecas .Net en MQL5

Slava, 2018.12.04 11:09

Alain Verleyen:

2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 1 tick: 2018.12.03 00: 52: 27.671 1.13338 / 1.13354 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 2 tick: 2018.12.03 00: 52: 27.743 1.13335 / 1.13348 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 3 tick: 2018.12.03 00: 52: 27.821 1.13327 / 1.13343 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 4 tick: 2018.12.03 00: 52: 27.888 1.13326 / 1.13343 / 0.00000 0 flags:226
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 5 tick: 2018.12.03 00: 52: 27.965 1.13327 / 1.13345 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 6 tick: 2018.12.03 00: 52: 28.194 1.13328 / 1.13346 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 7 tick: 2018.12.03 00: 52: 28.265 1.13328 / 1.13346 / 0.00000 0 flags: 96
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 8 tick: 2018.12.03 00: 52: 28.327 1.13326 / 1.13344 / 0.00000 0 flags:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 9 tick: 2018.12.03 00: 52: 28.405 1.13326 / 1.13344 / 0.00000 0 flags: 96
2018.12.03 09: 58: 06.899 TicksInfo (EURUSD, M5) EURUSD: 10 tick: 2018.12.03 00: 52: 28.809 1.13326 / 1.13344 / 0.00000 0 flags: 96
2018.12.03 09: 58: 06.899 TicksInfo (EURUSD, M5) EURUSD: 11 tick: 2018.12.03 00: 52: 29.289 1.13326 / 1.13344 / 0.00000 0 flags: 96

Aparentemente la bandera es bit a bit 7 (valor 128,no documentado), ¿es posible conocer el valor?

Se trata de una bandera de servicio que se establece por el datafeed si el tick no ha tenido la bandera TICK_FLAG_BID establecida por cualquier razón, mientras que el tick debe ser aplicado a una barra.