Sistema de negociação automatizado easylanguage


Paul Lam.
Impacto social de engenharia.
Impacto social de engenharia.
Por que eu não sou um grande fã do script MQL4 ou plataforma de negociação.
Passei a maioria dos futuros de negociação de 2008 e desenvolvendo sistemas automatizados na Tradestation. O comércio de futuros não resultou tão bem como eu perdi 40% da minha conta e tive que chamá-lo de sair. Meu trabalho de desenvolvimento de quant, por outro lado, estava acontecendo lento, mas de forma constante. No entanto, uma vez que não podia suportar a taxa de manutenção monstruosa mais na Tradestation, eu tive que abandonar esse trabalho. Então, no ano passado, quando eu queria pegar onde deixei na Matlab, descobri que não conseguia continuar meu trabalho. Por um lado, perdi a maioria dos meus arquivos. Acho que os deixei em meu outro computador em Hong Kong. O que provavelmente está em um aterro sanitário até agora. Em segundo lugar, eu não mantive um relatório completo em 2008, como se eu estivesse fazendo agora. Por fim, a partir dos arquivos importantes que eu mantive, não me preocupou em converter os códigos porque eu poderia também escrever novos do zero do que descobrir o que eu fiz. A razão pela qual estou relembrando no momento é porque estou me encontrando novamente no mesmo ciclo. Como os leitores regulares podem estar cientes, os eventos recentes aceleraram a minha agenda de projetos quant. Estou experimentando o uso do Metatrader 4 para minha negociação cambial e scripts no MQL4 para negociação automatizada. Como o Tradestation, o Metatrader 4 é uma plataforma de negociação com capacidades de script. Sua linguagem de programação, MQL4, é uma linguagem proprietária baseada em C. Eu tirei algumas horas neste fim de semana para aprender (como já estou familiarizado com C). Para que eu possa começar a codificar esta semana. No entanto, depois de pensar mais, eu decidi diminuir os meus projetos com o MQL4. Eu não quero confiar em um sistema proprietário para conveniência de curto prazo. Como os programadores de negociação sabem, o idioma usado é meramente uma escolha. A experiência me diz que a maior parte do tempo de desenvolvimento não é gasto na própria programação propriamente dita. Em vez disso, a maior parte do tempo é gasto na formulação, análise e otimização do seu algoritmo. Então, eu também posso morder a bala para criar do zero meus sistemas de negociação automatizados e análises quantitativas em uma plataforma (ou seja, em Python). Esse foi o meu plano de longo prazo o tempo todo. Tudo sob um mesmo teto. Mas eu divagava. Depois, há a questão da reutilização. Metatrader 4 é forex somente e só funciona com corretores que o suportam. Como tal, eu teria que usar outra coisa para negociação de ações. Mesmo para um sistema forex, isso ajudaria se eu pudesse fazer análise inter-mercado quantitativamente. Isso não é possível tanto quanto eu sei com o MQL4. Qual é outra desvantagem importante para mim. Para resumir outras razões sobre como eu vi esta decisão, aqui estão as vantagens e desvantagens de usar o MQL4 versus usar uma linguagem de programação geral, como Python ou C ++. As vantagens do uso do MQL4 são:
Economiza muito tempo de desenvolvimento, já que ele já foi construído para negociação, negociação manual e automática em uma plataforma Com base na popular linguagem de programação C Muitos comerciantes de forex usam grande repertório de programas específicos de forex.
Desvantagens do uso do MQL4.
Não para análise de quantos reais ou mineração de dados Limitado a corretores suportados por MT4 Apenas negociação de Forex Linguagem de programação proprietária Deve ser executado no terminal de cliente Metatrader 4 MQL5 em breve.
Esta é certamente uma escolha difícil. A julgar pela enorme base de usuários, é evidente que muitas pessoas estão satisfeitas com o MQL4. No entanto, como já discuti aqui, há desvantagens para usá-lo (além de questões técnicas). Meu plano atual permanece o mesmo do que eu disse na revisão comercial do último mês. Ou seja, vou usar o MQL4 para preencher os furos no meu sistema comercial por enquanto antes de migrar para criar meu próprio sistema. Na verdade, eu já estou preparando meu primeiro consultor especialista a partir de hoje. Talvez eu possa ter alguma coisa para publicar até o final desta semana.
Partiu da TradeStation e seguiu o caminho do Ninja Trader.
Trabalhei com a TradeStation alguns meses antes deste ano. Durante esse período, trabalhei durante algumas horas todos os dias no desenvolvimento de estratégias automatizadas e negociação diária. Eu pensei que o TS era muito bom para ser usado como uma plataforma de negociação dia. Particularmente agora que estou usando o ThinkOrSwim, sinto que o sistema TOS é grosseiramente inadequado quando comparado ao TS. No entanto, eu, pessoalmente, não gostei de usar o TS como uma plataforma de desenvolvimento de estratégia automatizada. EasyLanguage (linguagem de desenvolvimento do TS) é definitivamente fácil de aprender e usar. Gostaria de imaginar que EL satisfaria as necessidades de muitas pessoas e ficaria satisfeito com isso. Por outro lado, se quiser desenvolver estratégias mais complexas, a codificação pode se tornar complicada até confundir, mesmo que seja possível. Como se eu nunca tivesse descoberto como construir uma rede neural simples nela. Além do idioma, outra limitação de TS é sua API inadequada. Por exemplo, e se bem me lembro, tive dificuldade na programação tentando amarrar o valor do meu portfólio à estratégia. Para realizar algo simples como balanceamento automático de portfólio. Muitas vezes, queria fazer algo, mas descobri que precisava de algum "trabalho" em vez disso. Em essência, EasyLanguage é fácil de começar, mas certamente não fornece a profundidade que eu queria. Concedido, foi um excelente ponto de partida para mim no desenvolvimento de estratégias automatizadas. Eu aprendi muito com isso. Não me interpretem mal, uma boa estratégia não significa uma estratégia complicada. Pode-se ter uma estratégia rentável com apenas algumas linhas de código (médias móveis, qualquer um?). O que eu quero é algo que pode servir como minha sandbox criativa. Eu queria algo que pudesse satisfazer minhas idéias mais loucas. Na verdade, eu não tenho capital de risco suficiente para soltar uma estratégia, então eu tenho o luxo de não ser responsável por produzir resultados e é livre para jogar com o que eu quero. Incluindo minha discussão POMDP na minha publicação anterior, e minha outra idéia de usar a teoria do controle moderno (o foco do meu estudo nos dias) para identificar as ineficiências do mercado. Eu não poderia ter feito aqueles com EL sem problemas excessivos (DLL, add-ons, etc.). Entretanto, o maior fator foi o custo da assinatura mensal. Parei minha assinatura TS, eventualmente porque eu simplesmente não posso pagar. Então, o que vem depois? Depois de cavar, encontrei Ninja Trader. Eles apoiam a programação C # em suas estratégias. Além disso, é grátis para uso no desenvolvimento! Eu vou usá-lo com opentick para um feed de dados gratuito. Plataforma gratuita, dados gratuitos! O que mais eu poderia pedir? Atualização: Parece que o opentick está sobrecarregado e não tem recebido novos usuários há alguns meses. Eu apenas usarei os dados simulados no NT por enquanto. Atualização 2009: Opentick agora está fechado até novo aviso de acordo com eles. Comecei a seguir os tutoriais do NT e tentando atualizar minhas lembranças distantes em alguns tópicos técnicos. Depois de alguns meses de férias, voltei ao plano de desenho novamente. Veremos como vai. Eu documentarei meu progresso aqui sob a categoria de negociação automatizada.
2MA w / ADX e realização decepcionante.
Outro dia, outra estratégia. Nos últimos dois dias, trabalhei no cruzamento 2MA com a estratégia de confirmação ADX para ER2H08 1200 sh / bar. Basicamente, um HMA (baixo, 8) cruzando EMA (baixo, 24) como o gatilho. A condição 2 é que a alta atual é mais alta das últimas 3 barras. Condição3 é atual O ADX também é o mais alto das últimas 3 barras. A condição 4 é que é durante o dia, portanto, menos escorregamento.
Sair é simplesmente HMA (baixo, 23) cruzando EMA (baixo, 33) ou está perto do final da sessão do dia. Parar é \ $ 350; O piso é \ $ 500 e 63% de retracement.
Após a otimização solta nos dados de 1 de outubro de 2007 a 30 de novembro de 2007, a estratégia Long alcançou 3.37 fator de lucro, 57% rentável e um gráfico de desempenho cada vez maior. Realmente muito bom. Fui estatic ontem.
Eu continue trabalhando na estratégia para o dia inteiro hoje e desenvolvi uma versão curta usando o mesmo conceito. O resultado também foi muito bom (PF> 3, etc.).
A partir dos dados de teste de back-up, Long e Short juntos possuem PF em 2 e um desempenho constante e crescente também. Do cálculo, eu faria mais \ $ 7000 para o contrato de 2 meses em 1 sozinho.
Sentir-me bastante confiante, senti que o sistema estava um pouco completo, então o testei usando os últimos 30 dias de dados. Infelizmente, ele falhou miseravelmente. PF estava abaixo de 1,0 e o lucro bruto era apenas um par de mil dólares. O lucro líquido foi estimado em apenas algumas centenas de dólares.
Então testei o sistema em outro conjunto de dados. Agosto de 2007. O resultado foi ainda pior!
Longa história curta, descobri que a ADX não é tão confiável para confirmar com grandes mudanças.
Usando o novo algoritmo MA para reescrever indicadores antigos.
Vendo que muitos indicadores usam um MA para o cálculo. Pode ser possível usar o novo algoritmo MA para melhorar o cálculo.
Por exemplo, o RS no RSI é algo como RS = EMA (até dias) / EMA (dias baixos). Podemos mudá-lo para RS = HMA (dias em cima) / HMA (dias baixos). Como o HMA é muito mais rápido, o H-RSI resultante pode ser mais rápido também. Isso pode ser útil nas estratégias comerciais diárias.

