Ajuda para o MetaTrader 5Trading algorítmico, robôs comerciaisTicks reais e gerados

Ticks reais e gerados

Para testar e otimizar os experts você precisa de ticks, já que o expert funciona com a sua ajuda. O teste pode ser realizado de acordo com ticks reais fornecidos pela corretora, ou ticks gerados pelo testador de estratégias com base em dados de minutos.

Ticks reais #

O teste e a otimização de acordo com ticks reais são os que mais se aproximam das condições reais. Em vez de ticks gerados com base em dados de minutos, são usados ticks reais (segundo instrumentos financeiros) acumulados pela corretora. Esses são ticks provindos da bolsa e dos provedores de liquidez.

Ao testar com ticks reais, o spread nos limites da barra de minutos pode ser alterado, enquanto ao gerar ticks dentro nessa barra, é utilizado o spread fixado na barra correspondente.

Se, segundo um instrumento, for transmitido o livro de ofertas, as barras serão construídas a partir dos preços de execução da última transação Last. O evento de chegada OnTick ativa-se em todos os ticks, independentemente do fato de haver, ou não, preço Last.

Por favor, note que as transações são sempre executadas segundo os preços Bid e Ask, mesmo se o gráfico for construído a partir dos preços Last. Por exemplo, se, para a negociação, o expert usar apenas o preço de abertura da barra (particularmente, o Moving Average embutido), então, você receberá um sinal de acordo com um preço (Last), mas a transação será executada de acordo com outro preço (Bid ou Ask, dependendo da direção). Ao usar o modo de geração "Todos os ticks", as barras serão construídas de acordo com os preços Bid, mas as transações serão executadas segundo os preços Bid e Ask. Com isso, o Ask é calculado como o Bid + o spread fixo correspondente à barra de minutos.

Se no histórico do símbolo existir uma barra de minutos, mas, se, nesse minuto, não houver dados de ticks, o testador irá gerar ticks no modo "Todos os ticks". Isso permite que você teste o expert de acordo com o período previsto, no caso de os dados de ticks estarem incompletos na corretora. Se, no histórico do símbolo, não existir uma barra de minutos, mas, se, nesse minuto, houver dados de ticks, então, esses ticks serão ignorados. Os dados de minutos são considerados mais confiáveis.

Os dados de ticks são significativamente maiores do que os dados de minutos. Ao executar pela primerira vez o teste, o seu download pode levar muito tempo. Os downloads dos dados de ticks são armazenados por meses em arquivos TKC no catálogo \bases\[nome do servidor de negociação]\ticks\[nome do símbolo]\.

Criação de ticks #

Os dados de ticks são gerados pelo testador com base nas entradas cache momentâneas em formato de números inteiros. Ou seja, o testador copia os históricos de dados necessários da plataforma e os transfere para o formato de número inteiro para acelerar os cálculos.

No testador de estratégias existem vários modos de gerar ticks. Abaixo está descrito o modo mais preciso, "Todos os ticks".

Para barras que tenham diversos volumes de ticks, a geração de ticks flui de modo diferente:

Volume de tick = 1

Para uma barra com um volume de tick igual a um, não ocorre a geração de ticks, nela é inscrito um tick com o valor Close (fechado):

O volume do tick é igual a uma unidade

Volume de tick = 2

Também não se geram ticks para barras com dois ticks, primeiro é inscrito um tick com o valor Open (aberto), depois é inscrito um tick com o valor Close (fechado):

O volume do tick é igual a dois

Volume de tick = 3

Para barras que tenham 3 ou mais ticks existem vários esquemas de geração de ticks, dependendo da sua quantidade.

Esquema de desenvolvimento de barras

Para barras que tenham três ou mais ticks existem apenas quatro esquemas de formação:

Variante de desenvolvimento

Imagem

O preço tomou uma direção e voltou ao nível do preço de abertura. Assim, a barra terá apenas o valor High (o preço mais alto) ou apenas o valor Low (o preço mais baixo).

Vela altista

Vela baixista

O preço tomou uma direção e voltou, atingindo o nível de abertura. Nesse caso, a barra terá apenas o valor High (o preço mais alto) ou apenas o valor Low (o preço mais baixo), embora os preços de abertura e de fechamento não sejam iguais.

Vela altista

Vela baixista

O preço tomou uma direção, mas não atingiu o preço de abertura ao regressar.

Vela altista

Vela baixista

O preço deslocou-se apenas alguns pontos para um lado. Nesse caso, a barra não terá os valores High e Low.

Vela altista

Vela baixista

Geração de ticks para barras com três ou mais ticks

A geração de ticks ocorrerá através de pontos de apoio. A quantidade destes pontos não pode exceder o volume de ticks, e não pode ser superior a 11 (o ponto do preço de abertura é ignorado).

Os pontos de apoio são divididos em três partes: para a formação de uma sombra de abertura, proporção da vela (distância entre High e Low) e sombra de fechamento.

Velas

Dependendo do número de ticks, são possíveis as seguintes distribuições de pontos de apoio:

Quantidade de pontos de apoio

Sombra de abertura

Proporção da vela

Sombra de fechamento

11

3

5

3

10

2

6

2

9

2

5

2

8

2

4

2

7

2

3

2

6

1

4

1

5

1

3

1

4

1

2

1

3

1

1

1

  • Se a vela não tiver qualquer uma das sombras, os pontos de apoio da sombra correspondente são dados à proporção da vela.
  • A proporção da vela é gerada pelo número ímpar de pontos de apoio. Se a proporção tiver um número par de pontos de apoio, o ponto "extra" é dado a uma das sombras, se ela já tiver dois pontos. Caso contrário, o ponto "extra" simplesmente desaparece.

Distribuição ideal (3-5-3)

Os pontos de apoio são calculados como o número de pontos do preço de abertura. A distribuição ideal de pontos (3-5-3) é calculada da seguinte forma:

Vela altista

Cálculo dos pontos de apoio

Imagem

  • Open
  • 3/4*(O – L)
  • 1/2*(O – L)
  • Low
  • (H – L)/3
  • (H – L)*3 – 1
  • 2/3*(H – L)
  • 2/3*(H – L) – 1
  • High
  • 3/4*(H – C)
  • 1/2*(H – C)
  • Close

Vela altista

Vela baixista

Cálculo dos pontos de apoio

Imagem

  • Open
  • 3/4*(O – H)
  • 1/2*(O – H)
  • High
  • (L – H)/3
  • (L – H)/3 + 1
  • 2/3*(L – H)
  • 2/3(L – H) + 1
  • Low
  • 3/4*(L – C)
  • 1/2*(L – C)
  • Close

Vela baixista

Velas "Doji"

Se a vela for "Doji" (Close = Open), serão analisadas as velas anteriores. Se a vela anterior estivesse em ascenção, a atual será considerada descendente, e vice-versa.

Velas "Doji"

Construção da sombra a partir de três pontos

Se a sombra for gerada com a ajuda de três pontos de apoio e os valores inteiros forem iguais a 3/4 ou 1/2 do tamanho da sombra (isso acontece quando a diferença entre open e low ou open e high não excede 2 pontos, isto é, quando a distância de passos do preço à frente e atrás é igual), a geração de uma sombra varia da seguinte forma:

Vela altista

Cálculo dos pontos de apoio

Imagem

  • Open
  • Open – 1
  • Open
  • Low

Vela altista

Vela baixista

Cálculo dos pontos de apoio

Imagem

  • Open
  • Open + 1
  • Open
  • High

Vela baixista

Da mesma forma é gerado o fechamento da sombra.

Construção de uma sombra a partir de dois pontos

Se a sombra for gerada com a ajuda de dois pontos de apoio, a geração ocorre da seguinte forma:

Vela altista

Cálculo dos pontos de apoio

Imagem

  • Open
  • Open + 1
  • Low

Vela altista

Vela baixista

Cálculo dos pontos de apoio

Imagem

  • Open
  • Open – 1
  • High

Vela baixista

Da mesma forma é gerado o fechamento da sombra.

Construção da proporção da vela

A proporção da vela é gerada como ondas em ciclos. Se Prev = Low (o preço anterior é Low), é usado o ciclo:

  • N1 = Prev + Step
  • N2 = Prev + Step – 1
  • Prev = N2

Se Prev = High (o preço anterior é High), é usado o ciclo:

  • N1 = Prev – Step
  • N2 = Prev – Step + 1
  • Prev = N2

Aqui:

N1, N2 – são os pontos de apoio de um ciclo;
Prev – é o preço anterior;
Step – é o tamanho do passo. O passo é calculado segundo a seguinte fórmula: (H – L – 1)/(Número de ciclos) + 1;
O número de ciclos é calculado segundo a seguinte fórmula: (Número de pontos de apoio na proporção + 1)/2.

Proporção da vela

Ticks intermediários

