Tiki em tempo real

 

Bom dia a todos vocês.

Tornou-se necessário testar o algoritmo de negociação em carrapatos reais do corretor "Otkritie".
Assim, o algoritmo mostra resultados diferentes no modo online e no modo de testes em carrapatos reais.
Procedendo disto, o próximo passo foi a coleta de carrapatos em carrapatos reais e sua comparação com a história (carrapatos históricos), obtidos pela função CopyTicksRange().
Os carrapatos foram coletados nos futuros da SBRF para 21.01.2020.

Surgiram resultados interessantes e algumas questões foram levantadas.

1. O número de carrapatos reais e de carrapatos históricos difere consideravelmente, mas os carrapatos no início e no final do dia de negociação são os mesmos.
Talvez isto seja afetado por uma característica do manipulador OnTick(), que pode pular o processamento de carrapatos.

Mais da metade dos ticks históricos, além das bandeiras padrão (TICK_FLAG_BID ... etc.) têm uma bandeira adicional de 9 bits ativada.
Não o vemos em carrapatos reais - não há um único carrapato com a bandeira de 9 bits ativada.

3. Não conseguimos encontrar nenhuma diferença sistemática entre carrapatos reais e históricos, assim como a inclusão do bit 9 nos carrapatos históricos.
Os carrapatos históricos podem corresponder completamente a carrapatos reais, e o 9º bit em sua bandeira pode ser ligado ou desligado.
Os carrapatos reais e históricos podem ser inconsistentes mesmo durante períodos de baixa atividade comercial, quando o recebimento de carrapatos no terminal não é tão intenso.

Sai

E as perguntas são as mesmas:

Para os desenvolvedores - o que significa 9 bits na bandeira de seleção?

E para a comunidade - alguém já encontrou tal colisão?
Como você testa os algoritmos em carrapatos reais? Somente online?

Em anexo estão os arquivos com coletor e analisador de carrapatos.
E carrapatos reais na SBRF-3.20 para 21.01.2020.

Arquivos anexados:
ticks.zip  553 kb
 
Vladimir Mikhailov:

Bom dia a todos vocês.

Há uma necessidade de testar o algoritmo de negociação em carrapatos reais do corretor "Otkritie".
Portanto, o algoritmo mostra resultados diferentes no modo online e no modo de teste em tempo real.
É por isso que o próximo passo é a coleta de ticks em tempo real (ticks reais) e sua comparação com o histórico de ticks (ticks históricos), obtidos pela função CopyTicksRange().
Os carrapatos foram coletados nos futuros da SBRF para 21.01.2020.

Surgiram resultados interessantes e algumas questões foram levantadas.

1. O número de carrapatos reais e de carrapatos históricos difere consideravelmente, mas os carrapatos no início e no final do dia de negociação são os mesmos.
Talvez isto seja afetado por uma característica do manipulador OnTick(), que pode pular o processamento de carrapatos.

2. mais da metade dos carrapatos históricos, além das bandeiras padrão (TICK_FLAG_BID ... etc.) têm uma bandeira adicional 9 bits habilitada.
Não o vemos em carrapatos reais - não há um único carrapato com a bandeira de 9 bits ativada.

3. Não conseguimos encontrar nenhuma diferença sistemática entre carrapatos reais e históricos, assim como a inclusão do bit 9 nos carrapatos históricos.
Os carrapatos históricos podem corresponder completamente a carrapatos reais, e o 9º bit em sua bandeira pode ser ligado ou desligado.
Os carrapatos reais e históricos podem ser inconsistentes mesmo durante períodos de baixa atividade comercial, quando o recebimento de carrapatos no terminal não é tão intenso.

E as perguntas são as mesmas:

Para os desenvolvedores - o que significa 9 bits na bandeira de seleção?

E para a comunidade - alguém já encontrou tal colisão?
Como você testa os algoritmos em carrapatos reais? Somente online?

Em anexo estão os arquivos com coletor e analisador de carrapatos.
E carrapatos reais na SBRF-3.20 para 21.01.2020.

Você me fez rir com seu colecionador de carrapatos :)

Tome como base a "fita adesiva de todos os ofícios".

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

Feito

E esqueça o testador para instrumentos de troca

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

Você me faz rir com seu colecionador de carrapatos :)

Tomar como base o "All Transactions Feed".

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

Concluído

E esqueça o testador para instrumentos de troca

O exemplo acima é apenas uma forma de agregar a fita de comércio, e mais uma vez a referência é a história.
O que eu não gostaria de fazer, pois retarda o algoritmo. Em primeiro lugar, estamos interessados naqueles carrapatos que são processados pelo evento OnTick().

Esqueça o testador do MetaTrader em geral ou o testador do MT5?

 
Vladimir Mikhailov:

Este exemplo é apenas um dos métodos de agregação de negócios, e mais uma vez é uma referência à história.
1. o que você não gostaria de fazer, pois isso torna o algoritmo mais lento. Em primeiro lugar, estamos interessados naqueles carrapatos que são processados pelo evento OnTick().

2. Esqueça o testador de instrumentos de troca em princípio ou o testador em MT5?

1. Nada está diminuindo e não vai diminuir.

Foi-lhe dada uma solução pronta, que só precisa ser ajustada às suas necessidades.

O evento OnTick() não exibe todas as mudanças na picareta, ou seja, não considera todas as carrapatas!

Aqui está um exemplo simples para que você possa verificar

