English Русский 中文 Español Deutsch 日本語
Uma Sandbox Aleatória

Uma Sandbox Aleatória

MetaTrader 4Exemplos | 25 setembro 2015, 09:35
790 0
Clerin
Clerin

Este artigo destina-se a ajudar os usuários a compreenderem melhor as medidas de desempenho dos Expert Advisor oferecidos no terminal MetaTrader, como o fator de lucro ou rebaixamento relativo. Isto é facilitado com o uso interativo do "game sandbox", imitando o desempenho de EAs e seus resultados.


Introdução

Como podemos saber se o desempenho de um Expert Advisor é realmente bom?

MetaTrader oferece uma variedade de métricas como padrão para ajudar-nos a compreender o desempenho de um EA durante a negociação, backtesting e otimização. Estes dados são muitas vezes ignorados ou mal interpretados, simplesmente porque os novos operadores não têm um pool grande o suficiente de resultados para comparar os números. Pode levar meses ou mesmo anos para um trader gerar dados e experiência suficientes para entender completamente o que constitui um fator de lucro bom ou um rebaixamento aceitável.

Embora existam muitos lugares para encontrar dicas, é da natureza humana ignorar essas informações, a tendência é nós mesmos testarmos as coisas para tirarmos as nossas próprias conclusões. Infelizmente isso pode levar a muitos erros dispendiosos. Este artigo tem como objetivo oferecer uma sandbox, onde os usuários podem rapidamente, facilmente e com segurança explorar os significados mais profundos por trás das métricas de desempenho oferecidos pelo terminal MetaTrader, sem ter que confiar cegamente nos conselhos dos outros, ou esperar meses, ou anos para gerar um grande conjunto de dados testados de diferentes EAs.

Existe um arquivo Excel simples anexado a este artigo (numa pasta zip na parte inferior desta página) que irá gerar instantaneamente 1000 comércios aleatórios e exibir as métricas de desempenho relevantes oferecidas pelo terminal MetaTrader, juntamente com gráficos. Isso simula repetidamente os resultados escritos e testados de uma nova estratégia de Expert Advisor com o clique de um botão. Vários parâmetros de entrada podem ser alterados e uma grande quantidade de dados simulados relevantes de backtest, randomizados aleatoriamente, podem ser gerados instantaneamente. Isso cria uma experiência muito rápida e de fácil interatividade que muitos traders podem achar interessante e útil.

Os dados na coluna de resultados estão definidos para gerar automaticamente uma nova saída a cada vez que a planilha de cálculo é alterada. Para gerar novos dados basta selecionar qualquer célula vazia e pressionar o botão "delete" (isso não irá alterar a célula selecionada, mas fará com que a planilha do Excel atualize, e assim novos números aleatórios serão gerados). Estas negociações aleatórias são exibidas em três gráficos separados ao lado de suas métricas padrão. Há três planilhas de cálculo no arquivo do Excel. A primeira planilha contém as entradas, gráficos e saídas (Inputs, graphs and outputs). A segunda planilha contém os cálculos simulados das negociações (trade calculations). A terceira planilha contém os cálculos para determinar as taxas de vitórias esperadas para cada negociação (expected win rate %).

Atividade: Abra o arquivo Excel, selecione uma célula vazia na primeira planilha e pressione a tecla "delete" para gerar aleatoriamente um conjunto de resultados. Cada vez que a tecla "delete" é pressionada, um novo conjunto de resultados é gerado aleatoriamente.

A primeira planilha contém 3 gráficos, ao lado de suas métricas relevantes:

  1. Executa o total de vit´roias/perdas, onde vitórias = 1, loss= -1 ( acumulative win/loss).
  2. Executa lucro/perdas quando se usa um tamanho de lote constante. (Cumulative Profit / Loss for Constant Lotsize)
  3. Executa lucros/perdas quando se usa um tamanho de lote dinamicamente ajustado, com base no risco em porcentagem do capital a cada negociação. (Cumulative Profit / Loss for Compounded Lotsize)