Os ticks intermediários entre os pontos de apoio são gerados segundo as seguintes regras:

  • Se o número de ticks for superior ao número de pontos entre pontos de apoio, é gerada uma "serra" (valor inicial de +/– 1).
  • Se entre os pontos de apoio houver muitos pontos, é gerada uma sequência linear de ticks.

Modos de gerar ticks #

Na janela configurações do testador de estratégias você pode selecionar o modo de geração de ticks. Estão disponíveis as seguintes variantes:

Todos os ticks

Nesse modo são gerados todos os ticks: OHLC, bem como intermediários. A ordem dessa geração de ticks está descrita acima.

OHLC em M1

Nesse modo são gerados apenas os ticks OHLC das barras de minuto. Se o volume de ticks da vela for superior a 4, são gerados apenas os valores Open, High, Low e Close. Se o volume de ticks for inferior a 4, são aplicadas as regras de geração descritas acima.

A escolha desse modo não significa que o teste ou a otimização ocorra justamente no período M1. Por exemplo, ao escolher o período H1 no modo "OHLC em M1", o preço será gerado em cada barra de minuto para os valores Open, High, Low e Close. Além disso, o evento OnTick() do expert também será executado quatro vezes por minuto: na abertura, no fechamento, no mínimo e no máximo de cada barra de minuto, embora o teste seja conduzido em H1.

Na verdade, os valores OHLC estão presentes nos históricos de dados. Assim, ao realizar o teste, é gerado somente o tempo de passagem dos ticks Open, High, Low e Close, os valores dos preços podem ser tirados do histórico.

Apenas preços de abertura

Nesse modo, ocorrerá a geração de valores OHLC das barras do timeframe escolhido para testar. A função do expert OnTick() é executada apenas no início da barra (segundo o valor Open). Devido a essa característica, os níveis de stop e as ordens pendentes não podem funcionar segundo o valor declarado (especialmente ao testar em timeframes antigos). Mas isso permite realizar rapidamente o teste de avaliação do expert.

As exceções são os períodos W1 e MN1, para os quais as barras são geradas uma vez por dia e não uma vez por semana ou por mês, respetivamente.

Há uma série de limitações no aplicativo do modo "Apenas preços de abertura":

  • Você não pode usar o modo de negociação "Atraso aleatório";
  • No expert testado não é possível acessar dados do timeframe inferiores aos usados para o teste ou a otimização. Por exemplo, se o teste ou a otimização ocorrerem no período H1, você pode acessar os dados de H2, H3, H4, etc., mas não os dados de M30, M20, M10, etc. Além disso, os timeframes mais antigos acessados devem ser múltiplos do timeframe de teste. Por exemplo, ao testar no período M20 não poderá acessar o timeframe M30, mas pode acessar o H1. Essas limitações se devem à impossibilidade de receber dados inferiores e não múltiplos dos timeframes das barras que são gerados ao testar/otimizar.
  • As limitações ao acesso de dados de outros timeframes se estendem a outros símbolos, cujos dados são usados pelo expert. Embora, nesse caso, o primeiro timeframe que acessou durante o teste ou a otimização é utilizado pelas limitações para cada símbolo. Por exemplo, o teste é realizado no símbolo e período EURUSD H1, o expert acessou pela primeira vez o símbolo GBPUSD M20. Nessa situação, o expert poderá, no futuro, usar os dados EURUSD H1, H2, etc., bem como GBPUSD M20, H1, H2, etc.

O modo de geração de todos os ticks é o mais preciso, mas, ao mesmo tempo, o mais lento. Para um teste ou uma otimização rápidos, mas grosseiros, você deve usar o modo "Apenas preços de abertura".

Cálculos matemáticos #

Esse modo permite usar o testador de estratégias para cálculos matemáticos. Para isso, não é necessário carregar o histórico de dados e a informação sobre os símbolos. Além disso, nele não são gerados ticks. Em experts testados sucessivamente são oferecidas apenas as funções OnInit(), OnTester() e OnDeinit().

Ao incluir esse modo, na qualidade de critério de otimização, é aplicado automaticamente o modo "Critérios de otimização do usuário". Todos os campos nas configurações do testador, exceto o modo de otimização e a seleção do expert, se tornam inativos.

Os cálculos matemáticos são úteis para tarefas de pesquisa do extremum de uma função matemática, cujo valor deve voltar do OnTester(). A otimização é realizada na pesquisa do valor máximo da função. Quando existe um grande número de combinações de parâmetros de entrada de uma função matemática, recomendamos que você use um "Algoritmo genético". Isso permite acelerar significativamente a pesquisa do extremum.