Indices Futuros

 
Gostaria de saber se alguem esta operando com conta real nos indices futuros e caso sim, se encontrou alguma dificuldade.
 
achaa:
Gostaria de saber se alguem esta operando com conta real nos indices futuros e caso sim, se encontrou alguma dificuldade.

Olá achaa... eu opero índice futuro em conta real. Pra ser bem sincero, o MetaTrader ainda tem falhas técnicas que impedem o desenvolvimento de algumas estratégias de alta frequência. Apesar do programa ser muito estável (pelo menos comigo nunca travou), existe ainda um problema de sincronização de dados com o servidor que estão tentando resolver. Se esse problema de sincronização de dados não for resolvido, basicamente as informações que você recebe no seu terminal MT5 passam a ser pouco confiáveis em relação ao tempo real do mercado. Resolvido esse problema, acredito que o MetaTrader passa a ser um programa respeitável no ambiente de negociação automatizada.

 
achaa:
Gostaria de saber se alguem esta operando com conta real nos indices futuros e caso sim, se encontrou alguma dificuldade.
Ola Achaa, estou utilizando e esta funcionando bem!
 

Eu tive alguns problemas com estrategias de alta frequência. Toda vez que saia de uma operação, era descontado o spread do resultado desta operação tanto no tp quanto no sl. Vcs chegaram a ver algo parecido com isso? Reparei tambem que os dados do backtest do mini e do cheio estao incorretos, pois o spread fica sempre fixo em 5 fazendo com que o ou o preço de compra ou o de venda esteja incorreto.

Vcs operam com EA's ou operam na mao? 

 
achaa:

Eu tive alguns problemas com estrategias de alta frequência. Toda vez que saia de uma operação, era descontado o spread do resultado desta operação tanto no tp quanto no sl. Vcs chegaram a ver algo parecido com isso? Reparei tambem que os dados do backtest do mini e do cheio estao incorretos, pois o spread fica sempre fixo em 5 fazendo com que o ou o preço de compra ou o de venda esteja incorreto.

Vcs operam com EA's ou operam na mao? 

Olá achaa, por mais engraçado que possa parecer, o esquema de backtests do MetaTrader no modo 'cada tick' não é baseado em ticks reais, mais sim num algoritmo proprietário da MetaQuotes, descrito no seguinte artigo:

https://www.mql5.com/en/articles/75

Atualmente estou operando no modo semi-automático (gray-box).
The Algorithm of Ticks’ Generation within the Strategy Tester of the MetaTrader 5 Terminal
The Algorithm of Ticks’ Generation within the Strategy Tester of the MetaTrader 5 Terminal
  • 2010.06.02
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 allows us to simulate automatic trading, within an embedded strategy tester, by using Expert Advisors and the MQL5 language. This type of simulation is called testing of Expert Advisors, and can be implemented using multithreaded optimization, as well as simultaneously on a number of instruments. In order to provide a thorough testing, a generation of ticks based on the available minute history, needs to be performed. This article provides a detailed description of the algorithm, by which the ticks are generated for the historical testing in the MetaTrader 5 client terminal.
 
Malacarne:
Olá achaa, por mais engraçado que possa parecer, o esquema de backtests do MetaTrader no modo 'cada tick' não é baseado em ticks reais, mais sim num algoritmo proprietário da MetaQuotes, descrito no seguinte artigo:

https://www.mql5.com/en/articles/75

Atualmente estou operando no modo semi-automático (gray-box).
Malacarne, o modo tick a tick é baseado em ticks reais, não teria sentido desperdiçar essa informação do market data, o que esse artigo está descrevendo é o algoritmo que gera ticks quando se seleciona a otimização no modo minuto a minuto e/ou OHLC buscando menor tempo de duração do backtesting.
 
Malacarne:

Olá achaa... eu opero índice futuro em conta real. Pra ser bem sincero, o MetaTrader ainda tem falhas técnicas que impedem o desenvolvimento de algumas estratégias de alta frequência. Apesar do programa ser muito estável (pelo menos comigo nunca travou), existe ainda um problema de sincronização de dados com o servidor que estão tentando resolver. Se esse problema de sincronização de dados não for resolvido, basicamente as informações que você recebe no seu terminal MT5 passam a ser pouco confiáveis em relação ao tempo real do mercado. Resolvido esse problema, acredito que o MetaTrader passa a ser um programa respeitável no ambiente de negociação automatizada.

Malacarne, pode descrever melhor que problema é esse de sincronização e se possível de onde saiu essa informação? obrigado.
 
figurelli:
Malacarne, pode descrever melhor que problema é esse de sincronização e se possível de onde saiu essa informação? obrigado.

Olá Figurelli,

vamos às respostas... Vou responder primeiro à primeira pergunta e logo depois, num outro post, a segunda pergunta.

Após procurar insistentemente por informações sobre o modo de funcionamento do modo 'Cada tick' do MetaTrader, encontrei as seguintes informações:

a) No artigo "The Algorithm of Ticks’ Generation within the Strategy Tester of the MetaTrader 5 Terminal" (https://www.mql5.com/en/articles/75):

"Strategy Tester of the MetaTrader 5 terminal uses only one mode of price modeling in testing - the generation of ticks on the basis of existing historical data on minute time frames of the used symbols".

b) No manual em inglês (http://data.mql5cdn.com/mt5/mql5/pdf/mql5.pdf):

 "The historical quotes data for financial instruments is transferred from the trading server to the MetaTrader 5 client terminal in the form of packed minute bars".

c) No manual em português (http://data.mql5cdn.com/mt5/mql5/pdf/mql5_portuguese.pdf):

"Os dados de cotação histórica para instrumentos financeiros são transferidos do servidor de negociação para o terminal cliente MetaTrader 5 na forma de barras de minuto empacotadas".

Ainda:

"O elemento mínimo do histórico de preços é a barra de minuto". 

E mais!!!

"Para testar a estratégia de negociação, nós precisamos de uma seqüência de ticks, na qual o trabalho do Expert Advisor será simulado. Assim, para toda barra de minuto, nós conhecemos os 4 pontos de controle, onde os preços definitivamente estiveram. Se uma barra tem apenas 4 ticks, então isso é informação suficiente para realizar um teste, mas geralmente o volume de tick é maior que 4. Portanto, existe a necessidade de gerar pontos de controle adicionais para ticks, que ocorreram entre os preços de Abertura, Máximo, Mínimo, e Fechamento."

Por fim:

"Ao testar no modo "Cada Tick", a função OnTick() do EA será chamado a cada ponto de controle. Cada ponto de controle é um tick de uma seqüência gerada. O EA receberá a hora e preço do tick simulado, assim como se estivesse trabalhando online."


Portanto, a não ser que meu inglês esteja muito enferrujado (pois antes de consultar o manual em português eu li tudo que pude a respeito nas fontes em inglês), nada me convence (pois não encontrei nenhuma referência a respeito!) que os ticks do modo 'Cada tick' são verdadeiros, pois no meu ponto de vista, todos os ticks são simulados!

Ainda: existem diversos scripts no MetaTrader capazes de baixar dados históricos do servidor... mas até hoje eu não encontrei nenhum script capaz de baixar ticks históricos do servidor... E, pra terminar, existem diversas empresas no mercado cujo core business é justamente a venda de informações históricas de ticks de ativos... já pensou se nós pudéssemos ter essa informação de graça diretamente do MetaTrader??? Uma pequena mina de dinheiro, concorda?

 

Abraços,
Malacarne 

The Algorithm of Ticks’ Generation within the Strategy Tester of the MetaTrader 5 Terminal
The Algorithm of Ticks’ Generation within the Strategy Tester of the MetaTrader 5 Terminal
  • 2010.06.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Creating Expert Advisors - automated trading systems in MQL5 The MetaTrader 5 terminal contains an integrated development environment for the development of fully automated strategies (trading robots), which can perform trading without any human intervention. Another name for these trading robots is Expert Advisors. Expert Advisors and...
 
Malacarne:

Olá Figurelli,

vamos às respostas... Vou responder primeiro à primeira pergunta e logo depois, num outro post, a segunda pergunta.

Após procurar insistentemente por informações sobre o modo de funcionamento do modo 'Cada tick' do MetaTrader, encontrei as seguintes informações:

a) No artigo "The Algorithm of Ticks’ Generation within the Strategy Tester of the MetaTrader 5 Terminal" (https://www.mql5.com/en/articles/75):

"Strategy Tester of the MetaTrader 5 terminal uses only one mode of price modeling in testing - the generation of ticks on the basis of existing historical data on minute time frames of the used symbols".

b) No manual em inglês (http://data.mql5cdn.com/mt5/mql5/pdf/mql5.pdf):

 "The historical quotes data for financial instruments is transferred from the trading server to the MetaTrader 5 client terminal in the form of packed minute bars".

c) No manual em português (http://data.mql5cdn.com/mt5/mql5/pdf/mql5_portuguese.pdf):

"Os dados de cotação histórica para instrumentos financeiros são transferidos do servidor de negociação para o terminal cliente MetaTrader 5 na forma de barras de minuto empacotadas".

Ainda:

"O elemento mínimo do histórico de preços é a barra de minuto". 

E mais!!!

"Para testar a estratégia de negociação, nós precisamos de uma seqüência de ticks, na qual o trabalho do Expert Advisor será simulado. Assim, para toda barra de minuto, nós conhecemos os 4 pontos de controle, onde os preços definitivamente estiveram. Se uma barra tem apenas 4 ticks, então isso é informação suficiente para realizar um teste, mas geralmente o volume de tick é maior que 4. Portanto, existe a necessidade de gerar pontos de controle adicionais para ticks, que ocorreram entre os preços de Abertura, Máximo, Mínimo, e Fechamento."

Por fim:

"Ao testar no modo "Cada Tick", a função OnTick() do EA será chamado a cada ponto de controle. Cada ponto de controle é um tick de uma seqüência gerada. O EA receberá a hora e preço do tick simulado, assim como se estivesse trabalhando online."


Portanto, a não ser que meu inglês esteja muito enferrujado (pois antes de consultar o manual em português eu li tudo que pude a respeito nas fontes em inglês), nada me convence (pois não encontrei nenhuma referência a respeito!) que os ticks do modo 'Cada tick' são verdadeiros, pois no meu ponto de vista, todos os ticks são simulados!

Ainda: existem diversos scripts no MetaTrader capazes de baixar dados históricos do servidor... mas até hoje eu não encontrei nenhum script capaz de baixar ticks históricos do servidor... E, pra terminar, existem diversas empresas no mercado cujo core business é justamente a venda de informações históricas de ticks de ativos... já pensou se nós pudéssemos ter essa informação de graça diretamente do MetaTrader??? Uma pequena mina de dinheiro, concorda?

 

Abraços,
Malacarne 


Malacarne, antes de mais nada parabéns pela qualidade de teu estudo e argumentos, acredito que esse tipo de análise serve de exemplo da complexidade e riqueza dessa plataforma fantástica que é o MT5 e é muito relevante para todos.

Tenho um grave defeito de não acreditar muito em manuais e artigos, principalmente do MetaTrader que tem vários mistérios que nem os próprios desenvolvedores conseguem as vezes decifrar.

Acredito que a frase "transferred from the trading server to the MetaTrader 5 client terminal in the form of packed minute bars" seja um desses mistérios, porque diz que os dados estão empacotados, mas os detalhes desses dados para mim é um segredo guardado a 7 chaves, principalmente quando o MT5 fechou o histórico de dados (como você bem comenta) e tem barrado vários sistemas que tentam de alguma forma fazer uma engenharia reversa sobre eles para atuar no mercado.

Na notícia do link abaixo é possível entender um pouco do valor da privacidade do que existe "dentro do pacote".

http://forexmagnates.com/metaquotes-vs-third-party-signal-providers-zulutrade-speaks-out/

Dessa forma, a um bom tempo tento entender o que existe dentro desse pacote, principalmente relacionado ao "tick by tick", tanto no backtesting como em tempo real, e minha humilde conclusão é que a riqueza das informações de ticks depende muito do servidor de origem, o que leva a uma lógica que os ticks são muito mais inteligentes que simples modelos de interpolação ou simulação por algoritmos.

Tenho um programa, por exemplo, que contabiliza no backtesting a cada tick, o número mínimo e máximo de ticks por minuto, sendo que divulgo alguns valores abaixo:

Teste 1) MetaQuotes-Demo - EURUSD (Conta Demo) - Min: 1 - Max: 107
Teste 2) ActivTrades - EURUSD (Conta Real) - Min: 1 - Max: 320
Teste 3) XPMT5-PRD - WINZ13 (Conta Real) - Min: 1 - Max: 1485
Teste 4) XPMT5-PRD - WINZ13 (Conta Demo) - Min: 1 - Max: 1221