//+------------------------------------------------------------------+
//|                                                   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 os instrumentos de troca (já escrito que para as Ações)

Adicionado

Se você decidiu "rastejar" da FOREX para a Bolsa, então eu recomendo encontrar este tópico neste

Ajuda para Iniciantes" e leia-a em detalhes.

Na troca, o vidro, não o OnTick(), é a "cabeça" de tudo.
 
prostotrader:

1. Nada está diminuindo e nada vai diminuir.

Você recebeu uma solução pronta, que só precisa ser ajustada para atender às suas necessidades.

O evento OnTick() não mostra todas as mudanças no vidro, ou seja, nem todos os carrapatos são levados em consideração!

Aqui está um exemplo simples para que você possa verificar

2. Para os instrumentos de troca (já escrito que para as Ações)

Adicionado

Se você decidiu "rastejar" da FOREX para a Bolsa, recomendo que encontre o tópico neste

seção "Guia para iniciantes" e leia-o em detalhes.

Na troca, o vidro, não o OnTick(), é a "cabeça" de tudo.

1. Você está certo. O evento OnTick() não está exatamente relacionado com o evento OnBookEvent().
O primeiro evento trata da chegada de novos carrapatos - mudança de cotações, acordos de troca.
O segundo evento trata da mudança do tick, o que nem sempre resulta em uma troca de ações.
Como o acordo de intercâmbio não passa necessariamente pelo ticker.
. Ou seja, podemos dizer que o primeiro evento se refere ao ticker do acordo, e o segundo evento se refere ao ticker.

2. O que usar para análise e tomada de decisão - a faixa de negócios ou o controle deslizante ou ambos, depende do algoritmo de negociação.

Parece que terei que usar o evento OnTimer() com um período de milissegundo para analisar a tira.
Continuarei a experimentar.

 
Vladimir Mikhailov:

1. Você está certo. O evento OnTick() não está exatamente relacionado com o evento OnBookEvent().
O primeiro evento trata da chegada de novos carrapatos - mudança de cotações, comércio de ações.
O segundo evento trata da mudança do tick, o que nem sempre resulta em uma troca de ações.
Nem o comércio de troca tem necessariamente que passar pela taça.
Ou seja, podemos dizer que o primeiro evento se refere à fita de comércio e o segundo à taça.

2. O que usar para análise e tomada de decisão - o ticker do negócio ou o mercado ou ambos - depende do algoritmo de negociação.

Parece que terei que usar o evento OnTimer() com um período de milissegundos para analisar a lasca dos negócios.
Continuarei a experimentar.

Não é uma boa idéia usar um temporizador.

Você tem que decidir o que quer - trabalhar em tempo real ou por temporizador...

Sua cabeça está em um estado de confusão.

Qualquer mudança na pilha é um tick, que inclui a "alimentação do comércio".

Quando OnBookEvent() é acionado, isso significa que:

1. Ocorreu um comércio ou

2. Ocorreu um novo ASK ou

3. Uma nova Licitação apareceu, ou

4. Alguém retirou seu pedido pendente ou

5. 5. volume ASK alterado ou

6 O volume da licitação mudou

Tudo isso é refletido no OnBookEvent() ....

Boa sorte!

Adicionado

Em contraste com FOREX, onde você negocia com computador DC,

No FOREX, você tem verdadeiros oponentes (indivíduos e empresas)!

A troca só "emparelha" seus pedidos(não de graça, é claro :) ).

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

Ao contrário do FOREX, onde você negocia com um computador DC,

Em FOREX você tem contrapartidas reais (indivíduos e empresas reais)!

A Bolsa apenas "emparelha" seus pedidos(não de graça, é claro :) ).

Você já ouviu falar sobre a ECN?

 
Aleksey Mavrin:

Já ouviu falar em ECN?

)))))))))

Leia sobre a ECN


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

Nunca ouviu falar de ECN?

Por que você veio aqui?

Continue procurando o graal no FOREX...

 
prostotrader:

Por que você veio aqui?

Continue procurando o graal em FOREX...

Qual é o seu território privado aqui?

E não é educado dizer às pessoas que você não sabe o que fazer. Mostra um nível um pouco baixo de seu desenvolvimento.

 
Vladimir Mikhailov:

Para os desenvolvedores - o que significa o bit 9 na bandeira do tick?

Não sei sobre o bit 9, a pergunta era sobre o bit 7 não documentado:

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Nova versão do MetaTrader 5 build 1930: janelas de gráficos flutuantes e bibliotecas .Net em MQL5

Slava, 2018.12.04 11:09

Alain Verleyen:

2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 1 carrapato: 2018.12.03 00: 52: 27.671 1.13338 / 1.13354 / 0.00000 0 bandeiras:230
2018.12.03 09: 58: 06.898 TicksInfo (EURUSD, M5) EURUSD: 2 carrapatos: 2018.12.03 00: 52: 27.743 1.13335 / 1.13348 / 0.00000 0 bandeiras: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 bandeiras: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 bandeiras: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 bandeiras: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 bandeiras: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 bandeiras: 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 bandeiras: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 bandeiras: 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 bandeiras: 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 bandeiras: 96

Aparentemente a bandeira é bit a bit 7 (valor 128,sem documentos), é possível saber o valor?

Esta é uma bandeira de serviço que é colocada pelo datafeed se o tick não tiver tido a bandeira TICK_FLAG_BID definida por qualquer motivo, enquanto o tick deve ser aplicado a uma barra.


Razão: