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
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?
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.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.
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 :) ).
- www.mql5.com
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?
- 2019.07.25
- www.mql5.com
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.
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: 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.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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.
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.