Easylanguage grátis.
Abaixo está uma lista de artigos que contêm código fonte gratuito EasyLanguage para ajudá-lo a descobrir novas maneiras de criar sistemas comerciais rentáveis.
Código de Estratégia.
Esses artigos contêm idéias de negociação que podem ser as sementes de um ótimo sistema comercial. Estes não são sistemas de negociação completos como estão. São exemplos fantásticos de margens potenciais do mercado que podem dar início ao desenvolvimento de seu próprio sistema.
Desenvolvimento de sistema.
Código do indicador.
Copyright © 2018-2018 da Capital Evolution LLC. - Projetado por temas Thrive | Powered by WordPress.
Por favor faça login novamente. A página de login será aberta em uma nova janela. Depois de efetuar o login, você pode fechá-lo e retornar a esta página.

Sistema de negociação automatizado easylanguage
Se você ainda procura uma vantagem nos mercados, os sistemas de negociação automatizada são a melhor maneira de obtê-lo. Saber mais.
Copyright (c) 2018 Adaptrade Software. Todos os direitos reservados.
OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES INERENTES. DESEJO UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO SEJAM REALMENTE EXECUTOS, OS RESULTADOS PODEM TENER SOB OU COMENTÁRIOS COMPLEMENTARES PARA O IMPACTO, SE HAVER, DE CERTOS FATORES DE MERCADO, TAL COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VÁ OU SEJA PROBABILITÁVEL PARA ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS.
EasyLanguage e TradeStation são marcas registradas da TradeStation Technologies, Inc.
Uma das maiores tendências no comércio varejista na última década foi o aumento da popularidade do comércio automatizado. Neste tipo de negociação, também conhecida como execução automatizada de ordens, os sinais de compra e venda gerados por um sistema de negociação são executados automaticamente por uma plataforma conectada à conta corretora do comerciante. Isso permite o comércio livre de mãos, o que permite uma execução mais rápida, menos erros e a capacidade de trocar prazos mais curtos com estratégias de maior freqüência.
O algoritmo básico para a construção de sistemas de negociação usando a geração automática de código é mostrado abaixo na Fig. 1. Começa com um método para combinar diferentes elementos da estratégia de negociação. Esses elementos podem incluir vários indicadores técnicos, como médias móveis, estocásticos e assim por diante; diferentes tipos de pedidos de entrada e saída; e condições lógicas para entrar e sair do mercado.
Figura 1. Algoritmo básico para construção de estratégia automatizada.
Depois que os diferentes elementos são combinados em uma estratégia coerente, ele pode ser avaliado no mercado ou mercados de interesse. Isso requer dados de mercado - preços, volume, interesse aberto, etc. - para cada mercado. De um modo geral, você também teria um conjunto de objetivos de construção para ajudar a classificar ou marcar cada estratégia. Exemplos de objetivos de construção incluem várias medidas de desempenho, como o lucro líquido, redução, porcentagem de vencedores, fator de lucro e assim por diante. Estes podem ser declarados como requisitos mínimos, como um fator de lucro de pelo menos 2.0 ou como objetivos para maximizar, como maximizar o lucro líquido.
Base teórica da geração automática de código.
Conforme descrito acima, construir um sistema comercial usando a geração automática de código é essencialmente um problema de otimização. A combinação de elementos estratégicos que maximizam os objetivos de construção é tomada como a estratégia final. Alguns comerciantes argumentariam que os sistemas comerciais deveriam ser construídos com base em uma hipótese de comportamento ou ação do mercado. Se você tem uma boa hipótese de como os mercados funcionam, uma estratégia pode ser construída em torno dessa hipótese e testada. Se isso funciona, ele apóia a hipótese e justifica a negociação da estratégia.
Gerador de código de sistema padrão para TradeStation.
Esta seção descreve uma abordagem ad hoc para a geração automática de código em que um sistema comercial para a TradeStation gera automaticamente outros sistemas de negociação baseados em padrões para a TradeStation. O sistema AutoSystemGen procura um conjunto de regras de negociação, juntamente com os valores de parâmetros associados, que atendem a um conjunto específico de requisitos de desempenho.
Embora quase qualquer tipo de indicador ou lógica de negociação possa ser incluído no gerador do sistema comercial descrito aqui, para manter as coisas bastante simples, as regras dos sistemas gerados serão restritas aos padrões de preços. Cada regra de entrada de um sistema de negociação gerado terá a seguinte forma:
A chave para este processo é encontrar sistemas de negociação de candidatos. Um sistema pode consistir de uma e dez regras do formulário mostrado acima. As negociações são introduzidas no mercado se todas as regras forem verdadeiras, e os negócios são encerrados um certo número de barras mais tarde. Se isso fosse codificado como um sistema TradeStation tradicional, com um máximo de 10 regras, haveria 52 entradas. Isso faria para uma estratégia pesada.
O código para o sistema AutoSystemGen e suas funções relacionadas está disponível no Breakout Futures (breakoutfutures /) na página Free Downloads.
Por exemplo, considere o mercado de futuros de títulos de tesouraria de 30 anos (símbolo @ US. P na TradeStation 8). O AutoSystemGen foi otimizado nos últimos 20 anos de preços de T-bond com a entrada OptStep aumentada de 1 para 10000. Isso significa que o sistema avaliou 10.000 sistemas de negociação diferentes. A otimização foi executada duas vezes, uma vez por trades longos e uma vez para negociações curtas. Foram utilizados os seguintes requisitos de desempenho: lucro líquido de pelo menos US $ 30.000, o pior caso de desconto no máximo de US $ 7500, pelo menos 200 negócios, porcentagem rentável de pelo menos 50% e fator de lucro de pelo menos 1,2. Em um computador dual core com o Vista, levou aproximadamente 10 minutos para executar cada otimização (10.000 sistemas por otimização).
Sistema 2332, @ US. P, 17/9/2007 12:23:00, Long Trades.
Lucro líquido = 53562.50, DD máximo = -7381.25, Num Trades = 250, Percentual de vitórias = 56.80, Prof factor = 1.631.
Var: EntNext (falso);
EntNext = Open [2] & gt; = Low [16] e.
Fechar [14] & lt; = Low [6] and.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 2 então.
Venda o próximo bar no mercado;
Sistema 5771, @ US. P, 17/9/2007 12:27:00, Long Trades.
Lucro líquido = 42145,00, DD máximo = -5733.75, Num Trades = 207, Percentagem de vitórias = 57,00, factor Prof = 1,631.
Var: EntNext (falso);
EntNext = High [7] & gt; = Low [19] e.
Fechar [20] & gt; = Fechar [5] e.
High [18] & gt; = Low [2] and.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 2 então.
Venda o próximo bar no mercado;
Sistema 7622, ​​@ US. P, 17/9/2007 12:29:00, Long Trades.
Lucro líquido = 59348.75, Max DD = -7222.50, Num Trades = 208, Percentual de vitórias = 60.58, Fator Prof. = 1.924.
Var: EntNext (falso);
EntNext = Low [2] & lt; = High [9] and.
Abra [11] & gt; = Abrir [18] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 3 então.
Venda o próximo bar no mercado;
Sistema 7718, @ US. P, 9/17/2007 12:29:00, Long Trades.
Lucro líquido = 35526.25, DD máximo = -6936.25, Num Trades = 292, Percentual de vitórias = 56.85, factor Prof = 1.418.
Var: EntNext (falso);
EntNext = Fechar [3] & gt; = High [19] and.
High [6] & lt; = Open [10] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 1 então.
Venda o próximo bar no mercado;
Sistema 6160, @ US. P, 9/17/2007 12:42:00, Short Trades.
Lucro líquido = 31277,50, DD máximo = -6846,25, Num Trades = 369, Percentual de vitórias = 51,76, Fator Prof. = 1,297.
Var: EntNext (falso);
EntNext = High [9] & gt; = Low [6] and.
Fechar [15] & gt; = Alto [8] e.
High [7] & lt; = Low [20] e.
Se EntNext então.
Venda curta barra seguinte no mercado;
Se BarsSinceEntry = 1 então.
Compre para cobrir a próxima barra no mercado;
A listagem para cada sistema inclui o número do sistema (correspondente à entrada OptStep), o símbolo do mercado, a data atual e se o sistema é apenas longo ou curto. A próxima linha contém algumas estatísticas de desempenho resumidas para ajudar na avaliação de cada sistema. Finalmente, o código do sistema é mostrado. Para avaliar os sistemas na TradeStation, o código entre as duas linhas de comentários () pode ser copiado e colado em uma estratégia no TradeStation e, em seguida, executado na janela do gráfico.
O último sistema no arquivo de saída é para um sistema de apenas curto-som (# 6160). Quando guardado na TradeStation como uma estratégia e aplicado ao mesmo gráfico de T-bond, a seguinte curva de equidade foi produzida:
Figura 3. Sistema de apenas curto prazo para títulos T, nos últimos 20 anos, com US $ 15 por negócio deduzido para custos de negociação, gerado pelo sistema AutoSystemGen.
Programação genética para geração automática de código.
A abordagem ad hoc descrita na seção anterior é simples, mas tem duas limitações: (1) as estratégias geradas aleatoriamente não convergem para os objetivos de construção e (2) o modelo do sistema de padrões é difícil de generalizar para estratégias mais complexas . Isso sugere que uma abordagem mais sofisticada seja necessária.
Um método para a geração automática de código que aborda essas duas preocupações é chamado de programação genética (GP), 1 que pertence a uma classe de técnicas chamadas algoritmos evolutivos. Algoritmos evolutivos e GP em particular foram desenvolvidos por pesquisadores em inteligência artificial baseados nos conceitos biológicos de reprodução e evolução. Um algoritmo GP "evolui" uma população de estratégias de negociação de uma população inicial de membros gerados aleatoriamente. Os membros da população competem uns contra os outros com base na sua "aptidão". Os membros do ajuste são selecionados como "pais" para produzir um novo membro da população, que substitui um membro mais fraco (menos adequado).
Reduz a necessidade de conhecimento de indicadores técnicos e design de estratégias. O algoritmo GP seleciona as regras de negociação individuais, indicadores e outros elementos da estratégia para você.
O processo de construção da regra permite uma complexidade considerável, incluindo regras comerciais não-lineares.
O processo GP elimina os elementos mais laboriosos e tediosos do processo de desenvolvimento da estratégia tradicional; ou seja, surgir uma nova idéia comercial, programá-la, verificar o código, testar a estratégia, modificar o código e repetir. Isso é feito automaticamente no GP.
O processo de GP é imparcial. Considerando que a maioria dos comerciantes desenvolveu vieses para ou contra indicadores específicos e / ou lógica de negociação, o GP é guiado apenas pelo que funciona.
Ao incorporar uma semântica de regras de negociação adequada, o processo de GP pode ser projetado para produzir regras de negociação logicamente corretas e código sem erros.
O processo GP geralmente produz resultados que não são únicos, mas não óbvios. Em muitos casos, essas gemas escondidas seriam quase impossíveis de encontrar de outra maneira.
Ao automatizar o processo de compilação, o tempo necessário para desenvolver uma estratégia viável pode ser reduzido de semanas ou meses a uma questão de minutos em alguns casos, dependendo do comprimento do arquivo de dados de preço de entrada e outras configurações de compilação.
A programação genética tem sido usada com sucesso em diversos campos, incluindo processamento de sinal e imagem, controle de processo, bioinformática, modelagem de dados, geração de código de programação, jogos de computador e modelagem econômica; veja, por exemplo, Poli et al. 2 Uma visão geral do uso de GP em finanças é fornecida por Chen. 3 Colin 4 foi um dos primeiros a explicar como usar o GP para otimizar combinações de regras para uma estratégia de negociação.
J. Koza. Programação genética. O MIT Press, Cambridge, MA. 1992.
R. Poli, W. B. Langdon e N. F. McPhee. Um guia de campo para programação genética. Publicado via lulu e disponível gratuitamente em gp-field-guide. uk, 2008. (Com contribuições de J. R. Koza).
Shu-Heng Chen (Editor). Algoritmos genéticos e programação genética em finanças computacionais. Kluwer Academic Publishers, Norwell, MA. 2002.
A. Colin. Algoritmos genéticos para modelagem financeira, Trading on the Edge. 1994, páginas 165-168. John Wiley & amp; Sons, Inc. Nova York.
Risto Karjalainen. Evolução das regras de negociação técnica para futuros S & amp; P 500, Regras de Negociação Avançadas, 2002, Páginas 345-366. Elsevier Science, Oxford, Reino Unido.
Jean-Yves Potvin, Patrick Soriano, Maxime Vallee. Gerando regras de negociação nos mercados de ações com programação genética. Computadores e Pesquisa de operações, Volume 31, edição 7, junho de 2004, páginas 1033-1047.
Massimiliano Kaucic. Investimento utilizando métodos evolutivos de aprendizagem e regras técnicas. European Journal of Operational Research, volume 207, edição 3, 16 de dezembro de 2018, páginas 1717-1727.
Algoritmo de construção usando programação genética.
Expandindo o algoritmo de compilação apresentado anteriormente (ver Fig. 1), um algoritmo mais detalhado é ilustrado abaixo na Fig. 4 com base na programação genética. As caixas sombreadas de cinza representam os dados de entrada, que incluem os dados de preços para o (s) mercado (s) de interesse, indicadores e tipos de pedidos no chamado conjunto de compilação e as opções e critérios de desempenho (objetivos de construção) selecionados pelo do utilizador.
Figura 4. Algoritmo de compilação para geração automática de código com programação genética.
O processo GP pode ser usado para desenvolver simultaneamente dois elementos de estratégia essenciais: condições de entrada e pedidos de entrada e saída. As condições de entrada são tipicamente representadas como estruturas de árvores, como mostrado abaixo na Fig. 5.
A chave para a evolução das ordens de entrada e saída usando programação genética é representar os diferentes tipos de pedidos de forma generalizada. Por exemplo, parar e limitar os preços de entrada podem ser representados da seguinte forma:
Embora a programação genética seja capaz de gerar estratégias de negociação com uma variedade considerável, é necessário começar com uma estrutura generalizada para as estratégias a serem seguidas. A estrutura de estratégia mostrada abaixo em pseudo-código fornece uma estrutura para estratégias de construção com base em condições de entrada e tipos de pedidos como os discutidos acima:
Entradas: N1, N2, N3, ...
Se a posição for plana e LongEntryCondition for verdade, então.
Ordem de entrada longa ...
Inicialize as ordens de saída longas, conforme necessário ...
Se a posição for plana e ShortEntryCondition for verdade, então.
Ordem de entrada curta ...
Inicialize ordens de saída curtas, conforme necessário ...
Se a posição é longa então.
Ordem de saída longa 1 ...
Ordem de saída longa 2 ...
Se a posição for curta, então.
Ordem de saída curta 1 ...
Ordem de saída curta 2 ...
[Saída opcional de fim de dia]
As estratégias começam com a lista de insumos. É fornecida uma entrada para qualquer parâmetro do indicador, comprimento do look-back do padrão de preços e quaisquer parâmetros exigidos pelas ordens de entrada e saída, como o comprimento de look-back para o ATR.
Para ilustrar o uso de programação genética para a geração automática de código na construção de estratégias, o programa Adaptrade Builder foi administrado em barras diárias de um mercado de futuros de índices de ações para uma pequena população e um número limitado de gerações. As métricas de desempenho escolhidas para orientar o processo foram o lucro líquido, o número de trades, o coeficiente de correlação, a significância estatística e a relação retorno / redução. Alvos específicos foram definidos para o número de negociações e a relação retorno / retirada. As outras métricas selecionadas foram maximizadas. A função de fitness foi uma média ponderada de termos para cada métrica.
Figura 6. Percentagem de membros da população com lucro líquido fora da amostra superior a US $ 1.000.
Da mesma forma, o lucro líquido médio da OOS aumentou após cinco e dez gerações, como mostrado na Figura 7. Observe que esses resultados são para o lucro líquido da OOS. Por definição, os dados fora da amostra não são usados ​​na compilação, então os resultados da OOS são imparciais; eles não se beneficiam de retrospectiva. Isso implica que o processo GP não só tende a melhorar os resultados na amostra em sucessivas gerações, o que é um efeito direto do algoritmo GP, mas os resultados da OOS também tendem a melhorar à medida que as estratégias são desenvolvidas. Isso indica uma compilação de alta qualidade.
Código de Estratégia EasyLanguage para a TradeStation.
Membro da população: 46.
Criado por: Adaptrade Builder versão 1.1.0.0.
Criado: 19/10/2018 2:19:52 PM.
Código do TradeStation para TS 6 ou posterior.
Arquivo de preço: C: \ TestData. txt.
Var: EntCondL (falso),
EntCondL = (Maior (Volume, NL1) & gt; = Menor (Volume, NL2)) ou (Volume & lt; Média (Volume, NL3));
Se MarketPosition = 0 e EntCondL, em seguida, comece.
Compre a próxima barra na XAverage (L, NBarEnL1) + EntFrL * ATREnL parar;
Se MarketPosition = 0 e EntCondS, em seguida, comece.
Vender curto barra seguinte no Mais alto (H, NBarEnS1) - EntFrS * AbsValue (Menor (L, NBarEnS2) - Menor (H, NBarEnS3)) parar;
SStop = Power (10, 10);
Se MarketPosition & gt; 0 então comece.
Se BarsSinceEntry & gt; = NBarExL então.
Venda o próximo bar no mercado;
Venda o próximo bar no EntryPrice + TargFrL * ATRTargL limite;
Se MarketPosition & lt; 0 então comece.
Se EntryPrice - C & gt; ATRFrTrailS * ATRTrailS então.
Se STrailOn então começar.
NewSStop = EntryPrice - TrailPctS * (EntryPrice - C) / 100 .;
SStop = MinList (SStop, NewSStop);
Se BarsSinceEntry & gt; = NBarExS então.
Compre para cobrir a próxima barra no mercado;
Se STrailOn então.
Compre para cobrir a próxima barra na parada SStop;
Construir sistemas de negociação através da geração automática de código é um tipo de otimização. A maioria dos comerciantes sistemáticos provavelmente está familiarizado com a otimização de parâmetros, em que as entradas para uma estratégia são otimizadas. Ao contrário da otimização de parâmetros, a geração automática de código otimiza a lógica de negociação da estratégia. No entanto, o risco de sobre-otimização, ou "excesso de ajuste", também é uma preocupação para a geração automática de código, assim como é para a otimização de parâmetros.
Para obter informações sobre software para estratégias de negociação de construção usando programação genética, clique aqui.
Se você quiser ser informado de novos desenvolvimentos, novidades e ofertas especiais do Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado.
Copyright © 2004-2018 Adaptrade Software. Todos os direitos reservados.

Crie uma estratégia de negociação automatizada com o Tradestation Strategy Builder.
Você não precisa ser programador para construir sua própria estratégia de negociação automatizada. Se você usa o TradeStation, você pode criar uma estratégia personalizada usando uma série de estratégias construídas e indicadores comerciais que você pode misturar e combinar.
Neste artigo, mostraremos como montar um sistema simples usando essas ferramentas da Tradestation.
Adicionando elementos de estratégia de negociação automatizada.
Esta imagem mostra como adicionar os elementos da estratégia a um gráfico. Neste caso, estamos usando um gráfico diário do estoque da Apple Computer (AAPL) para nossos testes.
Adicionando elementos de estratégia de negociação automatizada.
Para iniciar o processo, insira uma estratégia como destacada em A acima. Isso abre a janela Inserir Estratégias, mostrada em B. Cada linha nesta janela representa um elemento de estratégia diferente, seja uma estratégia de entrada ou uma estratégia de saída, tanto para longos quanto para shorts.
As colunas indicam o tipo de elemento de estratégia: comprar para uma entrada longa, vender para uma saída longa, curto para uma entrada curta e cobrir para uma saída curta. Você pode classificar essas colunas para ajudar na sua pesquisa.
Começaremos adicionando o _Stops & amp; Estratégia de metas para o nosso gráfico. Esta estratégia envolve ordens de venda e cobertura para sair das negociações. Destaque C mostra as entradas para esta estratégia. Se a primeira entrada for definida como 1, todas as inscrições subseqüentes se aplicam a uma única ação ou contrato, e no padrão, ele informa a TradeStation para sair das negociações quando US $ 5 por ação em lucro ou US $ 1 por ação em perda é atingido.
Observe que este elemento de estratégia é muito flexível, pois também permite que você use paradas de equilíbrio e simples.
Decida os critérios de entrada comercial para o seu sistema de comércio.
Tendo selecionado a estratégia de saída básica, nos concentramos nas entradas. Existem várias opções aqui também:
Entradas de fuga Entradas de desvanecimento (principalmente com base no oscilador) Volatilidade do volume.
Você pode aprender mais sobre cada um, pressionando o botão Definição na janela Inserir Estratégias, que abrirá a descrição da Ajuda da TradeStation sobre a forma como a estratégia funciona eo que representam todas as entradas.
Critérios de entrada comercial para o seu sistema de negociação.
Aqui selecionamos as estratégias de mudança de entrada cruzada. Note que selecionamos duas estratégias separadas aqui, uma para entrar longs (buy) e uma para entrar em shorts (vender).
Você não precisa usar o mesmo tipo de estratégia tanto para longas como para curtas, você pode combinar o Moving Cross LE (entrada longa) com um Moving 2Line Cross SE (entrada curta), por exemplo. Mas manteremos isso simples escolhendo o mesmo método de entrada comercial para longos e shorts.
Destacada em C, você vê a janela Format Strategies que agora contém nossa estratégia única para sair de negociações longas e curtas e uma estratégia cada uma para entrar longos e shorts.
Agora você pode visualizar o Relatório de desempenho da estratégia no menu Exibir e ver como sua estratégia executa. As chances são de que não será perfeito porque nem todas as estratégias funcionam da mesma maneira em todos os instrumentos e prazos. Alguns ajustes serão necessários.
Felizmente, a TradeStation nos oferece ferramentas poderosas para fazer isso. Ele nos permite essencialmente otimizar cada entrada em cada elemento estratégico.
Usando Tradestation para otimizar sua estratégia de negociação.
Este gráfico facilita a visualização de como é fácil otimizar uma estratégia.
Usando Tradestation para otimizar sua estratégia de negociação.
Abrimos a janela Format Strategies e selecionamos os _Stops & amp; Estratégia de metas. Pressione Formato para acessar as entradas da estratégia. Neste exemplo, destacamos a entrada ProfitTargetAmt e pressione Otimizar. Isso abre a janela Otimizar para essa entrada. Basta dar um valor Iniciar e Parar e um incremento, e a TradeStation calculará a rentabilidade do sistema para cada etapa.
Neste caso, testaremos metas de metas de lucro de US $ 10, US $ 20, US $ 30, etc. até $ 200. Você pode repetir este processo para cada entrada em cada estratégia, mas apenas tenha cuidado para não otimizar otimizado. É melhor manter os valores de indicadores padrão tanto quanto possível, embora eu recomendo otimizar o lucro e a perda de quantidade de perda para cada símbolo e período de tempo testado, pois sua faixa de movimento normal pode variar muito.
Crunch Os Números Para Sua Estratégia de Negociação.
Uma vez que a TradeStation conclua sua otimização, você pode analisar os resultados no Relatório de Otimização, que você acessa no menu Exibir. No nosso exemplo, você pode ver que todos os montantes de lucro testados forneceram resultados de negociação globais positivos, o que indica que o sistema é bastante robusto no gráfico AAPL diário.
Crunch Os Números Para Sua Estratégia de Negociação.
Você sempre deve ter cuidado se o melhor resultado for um grande número verde cercado por valores verdes muito menores ou até resultados vermelhos. Este é um sinal claro de ajuste de curva ou sobre otimização.
Felizmente, esse não é o caso aqui.
No nosso exemplo, apenas otimizamos o valor do lucro e o montante da parada de perdas. Nós não otimizamos nenhuma das entradas das estratégias de entrada. Os resultados acabaram por ser bastante fortes, como você pode ver no gráfico acima.
O Relatório de Desempenho da Estratégia também é acessado através do menu Exibir e mostramos duas páginas do relatório, o Resumo do Desempenho e a Linha da Curva de Equidade. Os valores do relatório são baseados na negociação de 100 ações da AAPL ao longo de um período de dois anos.
O lucro total é de mais de US $ 42.000, sem contar com derrapagens e comissões e, embora a porcentagem de vitória seja de apenas 44%, o tamanho dos vencedores é mais do dobro do tamanho dos perdedores, o que nos dá um lucro líquido médio por comércio de quase US $ 600 por 100 ações negociadas, mais do que suficientes para cobrir comissões e derrapagens normais.
Se você aplicar o mesmo sistema a um instrumento diferente, os resultados podem ser muito diferentes, por isso certifique-se, pelo menos, de reativar a otimização para o lucro e parar os montantes de perdas.
Seja independente e projete sua própria estratégia de negociação automatizada.
Esta abordagem, obviamente, não é perfeita.
Embora funcione bem nos gráficos diários, sua aplicação para gráficos intradiários é dificultada pelo fato de que não podemos definir um horário de início e hora para o dia de negociação, de modo que os negócios são feitos 24 horas por dia. Essa abordagem também não permite qualquer poder de sair das regras, como interromper a negociação se a primeira troca do dia for um vencedor ou se reservamos um total de US $ 100 ou mais para a sessão.
Também é impossível aplicar filtros, por exemplo, apenas entrando em negociações longas se o EMA de 50 períodos estiver acima do período de 200 EMA.
A abordagem, no entanto, nos dá um excelente ponto de partida para testar diferentes estratégias que podemos melhorar depois através de programação adicional.
Se você usa o TradeStation, tente construir seu próprio sistema com essas ferramentas. Há uma grande variedade de estratégias de entrada e saída, experimente com elas e experimente suas próprias combinações criativas. Seu ingresso para independência de renda comercial está esperando para ser descoberto.

Construindo sistemas de negociação de forma automática.
Avanços em tecnologia agora permitem a criação de sistemas de negociação confiáveis ​​com software evolutivo que & ldquo; escreve & rdquo; as regras para as estratégias. Esses geradores de software de sistemas comerciais podem operar até 200 vezes mais rápido do que outros algoritmos relacionados e produzir o código do sistema de negociação real em uma variedade de idiomas, incluindo EasyLanguage da TradeStation & rsquo; s.
Isso não é simplesmente otimizar um sistema de negociação existente usando um algoritmo genético, nem faz uso de análises preditivas, como redes neurais. O motor central usado aqui é um algoritmo evolutivo avançado, chamado programação genética, e foi adaptado para uso no setor financeiro e é usado especificamente para produzir sistemas de negociação.
Aqui vamos discutir os conceitos básicos desta tecnologia. Um segundo artigo irá demonstrar o processo e usá-lo para desenvolver um sistema de comércio direto de mercado, que será disponibilizado no formato EasyLanguage.
Uma importante distinção deste processo é que ele opera no nível do código da máquina. Ao fazê-lo, irá evoluir sistemas de negociação a taxas de mais de 100.000 sistemas por hora, dependendo da quantidade de dados utilizados e da velocidade do processador. No nosso estudo de caso, usaremos 62 entradas em quase cinco anos de dados, mas isso consumirá apenas cerca de três minutos de tempo de execução em um PC desktop normal. Isso é milhões de vezes mais rápido do que a otimização da força bruta pode realizar e é um dos benefícios dessa abordagem.
Esta não é uma experiência de otimização. Na verdade, essa abordagem passa por dores para evitar isso. Os parâmetros tipicamente o foco de otimização, como o comprimento de um preço médio, são corrigidos ao longo da execução. O programa pode mudar essas variáveis ​​durante a execução, mas apenas operando fora do recurso de entrada estabelecido. No nosso caso, um novo sistema de negociação será desenvolvido automaticamente com base no desempenho fora da amostra durante o processo evolutivo.
O algoritmo central usado em nosso mecanismo de sistema comercial é chamado de AIM-GP, que significa Indução Automática de Código de Máquina com Programação Genética. Para obter mais informações sobre esta ferramenta, veja & ldquo; Evolução eficiente do código de máquina para arquiteturas CISC usando blocos e Crossover Homologo, & quot; por Nordin, J. P., Francone, F. e Banzhaf, W., em Advances in Genetic Programming 3, MIT Press.
O AIM-GP armazena programas individuais (sistemas de negociação) como cadeias lineares do código nativo da máquina binária, que são executadas diretamente por um processador central. Esta abordagem é superior a outras técnicas por vários motivos. Em primeiro lugar, o carregamento de conjuntos de instruções diretamente na CPU elimina os intérpretes de programação no processo de avaliação. Em segundo lugar, o processo evolutivo consiste nas operações tradicionais: crossover, reprodução e mutação, mas inclui várias operações adicionais importantes. O crossover não homólogo, por exemplo, permite a evolução de programas de tamanhos variados, que é muito diferente dos conjuntos de instruções de comprimento fixo encontrados em algoritmos genéticos. Em terceiro lugar, o AIM-GP produz novo e atual código de programa de computador.
Mas talvez o benefício mais importante dessa abordagem seja o quão seletivo é. AIM-GP descartará facilmente uma entrada inteira ou conjunto de entradas se determinar que a entrada não contribui para a solução. Na verdade, veremos que a maioria dos nossos 62 insumos serão descartados de forma completa e rápida.
Estão disponíveis outras ferramentas de desenvolvimento. No entanto, o algoritmo AIM-GP mais recente está entre os mais rápidos e precisos disponíveis. Veja, por exemplo, & ldquo; Extendendo os limites da otimização de projeto, integrando técnicas de otimização rápidas com programação genética linear baseada em máquinas, & rdquo; por Frank D. Francone e Larry M. Deschaine, em Ciências da Informação-Informática e Ciência da Computação: uma Revista Internacional, vol 161. O AIM-GP produz consistentemente boas soluções em comparação com abordagens comparáveis ​​e é ideal para complexos, ruidosos, domínios mal compreendidos, como os dados do mercado financeiro.
Claro, o desenvolvimento de qualquer sistema comercial bom exige reduzir o potencial de encaixe de curva, que está projetando um sistema para lucrar nos mercados passados ​​e pode ser identificado quando os resultados fora da amostra não correspondem aos resultados da amostra.
Os desenvolvedores usam métodos como uma base de teste grande, parâmetros mínimos e análise de sensibilidade de parâmetros para minimizar o ajuste de curva. No entanto, muitos sistemas de negociação falham no desempenho fora da amostra. Para criar sistemas de negociação e indicadores automaticamente, minimizando o potencial de ajuste de curva, são necessárias as seguintes etapas e considerações:
1. A pressão da parima, que coloca efeitos de redução matemática nos programas evoluídos para favorecer programas mais simples, desenha do conceito de comprimento de descrição mínimo. Quanto mais simples for um programa, menor será a probabilidade de ajustar a curva aos dados.
2. Randomização de 16 parâmetros de programação genética de nível superior, incluindo crossover, mutação, migração e tamanho da população para ajudar a encontrar soluções globalmente otimizadas.
3. Randomização de mais de 30 instruções de nível de máquina para ajudar a encontrar soluções globais otimizadas.
4. Condições multi-run implementadas para re-evoluir sistemas de negociação com parâmetros reinicializados e reertificados.
5. Tamanho do programa dinamicamente variado, fazendo uso de crossover não homólogo, reduzindo as limitações de tamanho de programa de comprimento fixo e permitindo que soluções simples e elegantes surjam.
6. Empregando um conjunto de terminais inicial imparcial, utilizando 62 padrões técnicos e indicadores utilizados como material genético inicial no processo evolutivo.
7. Evolução iniciada em uma origem de ponto zero, não fazendo pressupostos iniciais em relação à direção do mercado, nem como qualquer indicador ou padrão específico deve ser usado dentro do processo evolutivo. Assim, o sistema de negociação não é orientado para o desenvolvedor porque nenhuma estrutura do sistema de negociação é definida antes da evolução começar.
A velocidade de evolução é crítica. O software interpretativo, como gráficos, plataformas de teste, planilhas e editores de documentos, opera longe da CPU e, tipicamente, sofre de inundações de software, causadas por uma abundância de interfaces amigáveis ​​com o visualmente agradáveis. Este bloat tritura a velocidade de processamento. Por exemplo, para avaliar a expressão:
requer cerca de 20 ciclos de clock no sistema de software interpretativo típico. Nosso sistema, por outro lado, pode executar a expressão acima como uma única instrução em um ciclo de clock. Embora o software de nível superior sofra de ineficiências, o código de nível inferior é altamente comprimido, eficiente e rápido. Além disso, a compactação da CPU fornece um ambiente de alta velocidade pronto para aceitar essas instruções de baixo nível.
No entanto, para explorar este processamento de alta velocidade, você deve programar o código no nível da máquina. O AIM-GP opera neste nível de máquina eficiente com código de máquina altamente compacto e também produzirá código de montagem eficiente, bem como código C, Java e código EasyLanguage traduzido, como sua saída.
Projetar um sistema de comércio a maneira tradicional é intensivo em tempo. Os desenvolvedores de sistemas de negociação passam inúmeras horas testando e otimizando sistemas de negociação. No entanto, para testar e otimizar um sistema de negociação, você deve primeiro ter um sistema de negociação existente ou, pelo menos, uma idéia geral ou grupo de idéias para um sistema de negociação. Isso parece simplista, mas, na realidade, os desenvolvedores de sistemas comerciais devem ter um ponto de partida para crescer, o que geralmente é uma teoria ou premissa do movimento do mercado.
Alguns exemplos de pontos de partida para o desenvolvimento do sistema são filtros filtrantes adaptados, suporte adaptativo e movimentos do contador de resistência e padrões atrasados ​​com filtros indicadores. O desenvolvedor do sistema possui algum núcleo de uma idéia para trabalhar; e através de testes, otimização, desativação, avaliação de espaço de parâmetros, análise de sensibilidade, estudos de mercado relacionados, adições de filtro e injeção de ruído aleatório, ele acaba com um sistema de comércio.
De qualquer forma, muitas horas serão gastas neste desenvolvimento, enquanto a ferramenta mais importante que o desenvolvedor irá se sentar será ociosa e subutilizada. Essa ferramenta é, é claro, a CPU.
Em 1955, os custos de software eram um décimo do custo do projeto. Hoje é o hardware que custa um décimo do custo do projeto e, conseqüentemente, essa crise de software levou ao fato de que 99% dos ciclos de CPU simplesmente não são usados. Os custos de programação ainda são altos hoje, mesmo considerando a programação offshore e a terceirização. Usar um algoritmo que produz programas automaticamente é benéfico para o usuário, a indústria e o consumidor.
O processo evolutivo AIM-GP inclui conjuntos de instruções que operam em insumos derivados dos dados tradicionais do mercado financeiro, como padrões, indicadores e dados inter-mercado. Um exemplo de um parâmetro de entrada baseado em padrão Booleano é:
Esta expressão tem um dos dois estados: verdadeiro ou falso. Quando combinado com um parâmetro de entrada booleano baseado em indicadores, como:
C & lt; = MÉDIA (CLOSE, DC) - EMGP,
um padrão de configuração de venda ou compra emerge. Observe que não definimos isso como um padrão de compra, venda ou permanecem planas ou que determinamos se é relevante. Nós simplesmente o declaramos como material genético inicial. Aqui, DC é o ciclo dominante da série temporal, e o EMGP é o que chamamos de "variável emergente", & rdquo; que é criado pela programação genética.
Além dos operadores matemáticos padrão, como +, -, * e & divide ;, os condicionais e as funções transcendentais estão incluídos nos conjuntos de instruções. Também podemos usar outras séries de dados pré-processados ​​dentro do nosso conjunto de dados, incluindo o compromisso da Commodity Futures Trading Commitment of Traders, dados inter-mercados, dados fundamentais, dados de opções, etc. A programação genética determinará se a inclusão de elementos adicionais contribui para a negociação sistema. Após milhares de manipulações de conjunto de instruções, no nível da máquina, um sistema de comércio geralmente emergirá após 10.000 a 100.000 passagens através dos dados. Isso pode levar alguns minutos de tempo de execução dependendo do tamanho do dado.
A evolução pode ser direcionada a um dos muitos critérios, incluindo um índice de Sharpe, lucro líquido / redução máxima, fator de lucro ou simplesmente lucro líquido bruto. Falha em melhorar os resultados do alvo na terminação de um elemento do sistema. No nosso exemplo, em que iremos passar no próximo artigo, evoluiremos um sistema de negociação que visa o lucro líquido. Note-se que o maior lucro líquido pode nem sempre ser o melhor objetivo ao evoluir um sistema comercial.
A única restrição adicional que nós iremos adicionar é que deve haver no mínimo 12 turnos redondos por ano. Isso força o programa a evoluir sistemas mais ativos, aumentando assim a relação comércio-parâmetro de nosso código evoluído e, consequentemente, aumentando suas chances de robustez.
Não sabemos onde qualquer das medidas típicas do desempenho do sistema, como fator de lucro, porcentagem de precisão, lucro líquido ou retração, acabará. O que podemos fazer é atribuir nossos critérios, começar a corrida, aguarde alguns minutos para o nosso sistema comercial emergir e rever os resultados.
Então, os três passos para projetar o nosso sistema comercial são:
1. Execute o pré-processador de dados no mercado selecionado.
2. Execute o gerador do sistema comercial.
3. Traduzir nosso código para o EasyLanguage.
Uma vez automatizado, isso normalmente levará apenas alguns minutos do nosso tempo. No próximo artigo, vamos abordar cada passo em detalhes e explicar o processo de construção de um sistema comercial. Em seguida, vamos construir e detalhar um sistema de negociação para futuros de ouro desenvolvido com este processo automatizado.

Comments

Popular posts from this blog

Opção binária opção binária e forex auto trading robot

Estratégia de troca média móvel deslocada