Tutorial de testador de estratégia do MetaTrader 4.
Para obter o máximo do seu consultor especialista, você precisará otimizar e fazer backtest da sua estratégia usando o Strategy Tester do MetaTrader. Embora o teste para a frente em uma conta demo seja essencial, o backtesting permite que você simule transações por um longo período de tempo em apenas alguns minutos. E com o recurso de otimização, você pode descobrir quais configurações tiveram melhor desempenho em um período de gráfico histórico selecionado.
Existe um debate considerável sobre a precisão do testador de estratégias do MetaTrader. Na melhor das hipóteses, o backtesting oferece apenas uma aproximação aproximada 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 View.
Centro Histórico.
Antes de fazer backtesting ou otimizar, é importante certificar-se de que seus dados de histórico estão completos e precisos, especialmente se você estiver usando 'Every tick' como seu modelo de teste. Se você vir erros de "carta incompatível" no seu registro de diário ou se a qualidade da sua modelagem for inferior a 90%, os dados do histórico não serão suficientes para gerar marcações precisas.
Abra o Centro de Histórico no menu Ferramentas ou pressionando F2 no seu teclado. Clique duas vezes no par de gráficos na coluna da esquerda para a qual você pretende fazer o backtest. 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 do M1 para gerar tiques, por isso é importante que seus dados do M1 estejam completos.
No Centro de Histórico, você pode baixar ou importar dados para usar em 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 na lista do 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 - isso pode levar 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 como M1. Arraste e solte o script period_converter da janela Navegador no gráfico e defina a configuração ExtPeriodMultiplier como o número de minutos para conversão. Para M15, use 15; para H1, use 60; para H4, use 240 e assim por diante.
Repita este processo para todos os símbolos / períodos que você pretende 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 do 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, período e período selecionados. 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 especialista, primeiro selecione-o na caixa suspensa Consultor Especialista. Selecione o par de moedas na caixa Símbolo e no período do gráfico na caixa Período. Para o Modelo, você geralmente deseja selecionar "Somente Preços Abertos", a menos que esteja otimizando um EA que é executado nos dados de seleção. Nesse caso, selecione "Cada marca". Marque a opção Usar data e selecione um intervalo de datas para otimizar. Por fim, verifique se a otimização está marcada.
Clique no botão Propriedades do especialista para abrir as configurações do seu consultor especialista. 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 otimizando as configurações SL, TS e TP para um consultor especialista. 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 valores (5, 10, etc.) são bons.
A caixa de seleção à esquerda deve ser selecionada para que a 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, clique no botão Iniciar na parte inferior direita da janela do Strategy Tester. 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 estiver demorando muito, considere encurtar o período, otimizar menos configurações ou usar um valor de etapa maior.
Quando a otimização estiver concluída, abra a guia Resultados da otimização e clique duas vezes na coluna Lucro para classificar os resultados. Clique duas vezes em qualquer um dos resultados para carregá-lo no testador. Pressione o botão Iniciar novamente para fazer o backtest com as configurações selecionadas.
Backtesting
Até agora, deveria 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 somente se você quiser um exame visual do backtesting. Deixe a otimização desmarcada.
Clique no botão Propriedades do Especialista 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 Expert Properties e pressione Start para começar o teste. Isso levará de alguns segundos a vários minutos, dependendo das 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 prejuízo bruto. Maior é melhor, qualquer coisa acima de 1.5 é boa. Saque absoluto - O levantamento do seu depósito inicial. Altas perdas aumentam a probabilidade de sua conta ser apagada. Negociações de lucro - Sua porcentagem geral de ganhos. Qualidade de modelagem - Somente importante se o seu modelo de teste for Every Tick. Se assim for, 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 dos seus resultados. Ao testar seu novo EA, examine-o atentamente para garantir que sua estratégia esteja funcionando conforme o esperado.
Caminhar em frente análise.
Embora o backtesting e a otimização possam lhe dar uma boa idéia de como o seu EA irá negociar, você precisará fazer testes mais extensos para garantir que o seu sistema de negociação seja realmente lucrativo. A melhor maneira de conseguir isso é através de um processo chamado análise de walk-forward.
A análise de análise direta consiste simplesmente em vários ciclos de otimização e backtesting e na análise dos resultados dos testes durante um longo período. Nosso artigo sobre análise de análise prospectiva explica o processo em mais detalhes. Nosso Walk Forward Analyzer para MetaTrader permite que você execute WFA rapidamente e facilmente.
Como iniciar o backtesting facilmente com o simulador de negociação Forex Tester [Ultimate Video Guide]
Um tutorial em vídeo que permite que você comece rapidamente a testar estratégias manuais e automatizadas, usando apenas as funcionalidades mais importantes e básicas do programa.
Este tutorial em vídeo descreve como fazer o download do Forex Tester 3 gratuitamente em nosso site. Depois que o download estiver concluído, você precisará instalar o nosso software de backtesting passando por um processo de instalação simples. Quando todas as etapas necessárias são realizadas, você pode usar a versão de demonstração do simulador Forex Tester sem limitações de tempo.
Este vídeo ajuda você a entender como usar o Data Center do Forex Tester. Você pode baixar dados de alta qualidade do nosso servidor ou de um arquivo no seu computador; exportar dados para um arquivo; alterar as propriedades de backtesting, corretores e fusos horários; adicionar e excluir símbolos; e avaliar a qualidade e a quantidade dos dados.
Os usuários do Forex Tester 3 têm a oportunidade de baixar os dados de diferentes corretores de duas maneiras. Quando você atualiza dados do servidor, pode escolher o período e o tipo de dados. Se você importar dados de um arquivo, não poderá alterar nenhum parâmetro.
Você também pode aplicar funções de grupo e baixar os dados ou alterar as configurações de qualquer número de símbolos simultaneamente.
No Forex Tester 3, todos os testes são realizados em projetos. O projeto é um conjunto de configurações, incluindo pares de moedas selecionados, o intervalo de tempo, o método de geração de ticks, o fuso horário e a data de início do teste.
O usuário pode testar facilmente várias estratégias em vários instrumentos; pare o teste a qualquer momento; mude para um novo projeto e, em seguida, retorne e retome o teste.
Este tutorial fornece informações sobre três métodos que permitem que você comece a testar desde o início, a partir de uma data pré-selecionada ou para continuar o teste a partir do ponto anterior. Você também descobrirá como acelerar e desacelerar os testes e como se mover mais facilmente de bar para barra ou até mesmo para uma quantidade predefinida de barras. Existe também a possibilidade de definir a frequência de atualização do gráfico.
Neste vídeo vamos explicar como colocar diferentes tipos de pedidos. O Forex Tester dá uma oportunidade para backtest sua estratégia usando ordens pendentes e de mercado. Você também pode modificar, fechar ou excluir pedidos com um clique do mouse. Aprenda Forex e melhore ainda mais a sua estratégia usando ferramentas especiais para uma configuração de pedido mais rápida: faça pedidos com vários parâmetros predefinidos.
Este tutorial mostrará como modificar os principais parâmetros de ordens pendentes e de mercado. Você pode alterar as perdas de parada e obter lucros e paradas rapidamente, e também pode alterar o preço dos pedidos pendentes. E, como de costume, o Forex Tester oferece várias maneiras de fazer isso.
Indicadores e osciladores são a base da maioria das estratégias hoje em dia. É por isso que você precisa saber como colocá-los em seus gráficos, como alterar as configurações para eles, como períodos, cores e intervalos de tempo em que serão exibidos. O Forex Tester oferece 45 indicadores diferentes para qualquer gosto que cubra quase todo tipo de estratégia.
Este tutorial em vídeo informará sobre as importantes ferramentas de análise técnica que você pode usar em nosso programa de backtesting. Você terá acesso a linhas de tendência horizontais, verticais, formas, ferramentas Fibonacci, símbolos de onda, etiquetas de texto e muitos outros instrumentos úteis.
Um modelo é um conjunto completo de uma configuração de janela que inclui indicadores, ferramentas gráficas e esquemas de cores. Ajuste um gráfico de acordo com suas necessidades, salve-o como um modelo e aplique essas configurações a qualquer outro gráfico com apenas alguns cliques.
Expert Adviser (EA) é um programa que permite testar estratégias no modo automático. Com um EA, o trader pode testar uma estratégia de negociação em vários anos de dados em apenas alguns minutos. Além disso, logo após o primeiro teste, você pode iniciar um novo, alterando os parâmetros do EA e, eventualmente, encontrar os valores mais apropriados para cada parâmetro ou, de uma vez por todas, rejeitar a estratégia, convencido de que ela não é lucrativa.
O Forex Tester 3 contém 6 opções de como você pode exibir o gráfico, 9 tipos de janelas que fornecem informações importantes sobre o teste, a capacidade de personalizar totalmente todas as visualizações de gráficos para as suas necessidades, bem como habilitar várias opções úteis.
Este tutorial mostra como analisar os resultados do teste com a ajuda da janela "Estatísticas". O Gráfico de Lucro fornece as mesmas informações não na forma de números, mas em uma visualização gráfica mais conveniente. Você também pode exportar todas as estatísticas para o Excel para uma análise mais detalhada e classificação dos resultados.
Este tutorial mostra como registrar o Forex Tester 3.
Testador de forex simples.
O MT4 ou MetaTrader 4 ainda é a plataforma de negociação de câmbio mais popular do mercado. Apesar do lançamento da 5ª geração desta cadeia de plataformas da MetaQuotes Software Corp., a 4ª versão continua forte ao gravar downloads pagos até agora. O Simple forex tester é uma aplicação de software secundária que permite o back-testing diretamente dentro de uma plataforma MT4.
Sendo a plataforma de negociação forex mais popular, só faria sentido ter um aplicativo secundário de back-testing que funcionasse dentro do MT4. E este testador de forex simples 2 0 é uma escolha preferida para muitos comerciantes profissionais e corretores lá fora.
O backtesting é obrigatório não apenas para testar ferramentas e indicadores técnicos ou estratégias personalizadas, mas também para aprimorar as habilidades de negociação estrutural. Hospedar uma ferramenta em um período de tempo passado no mercado para garantir que ela forneça as previsões corretas é algo que todo profissional de negócios faz com suas ferramentas personalizadas. E o mesmo se aplica às estratégias também.
Benefícios deste aplicativo de software.
Esse simples testador de forex 2 permite alternar facilmente entre o mercado e o indicador ou os gráficos de ferramentas, atendendo a várias janelas. Trabalhar dentro do MT4 significa que está programado na linguagem mql4. Isso faz com que seja diretamente compatível com qualquer aplicativo secundário carregado externamente.
Existem outros benefícios adicionais para aplicativos forex tester simples, como:
Ele mostra os resultados abrangentes da saída do back-testing. Atende a várias negociações ou janelas e caixas de teste. Permite acelerar, pausar e desacelerar gráficos durante o back-testing. O usuário pode colocar negociações spot. Sincroniza com a conta real em tempo real e mostra o equilíbrio graficamente. O usuário pode modificar ordens abertas ou posições diretamente.
Um dos maiores pontos positivos para o usuário neste aplicativo de software é que ele funciona perfeitamente em conjunto com o MT4 com falhas muito raras. A interface em si é baseada em um padrão de design totalmente semelhante. O que este aplicativo faz é que ele duplica as funções gráficas do MT4 em uma janela secundária simulada para back-testing.
Usando o software de back-testing para sessões práticas.
Essa é outra maneira de aproveitar ao máximo esses aplicativos de software. Na sequência de um ponteiro mencionado anteriormente, o crescimento das habilidades de análise de gráficos fundamentais é o que separa os melhores traders do resto. E a análise fundamental é toda sobre como fazer o melhor dos padrões de análise estrutural.
Esses aplicativos basicamente fornecem uma plataforma simulada para ordens de negociação com base em dados em tempo real. Muitos especialistas passam por dados de mercado anteriores em um período de tempo baseado na semana, procurando por padrões estruturais nos quais trabalhar. E então eles usam back-testing para trabalhar em estratégias de acordo com as estruturas gráficas.
Simples forex tester 2 como um software de teste de volta.
O que faz deste back-testing uma preferência sobre os outros é a sua compatibilidade e simplicidade com a plataforma MT4. Existem outros softwares semelhantes, como o Forex Tester e o Trading Simulator & ndash; ambos são bastante populares também. Mas uma desvantagem comum em ambos os aplicativos de software é que nenhum deles vem com uma linguagem compatível.
Back-testing é algo que é obrigatório para uma plataforma profissional de negociação de divisas. Estratégias de aperfeiçoamento e saídas de ferramentas técnicas são importantes para negociar com sucesso. Testador de forex simples é, portanto, um must-have e um aplicativo deve usar para garantir o lucro, tanto quanto possível.
"O dinheiro nunca será de graça."
O conteúdo deste artigo reflete a opinião do autor e não reflete necessariamente a posição oficial da LiteForex. O material publicado nesta página é fornecido apenas para fins informativos e não deve ser considerado como a prestação de consultoria de investimento para efeitos da Diretiva 2004/39 / CE.
Como é fácil começar a testar no nosso simulador de negociação [Vídeo]
Depois de importar dados históricos e preparar dados para testes, criando um novo projeto, você pode começar a testar algumas estratégias de negociação. Para iniciar o teste, pressione o botão "Start Test" (Teste de Início) depois disso, o teste será iniciado imediatamente e você verá as barras móveis no (s) gráfico (s).
Quando o teste é iniciado, o botão "Start Test" será alterado para o botão "Stop Test".
Agora você pode testar sua estratégia de negociação colocando pedidos e ver como a estratégia funciona (veja o próximo tutorial sobre como fazer pedidos). Você pode alterar a velocidade do teste, pausá-lo e desenhar novas barras pressionando um botão com a próxima barra de controle:
1. O botão de pausa - você pode definir o modo de pausa para pausar a mudança de preço e analisar a situação. Além disso, o modo Pausa ativa os botões 4, 5, 6. A pausa pode ser definida e liberada com o botão "Pausa" em um teclado.
2. A velocidade da mudança de preço. Movendo essa barra de trilhas, você define o quão rápido seu tempo de teste vai.
3. Marque o tamanho do pacote. Aqui você pode definir com que freqüência atualizar gráficos se você definir Cada tick - os gráficos serão atualizados após cada processamento de ticks se você definir 15 minutos - os gráficos serão atualizados após o processamento de 15 minutos-tick-package. Também afeta a velocidade.
4. Retroceda por uma única barra. Este botão está disponível apenas quando o Pause estiver definido. Ele excluirá 1 barra em termos do período atual. Se o período de tempo atual é de 1 hora - você voltará por 1 hora, se você tivesse alguns negócios fechados, eles poderiam ser restaurados. Você também pode usar o botão "Backspace" em um teclado para essa finalidade.
5. Avance por uma única barra. Este botão está disponível apenas quando o Pause estiver definido. Você avançará em 1 bar em termos do período atual. Se o período de tempo atual for de 1 hora, você avançará por 1 hora. Isso afeta todos os gráficos. Você também pode usar o botão "Espaço" em uma tecla do teclado para essa finalidade.
6. Avançar pelo tamanho do pacote de carrapato. Este botão está disponível apenas quando o Pause estiver definido. Você irá avançar no tempo definido pelo tamanho do pacote de carrapatos (3). Você pode usar o botão "F11" em um teclado para essa finalidade.
Nota: você pode mudar as teclas de atalho para estas e outras ações via Tools & rarr; Menu Opções, guia Teclas de atalho.
Este é um modo de teste visual quando você pode ver seus negócios e colocá-los manualmente. O Forex Tester também pode testar estratégias automatizadas escritas com C ++ e Delphi. Você pode encontrar API e exemplos de como escrever indicadores e estratégias personalizados na pasta \ Examples \ após a instalação. A ajuda da API está ativada sobre a Ajuda & rarr; API de Indicadores / APIs de Estratégias no Forex Tester. Você pode fazer backtest de estratégias automatizadas com a opção Fast Test ou com a ferramenta Strategy Optimizer.
Consultor Especialista Simples.
Esta seção aborda os princípios da criação de um Expert Advisor de negociação simples.
Argumentos preliminares.
Antes de começar a programar um Expert Advisor de negociação, é necessário definir os princípios gerais de um programa futuro. Não há regras rígidas de criação de programa. No entanto, depois de ter criado um programa, um programador geralmente continua a melhorá-lo. Para ser capaz de compreender facilmente o programa no futuro, ele deve ser criado de acordo com um esquema bem pensado e fácil de entender (é especialmente importante que um programa seja melhorado por outro programador). O programa mais conveniente é aquele que consiste em blocos funcionais, cada um dos quais é responsável por sua parte de cálculos. Para criar um algoritmo de um Expert Advisor de negociação, vamos analisar o que um programa operacional deve fazer.
Um dos dados mais importantes na formação de ordens de negociação é a informação sobre ordens que já existem em um terminal de cliente. Algumas das estratégias de negociação permitem apenas uma ordem unidirecional. Geralmente, se uma estratégia de negociação permitir, várias ordens podem ser abertas em um terminal ao mesmo tempo, embora seu número deva ser razoavelmente limitado. Ao usar qualquer estratégia, as decisões comerciais devem ser tomadas levando em conta a situação atual. Antes que uma decisão comercial seja feita em um programa, é necessário saber quais ordens de negociação já foram abertas ou colocadas. Primeiro de tudo, um programa deve conter um bloco de contabilidade de ordens que está entre os primeiros a serem executados.
Durante uma execução de EA, as decisões de negociação devem ser tomadas, cuja implementação leva à execução de operações de negociação. Parte de código responsável pela formação de ordens de negociação é melhor escrita em um bloco separado. Um Expert Advisor pode formar uma solicitação de negociação para abrir uma nova ordem pendente ou de mercado, fechar ou modificar qualquer um dos pedidos existentes ou não executar nenhuma ação. Um EA também deve calcular os preços do pedido, dependendo do desejo do usuário.
As decisões comerciais devem ser tomadas em um programa com base em critérios comerciais. O sucesso de todo o programa depende da exatidão de se detectar critérios comerciais no programa. Ao calcular critérios comerciais, um programa pode (e deve) levar em conta todas as informações que podem ser úteis. Por exemplo, um Expert Advisor pode analisar a combinação de valores de indicadores técnicos, tempo de notícias importantes, hora atual, valores de alguns níveis de preços, etc. Por conveniência, a parte do programa responsável pelo cálculo dos critérios de negociação deve ser escrita em separado. quadra.
Um Expert Advisor de negociação deve necessariamente conter um bloco de processamento de erros. A análise de erros que podem ocorrer na execução da operação de negociação permite, por um lado, repetir uma solicitação de negociação e, por outro lado, informar um usuário sobre uma possível situação de conflito.
Estrutura de um Expert Advisor Simples.
Abaixo está um esquema estrutural de um Expert Advisor simples, construído com base em vários blocos funcionais, em cada bloco, uma certa parte separada dos cálculos.
Fig. 109. Esquema estrutural de um simples Expert Advisor.
No estágio de desenvolvimento do EA a seguir, ainda não há código de programa. Ao mesmo tempo, o algoritmo de um programa é em grande parte formado. Como o EA construído sobre as bases do esquema oferecido irá operar pode ser facilmente entendido simplesmente olhando o esquema e orientando sobre os nomes de blocos e matrizes de relações (controle de passagem) entre eles.
Depois que o controle de início do programa é passado para o bloco de processamento preliminar. Neste bloco, alguns parâmetros gerais podem ser analisados. Por exemplo, se não houver barras suficientes em uma janela (barras necessárias para o cálculo de parâmetros de indicadores técnicos), um EA não poderá operar adequadamente. Nesse caso, um EA deve encerrar a operação preliminarmente informando um usuário sobre ele e relatando o motivo da rescisão. Se não houver contra-indicações de caráter geral, o controle é passado para ordenar o bloqueio contábil.
No bloco de ordens contábeis, o número e a qualidade dos pedidos existentes em um terminal do cliente para uma segurança (para a janela da qual o EA está anexado) são detectados. Neste bloco, as ordens de outros títulos devem ser eliminadas. Se uma estratégia de negociação programada exigir o uso apenas de ordens de mercado (e não usar ordens pendentes), o fato da presença de ordens pendentes deve ser detectado. Se uma estratégia admite apenas uma ordem de mercado e na verdade existem várias ordens, esse fato também deve ser conhecido. A tarefa do bloco de contabilidade de pedidos (neste esquema) é definir se a situação atual de negociação corresponde a uma situação esperada, ou seja, aquela em que o EA pode operar adequadamente. Se a situação corresponder, o controle deve ser passado para o próximo bloco para continuar a operação do EA; se não, a operação do EA deve ser encerrada e esse fato deve ser relatado a um usuário.
Se não houver pedidos no terminal ou o número e a qualidade dos pedidos existentes corresponder ao esperado, o controle será passado para o bloco de definição dos critérios de negociação. Neste bloco são calculados todos os critérios necessários para a tomada de decisões comerciais, ou seja, critérios para abertura, fechamento e modificação de ordens. Mais controle é passado para o bloco de ordens de fechamento.
É fácil entender por que, no esquema oferecido, o bloco de ordens de fechamento é executado antes do bloco de ordens de abertura. É sempre mais razoável processar os primeiros pedidos existentes (fechar ou modificar) e somente depois disso abrir novos pedidos. Geralmente, é correto ser guiado pelo desejo de ter o mínimo de ordens possível. Durante a execução deste bloco todas as ordens, para as quais o critério de fechamento foi ativado, devem ser fechadas.
Depois que todos os pedidos necessários foram fechados, o controle é passado para um bloco de cálculo de tamanho de novos pedidos. Existem muitos algoritmos para calcular um volume de pedidos. O mais simples deles é usar um tamanho de lote fixo e constante. É conveniente usar esse algoritmo em um programa para testar estratégias. O método mais popular de definir um tamanho de pedido é definir o número de lotes, dependendo da quantidade de margem livre, por exemplo, 30-40% dele. Se a margem livre não for suficiente, o programa encerra sua operação informando o usuário sobre o motivo.
Depois que o número de lotes para abertura de novos pedidos for definido, o controle é passado para o bloco de abertura do pedido. Se algum dos critérios calculados anteriormente apontar para a necessidade de abrir uma ordem de um certo tipo, um pedido de negociação para abrir um pedido é formado neste bloco.
Há também um bloco de análise de erros em um Expert Advisor. Se alguma operação de negociação falhou, o controle (somente neste caso) é passado para o bloco de processamento de erros. Se um erro retornado por um servidor ou terminal de cliente não for crucial, mais uma tentativa será feita para executar uma operação de negociação. Se um erro crucial for retornado (por exemplo, uma conta é bloqueada), um EA deve encerrar sua operação. Lembre-se, no MQL4 não há possibilidade de o programa terminar uma operação do EA em uma janela de segurança (diferentemente dos scripts, veja Funções Especiais). O que pode ser feito de uma maneira de programa é o término de start (). Em um novo início da função start () em um novo tick, o valor de um determinado flag de proibição de flag variável (neste caso habilitado como resultado de um erro crítico) pode ser analisado e o controle pode ser passado para o término do operação de função especial; assim, a formação de novo pedido de comércio não é permitida. No esquema oferecido, o valor da bandeira é analisado no bloco de processamento preliminar.
Estratégia de Negociação.
Os preços de mercado estão em constante movimento. O estado de mercado a qualquer momento pode ser condicionalmente caracterizado como uma tendência - forte mudança de preço unidirecional (aumento ou queda), ou como um movimento de preço flat-lateral com desvios fracos de uma certa média. Essas características de mercado são condicionais, porque não há critérios claros, de acordo com qual tendência ou flat podem ser identificados. Por exemplo, movimentos laterais longos com fortes desvios que não podem ser traçados nem em um plano nem em uma tendência. Geralmente assume-se que o mercado é principalmente no estado de movimento lateral e as tendências geralmente ocorrem 15-20% do tempo.
Fig. 110. Plano e tendência no mercado.
Todas as estratégias de negociação também podem ser convencionalmente divididas em dois grupos principais. O primeiro grupo contém estratégias orientadas para planos. A idéia principal de tais estratégias é que, após um desvio evidente, o preço deve retornar à posição anterior, é por isso que as ordens são abertas na direção contrária ao último movimento de preço. As estratégias do segundo grupo são estratégias de tendência, quando as ordens são abertas na mesma direção do movimento do preço de sal. Existem estratégias mais complicadas (combinadas). Tais estratégias levam em conta muitos fatores diferentes que caracterizam o mercado; Como resultado, a negociação pode ser executada tanto no plano quanto na tendência. Não é difícil implementar a negociação de acordo com essa ou aquela estratégia tecnicamente - o MQL4 contém todos os meios necessários para isso. O principal trabalho na criação de uma vez própria estratégia consiste na busca de critérios de negociação.
Critérios de Negociação.
Neste exemplo, tentaremos construir um Expert Advisor de tendência, ou seja, aquele que abrirá pedidos na direção do movimento de preço. Então, precisamos encontrar entre vários indicadores técnicos aqueles que detectam o início de uma tendência. Um dos métodos mais simples de pesquisar critérios de negociação é baseado na análise da combinação de MAs com diferentes períodos médios. A figura 111 e a figura 112 mostram a posição de dois MA diferentes (com períodos de média 11 e 31) em diferentes partes do mercado. Médias com pequeno período médio (linhas vermelhas) estão mais próximas de um gráfico de preços, sinuosas e móveis. Médias móveis com maior período de média (linha azul) são mais inertes, têm maior defasagem e estão mais distantes dos preços de mercado. Vamos prestar atenção aos lugares onde os MAs com diferentes períodos médios se cruzam e tentam decidir, se o fato do cruzamento MA pode ser usado como um critério de leitura.
Fig. 111. Cruzamento de MA (11) e MA (31) quando a direção do movimento de preços muda.
Na Fig. 111, vemos uma parte do mercado em que as ordens de abertura na direção do movimento de preços na passagem de MA são justificadas. No ponto A, a linha vermelha cruza a linha azul de baixo para cima, depois disso o preço de mercado continua crescendo por algum tempo. Além disso, o cruzamento de MA reverso indica a mudança de direção do movimento de preço. Se abrirmos uma ordem de compra no ponto A e fechá-la em B, obteremos lucro proporcional à diferença entre os preços A e B.
Fig. 112. Cruzamento de MA (11) e MA (31) quando a direção do movimento de preços muda.
Ao mesmo tempo, há outros momentos no mercado quando o MA se cruza, mas isso não leva a uma subida ou descida considerável dos preços (Fig. 112). Pedidos abertos no cruzamento do MA nesses momentos levarão a perdas. Se a venda for aberta em A e fechada em B, tal negociação trará perdas. O mesmo pode ser dito sobre uma ordem de compra aberta em B e fechada em C.
O sucesso de toda a estratégia implementada com base no cruzamento de AM depende do número de partes que podem ser caracterizadas como tendência e plana. No plano, muitas vezes o cruzamento MA é um evento regular que interfere com qualquer estratégia de tendência. Inúmeros sinais falsos geralmente levam a perdas. É por isso que este cruzamento de MAs com diferentes períodos de média pode ser usado para construir estratégias de negociação apenas em combinação com outros sinais que provem uma tendência. Neste exemplo (para construir um Expert Advisor simples), teremos que recusar o uso deste sinal.
Nós usaremos outro sinal. Analisando visualmente o caráter das mudanças de preço no mercado, podemos ver que uma alta ou baixa de preço de uma direção ocorre frequentemente como resultado de um movimento curto e forte. Em outras palavras, se em um curto período ocorreu um movimento forte, podemos esperar sua continuação em um período de médio prazo.
Fig. 113. Um forte movimento de preços pode levar a um desenvolvimento de tendência.
A figura 113 mostra o período de mercado em que um movimento forte resultou na continuação da mudança de preço na mesma direção. Como o & quot; um movimento forte & quot; Podemos usar a diferença de MAs com diferentes períodos médios. Quanto mais forte o movimento, maior a defasagem do MA com maior período médio de MA com um pequeno período de média. Além disso, mesmo os movimentos de preços descontínuos fortes com retorno adicional não resultam numa grande diferença entre os MAs, isto é, numerosos sinais falsos não aparecem. Por exemplo, o salto de preço em 50 pontos com retorno adicional (no centro da Fig. 113) acarretou aumento de diferença entre os MAs apenas em 20 pontos. Ao mesmo tempo, um movimento realmente forte (que geralmente não é acompanhado por uma correção considerável) no ponto A resultou na diferença aumentar até 25 - 30 pontos.
Se a ordem de compra for aberta quando um determinado valor de diferença entre os MAs for atingido, por exemplo, em A, o mais provável será que a ordem seja lucrativa quando um preço atingir um valor de ordem de parada predefinido. Vamos usar este valor como critério de negociação no nosso Expert Advisor.
Número de encomendas.
Neste exemplo, analisamos um Expert Advisor que admite a presença de apenas uma ordem de mercado, ordens pendentes não são fornecidas. Tal abordagem é justificada não apenas neste exemplo, mas pode ser usada como base para qualquer estratégia.
Geralmente, as ordens pendentes são usadas quando um desenvolvedor tem um critério bastante confiável para prever a mudança futura de preço com alta probabilidade. Se não houver tal critério, não há necessidade de usar pedidos pendentes.
A situação em que várias ordens opostas para um título estão abertas também não pode ser considerada razoável. Foi escrito anteriormente que, do ponto de vista econômico, as ordens opostas são consideradas sem sentido, especialmente se os preços dos pedidos forem iguais (consulte Encerrando e Excluindo Pedidos). Nesse caso, devemos fechar um pedido por outro e esperar que um sinal abra uma ordem de mercado em uma determinada direção.
Relação dos Critérios de Negociação.
A partir desta posição, torna-se claro quais as relações possíveis entre os critérios de negociação. A Figura 114 mostra três variantes de correlação de critérios de negociação, quando cada critério é importante (válido). Ações (abertura e fechamento de ordens de mercado) ocorrem no sentido horário nas figuras a seguir.
Fig. 114. Correlação dos critérios de abertura e fechamento de ordens (aeb - correto, c - incorreto).
A variante mais popular de um critério comercial corretamente formado é a variante a. Depois de ser aberto, uma ordem de compra do mercado é mantida até o momento em que o critério exige o seu gatilho de fechamento. Depois disso, uma pausa ocorre quando nenhum pedido é aberto. Além disso, uma ordem de venda do mercado pode ser aberta. As condições para o fechamento de uma ordem de venda (de acordo com os critérios corretamente formados) ocorrem mais cedo do que as condições para a abertura de uma ordem de compra. No entanto, uma ordem de compra pode ser aberta novamente, se um critério de negociação exigir isso. Mas, de acordo com essa variante, uma ordem de mercado não pode ser aberta se houver uma ordem de mercado aberto na direção contrária.
Correlação de critérios semelhantes está na variante b. A diferença é que um critério para abrir qualquer ordem de mercado é, ao mesmo tempo, um critério para fechar a ordem oposta. Essa variante, como a variante a, não permite várias ordens abertas no terminal ao mesmo tempo em uma única garantia.
A variante da correlação de critérios está incorreta. De acordo com esta variante, a abertura de uma ordem de mercado é permitida quando ordens contrárias ainda não estão fechadas, o que é insensato. Pode haver casos raros quando esta variante é parcialmente justificada. A abertura de uma ordem oposta é às vezes aceitável para compensar perdas ocorridas em pequenas correções após fortes movimentos de preços. Nesses casos, uma ordem oposta pode ser aberta com o mesmo valor ou menor que a já existente e, em seguida, fechada quando a correção é finalizada. Tal tática permite não interferir com o & quot; main & quot; ordem aberta na direção da tendência.
Em geral, várias ordens de uma direção também são possíveis. Isso pode ser justificado quando um pedido aberto anteriormente é protegido por uma ordem Stop e o critério que aponta para o desenvolvimento do preço na mesma direção é acionado novamente. No entanto, ao criar essa estratégia, um desenvolvedor deve estar plenamente ciente de que, no caso de uma mudança brusca no preço, as ordens de parada podem não ser executadas por alguns corretores no primeiro toque de preço. E a perda será proporcional ao valor total das ordens de mercado unidirecionais.
Em nosso exemplo, usamos a variante b da correlação dos critérios de negociação. Todas as ordens de mercado abertas são fechadas por uma ordem de parada ou após um critério de abertura de uma ordem em triggers de direção oposta (aqui o critério de fechamento de compra coincide com o de abertura de venda e vice-versa).
Tamanho de pedidos abertos.
Em qualquer estratégia de negociação, os tamanhos dos pedidos devem ser razoavelmente limitados. Em um caso simples, um tamanho de pedido fixo é usado em um Expert Advisor. Antes do início da operação do EA, um usuário pode definir qualquer tamanho de pedidos futuros e deixá-lo inalterado por algum tempo. Além disso, se o saldo for alterado, um usuário poderá definir um novo valor de números de lote de pedidos abertos.
Um tamanho de pedido muito pequeno proporciona mais confiança na operação na imprevisível mudança de mercado, mas o lucro em caso de sucesso não será tão grande. Se o tamanho do pedido for muito grande, pode ser obtido um grande lucro, mas esse EA será muito arriscado. Normalmente, o tamanho dos pedidos abertos é configurado de modo que os requisitos de margem não excedam de 2 a 35% do saldo ou margem livre (se uma estratégia permitir apenas um pedido aberto, saldo e margem livre no momento anterior à abertura do pedido) seja igual).
Neste exemplo, ambas as variantes são implementadas. Um usuário pode optar por indicar diretamente os valores dos pedidos ou definir o valor em porcentagem da margem livre.
Detalhes de programação.
Um Expert Advisor de tendência simples tradingexpert. mq4, construído com base em argumentos anteriores, pode ser assim:
Descrevendo Variáveis.
Um outro critério na estimativa de programa é sua legibilidade. Um programa é considerado como escrito corretamente, se puder ser lido facilmente por outros programadores, é por isso que todas as principais partes do programa e principais momentos que caracterizam a estratégia devem ser comentados. É também por isso que é recomendado declarar e comentar todas as variáveis no início do programa.
No bloco 1-2 são descritas variáveis externas e globais.
De acordo com as regras, variáveis externas e globais devem ser abertas antes de seu primeiro uso (veja Tipos de Variáveis), é por isso que elas são declaradas na parte principal do programa. Todas as variáveis locais da função start () são reunidas e descritas na parte superior da função (bloco 2-3) imediatamente após o cabeçalho da função. As regras de declarar variáveis locais não exigem isso, mas também não proíbem. Se um programador enfrenta dificuldades em compreender o significado de uma variável ao ler o programa, ele pode se referir à parte de programa superior e descobrir o significado e o tipo de qualquer variável. É muito conveniente na prática de programação.
Bloco de processamento preliminar.
Neste exemplo, o pré-processamento consiste em duas partes (bloco 3-4). O programa termina a operação se não houver barras suficientes em uma janela de segurança; em tal caso, é impossível detectar corretamente (no bloco 5-6) valores de médias móveis necessários para o cálculo dos critérios. Além disso, o valor da variável Work é analisado. Na operação normal do EA, o valor da variável é sempre 'verdadeiro' (é definido uma vez durante a inicialização). Se ocorrer um erro crítico na operação do programa, 'false' é atribuído a essa variável e start () conclui sua operação. Este valor não será alterado no futuro, é por isso que o seguinte código não é executado. Nesse caso, a operação do programa deve ser interrompida e a razão do erro crítico deve ser detectada (se necessário, um centro de negociação deve ser contatado). Depois que a situação é resolvida, o programa pode ser iniciado novamente, isto é, o EA pode ser anexado a uma janela de segurança.
Ordens contábeis.
O Expert Advisor descrito permite trabalhar apenas com uma ordem de mercado. A tarefa do bloco de contabilidade de ordens (bloco 4-5) é definir as características de uma ordem aberta, se houver uma. No loop que passa por ordens 'para' todas as ordens de mercado e pendentes existentes são verificadas, ou seja, da primeira (int i = 1) até a última (i & amp; lt; = OrdersTotal ()). Em cada iteração de ciclo, o próximo pedido é selecionado pela função OrderSelect (). A seleção é feita a partir de uma fonte de ordens abertas e pendentes (SELECT_BY_POS).
Se a seleção for executada com sucesso (ou seja, houver mais uma ordem no terminal), é necessário analisar essa ordem e a situação: se a ordem está aberta para a segurança na qual a EA opera, se a ordem é de mercado ou pendente ; também deve ser levado em consideração ao contar pedidos. Na linha:
todas as ordens abertas para outro título são eliminadas. O operador 'continue' interrompe a iteração e as características de tal ordem não são processadas. Mas se o pedido for aberto para a segurança, para a janela da qual o EA é anexado, ele é analisado posteriormente.
Se OrderType () retorna um valor maior que 1 (veja Types of Trades), o pedido selecionado é um pendente. Mas neste Expert Advisor, o gerenciamento de pedidos pendentes não é fornecido. Isso significa que a execução de start () deve ser finalizada, porque ocorreu uma situação de conflito. Nesse caso, após uma mensagem sobre o término da operação start (), a execução é interrompida pelo operador 'return'.
Se a última verificação mostrou que a ordem analisada é uma ordem de mercado, o número total de ordens para uma garantia é calculado e analisado. Para o primeiro de tais ordens, todas as características necessárias são definidas. Se na próxima iteração o contador de ordem (variável Total) encontrar a segunda ordem de mercado, a situação também será considerada em conflito, porque o EA não pode gerenciar mais de uma ordem de mercado. Nesse caso, a execução start () é interrompida depois de mostrar uma mensagem correspondente.
Como resultado da execução do bloqueio contábil de pedidos (se todas as verificações foram bem-sucedidas), a variável Total preserva seu valor zero se não houver ordens de mercado ou obtém o valor 1 se houver uma ordem de mercado para nossa segurança. No último caso, algumas variáveis configuradas em correspondência com as características do pedido (número, tipo, preço de abertura, níveis de parada e valor do pedido) também obtêm seus valores.
Calculando Critérios de Negociação.
No exemplo analisado, a definição dos critérios de negociação (bloco 5-6) é calculada com base na diferença entre Médias Móveis com diferentes períodos de média. De acordo com os critérios aceitos, um gráfico é direcionado a touro se o valor atual do MA com período menor for maior que o valor de MA com período maior, e a diferença entre os valores for maior que um determinado valor. Em um movimento de urso, o MA com período menor é menor que o MA com maior período e a diferença também é maior que um certo valor crítico.
No bloco, os valores iniciais de MAs com períodos médios Period_MA_1 e Period_MA_2 são calculados. O fato de significado de qualquer critério de negociação é expresso através do valor de uma variável correspondente. As variáveis Opn_B e Opn_S denotam o critério de acionamento para abertura de ordens de Compra e Venda, variáveis Cls_В e Cls_S - para fechamento. Por exemplo, se um critério para abrir Buy não for acionado, o valor de Opn_B permanece 'false' (definido na inicialização da variável); se tiver sido acionado, Opn_B obtém o valor 'true'. Neste caso, o critério para o fechamento do Sell coincide com o da abertura do Buy, o critério para a abertura do Sell coincide com o do fechamento do Buy.
Ordens de encerramento.
Foi escrito anteriormente que este Expert Advisor é destinado apenas para operação com uma ordem de mercado aberta para uma segurança, para qual janela o EA está anexado. Para o momento em que o controle no programa é passado para o bloco de fechamento de pedidos, sabe-se com certeza que no momento atual não há pedidos para a segurança, ou existe apenas uma ordem de mercado. É por isso que o código no bloco de fechamento de pedidos é escrito para que apenas um pedido possa ser fechado com sucesso.
Este bloco é baseado no loop infinito 'while', cujo corpo consiste em duas partes análogas: uma para fechar uma ordem de compra, outra para fechar uma ordem de venda. 'While' é usado aqui para o propósito que, em caso de falha na operação de negociação, pode ser repetido novamente.
No cabeçalho do primeiro operador, 'se' a condição para o fechamento de uma ordem de compra é calculada (ordens de venda são fechadas de maneira análoga). Se o tipo de uma ordem aberta anteriormente corresponde à compra (consulte Tipos de negociações) e o sinal de fechamento da compra for relevante, o controle é passado para o corpo do operador 'se', onde uma solicitação para fechar é formada. Como um preço de fechamento de pedido na função OrderClose (), o valor de uma cotação em dois lados correspondente ao tipo de pedido é indicado (consulte Requisitos e limitações na realização de negociações). Se uma operação de negociação for executada com sucesso, depois que uma mensagem sobre o fechamento da ordem for mostrada, a iteração atual de 'while' será interrompida e a execução do bloco de fechamento de ordens será encerrada. Mas se a operação falhar, a função definida pelo usuário para processar os erros Fun_Error () é chamada (bloco 10-11).
Processando Erros.
Como um parâmetro passado em Fun_Error (), o último código de erro calculado por GetLastError () é usado. Dependendo do código de erro, Fun_Error () retorna 1 se o erro não for crítico e a operação puder ser repetida, e 0 se o erro for crítico. Erros críticos são divididos em dois tipos - aqueles, após os quais a execução de um programa pode ser continuada (por exemplo, um erro comum) e aqueles após os quais a execução de qualquer operação de negociação deve ser interrompida (por exemplo, conta bloqueada).
Se após uma operação de negociação malsucedida a função definida pelo usuário retornar 1, a iteração 'while' atual é finalizada e durante a próxima iteração outra tentativa é feita para executar a operação - para fechar a ordem. Se a função retornar 0, a execução atual do start () será interrompida. No próximo tick start () será iniciado pelo terminal do cliente novamente e se as condições para o fechamento do pedido forem preservadas, outra tentativa de fechar o pedido será feita.
Se durante o processamento de erros for descoberto que a execução de um programa adicional é sem sentido (por exemplo, o programa opera em uma versão antiga do terminal do cliente) durante a próxima partida, a execução da função especial start () será encerrada no processamento preliminar quando analisando o valor da variável Work.
Cálculo do Montante de Lotes para Novos Pedidos.
Amount of lots can be calculated in accordance with a user's settings following one of the two variants. The first variant is a certain constant value set up by a user. According to the second variant the amount of lots is calculated on the basis of a sum equal to a certain percentage (set by a user) of a free margin.
At the beginning of the block of defining the amount of lots for new orders (block 7-8) necessary values of some variables are calculated - minimal allowed amount of lots and step of lot change set up by a broker, free margin and price of one lot for the security.
In this example the following is provided. If a user has set up a certain non-zero value of the external variable Lts, for example 0.5, it is accepted as the amount of lots Lts when a trade request to open an order is formed. If 0 is assigned to Lts, the number of lots Lts is defined on the basis of the variable Prots (percentage), free margin and conditions set up by a broker.
After Lts is calculated, a check is conducted. If this value is lower than the minimal allowed value, the minimal allowed value is accepted. but if free margin is not enough, after a corresponding message the start() execution is terminated.
Opening Orders.
The block of opening orders (block 8-9) like the bloke of opening orders is an infinite loop 'while'. In the header of the first operator 'if' conditions for opening a Buy order are calculated: if there are no orders for the security (variable Total is equal to 0) and the sign for opening a Buy order is relevant (Opn_B is true ), control is passed to 'if' operator body for opening an order. In such a case after rates are refreshed prices for stop levels are calculated.
Values of stop levels are initially set by a user in external variables StopLoss and TakeProfit. In a general case a user can set values for this parameters smaller that a broker allows. Besides a broker may change the minimal allowed distance at any moment (it is an often case at strong market movements, for example, before important news release). That's why before each order opening stop levels must be calculate taking into account values set bu a user and the minimal allowed value set up by a broker.
For calculating stop levels the user-defined function New_Stop() is used; as a passed parameter the stop level value set by a user is used. In New_Stop() first the current minimal allowed distance is calculated. If the value set by a user corresponds to a broker's requirements, this value is returned. If it is smaller than the allowed value, the value allowed by a broker is used. Prices of stop requests are calculated from the corresponding two-sided quote (see Requirements and Limitations in Making Trades).
A trade request to open an order is formed using the function OrderSend(). For the calculation of order opening price and prices of stop requests the two-sided quote values corresponding to the order type are used. If a trade operation was successful (i. e. a server returned the number of an opened order) after a message about a successful order opening is shown. start() execution is finished. If an order was not opened and the client terminal returned an error, the error is processed according to the algorithm described earlier.
Some Code Peculiarities.
The analyzed Expert Advisor code is oriented to the implementation of a certain strategy. Note, some program lines contain variables and calculations that would be changed, if the strategy were changed.
For example, according to the accepted strategy the Expert Advisor is developed to work only with one order. This allowed to use the variable Ticket both for the identification of a closing order number (in block of closing 6-7) and for the identification of a success of a trade operation execution when opening an order (in the block of opening 8-9). In this case such a solution is acceptable. However, if we take the analyzed code as the basis for the implementation of another strategy (for example allow opposite orders) we will have to introduce one or several variables to be able to recognize numbers of opened orders and identify the success of trade operations.
In further strategy modifications we will have to change come program lines containing part of logics contained in the source strategy. Namely in the order accounting block we will not have to terminate the program operation if there are several open orders for a security. Besides, conditions for opening and closing orders will alslo change. This will entail the code changing in blocks of opening and closing orders.
Cursos de Forex e Análises de Ondas Elliott - Los 7pasos ¡Por uma cultura de buen trading!
Alumnos de Paga.
Consultoria e Coaching.
Educação personalizada com mais de 15 anos de experiência.
Análisis de 7 pasos.
Análises tecnicas diárias, o semanal con Ondas elliott.
Cursos completos sob demanda.
Propedêutico de inversão financeira, Análise Técnica e Contexto Ondas Elliott.
Rádio Forex Hispana.
Música e información financiera de 4 a 11 am EST-
Tutorial Forex Tester para probar estrategias.
Tutorial Forex Tester para probar estrategias.
19 Diciembre 2013.
Forex tester es una plataforma de desarrollo de backtesting ideal para desarrollar y probar estrategias nuevas y practicar nuestras destrezas en el análisis técnico (por ejemplo ¿qué tal probar haciendo conteos de elliott de una hora en los últimos 10 años?) Para terminar este 2013 cerramos con una serie de tutoriales (el más completo en español y tal vez en cualquier idioma, sobre esta poderosa herramienta)
Sin duda desde que la probé hace 6 años (2007) me pareció una herramienta interesante, pero conforme ha pasado el tiempo en estos años, ha probado ser una de las herramientas más útiles para desarrollar no solo mis habilidades en análisis técnico y las de mis alumnos, sino que además para descubrir nuevas técnicas y hacer investigación sobre el desarrollo del precio en el mercado de divisas. Al punto que ahora me pregunto cómo podría haber estado sin él, todos los años que pasaron antes que desarrollaran este software (lo tengo desde su primer versión).
El software lo puedes descargar gratis desde la siguiente liga:
A desarga que hagas de forex é o servirá para usar em modo de fazer você mesmo (com o nome de seu personagem), que é usado em seu modo de licenciatura pessoal (mas você pagou pelo programa, aprox. 200 USD) por isso que uma vez que lo compres no necesitarás volver a descargar ni instalar nada mais em tu computadora.
Las limitantes de la versión demo incluyen laincapacidad de guardar los resultados de tus pruebas, probar por más de un mes de manera continua un gráfico o usar de manera ininterrumpida por más de una hora el programa (se para y puedes volver a comenzar una nueva prueba) por lo que evidentemente, comprar la licencia es una buena inversión (la versión demo básicamente sirve para que te familiarices con el programa y veas si te podría ser útil pero sería muy incómodo hacer una prueba seria sin comprar la licencia del mismo.
A continuación te dejo con una lista de los distintos capítulos que he desarrollado de tutorial sobre el uso de forex tester:
En el capítulo 5 pongo un ejemplo de código para programar un nuevo indicador, te comparto aquí el código para generar el gann line:
// index buffer var GL: TIndexBuffer;
procedure Init; stdcall;
// register external parameters.
// Cria um buffer de índice.
SetIndexStyle (0, ds_Line, psSolid, 1, clYellow);
procedimento concluído; stdcall;
// Calculate a single bar.
procedure Calculate(index: integer); stdcall; begin.
//si no hace máx más altos en alza esperar if(High(index+1)>High(index+2)) and (Low(index+1)>Low(index+2)) and (High(index)<=High(index+1)) and ( Low(index)>=Low(index+1)) then begin GL[index]:=High(index+1); fim; //si no hace min más bajos en baja esperar if(High(index+1)<High(index+2)) and ( Low(index+1)<Low(index+2)) and (Low(index)>=Low(index)) and (High(index)<=High(index+1)) then begin GL[index]:=Low(index+1); fim; //si no hace máx más altos desde ensanchado arriba if(High(index+1)>High(index+2)) and (Low(index+1)<Low(index+2)) and (High(index)<=High(index+1)) and (Low(index)>=Low(index+1)) and ( Close(index+1)>=(High(index+1)+Low(index+1))/2) then begin GL[index]:=High(index+1); fim; //si no hace min más bajos desde ensanchado abajo if(High(index+1)>High(index+2)) and (Low(index+1)<Low(index+2)) and (Close(index)<=(Low(index)+High(index))/2) and (Low(index)>=Low(index+1)) and (High(index)<High(index+1)) then begin GL[index]:=Low(index+1); fim; Se alto (índice) & gt; Alto (índice + 1)) e (Baixo (índice) & lt; Baixo (índice + 1)) e (Fechar (índice) & gt; = (Baixo (índice) + Alto (índice)) / 2) depois começar o GL [índice]: = Alto (índice); fim; //si hace máx más altos y mín más bajos y cierra mitad inferior es a minimo if(High(index)>High(index+1)) and ( Low(index)<=Low(index+1)) and (Close(index)<=(Low(index)+High(index))/2) then begin GL[index]:=Low(index); fim; if(High(index)>High(index+1)) and (Low(index)<=Low(index+1)) and (Close(index)>=(Low(index)+High(index))/2) then begin GL[index]:=High(index); fim; //si hace máx más altos y mín más bajos y cierra mitad inferior es a minimo if(High(index)>=High(index+1)) and (Low(index)<Low(index+1)) and (Close(index)<=(Low(index)+High(index))/2) then begin GL[index]:=Low(index); fim; Se alto (índice) & gt; = Alto (índice + 1)) e (Baixo (índice) & gt; = Baixo (índice + 1)) então // max mais alto min más alto começar GL [index]: = Alto (índice); fim; //si hace min más bajos y max más bajos es al minimo if(High(index)<=High(index+1) ) and (Low(index)<=Low(index+1)) then // max más bajo min más bajo begin GL[index]:=Low(index); fim;
if Hour(Time(index))<8 and Hour(Time(index))>15 then begin ObjectCreate(Date(Time(index)),obj_TrendLine, Time(index),Hihg(index),Time(index-1),High(index, index));
No comments:
Post a Comment