Русский
preview
Como funções de cem anos atrás podem atualizar suas estratégias de trading

Como funções de cem anos atrás podem atualizar suas estratégias de trading

MetaTrader 5Indicadores |
101 0
Aleksej Poljakov
Aleksej Poljakov

Introdução

Analisar o estado atual do mercado financeiro é uma base essencial para o sucesso no trading. Isso permite aos traders avaliar a situação atual, prever possíveis mudanças nos preços e tomar decisões comerciais fundamentadas. Para esse tipo de análise, diversos métodos e modelos matemáticos podem ser utilizados.

Neste artigo, vamos discutir algumas funções matemáticas novas. Bem, não exatamente novas. Elas eram novas há cerca de 100 anos. Hoje, algumas dessas funções são bem esquecidas, e outras ainda estão em uso. Mas, por algum motivo, não são usadas no trading. Vamos tentar corrigir essa falha.


Funções de Rademacher

Do ponto de vista matemático, uma função é uma correspondência entre os argumentos da função e seus valores. Elas podem se parecer, por exemplo, com isso:


Mas no trading essas funções são usadas muito raramente. Para análise técnica, geralmente são aplicadas funções de janela:

A essência dessas funções é bastante simples. Pega-se uma quantidade pré-definida de preços. Cada preço é multiplicado por um certo coeficiente, calculado de uma forma bastante engenhosa e complicada. Os valores obtidos são somados e, como resultado, temos um indicador. Ou seja, o indicador é uma função do preço. E a principal pergunta do trading é: onde encontrar esses coeficientes, mas que sejam simples e compreensíveis?

Os coeficientes do indicador podem ser definidos usando a função de Rademacher. A fórmula dessa função é muito simples:

Onde p é a ordem da função, e sign é a função sinal:


Essa função é ainda mais simples visualmente. Por exemplo, a função de 1ª ordem consiste em dois segmentos.

Se ligarmos as extremidades desses segmentos ao zero, teremos o mesmo seno, só que quadrado. "Quadratisch. Praktisch. Gut". No entanto, nesse formato, essa função não é adequada para o trading. Precisamos fazer algumas modificações para obter uma versão discreta.

Vamos supor que decidimos criar um indicador com base nas funções de Rademacher. Primeiro, definimos o período N. Então, o valor do i-ésimo coeficiente desse indicador pode ser calculado com a fórmula:

Por exemplo, assim é a função discreta de Rademacher de 2ª ordem com período 8.

Agora podemos começar a desenvolver o indicador com base nessas funções. O período do indicador deve ser uma potência de dois:


Então, o indicador será composto por funções de Rademacher da ordem 0 até s. Por exemplo, para um indicador com período igual a 4, podemos usar as funções de ordem 0, 1 e 2.

Vamos ver como esse indicador funciona. Primeiro, precisamos calcular os valores de todas as funções em cada ponto do nosso futuro indicador.

p = 0 1 1 1 1
p = 1 1 1 -1 -1
p = 2 1 -1 1 -1

Agora, precisamos encontrar o peso de cada função. Para isso, multiplicamos os coeficientes da função pelos respectivos preços e somamos os resultados. Depois disso, dividimos a soma obtida pelo período do indicador. Assim, obtemos três pesos para cada função:

O peso da função de ordem 0 é a conhecida SMA. Todos os outros pesos podem ser vistos como velocidades médias de uma tendência linear com deslocamento e redução dos períodos da tendência.

Conhecendo os coeficientes de peso das funções, podemos começar a calcular os valores do indicador. Para isso, precisamos multiplicar os pesos pelos valores das funções de Rademacher correspondentes a cada ponto do indicador. Em termos simples, ao calcular os pesos, as entradas foram os preços, e a soma foi feita por linhas. Ao calcular o indicador, as entradas devem ser os pesos, e a soma deve ser feita por colunas. Obtemos quatro valores para o indicador:

Ou seja, a alteração de um único preço leva à mudança dos valores do indicador ao longo de toda sua extensão. Por um lado, pode-se dizer que ele “repinta”. Por outro, podemos dizer que o indicador ajusta seu modelo de movimento de preço de acordo com os novos dados recebidos.

Você já consegue imaginar como esse indicador pode aparecer no gráfico? Existem várias possibilidades. Ao construir o indicador, não somos obrigados a usar o conjunto completo de funções de Rademacher; podemos nos limitar a uma ordem menor. Por exemplo, um indicador com período 16, construído com funções das ordens 0 a 2, tem a seguinte aparência:

A principal característica do indicador baseado nas funções de Rademacher é que ele não busca suavizar o preço. Qualquer mudança no preço é tratada como uma combinação de várias tendências lineares, e o indicador exibe os níveis médios dessas tendências.


Funções de Walsh

Qualquer série temporal pode ser modelada com polinômios trigonométricos. O movimento do preço pode ser tão complexo quanto for, mas com os coeficientes certos nos senos e cossenos, é possível garantir que os valores do polinômio coincidam exatamente com os da série temporal.

Porém, calcular senos e cossenos é demorado e complexo. As funções de Walsh ajudam a simplificar bastante esses cálculos. Normalmente, essas funções são definidas da seguinte maneira… Eu olhei para essa definição, e entendi por que elas não são populares entre os traders.

Enfim, a definição clássica das funções de Walsh não nos serve. Precisamos de algo simples e visual. Por isso, vamos calcular a função de ordem p da seguinte forma:

Essa abordagem para definir as funções de Walsh nos permite construir um análogo bastante discreto da transformada discreta de Fourier. As funções com cossenos correspondem às partes reais dessa transformada, e as funções com senos, à parte imaginária. As funções senoidais capturam os padrões de tendência, enquanto as cossenoidais captam os momentos de mudança de tendência. Graças a essa combinação, o indicador suaviza os preços, e quanto maior a ordem das funções, mais acentuada é a suavização.

A única limitação é que a ordem das funções não pode ultrapassar o período do indicador. Por exemplo, se você decidir usar um indicador com período igual a 8, então poderá usar funções de ordem 0 a 7.


Quebre o sistema, opere livremente

As funções que acabamos de estudar já provaram sua utilidade. Olhe para o seu celular, pois em algum lugar dentro dele existem funções de Walsh. Mas… Em qualquer área sempre existe esse “mas”. Se não há um “mas”, ou tudo está realmente perfeito (o que é improvável), ou estão escondendo alguma coisa de você. Vamos quebrar as regras, não por rebeldia, mas para expandir os horizontes.

As funções de Rademacher são baseadas em senos. O seno é uma função ímpar:


O que isso significa, ninguém sabe ao certo, mas (mais um “mas”) com essa propriedade de imparidade podemos representar modelos de tendência no movimento dos preços. E se quisermos suavizar a série de preços? Então vamos precisar de uma função par. Por exemplo, o cosseno.

A versão suavizada da função de Rademacher de ordem p pode ser definida da seguinte maneira:

Um indicador construído com essas funções também acompanhará as tendências. Mas essas tendências serão medidas em relação ao centro do indicador, ou seja, ele mostrará os momentos de reversão da direção da tendência.

O sistema de funções de Walsh é semelhante ao sistema de polinômios trigonométricos. Ou seja, à transformada de Fourier. Essas funções foram originalmente criadas como uma alternativa mais simples a essa transformada. As funções de Walsh não são tão precisas, mas seu cálculo era extremamente rápido e exigia um número mínimo de operações. Para os computadores da época, isso era algo crucial.

Mas (mais uma vez, “mas”), existe ainda outra transformada que pode ser usada para criar outro sistema. Trata-se da transformada de Hartley. Essa transformada é baseada em somas de senos e cossenos. E os coeficientes dessa função podem ser calculados assim:

As funções podem ser simétricas, e nesse caso elas suavizam os preços. Ou podem ser assimétricas, e então essas funções vão acompanhar tendências. Um indicador construído com essas funções tem a seguinte aparência.

A próxima modificação que faremos diz respeito à forma visual do indicador. Qualquer função de ordem 0 é equivalente à SMA. Mas estamos acostumados a ver a SMA representada como uma linha no gráfico. Vamos fazer o mesmo, em cada barra, vamos calcular apenas o último valor do indicador e exibi-lo no gráfico. Assim veremos a linha familiar.

Também é possível construir um oscilador com base nessas funções. O indicador precisará de uma modificação muito pequena. Todos os coeficientes das funções de ordem 0 devem ser zerados. Dessa forma, o oscilador resultante mostrará as oscilações do indicador linear em relação à SMA.

Como os dois últimos indicadores utilizam diferenças em seus cálculos, o atraso deles será pequeno. E isso pode ter um impacto positivo no trading.


Estratégias de trading

Agora vamos ver como esses indicadores podem ser usados no trading.

Na primeira estratégia, vou usar a capacidade do indicador de acompanhar tendências. As regras da estratégia são muito simples:

  • se o preço atual estiver abaixo do menor valor do indicador, e o preço anterior for maior que o atual, então abrir uma posição de buy e fechar posições de sell;
  • se o preço atual estiver acima do maior valor do indicador, e o preço anterior for menor que o atual, então abrir uma posição de sell e fechar posições de buy.

Apesar da simplicidade, a estratégia parece funcionar bem.

Com base no indicador linear, também é possível construir uma estratégia na qual os sinais são gerados pelo cruzamento entre o preço e a linha do indicador:

  • se o preço atual estiver acima da linha do indicador, e o preço anterior estiver abaixo, então abrir uma posição de buy e fechar posições de sell;
  • se o preço atual estiver abaixo da linha do indicador, e o preço anterior estiver acima, então abrir uma posição de sell e fechar posições de buy.

Os resultados do teste não causam um efeito “uau”. Mas você sempre pode usar vários indicadores, cada um com seus próprios parâmetros. Cada indicador irá gerar seus próprios sinais e trazer um pequeno lucro.

Essa estratégia pode ser levemente modificada, isto é, em vez dos valores de preço, usar os valores de outro indicador. A intuição sugere que um indicador deve ser suavizante, e o outro, de tendência. O resultado dessas mudanças pode ser o seguinte.

Também é possível usar um oscilador baseado nas funções discutidas para gerar sinais.

Vamos primeiro testar uma versão simples. Os sinais serão gerados no cruzamento do zero pela linha do indicador. Se o oscilador muda de sinal de negativo para positivo, abrimos uma posição de buy e fechamos as posições de sell. Se o sinal muda de positivo para negativo, o sinal oposto é gerado.

Essa abordagem não inspira muita confiança, e seu uso na prática parece bastante duvidoso.

Vamos então fazer uma modificação nessa estratégia. As posições de buy serão abertas quando o oscilador atingir um determinado valor mínimo predefinido. As posições de sell serão abertas quando o valor do indicador ultrapassar um certo nível. O fechamento das posições acontecerá quando o oscilador cruzar o zero.

Essa mudança na lógica de entrada melhora um pouco os resultados.

Se os resultados obtidos ainda não forem satisfatórios, sempre é possível tentar ajustar os parâmetros.

Como você pode ver, o uso de novos indicadores no trading é bastante justificável. Além disso, as funções discutidas neste artigo permitem a criação de estratégias ainda mais complexas. Todas as funções de ordem 1 ou superior representam osciladores independentes. Você pode montar um banco de osciladores, com base em funções de diferentes tipos, ordens e períodos. Com esses indicadores, é possível gerar sinais de trading mais precisos.


Considerações finais