Entradas (inputs)

  • Iniciando Capital (Starting Capital).
  • Stop Loss, medida como um decimal (Stop Loss).
  • Risco: Relação de Recompensa, multiplicar o stop loss por este número, em seguida, soma o spread para obter o take profit (Risk:Reward Ratio).
  • Tamanho do Lote estático, para os cálculos no segundo gráfico (Static lotsize).
  • % Capital de Risco por Negociação, para cálculos no terceiro gráfico (% Capital Risked per Trade).
  • Spread (medida como um decimal).
  • £ por Pip por 1 Lote Padrão, para cálculos no terceiro gráfico - 1 lot  = 100,000 (£ per Pip per 1 Standard Lot).
  • Forçar Melhor Desempenho, aumenta artificialmente o % de vitórias por este montante na expectativa aleatória do acaso (Force Better Performance %).

Saídas (Outputs)

  • Percentual de vitórias esperada, % de vitória para determinado SL: relação de TP e spread por negociação (Expected Win %) .
  • Os resultados reais do percentual de vitórias, resultado real da randomização (Actual Win %).
  • Máximo de vitórias consecutivas (Max Wins in Row).
  • Máximo de perdas consecutivas (Max Losses in Row).
  • Fator de lucro, ganhos brutos / perdas brutas (Profit Factor).
  • Rebaixamento Relativo, % de maior rebaixamento (Max Relative Drawdown %).
  • Percentual de retorno sobre o investimento (ROI - Return on Investment %).

Premissas

  • Apenas uma posição aberta a qualquer momento.
  • Cada negociação executa o stop loss ou take profit, sem trailing stop.
  • Cada negociação usa o mesmo stop loss.
  • O take profit é sempre definido como um múltiplo do stop loss.
  • A percentagem de negócios vencedores baseia-se na proporção de SL: TP e spread, assumindo uma distribuição aleatória.
  • Spread fixo.
Atividade: Brincar com a alteração das várias opções de entrada e observar como isso afeta as formas de gráficos e os resultados de saída, especialmente o fator de lucro e o rebaixameto relativo.


Dados Gerados Aleatoriamente

Os cálculos dos resultados na planilha do Excel supõe que os mercados são perfeitamente aleatórios, e também que as negociações são colocadas aleatoriamente nestes mercados (é assim por uma questão de simplicidade e não necessariamente uma indicação sobre qualquer verdade dos mercados).

Às vezes as pessoas assumem que o resultado de cada negociação somente pode ser vitória ou perda, então se o stop loss e o take profit são ambos do mesmo tamanho, isso significa que a chance aleatória e de 50% de vencedores e 50% de perdedores. É tentador presumir que simplesmente invertendo a direção dos negócios, tal sistema viraria uma estratégia perdedora numa estratégia vencedora. A realidade dissipa rapidamente essa suposição.

Independentemente de saber se os mercados são de fato aleatório ou não, os traders devem pagar spread em suas negociações, inclinando automaticamente as probabilidades contra o trader. As chances de ganhar ou perder são baseadas em quão longe do preço de abertura da posição são colocados o stop loss e o take profit, e ainda, o quanto essas duas distâncias são distorcidas pelo spread. Os cálculos são mostrados na segunda planilha do arquivo.

Por exemplo: vamos assumir um stop loss de 10 pips, um take profit de 10 pips e o spread de 2 pips. Se o mercado se move 10 pips a favor da negociação, então o ganho é de 10 pips no take profit, em seguida, 2 pips são pagos no spread, efetivamente o ganho líquido é de 8 pips. Se o mercado se move 10 pips contra a negociação, então a perda é de 10 pips no stop loss, em seguida, 2 pips são pagos no spread, efetivamente a perda líquida é de 12 pips. A razão entre a distância percorrida em pips pelo mercado em qualquer direção é na proporção de 10:10, mas os pips equivalentes ganhos ou perdidos é na proporção de 08:12.

Para garantir que a quantidade de dinheiro perdido no stop loss seja a quantidade de dinheiro ganho no take profit, podemos simplesmente deixar o lucro correr um pouco mais e fechar o stop loss mais cedo pelo mesmo montante, assim cobre-se o spread . Portanto, o stop loss seria configurado para 8 pips (para uma perda de 10 pips) e o lucro seria definido para 12 pips (para um ganho de 10 pips). Caso o preço "aterrise" em qualquer ponto neste intervalo, então a chance de alcançar o take profit é: 1- (12 / (8 + 12)) = 0,4 = 40%. A chance de acertar o stop loss é o inverso, ou seja, 60%.

A tabela e o gráfico na terceira planilha oferecem alguns exemplos. Quanto maior a proporção de stop loss para ter lucro, menor é o efeito do spread sobre a taxa percentual de vitória esperada.

