MetaTrader 4 Strategy Tester Tutorial.
Para obter o máximo de seu consultor especialista, você precisará otimizar e testar sua estratégia usando o Probador de Estratégia do MetaTrader. Enquanto o teste para frente em uma conta demo é essencial, o teste de retorno permite simular a negociação durante um longo período de tempo em apenas alguns minutos. E com o recurso de otimização, você pode descobrir quais configurações foram executadas melhor em um período de gráfico histórico selecionado.
Há um debate considerável sobre a precisão do testador de estratégia do MetaTrader. Na melhor das hipóteses, backtesting oferece apenas uma aproximação próxima de como os negócios seriam executados em tempo real. Mas é a única ferramenta disponível para testar rapidamente qualquer estratégia em uma ampla gama de situações comerciais e que você deve aprender a usar bem.
Abra o Strategy Tester no MetaTrader clicando no botão apropriado na barra de ferramentas ou selecionando Strategy Tester no menu Exibir.
Centro Histórico.
Antes de fazer backtesting ou otimização, é importante certificar-se de que os dados do seu histórico estão completos e precisos, especialmente se você estiver usando 'Every tick' como seu modelo de teste. Se você vir erros do "gráfico incompatível" no seu diário ou se sua qualidade de modelagem for inferior a 90%, os dados do seu histórico são insuficientes para gerar carrapatos precisos.
Abra o Centro de História no menu Ferramentas ou pressionando F2 no seu teclado. Clique duas vezes no par do gráfico na coluna da esquerda para a qual você pretende testar. Uma lista de períodos de tempo aparecerá abaixo. Comece clicando duas vezes em 1 minuto (M1) para carregar os dados do histórico desse período. O backtester usa dados M1 para gerar carrapatos, por isso é importante que seus dados M1 estejam completos.
No Centro de História, você pode baixar ou importar dados para usar no backtesting. Seu corretor fornecerá automaticamente alguns dados recentes, mas pode não ser suficiente para um backtest mais longo. Além disso, os dados de download gratuito do MetaTrader (acessíveis através do botão Download) nem sempre são completos e podem conter grandes lacunas.
Você pode baixar dados M1 gratuitos de forextester / data / datasources. html. Primeiro, selecione o período M1 para o símbolo da lista no lado esquerdo. Clique no botão Importar e, em seguida, clique em Procurar na caixa de diálogo Importar para selecionar o arquivo de dados M1 que você acabou de baixar. Pressione OK para importar os dados - pode demorar vários minutos. Agora você tem vários anos de dados M1 para esse símbolo.
Para fazer uso desses dados em prazos mais altos, você precisará usar o script period_converter que vem com o MetaTrader. Abra uma janela de gráfico e defina-a para M1. Arraste e solte o script period_converter da janela Navigator no gráfico e defina a configuração ExtPeriodMultiplier para o número de minutos para converter. Para M15, use 15; para H1, use 60; para H4, use 240, e assim por diante.
Repita esse processo para todos os símbolos / períodos em que você planeja testar. Depois de ter dados de histórico suficientes, você pode começar a testar. O vídeo abaixo demonstra o processo de importação e conversão dos dados M1:
Otimização.
O recurso de otimização do MetaTrader 4 permite que você teste milhares de combinações de configurações de consultor especialista para encontrar as configurações mais lucrativas para o gráfico selecionado, período e intervalo de datas. Estratégias baseadas em indicadores precisarão ser otimizadas para maximizar a lucratividade. No entanto, quase todos os EAs se beneficiarão da otimização - mesmo daqueles que negociam dados de tick, desde que você tenha dados completos do histórico do M1 (veja acima).
Embora o otimizador retorne as configurações mais lucrativas para o período selecionado, isso não é garantia de que essas configurações serão lucrativas no futuro. As condições de mercado mudam com frequência, por isso é importante reorientar regularmente seu consultor especialista para obter melhores resultados.
Para otimizar seu consultor especializado, primeiro selecione-o na caixa suspensa Advisor especialista. Selecione o par de moedas da caixa Símbolo e do período do gráfico na caixa Período. Para o Modelo, você geralmente quererá selecionar "Apenas Preços Abertos", a menos que esteja otimizando uma EA que seja executada em dados de marca. Nesse caso, selecione "Every Tick". Verifique a opção Usar data e selecione um intervalo de datas para otimizar. Por fim, certifique-se de que otimização esteja marcada.
Clique no botão Propriedades Especializadas para abrir as configurações do seu consultor especializado. Na guia Entradas, você insere o intervalo de valores para os quais otimizar. A coluna Início será o valor mais baixo para uma determinada configuração, enquanto a coluna Parar será a mais alta. A coluna Step é a quantidade que o otimizador "percorrerá" da configuração Start to the Stop.
Na imagem acima, estamos optimizando as configurações de SL, TS e TP para um consultor especializado. O valor inicial é 20, o passo é 20 e o Stop é 200. O otimizador testará cada combinação de valores de 20, 40, 60 e assim por diante até 200. Use um valor de início, etapa e parada apropriado para a configuração que você está otimizando. Mesmo os valores (5, 10, etc.) são bons.
A caixa de seleção para o extremo esquerdo deve ser selecionada para que essa configuração seja otimizada. Qualquer configuração que não esteja marcada usará o número na coluna Valor ao otimizar. Sob a aba Teste, você pode ajustar o Depósito Inicial para algo um pouco mais realista. Deixe as outras configurações em seus padrões.
Quando estiver pronto para começar a otimizar, aperte o botão Iniciar, na parte inferior direita, da janela Estratégia testadora. Dependendo do período, do período, do modelo de teste e do número de configurações a serem otimizadas, pode levar de alguns minutos a várias horas. Se demorar muito, considere encurtar o intervalo de datas, otimizando menos configurações ou usando um valor de passo maior.
Assim que a otimização for concluída, abra a guia Resultados da Otimização e clique duas vezes na coluna Lucro para ordenar os resultados. Clique duas vezes em qualquer um dos resultados para carregá-lo no testador. Pressione o botão Iniciar novamente para voltar a testar com as configurações selecionadas.
Backtesting
Até agora, deve ser óbvio como o backtester funciona. Selecione seu Consultor Especialista, Símbolo, Período e Modelo, marque a caixa Usar Data e selecione um período. Selecione o modo visual apenas se desejar um procedimento visual do backtesting. Deixe a Otimização desmarcada.
Pressione o botão Propriedades Experientes e insira suas configurações na coluna Valor na guia Entradas. Você também pode carregar ou salvar configurações usando os botões no canto inferior direito. As colunas Start, Step e Stop são ignoradas, assim como as caixas de seleção.
Feche a caixa de diálogo Propriedades Expert e pressione Iniciar para iniciar o teste. Levará de alguns segundos a vários minutos dependendo das suas configurações. Quando o teste terminar, abra a guia Relatório na parte inferior para ver seus resultados.
Algumas estatísticas para tomar nota:
Lucro líquido total - O lucro bruto menos a perda bruta. Fator de lucro - A relação entre lucro bruto e perda bruta. Mais alto é melhor, qualquer coisa acima de 1,5 é boa. Remessa absoluta - A retirada do seu depósito inicial. Altas perdas aumentam a probabilidade de sua conta ser apagada. Negociações de lucro - Sua porcentagem global de vitórias. Qualidade de modelagem - Apenas importante se seu modelo de teste for Every Tick. Em caso afirmativo, isso deve ser de 90%. Caso contrário, siga as instruções acima para atualizar seu histórico com dados M1 precisos.
A guia Resultados na parte inferior do testador de estratégia fornecerá detalhes sobre pedidos abertos e fechados, incluindo parada móvel, take profit e stop loss. Clique no botão Abrir gráfico para obter uma representação visual de seus resultados. Ao testar seu novo EA, examine-o atentamente para garantir que sua estratégia esteja funcionando conforme o esperado.
Walk Forward Analysis.
Embora backtesting e otimização possam lhe dar uma boa idéia de como sua EA irá trocar, você precisará fazer testes mais extensos para garantir que seu sistema comercial seja realmente lucrativo. A melhor maneira de conseguir isso é através de um processo chamado análise walk-forward.
A análise de marcha para frente consiste simplesmente em ciclos múltiplos de otimização e backtesting, e analisando os resultados dos testes durante um longo período. Nosso artigo sobre walk forward analysis explica o processo com mais detalhes. Nosso Walk Forward Analyzer para MetaTrader permite que você execute WFA de forma rápida e fácil.
Como construir e testar uma estratégia de opções binárias com o testador de estratégia do MetaTrader 4.
Índice.
Este artigo mostra como criar uma estratégia de Opções Binárias e testá-la no Strategy-Tester do Metatrader 4 com o utilitário Binary-Options-Strategy-Tester. Por padrão, o Strategy-Tester do Metatrader 4 pode testar Expert Advisors e Indicadores em relação a dados históricos, mas não pode manipular Opções Binárias com tempos de expiração. Como eu preciso da possibilidade de testar estratégias de Opções Binárias automatizadas no Strategy-Tester do MetaTrader 4, o Binary-Options-Strategy-Tester foi construído como um utilitário para atender a essas necessidades.
O conceito contém as seguintes partes:
Este é um exemplo passo a passo de como construir uma estratégia de Opções Binárias armazenada em um Indicador (marcado como vermelho na imagem acima) para se comunicar através da Biblioteca de Estratégia de Opções Binárias (marcada como verde na imagem acima) com as Opções Binárias. Strategy-Tester (marcado como azul na imagem acima), para colocar pedidos virtuais e contar seus resultados com backtests e forward tests.
Lembre-se: o backtesting com dados históricos nunca representará o futuro real, mas pode fornecer um valor aproximado para que sua estratégia fique mais estável.
A qualidade do seu backtest depende dos seus dados históricos. Portanto, é altamente recomendável usar um conjunto de dados de alta qualidade!
Faça o download e compre o utilitário Binary-Options-Strategy-Tester no marketplace:
Test-Framework para testar estratégias de Opções Binárias no Strategy-Tester do MetaTrader 4.
Por que uma versão comprada do utilitário Binary-Options-Strategy-Tester é necessária?
Uma estratégia de opções binárias tem que chamar uma função do Binary-Options-Strategy-Tester (via Binary-Options-Strategy-Library) para colocar os negócios virtuais. Relacionado ao conceito de licença do MQL4, isso só funciona se o produto tiver uma licença válida. Portanto, você precisa comprar o produto para testar as estratégias de Opções Binárias ou este exemplo.
Baixe gratuitamente o BinaryOptionsStrategyLibrary. mqh e coloque-o na pasta \ Include ([caminho para o seu MetaTrader 4] \ MQL4 \ Include):
A biblioteca gratuita fornecerá várias funções para criar sua estratégia de Opções Binárias facilmente e para se comunicar com o Binary-Options-Strategy-Tester. Veja Binary-Options-Strategy-Library para mais detalhes da biblioteca.
Faça o download do indicador KVO. mq4 e coloque-o (e o arquivo compilado KVO. ex4) na pasta \ Indicators \ Downloads ([caminho para seu MetaTrader 4] \ MQL4 \ Indicators \ Downloads):
O indicador KVO é usado como um exemplo para mostrar o acesso de indicadores externos e arquivos ex4 na seção "3.2.6 Uso de indicadores externos (arquivos ex4)". Veja mql5 / en / code / 8677 para mais detalhes do indicador.
Agora você pode ir mais longe com a seção "3. Exemplo de estratégia de opções binárias" e criar o código de exemplo sozinho ou apenas fazer o download do código deste exemplo abaixo.
Faça o download opcional de BinaryOptionsStrategyExample. mq4 e coloque-o (e o arquivo compilado BinaryOptionsStrategyExample. ex4) em folder \ Indicators ([caminho para seu MetaTrader 4] \ MQL4 \ Indicators):
Faça o download do código desse exemplo de estratégia de opções binárias para deixá-lo rodar sem construí-lo sozinho.
Para compilar os arquivos. ex4 necessários, abra os arquivos. mq4 (KVO. mq4 e BinaryOptionsStrategyExample. mq4 - NÃO Binário-Opções-Estratégia-Biblioteca. mqh) no MetaQuotes Language Editor e clique no botão "Compile" ou apenas reinicie o seu MetaTrader 4 após esses arquivos são armazenados nas pastas descritas e o MetaTrader 4 fará isso automaticamente para você.
3. Exemplo de estratégia de opções binárias.
As etapas a seguir guiarão você por meio de um exemplo de como criar um exemplo de estratégia de Opções Binárias armazenada em um Indicador para se comunicar com o Binary-Options-Strategy-Tester. Você pode construí-lo sozinho ou apenas baixar o código do BinaryOptionsStrategyExample. mq4.
Por favor note: Esta estratégia não é uma estratégia de opções binárias rentável! É apenas um exemplo de como construir uma estratégia em um indicador para se comunicar com o utilitário Binary-Options-Strategy-Tester. Claro que você tem que construir uma estratégia lucrativa por conta própria. Mas, como você verá, esse utilitário ajudará você a testar e melhorar sua estratégia de Opções Binárias.
3.1 Definir estratégia de opções binárias.
Primeiramente, temos que definir a estratégia e os valores variáveis (parâmetros de entrada). A documentação do MQL4 mostra todos os indicadores técnicos, que podem ser endereçados através da interface iCustom: docs. mql4 / indicators.
Digamos que gostamos de criar uma estratégia cruzada de média móvel simples com uma média móvel "rápida" e outra "lenta" para trocar na próxima vela depois que elas se cruzarem. A documentação informa como podemos obter o valor de uma única média móvel: docs. mql4 / indicators / ima.
Vamos dizer ainda, nós gostamos de escolher valores para "período médio MA" (rápido e lento) e para "preço aplicado", bem como para o "método de média". Outros valores (como símbolo, período e turno) dependem do testcase (por exemplo, o símbolo em que o testador é executado) e devem ser configurados automaticamente. Portanto, basicamente, precisamos das seguintes variáveis para uma média móvel:
Como precisamos de duas Médias Móveis para verificar seus cruzamentos, precisamos dos seguintes parâmetros de entrada para o exemplo de estratégia com alguns valores padrão:
int period_slow = 10;
int method_both = 0;
int applied_price_both = 0;
3.2 Criar estratégia de opções binárias.
Você precisa criar um indicador que armazene sua estratégia de Opções Binárias para arrastá-la no gráfico onde o Binary-Options-Strategy-Tester está sendo executado.
Abra o MetaQuotes Language Editor (no MetaTrader 4 clique em "Tools" - & gt; "MetaQuotes Language Editor" ou simplesmente pressione F4) e clique em "New":
O Assistente MQL será exibido. Selecione "Custom Indicator" para criar um indicador vazio e clique em "Next":
Digite o nome, direitos autorais e link da estratégia, bem como os parâmetros de entrada com seus tipos e valores padrão (valores iniciais), clicando em "Adicionar" - Botão e pressione "Next":
Em manipuladores de eventos de abas, selecione a opção "OnCalculate", pois precisamos deste evento para verificar a nossa estratégia em cada tick. Pressione "Próximo":
Nas propriedades do desenho da aba, marque a caixa de seleção "Indicador na janela separada", pois precisamos de uma janela separada para imprimir os valores de depuração. Pressione "Concluir":
O código inicial do seu indicador será exibido:
// | Copyright 2016, __martin__ |
#property copyright "Copyright 2016, __martin__"
#property link "mql5 / pt / users / __ martin__"
#property version "1.00"
entrada int period_fast = 5;
entrada int period_slow = 10;
input int method_both = 0;
input int applied_price_both = 0;
// | Função de inicialização do indicador personalizado |
// --- mapeamento de buffers de indicador.
// | Função de iteração do indicador personalizado |
int OnCalculate (const int rates_total,
const int prev_calculated,
const datetime & amp; time [],
const duplo & aberto [],
const double & amp; alta [],
const double & amp; low [],
const double & amp; close [],
const long & amp; tick_volume [],
Const long & amp; volume [],
const int & amp; spread [])
3.2.1 Parâmetros de entrada.
Os parâmetros de entrada iniciais são criados com o Assistente MQL (consulte 3.2 Criar estratégia de opções binárias) e os aprimoraremos com as etapas a seguir.
Para evitar ter que inserir int-values para o preço aplicado e método de média das médias móveis para parâmetros de entrada, o tipo para method_both e applied_price_both é alterado de int para o tipo de enumeração com um valor padrão.
Além disso, comentários para os parâmetros de entrada são incluídos para mostrar os comentários como rótulos, em vez de nomes de variáveis:
entrada int period_fast = 5; // valor MA rápido.
entrada int period_slow = 10; // Valor MA lento.
entrada ENUM_MA_METHOD method_both = MODE_SMA; // método MA.
entrada ENUM_APPLIED_PRICE applied_price_both = PRICE_CLOSE; // MA preço aplicado.
Com essas modificações, os parâmetros de entrada fornecem uma lista suspensa com os valores disponíveis para seleção, bem como "rótulos" para os parâmetros de entrada:
3.2.2 Incluir Biblioteca de Estratégias de Opções Binárias.
Se você baixou e armazenou a biblioteca (veja 2. Instalação) na pasta \ Include ([caminho para seu MetaTrader 4] \ MQL4 \ Include), você pode incluir a biblioteca da seguinte forma:
// | Copyright 2016, __martin__ |
#property copyright "Copyright 2016, __martin__"
#property link "mql5 / pt / users / __ martin__"
#property version "1.00"
Alterar o conteúdo da biblioteca não é necessário!
Binary-Options-Strategy-Library irá melhorar os parâmetros de entrada com dois novos parâmetros:
Coloque apenas uma VENDA ou uma troca de COMPRA por vela Verifique apenas no início de uma nova vela para a estratégia.
3.2.3 Adicionar CallStrategy ()
Adicione uma chamada para CallStrategy () - função em OnCalculate () do seu indicador de estratégia para chamar a estratégia em cada novo tick. CallStrategy () é fornecido pelo Binary-Options-Strategy-Library que você incluiu como descrito acima:
// | Função de iteração do indicador personalizado |
int OnCalculate (const int rates_total,
const int prev_calculated,
const datetime & amp; time [],
const duplo & aberto [],
const double & amp; alta [],
const double & amp; low [],
const double & amp; close [],
const long & amp; tick_volume [],
Const long & amp; volume [],
const int & amp; spread [])
Portanto, você precisa implementar a função CheckMyRules () no seu indicador de estratégia Opções Binárias.
3.2.4 Implemente CheckMyRules () e função auxiliar.
Na função CheckMyRules (), que é chamada através da Biblioteca de Estratégia de Opções Binárias, as condições para a estratégia são implementadas e as negociações são feitas através da função PlaceTrade () da biblioteca. Os valores de ambas as Médias Móveis são temporariamente armazenados em variáveis para compará-los em condições if, enquanto os valores das Médias Móveis são retirados da função auxiliar GetValuesForMA ():
entrada int period_fast = 5; // valor MA rápido.
entrada int period_slow = 10; // Valor MA lento.
entrada ENUM_MA_METHOD method_both = MODE_SMA; // método MA.
entrada ENUM_APPLIED_PRICE applied_price_both = PRICE_CLOSE; // MA preço aplicado.
// | Coloque suas regras de negociação aqui - veja o exemplo abaixo. |
// | O StrategyTester irá chamar esta função para colocar negociações. |
// | - Adicionar parâmetros de função, por exemplo CheckMyRules (int a) |
// | - Alterar o tipo de retorno da função, por ex. int CheckMyRules () |
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Current = GetValueForMA (period_slow, 0);
double emaFast_Current = GetValueForMA (period_fast, 0);
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Past = GetValueForMA (period_slow, 1);
double emaFast_Past = GetValueForMA (period_fast, 1);
& amp; & amp; emaFast_Current & lt; emaSlow_Past) // Verifique se o MA lento e o MA rápido cruzam.
PlaceTrade (OP_SELL); // Coloque o Trade de VENDA para o Strategy-Tester, a função está localizada em BinaryOptionsStrategyFunctions. mqh.
& amp; & amp; emaFast_Current & gt; emaSlow_Past) // Verifique se o MA lento e o MA rápido cruzam.
PlaceTrade (OP_BUY); // Coloque BUY-Trade for Strategy-Tester, a função está localizada em BinaryOptionsStrategyFunctions. mqh.
// | Coloque suas Funções Auxiliares aqui, veja o exemplo abaixo |
// | Obtenha valores MA para período, método, preço aplicado e turno. |
// | Para detalhes sobre o iMA (), consulte docs. mql4 / indicators / ima |
double GetValueForMA (int _period, int _shift)
return iMA (NULL, 0, _period, 0, method_both, applied_price_both, _shift);
3.2.5 Imprimir os valores de depuração.
A função PrintDebugValue () oferece a possibilidade de imprimir valores de depuração enquanto o testador está sendo executado. No exemplo abaixo, os valores das Médias Móveis são impressos com seus nomes de variáveis como rótulos:
entrada int period_fast = 5; // valor MA rápido.
entrada int period_slow = 10; // Valor MA lento.
entrada ENUM_MA_METHOD method_both = MODE_SMA; // método MA.
entrada ENUM_APPLIED_PRICE applied_price_both = PRICE_CLOSE; // MA preço aplicado.
// | Coloque suas regras de negociação aqui - veja o exemplo abaixo. |
// | O StrategyTester irá chamar esta função para colocar negociações. |
// | - Adicionar parâmetros de função, por exemplo CheckMyRules (int a) |
// | - Alterar o tipo de retorno da função, por ex. int CheckMyRules () |
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Current = GetValueForMA (period_slow, 0);
double emaFast_Current = GetValueForMA (period_fast, 0);
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Past = GetValueForMA (period_slow, 1);
double emaFast_Past = GetValueForMA (period_fast, 1);
PrintDebugValue ("emaFast_Current:", (string) emaFast_Current, 1); // Rótulo e valor na linha 1.
PrintDebugValue ("emaSlow_Past:", (string) emaSlow_Past, 2); // Rótulo e valor na linha 2.
PrintDebugValue ("emaFast_Past:", (string) emaFast_Past, 3); // Rótulo e valor na linha 3.
& amp; & amp; emaFast_Current & lt; emaSlow_Past) // Verifique se o MA lento e o MA rápido cruzam.
PlaceTrade (OP_SELL); // Coloque o Trade de VENDA para o Strategy-Tester, a função está localizada em BinaryOptionsStrategyFunctions. mqh.
& amp; & amp; emaFast_Current & gt; emaSlow_Past) // Verifique se o MA lento e o MA rápido cruzam.
PlaceTrade (OP_BUY); // Coloque BUY-Trade for Strategy-Tester, a função está localizada em BinaryOptionsStrategyFunctions. mqh.
// | Coloque suas Funções Auxiliares aqui, veja o exemplo abaixo |
// | Obtenha valores MA para período, método, preço aplicado e turno. |
// | Para detalhes sobre o iMA (), consulte docs. mql4 / indicators / ima |
double GetValueForMA (int _period, int _shift)
return iMA (NULL, 0, _period, 0, method_both, applied_price_both, _shift);
3.2.6 Uso de indicadores externos (arquivos ex4)
Além disso, um indicador externo que armazena seus valores em buffers pode ser acessado para a estratégia Opções Binárias, mesmo que exista apenas o arquivo ex4 compilado.
Digamos que gostamos de incluir a linha de sinal do indicador KVO mql5 / en / code / 8677 para colocar as negociações somente se a linha de sinal for maior que 0 para operações de COMPRA e abaixo de 0 para negociações de VENDAS. Faça o download do indicador KVO. mq4 e coloque o arquivo compilado (ex4) na pasta \ Indicators \ Downloads ([caminho para seu MetaTrader 4] \ MQL4 \ Indicators \ Downloads).
Para compilar o arquivo. ex4 necessário, abra o KVO. mq4 no MetaQuotes Language Editor e clique no botão "Compile" ou apenas reinicie o seu MetaTrader 4 depois que o arquivo estiver armazenado na pasta descrita e o MetaTrader 4 fará isso automaticamente para você.
Primeiro, temos que identificar os buffers relevantes que armazenam os valores relevantes para acessar. Portanto, pressionamos o botão "Data Window" no MetaTrader 4 para mostrar todos os buffers disponíveis dos indicadores usados e arraste o indicador KVO em um gráfico. Ao passar o cursor sobre o gráfico (pressionar a roda do mouse no gráfico para exibir a cruz), os valores do buffer do indicador do período de tempo flutuante serão mostrados na janela de dados:
Os rótulos da janela de dados nos informam que o segundo valor de buffer do indicador armazena a linha de sinal. Se os buffers dos indicadores não tiverem rótulos, podemos encontrar o caminho certo comparando os valores do buffer com o valor exibido sob a cruz no gráfico e no indicador. Os buffers de um indicador começam com 0, então temos o valor do buffer 1 = buffer 0, valor do buffer 2 = buffer 1 e assim por diante e temos que acessar o buffer 1 para obter o valor do sinal.
Em seguida, temos que conhecer todos os parâmetros de entrada do indicador externo que gostamos de acessar. Arrastando o indicador em um gráfico, vemos todos os parâmetros de entrada:
Vamos dizer ainda, nós gostamos de acessar o indicador com valores (padrão): 34, 55 e 13. Usamos uma função auxiliar (baseada no iCostum), que nos fornece a possibilidade de obter os valores do indicador com parâmetros para buffer e shift, enquanto o turno 0 será o valor da vela atual, mude 1 o valor da última vela, mude 2 o valor da segunda para a última vela e assim por diante. Além disso, armazenamos temporariamente os valores do buffer de indicador e aprimoramos a condição if da estratégia:
entrada int period_fast = 5; // valor MA rápido.
entrada int period_slow = 10; // Valor MA lento.
entrada ENUM_MA_METHOD method_both = MODE_SMA; // método MA.
entrada ENUM_APPLIED_PRICE applied_price_both = PRICE_CLOSE; // MA preço aplicado.
// | Coloque suas regras de negociação aqui - veja o exemplo abaixo. |
// | O StrategyTester irá chamar esta função para colocar negociações. |
// | - Adicionar parâmetros de função, por exemplo CheckMyRules (int a) |
// | - Alterar o tipo de retorno da função, por ex. int CheckMyRules () |
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Current = GetValueForMA (period_slow, 0);
double emaFast_Current = GetValueForMA (period_fast, 0);
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Past = GetValueForMA (period_slow, 1);
double emaFast_Past = GetValueForMA (period_fast, 1);
double kvoSignal = GetValuesFromIndicator__KVO __ (1, 0);
PrintDebugValue ("emaFast_Current:", (string) emaFast_Current, 1); // Rótulo e valor na linha 1.
PrintDebugValue ("emaSlow_Past:", (string) emaSlow_Past, 2); // Rótulo e valor na linha 2.
PrintDebugValue ("emaFast_Past:", (string) emaFast_Past, 3); // Rótulo e valor na linha 3.
& amp; & amp; emaFast_Current & lt; emaSlow_Past // Verifique se o MA lento e o MA rápido cruzam.
& amp; & amp; kvoSignal & lt; 0) // Verifique se o valor do sinal de KVO está abaixo de 0.
PlaceTrade (OP_SELL); // Coloque o Trade de VENDA para o Strategy-Tester, a função está localizada em BinaryOptionsStrategyFunctions. mqh.
& amp; & amp; emaFast_Current & gt; emaSlow_Past // Verifique se o MA lento e o MA rápido cruzam.
& amp; & amp; kvoSignal & gt; 0) // Verifique se o valor do sinal de KVO está acima de 0.
PlaceTrade (OP_BUY); // Coloque BUY-Trade for Strategy-Tester, a função está localizada em BinaryOptionsStrategyFunctions. mqh.
// | Coloque suas Funções Auxiliares aqui, veja o exemplo abaixo |
// | Obtenha valores MA para período, método, preço aplicado e turno. |
// | Para detalhes sobre o iMA (), consulte docs. mql4 / indicators / ima |
double GetValueForMA (int _period, int _shift)
return iMA (NULL, 0, _period, 0, method_both, applied_price_both, _shift);
// | Exemplo como obter valores de indicadores externos |
// | int _buffer - indicator-buffer (inicia com 0) |
// | int _shift - value to shift; 0 = vela atual, 1 = vela anterior |
getValuesFromIndicator__KVO duplo __ (int _buffer, int _shift = 0) // Mude "__KVO__" para o nome do indicador.
NULL, // NULL para o período de tempo atual selecionado no testador - SEM ALTERAÇÕES NECESSÁRIAS.
0, // 0 para o símbolo atual selecionado no testador - SEM ALTERAÇÕES NECESSÁRIAS.
"\\ Downloads \\ KVO. ex4", // Filepath e nome do arquivo do indicador (arquivo *.ex4)
// INICIAR INICIAIS DE INDICADORES.
_shift // Shift (0 para vela atual), _shift é endereçado sobre o parâmetro de função - NO MUDANÇAS NECESSÁRIAS.
Também é possível melhorar os parâmetros de entrada do nosso indicador de estratégia com os valores do indicador KVO usado e definir os valores na função auxiliar por variáveis. Como este tutorial deve ser apenas um exemplo e "tão simples quanto possível", essa variante não é mostrada.
3.3 O código completo.
Abaixo, você encontrará o código completo do Exemplo de Estratégia de Opções Binárias de todas as etapas acima, pronto para ser arrastado no Verificador de Estratégia de Opções Binárias para testar e ver os resultados no gráfico:
// | Copyright 2016, __martin__ |
#property copyright "Copyright 2016, __martin__"
#property link "mql5 / pt / users / __ martin__"
#property version "1.00"
// | Coloque seus parâmetros de entrada aqui - veja o exemplo abaixo |
entrada int period_fast = 5; // valor MA rápido.
entrada int period_slow = 10; // Valor MA lento.
entrada ENUM_MA_METHOD method_both = MODE_SMA; // método MA.
entrada ENUM_APPLIED_PRICE applied_price_both = PRICE_CLOSE; // MA preço aplicado.
// | Função de inicialização do indicador personalizado |
// --- mapeamento de buffers de indicador.
// | Função de iteração do indicador personalizado |
int OnCalculate (const int rates_total,
const int prev_calculated,
const datetime & amp; time [],
const duplo & aberto [],
const double & amp; alta [],
const double & amp; low [],
const double & amp; close [],
const long & amp; tick_volume [],
Const long & amp; volume [],
const int & amp; spread [])
// | Coloque suas regras de negociação aqui - veja o exemplo abaixo. |
// | O StrategyTester irá chamar esta função para colocar negociações. |
// | - Adicionar parâmetros de função, por exemplo CheckMyRules (int a) |
// | - Alterar o tipo de retorno da função, por ex. int CheckMyRules () |
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Current = GetValueForMA (period_slow, 0);
double emaFast_Current = GetValueForMA (period_fast, 0);
// chama a função auxiliar GetValueForMA () para obter o valor - veja as funções auxiliares abaixo.
double emaSlow_Past = GetValueForMA (period_slow, 1);
double emaFast_Past = GetValueForMA (period_fast, 1);
double kvoSignal = GetValuesFromIndicator__KVO __ (1, 0);
PrintDebugValue ("emaFast_Current:", (string) emaFast_Current, 1); // Rótulo e valor na linha 1.
PrintDebugValue ("emaSlow_Past:", (string) emaSlow_Past, 2); // Rótulo e valor na linha 2.
PrintDebugValue ("emaFast_Past:", (string) emaFast_Past, 3); // Rótulo e valor na linha 3.
& amp; & amp; emaFast_Current & lt; emaSlow_Past // Verifique se o MA lento e o MA rápido cruzam.
& amp; & amp; kvoSignal & lt; 0) // Verifique se o valor do sinal de KVO está abaixo de 0.
PlaceTrade (OP_SELL); // Coloque o Trade de VENDA para o Strategy-Tester, a função está localizada em BinaryOptionsStrategyLibrary. mqh.
& amp; & amp; emaFast_Current & gt; emaSlow_Past // Verifique se o MA lento e o MA rápido cruzam.
& amp; & amp; kvoSignal & gt; 0) // Verifique se o valor do sinal de KVO está acima de 0.
PlaceTrade (OP_BUY); // Coloque BUY-Trade for Strategy-Tester, a função está localizada em BinaryOptionsStrategyLibrary. mqh.
// | Coloque suas Funções Auxiliares aqui, veja o exemplo abaixo |
// | Obtenha valores MA para período, método, preço aplicado e turno. |
// | Para detalhes sobre o iMA (), consulte docs. mql4 / indicators / ima |
double GetValueForMA (int _period, int _shift)
return iMA (NULL, 0, _period, 0, method_both, applied_price_both, _shift);
// | Exemplo como obter valores de indicadores externos |
// | int _buffer - indicator-buffer (inicia com 0) |
// | int _shift - value to shift; 0 = vela atual, 1 = vela anterior |
getValuesFromIndicator__KVO duplo __ (int _buffer, int _shift = 0) // Mude "__KVO__" para o nome do indicador.
NULL, // NULL para o período de tempo atual selecionado no testador - SEM ALTERAÇÕES NECESSÁRIAS.
0, // 0 para o símbolo atual selecionado no testador - SEM ALTERAÇÕES NECESSÁRIAS.
"\\ Downloads \\ KVO. ex4", // Filepath e nome do arquivo do indicador (arquivo *.ex4)
// COMEÇA INPUTOS INDICADORES.
_shift // Shift (0 para vela atual), _shift é endereçado sobre o parâmetro de função - NO MUDANÇAS NECESSÁRIAS.
4. Execute um backtest (video)
O vídeo a seguir mostra como executar um backtest de sua estratégia de opções binárias no Strategy-Tester do MetaTrader 4:
Inicie o Binary-Options-Strategy-Tester no Strategy-Tester do MetaTrader 4 e defina os parâmetros de entrada Arraste seu indicador de estratégia Opções Binárias no gráfico, defina os parâmetros de entrada e marque "Permitir importações de especialistas externos" na guia "comum" usaram indicadores com seus parâmetros de entrada usados no gráfico para ver seus valores enquanto o testador está em execução (opcional) Salva todas as configurações em um modelo para executar o teste com todas as configurações novamente - usando o botão de pausa do Strategy-Tester (opcional) resultados de sua estratégia de opções binárias no gráfico Strategy-Tester.
5. Execute um teste direto.
Para fazer um forward test, simplesmente arraste o utilitário Binary-Options-Strategy-Tester e seu indicador de estratégia na sua demonstração ou live chart do seu corretor em vez de usá-lo no Strategy-Tester:
Arraste o utilitário Binary-Options-Strategy-Tester na demonstração ou no gráfico ativo e defina os parâmetros de entrada Arraste seu indicador de estratégia Opções Binárias no gráfico, defina os parâmetros de entrada e marque "Permitir importações de especialistas externos" na guia "comum" indicadores com seus parâmetros de entrada usados no gráfico para ver seus valores enquanto o teste de encaminhamento está em execução (opcional) Salve todas as configurações em um modelo para executar o teste novamente com todas as configurações (opcional) Veja os resultados de sua estratégia de opções binárias em demonstração ou ao vivo gráfico.
Pergunta: Por que você mostra um exemplo de uma estratégia de Opções Binárias não lucrativa?
Answer: Este é apenas um exemplo de como construir uma estratégia em um indicador para se comunicar com o utilitário Binary-Options-Strategy-Tester no mercado para testar e melhorar sua estratégia.
Pergunta: Binary-Options-Strategy-Tester pára após a quantia exata de perdas com erro "Array out of range". Por quê?
Answer: Binary-Options-Strategy-Tester pode subir um erro após x perdas para parar o Tester e analisar a situação no gráfico. Se você não quiser, basta desativar a opção nas configurações.
Pergunta: Nenhuma flecha aparece no gráfico depois de eu ter arrastado meu indicador com uma estratégia de trabalho. O que aconteceu?
Answer: Você tem que habilitar "Permitir importações de especialistas externos" na guia "comum" enquanto arrasta seu indicador de estratégia no gráfico (a mensagem de log mostrará um erro neste caso).
Pergunta: Nenhuma seta aparece no gráfico após eu ter arrastado meu indicador com uma estratégia de trabalho nele com "Permitir importações de especialistas externos" ativada. Por quê?
Answer: Uma estratégia tem que chamar uma função de Binary-Options-Strategy-Tester para colocar negociações virtuais. Relacionado ao conceito de licença MQL4, isso só funciona se o produto tiver uma licença válida. Portanto, você tem que comprar o produto.
Pergunta: Nenhuma seta aparece no gráfico depois que eu arrastei meu indicador com uma estratégia de trabalho e recebi erros como "Não é possível ligar .." ou "Não é possível carregar .." no log do MetaTrader 4. O que posso fazer?
Answer: Use a versão mais recente (maior v1.00) do BinaryOptionsStrategyLibrary. mqh. Verifique a tag de versão no código da sua BinaryOptionsStrategyLibrary. mqh e veja o changelog v1.01 de BinaryOptionsStrategyLibrary.
Pergunta: Não vejo resultados nas guias do Strategy-Tester "Resultados", "Gráfico", "Relatório". Onde eu posso ver os resultados?
Answer: O Strategy-Tester do MetaTrader 4 não pode manipular Opções Binárias para que estas abas não sejam usadas. Portanto, este utilitário calcula todos os ganhos e perdas e imprime os resultados no gráfico.
Como eu preciso da possibilidade de testar estratégias de Opções Binárias automatizadas no Strategy-Tester do MetaTrader 4 por longos períodos de tempo em um curto período de tempo e fazer testes de avanço no gráfico do broker, este utilitário foi construído. Passei muito tempo para o conceito e a implementação do Binary-Options-Strategy-Tester, bem como para a documentação. Talvez exista uma maneira melhor de fazer isso e talvez algumas melhorias o aproximem das necessidades de você. Então, por favor, sinta-se à vontade para entrar em contato comigo para idéias de melhorias!
Estratégia de Negociação Forex.
O que é 'estratégia de negociação Forex'
Uma estratégia de negociação forex é um conjunto de análises que um trader de forex usa para determinar se deve comprar ou vender um par de moedas a qualquer momento. Estratégias de negociação Forex podem ser baseadas em análise técnica, análise de gráficos ou eventos fundamentais baseados em notícias. A estratégia de negociação de moeda do negociador é geralmente composta de sinais de negociação que acionam as decisões de compra ou venda. Estratégias de negociação Forex estão disponíveis na internet ou podem ser desenvolvidas pelos próprios comerciantes.
QUEBRANDO PARA BAIXO 'Estratégia de Negociação Forex'
Estratégias de negociação Forex podem ser métodos manuais ou automatizados para gerar sinais de negociação. Os sistemas manuais envolvem um operador sentado em frente a uma tela de computador, procurando sinais de negociação e interpretando se deve comprar ou vender. Sistemas automatizados envolvem um trader que desenvolve um algoritmo que encontra sinais de negociação e executa operações por conta própria. Os últimos sistemas tiram a emoção humana da equação e podem melhorar o desempenho.
Os comerciantes devem ter cautela ao comprar estratégias de negociação forex prontas, já que é difícil verificar seu histórico e muitos sistemas de negociação bem-sucedidos são mantidos em segredo.
Criando uma estratégia de negociação Forex.
Muitos comerciantes forex começam a desenvolver uma estratégia de negociação, começando com algo simples. Por exemplo, eles podem perceber que um par de moedas específico tende a se recuperar de um nível específico de suporte ou resistência. Eles podem então decidir adicionar outros elementos que melhorem a precisão desses sinais de negociação ao longo do tempo. Por exemplo, eles podem exigir que o preço se recupere de um nível de suporte específico por uma determinada porcentagem ou número de pips.
Existem vários componentes diferentes para uma estratégia eficaz de negociação forex:
Selecionando o mercado: os comerciantes devem determinar quais pares de moeda eles negociam e se tornar especialistas na leitura desses pares de moedas. Dimensionamento da posição: Os comerciantes devem determinar o tamanho de cada posição para controlar a quantidade de risco assumida em cada negociação individual. Pontos de entrada: os comerciantes devem desenvolver regras que regem quando entrar em uma posição longa ou curta em um determinado par de moedas. Pontos de Saída: Os comerciantes devem desenvolver regras dizendo-lhes quando sair de uma posição longa ou curta, bem como quando sair de uma posição perdida. Táticas de Negociação: Os comerciantes devem ter estabelecido regras sobre como comprar e vender pares de moedas, incluindo a seleção das tecnologias corretas de execução.
Os traders devem considerar o desenvolvimento de sistemas de negociação em programas como o MetaTrader, que facilitam a automatização do seguimento de regras. Além disso, esses aplicativos permitem que os investidores façam um backtest de estratégias de negociação para ver como teriam se desempenhado no passado. Os comerciantes também devem certificar-se de comercializar quaisquer estratégias para garantir que elas funcionem na vida real, mesmo que tenham mostrado sinais de sucesso no backtesting e em um nível teórico.
Quando é hora de mudar estratégias?
Uma estratégia de negociação forex funciona muito bem quando os comerciantes seguem as regras. Mas, assim como qualquer outra coisa, uma estratégia em particular pode nem sempre ser de tamanho único, então o que funciona hoje pode não necessariamente funcionar amanhã. Se uma estratégia não está provando ser rentável e não está produzindo os resultados desejados, os comerciantes podem considerar o seguinte antes de mudar um plano de jogo:
Combinando a gestão de risco com o estilo de negociação: Se a relação risco versus recompensa não for adequada, pode ser necessário mudar as estratégias. As condições do mercado evoluem: uma estratégia de negociação pode depender de tendências específicas do mercado, portanto, se elas mudarem, uma estratégia específica pode se tornar obsoleta. Isso poderia sinalizar a necessidade de fazer ajustes ou modificações. Compreensão: se um trader não entender muito bem a estratégia, há uma boa chance de não funcionar. Se surgir um problema ou um comerciante não conhecer as regras, a eficácia da estratégia é perdida.
Embora a mudança possa ser boa, mudar uma estratégia de negociação forex pode ser caro. Se você modificar sua estratégia com muita frequência, poderá perder.
The Bottom Line.
Uma estratégia de negociação forex é um conjunto de análises que um trader de forex usa para determinar se deve comprar ou vender um par de moedas a qualquer momento. Essas estratégias podem ser de natureza manual ou automática e podem ser adquiridas internamente ou desenvolvidas internamente. Os traders que desenvolvem seus próprios sistemas de negociação devem recorrer a eles e negociá-los para garantir um bom desempenho antes de comprometer o capital real.
Comments
Post a Comment