O uso de funções antigas e renovadas no trading abre novas possibilidades para analisar o movimento dos preços e tomar decisões de negociação. Elas podem ajudar a identificar padrões ocultos no comportamento do preço e a prever futuras mudanças. Com base nelas, é possível desenvolver estratégias de trading eficazes. Além disso, as funções de Rademacher e Walsh também podem ser utilizadas para filtrar ruídos e melhorar a qualidade das previsões.


Durante a elaboração deste artigo, foram utilizados os seguintes programas:

Nome Tipo Características
New Function Indicador
  • Type – tipo de funções usadas na construção do indicador;
  • N – parâmetro que define a ordem do indicador, period = 2^N;
  • P – ordem máxima das funções utilizadas. Para funções de Rademacher, P<=N, para as demais, P<=2^N-1;
  • Shift – deslocamento do indicador, permite visualizar o comportamento do indicador em dados históricos.
New Function Lin Indicador
O indicador calcula o último valor conhecido do sistema de funções escolhido e o exibe no gráfico.
New Function Osc Indicador
Oscilador construído com funções de ordem 1 e superiores.
EA New Function Expert Advisor Para gerar sinais, utiliza-se o desvio do preço atual em relação aos valores mínimos/máximos das funções. 
EA New Function Lin Expert Advisor
Os sinais são gerados no cruzamento entre o preço e a linha do indicador New Function Lin.
EA New Function Lin 2 Expert Advisor
Os sinais são gerados no cruzamento das linhas de dois indicadores New Function Lin.
EA New Function Osc Expert Advisor
Os sinais do EA são gerados quando a linha do indicador New Function Osc cruza o zero.
EA New Function Osc 2 Expert Advisor
Os sinais do EA são gerados quando a linha do indicador New Function Osc cruza níveis específicos.
Os valores dos níveis são definidos nos parâmetros de entrada – LvlBuy e LvlSell.

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/17252

Simulação de mercado: Position View (I) Simulação de mercado: Position View (I)
O conteúdo, que veremos a partir de agora, é muito mais complicado em termos de teorias e conceitos. Tentarei deixar o conteúdo o mais simples quanto for possível fazer. A parte referente a programação em si. É até bastante simples e direta. Mas se você não compreender toda a teórica, que está debaixo dos panos. Ficará completamente sem meios para poder melhorar, ou mesmo adaptar o sistema de replay/simulador. A algo diferente do que irei mostrar. Meu intuito não é que você simplesmente compile e use o código que estou mostrando. Quero que você aprenda, entenda e se possível, possa criar algo ainda melhor.
Do básico ao intermediário: Eventos em Objetos (III) Do básico ao intermediário: Eventos em Objetos (III)
Neste artigo iremos preparar o terreno para algo que será visto no próximo artigo. Mas também iremos ver como permitir que um objeto do tipo OBJ_LABEL possa ser editado e movido de forma completamente interativa. Ou seja, poderemos mudar tanto o texto quanto a posição de um objeto do tipo OBJ_LABEL, sem abrir a janela de propriedades do objeto.
Do básico ao intermediário: Eventos em Objetos (IV) Do básico ao intermediário: Eventos em Objetos (IV)
Neste artigo iremos terminar o que foi começado no artigo anterior. Ou seja, uma forma total e completamente interativa de redimensionar os objetos diretamente no gráfico. Apesar do fato de muitos imaginarem que para fazer tal coisa, seria necessário muito mais conhecimento sobre MQL5. Você irá notar que usando conceitos simples e um conhecimento muito básico, podemos implementar uma forma de trabalhar com os objetos diretamente no gráfico. Algo que terá um resultado bem divertido e bastante interessante.
Redes neurais em trading: Modelos bidimensionais do espaço de conexões (Chimera) Redes neurais em trading: Modelos bidimensionais do espaço de conexões (Chimera)
Descubra o inovador framework Chimera, um modelo bidimensional do espaço de estados que utiliza redes neurais para analisar séries temporais multidimensionais. Esse método oferece alta precisão com baixo custo computacional, superando abordagens tradicionais e arquiteturas do tipo Transformer.