Atividade: Alterar o spread, stop loss e a razão para observar o efeito que isso tem sobre a taxa percentual de vitória esperada.


Taxa Percentual de Vitória está Relacionada com a Proporção SL:TP

É evidente que a taxa percentual de vitória esperada é determinada pela relação entre o stop loss e o take profit, na medida que ambos são afetados pelo spread. O grau de verdade nisto para diferentes mercados pode alterar-se, mas o conceito subjacente é o mesmo. Dois pontos importantes podem ser notado aqui:

  • É irrelevante falar sobre taxa de percentual de vitória sem também conhecer a proporção do stop loss pelo take profit, spread e se as relações entre eles são as mesmas em cada negociação na vida completa do EA.
  • Uma alta taxa percentual de vitória esperada não significa necessariamente uma estratégia rentável, e inversamente, uma baixa taxa percentual de vitória esperada não significa automaticamente uma estratégia perdedora.
Atividade: para explorar esta situação, alterar o risco: relação de recompensa a 10 e você verá que a taxa percentual de vitória esperada vai direto para baixo no primeiro gráfico que mostra uma descida muito íngreme, mas alguns dos resultados aleatórios do segundo e terceiro gráfico ainda finalizam com lucro. Inversamente você pode alterar a razão para 0.1 e a taxa de vitória vai subir no primeiro gráfico, numa subida muito íngrime e acentuadamente para cima, mas alguns dados aleatórios ainda vão acabar em perda.

Exemplos:

Imagem 1. Cenário 1 - Risco: Relação de Recompensa = 10


Imagem 2. Cenário 2 - Risco: Relação de Recompensa = 0.1


O Efeito do Aumento de Risco

Diz-se frequentemente que os traders bem sucedidos nunca arriscam mais do que n% da sua conta em qualquer negociação. Normalmente, isso é algo em torno de 3-10%, mas ninguém explica o porquê, este é o caso. Certamente tem-se a vantagem de evitar algumas perdas importantes, tipo a destruição de uma conta. Talvez mais importante e que tem surpreendentemente um grande impacto é a "composição do tamanho do lote".

Quando os traders falam em termos de "arriscar" n%, referem-se a porcentagem da conta que será perdida quando o stop loss é acionado. Geralmente o tamanho do stop loss é escolhido antes da abertura da negociação e o tamanho do lote é calculado, a fim de tomar a distância em pips através de um % da conta. Se aumentar os lucros, então o montante disponível para a abertura de cada nova posição aumenta, fazendo o tamanho dos lotes aumentarem e assim os ganhos potenciais resultantes também aumentam. Desta forma, os ganhos são "compostos" ( naturalmente é importante notar que os efeitos de quaisquer perdas também são agravados).

O terceiro gráfico exibe os resultados deste método. Usando o terceiro gráfico podemos observar o efeito da alteração do risco sobre a rentabilidade de qualquer sistema. O risco é definido a 1% como padrão.

Atividade: Aumentar o risco de 1% a 20% e ver a alteração no desempenho do terceiro gráfico. Comparar este desempenho (especialmente o rebaixamento relativo e o fator de lucro) para o gráfico de tamanho de lote constante.

Configurado com ajuste para 1% de risco, o desempenho é muito semelhante usando o tamanho de lote constante. À medida que o risco aumenta, então o potencial máximo de lucro também aumenta. No entanto, dado a um desempenho aleatório, se é maior o risco, então o mais provável é que a estratégia irá falir antes do final. Também faz o rebaixamento relativo aumentar massivamente.

Imagem 3. Esta imagem mostra exatamente o mesmo conjunto de operações abertas pela primeira vez ao risco de 1% por negociação, em segundo lugar as operações arriscando 10% por negociação


Embora existam alguns benefícios no aumento do percentual de risco acima de 1%, porém em certo ponto em vez de aumentar a rentabilidade, o risco crescente pode na verdade diminuir a rentabilidade esperada.

Alterando o risco: a proporção de recompensa ou aumento do capital inicial não altera tanto. Uma coisa que irá mudar significativamente, é o aumento do percentual de vitórias (para reduzir a probabilidade de um grande número de perdas consecutivas). Portanto, existe uma caixa de entrada chamada "Forçar Melhor Desempenho" (Force Better Performance). Aumentando este valor você pode testar um melhor desempenho do EA, ao invés de esperar simplesmente o acaso.