Por exemplo, numa conta minha real na ActivTrades (Teste 2) consigo até 320 ticks em um minuto, sinceramente não acredito que sejam todos gerados por algoritmos.

Da mesma forma, comparando com o WINZ13 no servidor de produção da XP, consigo até 1485 ticks em 1 minuto em conta real.

Talvez você tenha toda razão, e talvez a teoria seja feita para não ser clara mesmo, mas para mim contra fatos não há argumentos e não consigo acreditar em toda a teoria apresentada pelas documentações pois a riqueza de detalhes de ticks da XP é para mim não fruto de algoritmos, mas sim da alta qualidade do provedor de market data da corretora.

Senão, gostaria de saber tua opinião (e demais) da razão de tanta diferença no número de ticks por minuto entre contas demonstração e real no Forex e da XP para as demais. 

Se houver uma boa lógica para isso que possa ser comprovada na prática mudo de opinião, pode ter certeza.

Obrigado.

MetaQuotes vs Third Party Signal Providers: ZuluTrade Speaks Out
MetaQuotes vs Third Party Signal Providers: ZuluTrade Speaks Out
  • 2004.06.01
  • Andrew Saks McLeod
  • www.financemagnates.com
ZuluTrade CEO Leon Yohai provides Forex Magnates with his perspective on MetaQuotes' publication of a warning encouraging the avoidance third party copy trade and signal providers. Company looks ah...
 
