Monday 22 July 2019

Tradestation forex trading strategies


MetaTrader vs TradeStation: uma comparação de linguagem por Michael R. Bryant Qualquer um que negocie ativamente o forex provavelmente já ouviu falar do MetaTrader. Eles afirmam ter mais de meio milhão de usuários para as versões móveis de suas plataformas de negociação MT4 e MT5. Em resposta aos pedidos dos usuários do MetaTrader, tenho trabalhado na adição da saída do MetaTrader 4 (MT4) ao Adaptrade Builder. Ao concluir a documentação do novo recurso de saída do código MT4 no Builder, pensei que seria um bom momento para discutir algumas das maneiras pelas quais a linguagem de programação MT4, chamada MQL4, difere da linguagem de programação TradeStations, chamada EasyLanguage. Se você é um comerciante sistemático interessado em negociar Forex e ainda não escolheu uma plataforma de negociação, ou você está pensando em mudar de uma plataforma para a outra, há algumas coisas que você deve saber sobre as duas linguagens de script. Se você está apenas aprendendo sobre o MetaTrader, você pode se perguntar por que é uma plataforma tão popular. Na minha opinião, é um resultado de vários fatores. Primeiro, a plataforma é gratuita. Você pode baixar o software e obter dados de forex gratuitos como parte da plataforma sem nenhum custo. A plataforma inclui todos os principais símbolos forex e, depois de se inscrever para uma conta demo gratuita, os dados são atualizados em tempo real. Além disso, a linguagem de script MetaTrader 4, MQL4, é parte integrante da plataforma. Você pode usar o MQL4 para escrever indicadores, quotscriptsquot (código para executar funções específicas mediante solicitação), e quotes quotexpert (estratégias de negociação). A linguagem MQL4, conforme discutido abaixo, é muito versátil e torna a MT4, como a TradeStation, uma plataforma extensível. Existe uma comunidade ativa de usuários MT4 que contribuem com indicadores e EAs para o fórum MT4. A plataforma MT4, como a linguagem MQL4, foi projetada especificamente para o forex. Eu vou discutir mais sobre como isso afeta a linguagem MQL4 abaixo, mas o ponto aqui é que o forex é um mercado global grande e crescente, e o MetaTrader segmentou especificamente esse mercado. Por fim, ao contrário do TradeStation, que principalmente limita os usuários a usar seus próprios serviços de corretagem, o MetaTrader é compatível com uma grande variedade de corretores forex. Como um usuário de longa data da TradeStation, posso lembrar quando a TradeStation era apenas para negociar os mercados de futuros. A linguagem de programação EasyLanguage foi projetada por comerciantes de futuros para comerciantes de futuros. Ao longo dos anos, o idioma foi ampliado e adaptado para funcionar bem em outros mercados, principalmente ações, opções e divisas. No entanto, algumas de suas características ainda refletem suas origens nos mercados de futuros. MQL4 (abreviação de MetaQuotes Language 4) foi projetado especificamente para os mercados de forex. Muitas vezes, o material de instrução para negociação forex concentra-se em idéias e conceitos de negociação genéricos, como indicadores técnicos e tipos de lógica de negociação, e ignora os detalhes de como os mercados de Forex funcionam e como isso torna o forex diferente de outros mercados, como ações e futuros . O fato é que a negociação forex funciona de forma algo diferente de outros mercados, como todos os que estão em transição de um mercado diferente. MQL4 tende a refletir essas diferenças. Principais diferenças Aqui estão algumas das principais diferenças entre EasyLanguage e MQL4. Salvo indicação em contrário, a discussão refere-se a escrever estratégias de negociação e back-testing em dados históricos. A premissa da execução do código EasyLanguage é que todo o código é executado no fechamento de cada barra do gráfico ao qual a estratégia é aplicada. Se o gráfico consistir em barras diárias, por exemplo, o código será executado no fechamento de cada barra diária. Se você quiser que o código seja executado com mais freqüência, o gráfico deve ser alterado para ter um tamanho de barra menor. No entanto, você pode forçar o código a executar certos elementos com mais freqüência usando o recurso de back-testing do quotLook-inside-bar. Isso usa dados de preços em uma resolução maior do que a mostrada no gráfico para produzir resultados mais precisos. O código MQL4 usa uma função chamada start () que executa em cada marca. Normalmente, o código da estratégia principal ocorre dentro da função start (). Se você não deseja que o código seja executado em cada marca, você deve programar esta lógica no início (). Por exemplo, para que o código seja executado ao aberto de cada barra, você pode usar o volume da barra para detectar o aberto usando quotVolume0 lt 1quot. Não há nenhuma maneira prática de detectar o fechamento da barra, de modo que as estratégias no MT4 normalmente executam em todos os carrapatos ou nas barras abertas. Como o código EasyLanguage é executado no fechamento da barra, as instruções de ordem comercial são sempre para execução na próxima barra, e. QuotComprar próxima barra no marketquot. A declaração equivalente mais próxima no MQL4 seria colocar a ordem para a barra atual nas barras atuais abertas. Nesse caso, a lógica de negociação sempre é avaliada na barra anterior em MQL4, enquanto que na EasyLanguage, a lógica é avaliada na barra atual. Ao contrário do EasyLanguage, o MQL4 não restringe as estratégias aos dados do gráfico em que a estratégia foi aplicada. Você pode fazer referência a qualquer série de dados disponível em uma estratégia MT4, consultando o símbolo e o tamanho da barra. Os tamanhos de barra são limitados a 1, 5, 15, 30, 60 e 240 minutos, bem como diariamente, semanalmente e mensalmente. A TradeStation tem uma maior variedade de tamanhos de barras disponíveis, incluindo tamanhos de barras de qualquer número inteiro de minutos e barra de barras de qualquer número de carrapatos. Execução de Ordem A EasyLanguage faz um trabalho louvável de esconder as complexidades de colocar e executar ordens comerciais. Por exemplo, se você tem uma posição curta e você coloca uma ordem de entrada longa, se você não especifica o tamanho, a entrada longa fechará automaticamente o comércio curto ao mesmo tempo em que coloca o comércio longo. Da mesma forma, se você tiver várias ordens pendentes para sair, digamos, um longo comércio no mercado, dependendo de condições diferentes, se várias condições forem verdadeiras ao mesmo tempo, apenas uma ordem de saída será colocada, as outras serão canceladas automaticamente. Além disso, as ordens de negociação no EasyLanguage persistem por apenas uma barra e são automaticamente canceladas se elas não estiverem preenchidas no final da próxima barra. O MQL4 deixa o gerenciamento de pedidos em grande parte até o programador. Se você tem várias ordens concorrentes, você precisa gerenciá-las, cancelando as que não são executadas e certificando-se de que vários pedidos não são executados sem querer. Por exemplo, no MQL4, se você quiser que uma entrada reverta uma posição aberta, você deve especificar o número de lotes para dar o resultado líquido desejado (por exemplo, vender 2 lotes curtos com 1 lote aberto por fim para terminar 1 lote curto) Ou rastrear a posição aberta e fechá-la assim que a nova entrada for detectada. Ações vs. Lotes Na EasyLanguage, o tamanho de uma posição de negociação é especificado em contratos (por exemplo, futuros) ou compartilhamentos. Para o comércio forex, um tamanho de posição padrão na TradeStation seria de 10.000 ou 100.000 partes, correspondendo a um lote pequeno ou completo. De acordo com a orientação forex, no MetaTrader, o tamanho do comércio é especificado em lotes, que podem ser fracionários. Um lote de tamanho completo seria um monte de tamanho de 1. Um lote mínimo seria um tamanho muito igual a 0,1. Custos de negociação e preços de enchimento Como a TradeStation e a EasyLanguage foram originalmente orientadas para a negociação de futuros, eles seguem a convenção de usar a derrapagem para explicar o fato de que os negócios geralmente não são preenchidos ao preço de mercado. Slippage é o custo do dólar adicionado ao comércio para explicar isso. Normalmente, você também entraria os custos de comissão por contrato ou por troca para contabilizar as taxas cobradas pela corretora para executar o comércio. Todos esses custos são tratados da mesma forma: eles deduzem um valor em dólares de um comércio lucrativo ou adicionam o mesmo valor a uma troca perdedora. Os mesmos custos são deduzidos de todos os negócios, longos e curtos. Ao mesmo tempo, presume-se que o comércio tenha sido preenchido ao preço especificado, seja o preço atual de um pedido de mercado ou o preço de parada ou limite especificado. O MQL4 usa uma abordagem um pouco mais sofisticada para os custos de negociação e os preços de preenchimento. No MetaTrader, é importante entender que cada preço é na verdade dois preços, a oferta e a pergunta. A oferta é o preço mais baixo, enquanto a pergunta é o preço mais alto. A diferença entre a oferta e a pergunta é chamada de spread de bidask. As ordens de compra são sempre preenchidas no pedido, e as ordens de venda são sempre preenchidas na oferta. Um gráfico de preços mostra apenas o preço da oferta. Isso significa que as ordens de compra no mercado serão preenchidas acima do preço de mercado aparente (com base no gráfico), enquanto as ordens de venda de mercado serão preenchidas ao preço observado no gráfico. A propagação da bidask faz parte do custo do comércio. Isso é consistente com a prática comum na negociação forex de pagar o comércio através do spread em vez de pagar ao corretor uma comissão fixa. O MQL4 também usa o spread bidask para determinar se um pedido pendente é preenchido. Por exemplo, um pedido de parada de compra é preenchido apenas se o preço de venda, que está acima do preço do gráfico (lance), toca o preço da parada. Se, por exemplo, a barra de preços no gráfico apenas toca o preço de parada, pode parecer que a ordem deve ser preenchida, mas o MT4 não mostrará o histórico comercial como preenchido, a menos que o preço de venda tenha chegado ao preço de parada de compra. Da mesma forma, um pedido de limite de compra não será registrado como preenchido, a menos que o preço de venda atinja o preço limite de compra. As paradas de venda e os limites são preenchidos na oferta, portanto, ao contrário das ordens de compra, seus preços de preenchimento correspondem diretamente aos preços do gráfico. O spread da bidask não é o único spread de preços que afeta ordens de negociação no MT4MQL4. Se uma ordem pendente (stop ou limite) estiver muito próxima do mercado no momento da sua colocação, a ordem será rejeitada. Isso é baseado na idéia de que não haverá tempo suficiente para fazer a ordem antes que o mercado se mova através do preço da ordem. Esta distância mínima pode ser recuperada usando a função MarketInfo (..) no MQL4. Da mesma forma, uma ordem pendente não pode ser modificada no MQL4 se o preço atual da ordem estiver dentro do chamado nível quotfreezequot. Em outras palavras, se o pedido estiver tão próximo ao mercado que possa ser preenchido a qualquer momento, você não tem permissão para modificá-lo. Devido à abordagem mais sofisticada que o MT4MQL4 usa para representar o preenchimento de pedidos, os preços de enchimento em MT4 para simulações históricas (ou seja, back-testing) provavelmente serão mais precisos do que no TradeStation. Sintaxe da linguagem Tanto o EasyLanguage como o MQL4 são linguagens tipo C. Ou seja, ambos têm semelhanças com a linguagem de programação C, que é um propósito geral, linguagem de programação processual desenvolvida no final da década de 1970. MQL4 é muito mais próximo em sintaxe para C do que EasyLanguage. No entanto, enquanto o MQL4 parece quase idêntico ao C, existem algumas diferenças e o MQL4 não implementa todos os recursos do idioma Cs. Os arquivos de ajuda no MT4 observam as diferenças. Diferenças de Indicadores Para qualquer pessoa que esteja pensando em converter uma estratégia EasyLanguage para MQL4 ou vice-versa, esteja ciente de que nem todos os indicadores que estão disponíveis em ambas as plataformas são calculados da mesma maneira em cada plataforma. Em particular, os seguintes indicadores dão valores substancialmente diferentes em cada plataforma para os mesmos dados de preço: Momentum, estocástico FastD (modo principal do indicador estocástico em MT4), estocástico lento (linha de sinal do indicador estocástico em MT4), DI-DI (Movimento direcional), ADX e distribuição de acumulação. Também deve ser observado que a TradeStation inclui indicadores mais incorporados do que o MT4. Através do fórum on-line para MT4, no entanto, é possível encontrar uma grande variedade de indicadores que foram fornecidos por outros membros gratuitamente. Conclusões Tanto o EasyLanguage quanto o MQL4 são linguagens de script de propósito geral projetadas para negociar os mercados. Com ambos os idiomas é possível desenvolver estratégias de negociação altamente complexas e sofisticadas. Em geral, a minha experiência, que parece ser suportada por outros, é que o MQL4 é uma linguagem mais desafiadora que o EasyLanguage, embora a maioria dos usuários da TradeStation provavelmente concorda que o nome EasyLanguage é um pouco errado. Grande parte da complexidade do MQL4 vem dos requisitos que ele coloca no programador para gerenciar ordens comerciais, algo que a EasyLanguage lida com as cenas para a maior parte. No entanto, a carga adicional vem com maior controle e maior precisão na estimativa de preços de enchimento em testes históricos. No geral, não é surpreendente que MT4 seja uma plataforma de negociação popular para o forex e que o MQL4 tenha estado no topo da minha lista de pedidos de clientes do meu software Adaptrade Builder para construção de estratégias. Existem duas versões atuais do MetaTrader: MetaTrader 4 e MetaTrader 5. Ambas as plataformas são ativamente suportadas, mas usam diferentes linguagens de script. MT4 é, de longe, a plataforma mais popular. Como resultado, este artigo se concentrará exclusivamente em MT4 e em sua linguagem de script associada, MQL4. Este artigo apareceu na edição de dezembro de 2017 da newsletter do Adaptrade Software. TradeStation for trading forex Existe uma alternativa à Tradestation. É chamado multimarts multi-gráficos. Estou usando este software todos os dias para gráficos e seu melhor que TS. Sua easilanguage é 99,99 compatível com TSs easylanguage. Os corretores forex suportados são MBT, FXCM, Interactive Brokers e Dukascopy (através da API FIX). Possui algumas vantagens sobre TS, por exemplo. Ele usa multicores e hipertensão para otimização (originalmente era uma plataforma para operadores de algo). Também tem algumas desvantagens sobre TS: sem manual. Obrigado por publicar isso. Eu uso o comerciante ninja no momento, mas nunca fiquei feliz com eles, não posso reclamar muito porque uso a versão gratuita. Estou olhando alternativas. Pareço que a vida útil é a melhor opção em termos de custo. Outro por aí, vale a pena olhar é amibroker Se você roda o MultiCharts, então, o que é Forex Broker você usa para colocar as ordens, estou mais interessado, pois é aplicável ao forex. A TradeStation é software de gráficos e corretor (embora o Forex seja um número de conta separado de ações ou futuros) e eu posso executar ordens condicionais de OCOOSO diretamente com a conta. Eu não executo multi-cartas agora para gráficos. Ajudei-os a testar com OEC api (OpenECry). Isso foi cerca de 3 ou 4 anos atrás. Essa foi a última vez que usei para negociação. Eu olhei para a plataforma novamente cerca de um ano atrás, enquanto eu estava considerando o MBT ou a OEC para o forex, e poderia simultaneamente assistir os futuros. Mas OEC requer uma conta forex separada. E eles desaparecem através de Gain. Talvez isso tenha mudado, mas há cerca de 6 meses atrás, ainda era Gain. Depende da API do corretor. Normalmente, tudo o que é permitido na plataforma proprietária deve ser permitido via API. E a API geralmente permite mais opções. Corretores como o MBT e a OEC, que já possuem um fundo de futuros, geralmente terão o mercado OCOOSO fechado, e outros pedidos mais sofisicados e de limite de mercado. Se o corretor não suportar estes nativamente, então MC poderia simular essas ordens. Alternativamente, você pode programar a simulação dessas ordens no script de automação Expert Advisor. Semelhante ao modo como o MT4 não possui permuta na funcionalidade do gráfico, mas há uma empresa que programou scripts que permitiram posicionamento de um clique, TPSL automático, OCO, etc. Embora seja bom ter a capacidade de colocar ordens OCO nativamente com A API do corretor, existem razões para manter essas ordens somente no lado do cliente. Eu não troquei forex usando o MC como meu pacote de gráficos. Estou focado na automação via MT4 e, em seguida, eu possuo as estratégias para a MC em uma data posterior. Medir tendências automaticamente com zero atraso O documento da TradeStation citado várias postagens acima diz:. E isso vai permitir o comércio de lote estranho de 10K para cima (ou seja, um equivalente Mini), sem comissão (ou seja, eles fazem isso do spread, eu acho como a maioria das outras contas FX de spot de varejo). Isso parece que o TS se configura como fazendo seu próprio mercado ao invés de confiar no Gain Capital para fazê-lo - qualquer um sabe se isso é o que está acontecendo e qual a sua opinião, Max Explicou muito claramente nessa mensagem do cliente. Leia esse link novamente.

No comments:

Post a Comment