Está definida como uma melhoria de 15% por padrão (porque de outra forma, a maioria dos randomizações seria de forma consistente, deixando de receber ganhos líquidos, devido ao efeito do spread sobre a taxa de vitória esperada, como já foi explicado). No entanto, ainda haverá o percentual de risco, podendo levar a falência.

Atividade: Se você quer parar de gerar novos resultados aleatórios na planilha, e simplesmente observar como uma alteração afeta as entradas dos mesmos dados definidos de maneiras diferentes, então copiar os valores de saída a partir da coluna C para a coluna coluna D, usando "colar especial" e selecionar "valores" (para inverter, basta usar o comando do excel, "Desfazer Colar Especial"). Tente aumentar o valor "Force Better Performance", e observe o efeito sobre o terceiro gráfico.

Esperamos que isto torne mais fácil a comparação de desempenho quanto ao percentual de risco necessário para uma performance esperada de um EA na negociação real.


Usando um EA para Simular Negociações Randomizadas (Durante Backtest)

O uso aleatório pode ser estendido ainda mais. Um EA que realmente negocia aleatoriamente num backtest podem ser facilmente escrito. O desempenho de um EA real pode ser comparado com este desempenho aleatório durante o mesmo período, da mesma forma que os experimentos científicos são executados ao lado de um teste de "controle". Qualquer trader que não tenha tentado isso, será surpreendido com o resultado final que pode ser conseguido com a simples colocação de negociações aleatórias.

Para esta necessidade, uma forma muito simples de EA está incluído neste artigo, chamado "Random EA" (veja abaixo). Este EA tem a intenção de colocar negociações ao acaso apenas nos backtests ou otimizações (este EA não se destina a negociação real ou mesmo em conta demo ao vivo).

Os parâmetros de entrada permitem uma chance percentual de colocar ordens em qualquer barra a ser configurada (até 100% de chances). Apenas uma ordem pode ser aberta a qualquer momento. Apenas uma ordem pode ocorrer por barra. As ordens são colocados no início da barra.

É possível colocar stop loss e take profit (em pontos). Estas distâncias igualam a perda real experimentada a partir da conta (já incluído os efeitos do spread). Um take profit de 300 pontos é equivalente em moeda de depósito a um stop loss de 300 aqui. Também é possível selecionar stop losses e take profits aleatórios a serem utilizados em cada negociação, randomizados entre os valores de 100 a 1000 pontos a cada negociação. O EA é projetado para ter uma chance igual de abertura para uma posição vendida ou comprada.

O lote pode ser alterado entre o tamanho de lote constante (estático) e um tamanho de lote dinâmico, arriscando um percentual predeterminado do saldo da conta por negociação.

A aleatoriedade vai trabalhar para múltiplos backtests. Se forem necessárias otimizações, então basta selecionar a opção "OptimizationNumber" como uma variável de otimização, e digite o número necessário de otimizações a serem executadas.

Há duas importantes lições que realmente podem ser aprendidas a partir da colocação de ordens aleatórias:

  1. A proporção SL:TP pode fazer negócios, mesmo aleatórios, consistentemente rentável ao longo de um determinado período histórico.
    Os usuários irão notar que a mudança da proporção SL:TP, onde o take profit é significativamente maior ou menor do que o stop loss, terá um grande efeito sobre as características de desempenho. É importante ressaltar que algumas vezes é possível escolher uma proporção favorável ST:TP durante um determinado período histórico, cuja maioria dos passes aleatórios vão ganhar dinheiro. Por exemplo, se o período histórico que está sendo testado contém principalmente um mercado em alta, então com um take profit significativamente maior do que o stop loss, o usuário poderá ter as probabilidades a seu favor. Em casos como estes, não importa quantas ordens são colocadas e podem literalmente serem colocadas de forma aleatória, o resultado líquido provavelmente será positivo.

    Nesta situação, a proproção SL:TP terá um efeito principal na rentabilidade do sistema durante o backtest, e a maneira pela qual os negócios estão sendo escolhidos terão pouca importância. É por esta razão que muitas vezes é útil testar o desempenho de um EA bem sucedido contra o desempenho de um EA que coloca ordens em relação ao mesmo período de teste utilizando a relação SL:TP.

    Os traders muitas vezes ficam felizes consigo mesmos por terem criado uma combinação aparentemente bem-sucedida de indicadores em seus EAs (de acordo com os resultados dos backtests), quando na verdade é a relação SL:TP que está fazendo a maior parte do "trabalho" em seus sistemas, pois eles testaram durante um período histórico com uma tendência significativa. Quando tais sistemas são testados em mercados de lateralidades, o bom desempenho pode desaparecer. Lembre-se, é possível que pares de moedas tenham tendências fortes por um ano ou mais.

    Se você testa o desempenho de um EA em relação ao mesmo período do histórico comparando com um EA de negociação randomizada (com a mesma relação SL:TP e as regras do tamanho do lote), onde as performances são semelhantes, então isso pode dizer-lhe algo interessante sobre a sua estratégia.

  2. Colocar negociações aleatoriamente pode continuar a ser rentável para centenas de negociações.
    Depois de vários backtests você pode observar que alguns passes realmente continuam a ser rentáveis durante longos períodos, mesmo colocando ordens de forma aleatória, isto tem implicações no julgamento do sucesso de qualquer estratégia dada. Um EA colocando ordens ao acaso às vezes pode ser visto a produzir resultados consistentemente rentáveis durante 300 negociações por exemplo, mas em apenas 50 operações durante o curso pode quebrar. Os usuários podem encontrar nesta informação algo útil para avaliar o desempenho de outras estratégias.