Malacarne:


P.S.: sugiro que você faça o mesmo tipo de teste que eu fiz e nos mande também os resultados!!! 

Malacarne, muito bom, são vários pontos levantados por ti e não sei se entendi bem todos, mas os riscos de operar com esse tipo de erro é alto, pois as decisões de compra e venda podem estar sendo tomadas sem dados precisos. 

Note também que os stops (stoploss e takeprofit) e ordens pendentes são executados/das automaticamente no servidor da corretora, e o sincronismo dos ticks reflete também nessas decisões de definições de stops, além claro de impactar nos backtestings se não temos ticks realistas.

Além disso me preocupa se não existe uma latência que possa comprometer o roteamento preciso das ordens, já que o MT5 é uma ferramenta com raízes no Forex, e talvez a experiência brasileira seja o primeiro case real de operação em bolsa onde estão sendo estressados vários fatores novos (alguns já apontados por ti) como ausência de spread, latência das conexões, falta de know how da plataforma, problemas de liquidez, etc.

Sugiro portanto criarmos uma força tarefa de testes, diagnóstico e proposição de soluções, partindo das premissas dos teus testes e indicador, e seguindo as seguintes etapas:

Etapa 1) Padronização dos servidores de teste

Esse problema acontece também com outros servidores, ou seja, teus indicadores rodando em duas instâncias, conectados por exemplo no MetaQuotes-Demo, apresentam também essa diferença? Seja como for, sugiro fazermos sempre testes em mais de um servidor e mais de um tipo de conta (demo e real).

Etapa 2) Padronização do algoritmo de testes

Em primeiro lugar, o programa de testes influencia muito nos resultados, ainda mais quando estamos contando ticks, portanto, como sugerido pela turma em https://www.mql5.com/en/forum/16130 recomendo a abertura e análise detalhada do código fonte. Mas de forma diferente, e, ao invés de teres de abrir o código fonte do teu programa, minha sugestão é desenvolvermos um programa padrão para esses testes, com código aberto para outros colegas aqui fazerem testes similares. Acredito que isso irá contribuir para rápida identificação dos problemas e soluções.

Outro ponto é que os indicadores também podem pesar no processamento, principalmente se o loop de varredura for muito longo e por um período muito longo, impactando em diferenças. 

Para isolar a contagem de ticks, minha ideia de programa é muito simples, baseado nas seguintes premissas:

- Coletar todos ticks recebidos a cada minuto do servidor e guardar apenas em variáveis na memória (sem operações de disco, evitando latência, ou até mesmo Prints em logs).
- Após um minuto completo de coleta exibir um comentário do tipo: "2013-12-14 03:46:00 - Ticks: 83 - OHLC (valores)"

Após criar um programa simples e rápido como esse (algum voluntário? se não aparecer eu me candidato ;-)  publicamos o código aqui até chegar a um consenso que é o mais compacto e menos intrusivo para testes.

Etapa 3) Esforço conjunto de execução dos testes

Com o software descrito fico à disposição para repetir teus testes, e também tenho certeza que vários colegas aqui podem colaborar, até porque estaremos fazendo um esforço conjunto de medição comparativa da qualidade dos ticks recebidos por todos utilizando um programa aberto.

Até onde eu saiba não vi nenhuma iniciativa do tipo mesmo nas comunidades de outros idiomas (e na principal em inglês).

Etapa 4) Análise e diagnóstico conjunto

Nessa etapa fazemos a análise e diagnóstico de todos dados coletados, buscando encontrar problemas e endereçar as soluções (que talvez seja apenas comunicar o help desk da MetaQuotes ou TI da corretora).

Fique à vontade para propor modificações nas etapas propostas, a ideia foi só apresentar um primeiro escopo. 

Aguardo tua opinião (e, claro, da comunidade) sobre essa força tarefa proposta e me coloco à disposição para ajudar no que for preciso. 

How fast is OnCalculate( ) ?
How fast is OnCalculate( ) ?
  • www.mql5.com
These problems usually occur when the market enters a "fast pace", with several orders ocurring at the same second, as shown in the picture attached.
 
figurelli:


Sugiro portanto criarmos uma força tarefa de testes, diagnóstico e proposição de soluções, partindo das premissas dos teus testes e indicador, e seguindo as seguintes etapas:

Fantástico! É esse tipo de iniciativa que torna essa comunidade verdadeiramente profissional. Sugiro abrirmos um novo tópico, descrevendo os motivos que levaram à abertura do mesmo. Além disso, sugiro, nesse novo tópico, padronizarmos a metodologia de testes para que possa ser replicável por qualquer pessoa e, principalmente, desenvolver conjuntamente o script que fará essa coleta de dados para comparação.

Me comprometo, assim que for aberto o novo tópico, a postar um draft de script para que possamos conjuntamente modificá-lo até ficar da maneira que consensualmente acharmos ideal.

Abraços,

Malacarne