Atividade: Executar vários backtests usando a Random EA. Tente alterar os valores do stop loss, take profit e o tamanho do lote, observe seus efeitos sobre os resultados. Alterar as configurações de stop loss e take profit para tentar encontrar uma relação favorável, possibilita fazer negociações aleatórias consistentemente rentáveis ao longo de um determinado período de teste. Então execute vários testes durante o mesmo período e conte o número máximo de operações realizadas, enquanto a EA está fazendo um lucro consistente, antes que ele tenha uma grande baixa significativamente.


Conclusões

Este artigo não tem a intenção de oferecer conselhos. Tem como objetivo simplesmente fornecer uma sandbox para explorar. Os usuários devem tirar suas próprias conclusões.


Notas

  • Escrito em Excel 2003.
  • Às vezes, o gerador de números aleatórios parece estar correndo para fora dos resultados e deixa de ser aleatório. Se você perceber isso, então simplesmente feche e abra o arquivo excel novamente.
  • Os cálculos são projetados para simular moedas com 4 ou 5 casas decimais (ou seja, não funciona com emparelhamentos JPY).
  • A randomização dos resultados são reconhecidamente com base na qualidade do gerador de números aleatórios no Excel, os cálculos brutos para prever taxas de vitórias esperadas não espelham resultados no mundo real. No entanto, para os fins deste artigo deve ser suficiente.

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/1360

Arquivos anexados |
Random_EA.mq4 (8.13 KB)
Expert Advisor MetaTrader 4 para Intercâmbio de Informações com o Mundo Exterior Expert Advisor MetaTrader 4 para Intercâmbio de Informações com o Mundo Exterior
Uma solução simples, universal e confiável de intercâmbio de informações entre um Expert Advisor МetaТrader 4 e o mundo exterior. Fornecedores e consumidores de informações podem estar localizados em diferentes computadores, a conexão é realizada através dos endereços IPs globais.
MetaTrader 4 no Linux MetaTrader 4 no Linux
Este artigo explicará como instalar facilmente o MetaTrader 4 nas versões populares do Linux, Ubuntu e Debian. Esses sistemas são amplamente utilizados não apenas em hardware de servidor, mas também em computadores comuns por traders.
Sistema de Negociação Mecânica "Triângulo de Chuvashov's" Sistema de Negociação Mecânica "Triângulo de Chuvashov's"
Deixe-me oferecer-lhe uma visão geral e um código de programa do sistema de negociação mecânica baseado nas ideias de Stanislav Chuvashov. A construção do triângulo é baseada na intersecção de duas linhas de tendência construídas pelos fractais de alta e de baixa.
Uma Visão Sobre o Indicador Accumulation-Distribution e Onde Conseguilo Uma Visão Sobre o Indicador Accumulation-Distribution e Onde Conseguilo
O Indicador Accumulation/Distribution (A/D) tem uma característica interessante - um rompimento da linha de tendência traçada neste indicador gráfico sugere, com um certo grau de probabilidade, um rompimento a seguir da linha de tendência no gráfico de preços. Este artigo vai ser útil e interessante para aqueles que são novos na programação em MQL4. Com este objetivo, tentei apresentar a informação de uma maneira fácil de entender e utilizar estruturas de código mais simples.