Oop e sistemas de negociação algorítmica


METATRADER 4 VS 5 - QUAL UM?


Fico fazendo esta pergunta muito. Tanto que hoje eu quero acertar as pontuações de uma vez por todas nesta revisão de monstros.


Vamos tirar uma coisa do caminho direto para cima. Apesar do óbvio sequenciamento de nomes, o MetaTrader 5 não é o sucessor do MetaTrader 4.


Estas são duas plataformas completamente separadas que estão sendo desenvolvidas em paralelo pela MetaQuotes Software Corp. Cabe a você escolher uma delas para a sua negociação e é isso que estaremos discutindo aqui.


Descobri que a maioria (se não todos) dos artigos que comparam o MetaTrader 4 vs 5 são diluídos com nuances das duas plataformas. Ao focar nos pequenos detalhes, eles perdem a visão geral e não conseguem responder à pergunta principal em que todos estão interessados:


“Eu fico com o MetaTrader 4 ou devo mudar para o MetaTrader 5?”


Neste blog vamos responder exatamente essa questão. Na verdade, vou jogar um pouco mais.


Sendo um fã obstinado do Algorithmic Trading, também responderei a mesma questão do ponto de vista dos EAs e do MQL4 em relação ao MQL5 no geral.


Prenda-se, senhoras e senhores. As coisas estão prestes a ficar quentes!


METATRADER 4 VS 5.


Para começar, vou descrever como esse blog é estruturado para que você saiba o que esperar.


Primeiro, na Parte A, falaremos sobre as principais diferenças do MT4 e MT5. E eu quero dizer os que realmente importam, não o "MT5 tem botões maiores".


Na Parte B, eu vou te dar algo que você não encontrará em nenhum outro lugar. Uma detalhada análise ano a ano de como o MT4 e o MT5 vêm se desenvolvendo na última década.


Finalmente, na terceira seção, vamos tirar uma conclusão. Pelo que discutimos nas duas primeiras partes, a resposta parecerá extremamente óbvia.


Vamos começar.


PARTE A. DIFERENÇAS BÁSICAS (AS QUE REALMENTE IMPORTAM)


Muitas vezes, quando você lê sobre MT4 vs MT5 você vê uma tabela e uma comparação lado a lado dos dois. Não vamos perder nosso tempo nisso aqui.


Claro, existem pequenas diferenças como "O MT5 tem um calendário embutido e o MT4 não", "O MT5 suporta intervalos de tempo de 2 e de 8 horas", etc. Mas você realmente se importa com tudo isso?


Você pode reconstruir virtualmente qualquer timeframe no MT4 usando o script do conversor de período e se você precisar de um calendário econômico - o ForexFactory fará muito bem.


Esses fatores e quaisquer outros semelhantes são insignificantes. Você pode trabalhar em torno deles ou se os operadores realmente gostarem de um determinado recurso do MT5, o MetaQuotes irá, mais cedo ou mais tarde, implementá-lo no MT4 também, como aconteceu com oMetaTrader 4 para iPhone.


Realisticamente, existem apenas três diferenças centrais entre as duas plataformas que realmente importam. Esses são:


Mercados adicionais via MT5 A regra de não cobertura MQL4 vs MQL5.


Vamos analisá-los um por um:


ITEM # 1: MERCADOS ADICIONAIS.


A MetaQuotes já dominou o mercado Forex com sua revolucionária plataforma MT4. Então, por que o MetaTrader 5?


Será realmente um movimento altruísta dar aos operadores ainda mais funcionalidade, mais indicadores, mais prazos, uma linguagem de codificação melhor (veja abaixo)? Isso não soa como toda a história, não é?


Se houver um motivo oculto, o que poderia ser?


O verdadeiro motivo (eu provavelmente diria principal, mas eu vou ficar com o real) MetaQuotes desenvolveu MT5 é porque eles querem acesso a mercados que eles não podem aproveitar com good'ol MT4.


Novos mercados significa mais corretoras, mais clientes, mais receita. E eles estão indo muito bem até agora. Veja uma lista de exemplos de trocas que você pode acessar via MetaTrader 5 já hoje:


Você vê, o MetaTrader 4 é ótimo para o descentralizado, aberto e altamente não regulamentado em um mercado de FX de escala global. No entanto, ele não verifica todas as caixas como uma plataforma para outros mercados.


Simplesmente não foi projetado dessa forma: para conectar-se diretamente a trocas, como as listadas acima, a plataforma precisa integrar-se a gateways para essas trocas. Assim, obterá cotações e notícias do mercado e realizará operações comerciais. Além disso, existem montes de outras nuances.


Mas realmente? O fluxo de receita associado aos mercados acima é substancial o suficiente para justificar toda uma nova plataforma?


Enquanto mercados como Bolsa de Varsóvia e ASX (Australian Stock Exchange) são bons ganhos, eles não são o principal objetivo da MetaQuotes. O grande prêmio é o US Equity Markets, também conhecido como Stock Markets, com trilhões de dólares em valor de mercado:


Aqui está uma citação do CEO da MetaQuotes, Renat Fatkhullin, que deve fornecer uma visão melhor de suas intenções para o MetaTrader 5:


Desde o começo estávamos desenvolvendo o sistema de negociação [MetaTrader 5] sem cobertura. É um pré-requisito se você quiser distribuir uma plataforma para os mercados de ações.


Vamos falar sobre a regra de não-cobertura na próxima seção. Mas o que é interessante é que, apenas alguns meses antes do lançamento do MT5, a NFA também aplicou a regra de não-hedge ao Forex Trading, basicamente tornando o MT4 inutilizável nos EUA.


Sorte incrível para Renat! Por quê? Bem, agora mesmo os traders de Forex não poderão mais usar o MetaTrader 4 e serão forçados a mudar para o MetaTrader 5. Certamente, se as MetaQuotes conseguirem conquistar os mercados dos EUA, o mundo inteiro seguirá o exemplo.


Resultado? Domínio global, controle total! Todos os mercados: Forex, Equities, Futures, Options, a lista continua - passaria sob o nome MetaTrader 5. A MetaQuotes dobra, triplica, 10x é receita ao longo de alguns anos, talvez até tenha um IPO próprio.


Plano engenhoso, não é?


Exceto por um pequeno detalhe ... Os traders não gostam que lhes digam o que podem e o que não podem fazer ... O que nos leva à próxima seção:


PONTO # 2: A REGRA "SEM COBERTURA" EXPLICADA.


OBSERVAÇÃO: leia este primeiro bit se você não estiver familiarizado com a regra Sem cobertura. Caso contrário, sinta-se à vontade para pular para “o que a nova regra significa para os traders” abaixo.


O que é essa regra de não cobertura?


TheNFA é uma organização nos EUA que protege a integridade do mercado nos mercados de Futuros, Forex, Swaps, etc.


Os Associados Revendedores Forex não podem ter posições de compensação em uma conta de cliente, mas devem compensá-los em uma base de primeiro a entrar, primeiro a sair. A pedido do cliente, um FDM pode compensar transações do mesmo tamanho, mesmo se houver transações antigas de um tamanho diferente, mas compensar a transação com a transação mais antiga desse tamanho.


Esta regra também é às vezes chamada de regra FIFO (first-in-first-out) e foi adotada em maio de 2009. Antes disso, você poderia fazer hedge de suas transações ao negociar Forex nos EUA.


Para ilustrar isso rapidamente - imagine que, em três dias consecutivos (seg-qua), você realizou as três transações a seguir no EURUSD: Compre 1Lot, Compre 1Lot, Venda 3Lots. A tabela abaixo mostra como essas transações seriam representadas no MT4 e no MT5:


Você pode ver que no MetaTrader 4 as ordens são mantidas independentemente, enquanto que no MetaTrader 5 as ordens são agregadas juntas.


Isto é o que significa quando se diz que o MT4 tem cobertura e o MT5 não tem cobertura.


O QUE A NOVA REGRA SIGNIFICA PARA COMERCIANTES?


Pessoalmente, não vejo por que a NFA / CFTC estaria tão preocupada com a cobertura. O mundo inteiro usa hedge e está bem com isso, por que privar os cidadãos norte-americanos dessa opção em suas operações de câmbio?


O que significa hedging para mim? De um modo geral, na negociação manual: pegar ou largar - não é grande coisa. No entanto, quando se trata de negociação algorítmica, a regra FIFO é uma grande preocupação. Permita-me explicar por que ...


Imagine que você tenha dois Expert Advisors (Forex Robots) negociando em sua conta no mesmo instrumento financeiro, por exemplo, EURUSD. Completamente independente por design, estilo de negociação, estratégia, prazo - basicamente, cada sistema é único em todos os sentidos possíveis.


A única coisa que eles têm em comum é que você os lançou no mesmo par de moedas. Mas o truque é que eles não sabem disso.


Em algum momento, um deles abre uma ordem de compra. Então, 10 minutos depois, o outro decide abrir uma ordem de venda. BAM! As ordens se anulam mutuamente. Por quê? Porque surpresa-surpresa Não Hedging!


Mas isso não ajuda os EAs, apenas os confunde. A maioria dos robôs avançados monitora suas ordens: execute o trailing de StopLosses, ajuste os TakeProfits e feche a ordem quando for a hora certa. Mas aqui não há ordem para monitorar!


Como seu EA reagirá? Resposta: Reação desconhecida. Eles poderiam ignorá-lo e continuar com seu trabalho, ou ... Eles poderiam enlouquecer e começar a reabrir freneticamente os pedidos "perdidos".


Isso custaria-lhe spread extra, comissão, mas o mais importante - isso iria estragar totalmente suas estratégias de negociação. É muito provável que você possa perder muitos fundos em um único problema como este.


Há duas maneiras de sair dessa situação para os Algo Traders: 1) pensar em tudo isso no design de sua estratégia de negociação, ou 2) evitar simultaneamente lançar EAs que poderiam potencialmente criar um hedge.


O primeiro complica excessivamente seu processo de criação de estratégias e, na verdade, torna algumas estratégias simplesmente impossíveis de implementar. Este último é uma restrição à sua carteira e, portanto, limita o potencial de ganhos da sua negociação.


Eu sei que muitos dos meus leitores são dos EUA. Para vocês, eu queria dizer que, dessa perspectiva, eu entendo totalmente por que você não gosta da nova regra FIFO. É uma merda!


Eu não vejo a regra FIFO fornecendo QUALQUER benefício para o trader. O que é "salvaguardar" contra? Apenas limita sua capacidade de criar estratégias independentes.


Sério pessoal, se alguém souber como a regra FIFO é "boa" para o comerciante, por favor poste na seção de comentários abaixo. Eu estaria interessado em ouvir seus pensamentos. Talvez eu esteja sentindo falta de algo ...


COMO OS METAQUOTOS SE DESTACAM NO PÉ.


Ok, então FIFO aconteceu - não posso fazer nada sobre isso. NFA é NFA e você tem que jogar pelas novas regras. Eu posso aceitar isso.


A única coisa que não entendo é por que você codifica as regras do NFA em um software com uma base global de usuários? Através deste movimento, a MetaQuotes praticamente fez da MT5 um produto exclusivo dos EUA, alienando uma grande parte de sua base de usuários.


O Reino Unido, a Austrália, a Europa e praticamente o resto do mundo não se importam com a regra do No Hedge. Então, por que os comerciantes desses países sequer considerariam migrar para o MT5 se isso impusesse regulamentações dos EUA a eles, quando eles não precisam obedecer a esses regulamentos?


Além disso, muitos investidores norte-americanos já transferiram seus fundos para o exterior para encontrar formas de continuar negociando com hedge. Isso é difícil, porque a maioria dos corretores no mundo todo não aceita os cidadãos americanos como clientes. No entanto, acho que tem que haver maneiras, porque as pessoas estão fazendo isso.


Até mesmo corretores dos EUA têm divisões off-shore especiais para atender a residentes fora dos EUA. Por quê? Porque os comerciantes não querem saber o que fazer pela NFA.


Não é de admirar que o MetaTrader 5 não tenha uma aceitação substancial. Como sabemos, a demanda determinará qual produto decola e qual falha. Neste sentido, o MetaTrader 5 falhou: existem muitos outros corretores oferecendo MT4 do que aqueles oferecendo o MT5.


Isso, meus amigos, é, sem dúvida, um grande erro do lado do MetaQuotes. O que eles estavam pensando?


ITEM # 3: MQL4 VS MQL5.


NOTA: Se você não está interessado em codificação e negociação de algo, então você pode pular a maior parte desta seção. Mas não pule tudo - a conclusão é importante.


O que é Programação Orientada a Objetos (OOP)?


Todo o hype em torno do MQL5 é que ele traz OOP para negociação algorítmica. É por isso que muitos traders / programadores estavam tão entusiasmados com o MT5 em primeiro lugar.


Em termos simples, a OOP permite dividir seu programa em blocos. Cada um desses blocos é como uma caixa preta: algo entra e algum resultado / ou ação é produzido:


No mundo da programação, isso é muito poderoso por várias razões. Por exemplo, depois de codificar uma dessas caixas pretas para um de seus Expert Advisors, você poderá cloná-la e usá-la no próximo sistema que desenvolver também.


Além disso, o OOP é ótimo para colaboração. Você pode designar um desenvolvedor para trabalhar em um conjunto de caixas pretas e outro desenvolvedor - em outro. Então você pode juntá-los em um programa final sem saber o que há dentro de cada um desses blocos.


Contanto que você saiba o que entra e o que sai, você pode criar um produto final a partir deles. É por isso que gosto de explicar o conceito usando o termo “Black Box”.


A Wikipedia tem um bom artigo sobre OOP, se você quiser mais informações sobre este tópico.


É OOP REALMENTE QUE VALORIZADO NA NEGOCIAÇÃO?


Na minha opinião - não.


Eu desenvolvi o software OOP antes - de volta ao ensino médio. Essas foram mais de 10.000 linhas de programas de código abordando programas matemáticos complexos e projetos colaborativos de pesquisa para modelar o comportamento de robôs em labirintos.


É quando você realmente se beneficia da OOP ... Por outro lado, na negociação, quando eu tenho um programa de código de 1000 a 2000 linhas, não há necessidade de complicar demais. Estou mais do que satisfeito com o simples MQL4 e prefiro sua natureza processual.


Eu poderia continuar um pouco mais sobre o porquê ou porque não usar o OOP na negociação, mas não vou. Porque: Adivinha o quê?


A partir do build 600 OOP também está disponível no MT4. Isso aconteceu em fevereiro de 2014; Se você quiser mais detalhes, confira o comunicado de imprensa.


Portanto, OOP não é mais relevante no showdown MQL4 vs MQL5. O que é relevante, é compatibilidade retroativa ou, para ser preciso, a falta dele.


NÃO COMPATIBILIDADE PARA TRÁS.


Como você provavelmente já sabe, não pode simplesmente transferir seu código MQL4 para o MQL5 - ele simplesmente não funciona.


MetaTrader 4 originalmente levou Forex Trading pela tempestade principalmente graças à sua capacidade de executar sistemas Algorithmic Trading, ou EAs. Uma grande porcentagem de traders usa EAs ou indicadores / scripts personalizados em suas negociações. Movê-los do MQL4 para o MQL5 seria um exercício muito caro e demorado para a maioria.


Então por que se incomodar? Se o MT4 não tiver sido preterido, é muito mais fácil continuar fazendo o que você estava fazendo da maneira antiga.


ALGUMAS VERDADEIRAS VANTAGENS DO MQL5.


Para ser justo com os desenvolvedores do MT5, gostaria de nomear duas vantagens notáveis ​​que esta plataforma tem sobre o MT4:


1) testador de estratégia multi-moeda; e.


2) O MT5 é superior para testes e otimização. Centenas de vezes mais rápido.


Enquanto o primeiro provavelmente seria de interesse para cerca de 10-15% dos comerciantes, o segundo é uma grande melhoria. Otimizações mais rápidas significam menos tempo gasto configurando seus EAs, mais tempo gasto fora fazendo o que você gosta.


Mas, infelizmente, o problema de compatibilidade com versões anteriores realmente estraga esses ótimos recursos. Você gastará mais tempo reescrevendo seu código no MQL5 e depurando-o do que será necessário para testar suas estratégias na plataforma MT4 mais lenta.


MQL4 VS MQL5 CONCLUSÃO.


Como descobrimos, a OOP não é mais um ponto de fricção, já que tanto o MT4 quanto o MT5 agora o possuem.


Existem algumas grandes vantagens do MQL5, como o testador de estratégia de várias moedas, e o MT5 é mais rápido no teste e na otimização. No entanto, a falta de compatibilidade retroativa entre o MQL4 e o MQL5 elimina todos os benefícios.


Esta é sua cereja em cima da cereja! A falta de compatibilidade retroativa é a segunda principal razão pela qual os comerciantes varejistas não mudarão do MT4 para o MT5.


PARTE B. EVIDÊNCIAS HISTÓRICAS


Até agora você provavelmente já viu para onde esta revisão inteira está indo. Nesta seção, vamos realmente colocar as unhas no caixão do MetaTrader 5 para que você não tenha dúvidas sobre seu futuro.


TENDÊNCIAS DO GOOGLE.


Usando o (Google Trends) [google / trends /], podemos visualizar com que frequência os termos MetaTrader 4 e MetaTrader 5 foram pesquisados ​​nos últimos 10 anos:


O mesmo pensamento vale para iniciantes em programação - vá com MT4 e MQL4. Você vai se divertir muito e suas habilidades serão aplicáveis ​​em muitos outros corretores.


A conclusão para programadores experientes é um pouco diferente: se você realmente acha que precisará do testador de estratégia multi-moeda, bem como dos testes e otimização muito rápidos, então talvez dê uma chance ao MT5. No entanto, valerá a pena se você puder se comprometer a construir seus sistemas do zero.


Ao mesmo tempo, o MT4 já deve ter a maioria das coisas que um codificador experiente precisará, incluindo OOP. Se isso não for suficiente, em vez de usar o MT5, você pode ver como usar a DLL ou até mesmo outras plataformas com uma boa API, como o jForex da DukasCopy.


Desculpe-me pelo atraso. Eu fui banido pelo modulador do sistema enquanto repetia a mesma mensagem 3 vezes nas mensagens privadas. No entanto, estou agora sem banimento e tentarei responder às suas duas perguntas.


1º) o consumo da memória RAM no seu MT4.


Deixe-me dizer-lhe que qualquer versão mais recente (no mundo do software) é melhor que a mais antiga. Isso também depende de você estar usando especialistas / indicadores ou não.


Pessoalmente, estou usando apenas o MT4 atualmente e planejando aprender programação MT5 para recriar meus robôs de negociação publicados no MT5.


2) o mql5 está relacionado com a empresa MetaQuotes que criou esses dois MetaTraders e versões anteriores, bem como uma visão rápida. Enquanto eles têm mais softwares que nós não os conhecemos ..


No entanto, o MT5 tornou-se empurrado pelas MetaQuotes em qualquer lugar, mesmo que você veja o logotipo MT4 como um marketing para este novo produto, pois ele terá o melhor futuro no momento.


Mas ainda assim o MT4 é suportado pelos corretores que o compraram. Então, você pode baixar o MT4 de qualquer corretor que tenha licença MT4.


Melhor Linguagem de Programação para Sistemas de Negociação Algorítmica?


Melhor Linguagem de Programação para Sistemas de Negociação Algorítmica?


Uma das perguntas mais frequentes que recebo no mailbag do QS é "Qual é a melhor linguagem de programação para negociação algorítmica?". A resposta curta é que não há "melhor" linguagem. Parâmetros de estratégia, desempenho, modularidade, desenvolvimento, resiliência e custo devem ser considerados. Este artigo descreverá os componentes necessários de uma arquitetura de sistema de comércio algorítmico e como as decisões relativas à implementação afetam a escolha da linguagem.


Primeiramente, os principais componentes de um sistema de negociação algorítmica serão considerados, como as ferramentas de pesquisa, o otimizador de portfólio, o gerenciador de risco e o mecanismo de execução. Posteriormente, diferentes estratégias de negociação serão examinadas e como elas afetam o design do sistema. Em particular, a frequência de negociação e o volume de negociação provável serão ambos discutidos.


Uma vez que a estratégia de negociação tenha sido selecionada, é necessário arquitetar todo o sistema. Isso inclui a escolha de hardware, o sistema operacional e a resiliência do sistema contra eventos raros e potencialmente catastróficos. Enquanto a arquitetura está sendo considerada, a devida atenção deve ser dada ao desempenho - tanto para as ferramentas de pesquisa quanto para o ambiente de execução ao vivo.


Qual é o sistema de negociação tentando fazer?


Antes de decidir sobre a "melhor" linguagem com a qual escrever um sistema de negociação automatizado, é necessário definir os requisitos. O sistema será puramente baseado em execução? O sistema exigirá um módulo de gerenciamento de risco ou de construção de portfólio? O sistema exigirá um backtester de alto desempenho? Para a maioria das estratégias, o sistema de negociação pode ser particionado em duas categorias: Pesquisa e geração de sinais.


A pesquisa está preocupada com a avaliação de um desempenho da estratégia em relação aos dados históricos. O processo de avaliação de uma estratégia de negociação sobre dados de mercado anteriores é conhecido como backtesting. O tamanho dos dados e a complexidade algorítmica terão um grande impacto na intensidade computacional do backtester. A velocidade e a simultaneidade da CPU costumam ser os fatores limitantes na otimização da velocidade de execução da pesquisa.


A geração de sinais preocupa-se em gerar um conjunto de sinais de negociação de um algoritmo e enviar esses pedidos ao mercado, geralmente por meio de uma corretora. Para determinadas estratégias, é necessário um alto nível de desempenho. Problemas de E / S, como largura de banda de rede e latência, são muitas vezes o fator limitante na otimização de sistemas de execução. Assim, a escolha de idiomas para cada componente de todo o seu sistema pode ser bem diferente.


Tipo, Frequência e Volume de Estratégia.


O tipo de estratégia algorítmica empregada terá um impacto substancial no design do sistema. Será necessário considerar os mercados que estão sendo negociados, a conectividade com fornecedores de dados externos, a frequência e o volume da estratégia, o tradeoff entre facilidade de desenvolvimento e otimização de desempenho, bem como qualquer hardware personalizado, incluindo customização co-localizada servidores, GPUs ou FPGAs que possam ser necessários.


As escolhas tecnológicas para uma estratégia de ações norte-americanas de baixa frequência serão muito diferentes daquelas de uma negociação de estratégia de arbitragem estatística de alta frequência no mercado de futuros. Antes da escolha da linguagem, muitos fornecedores de dados devem ser avaliados quanto à estratégia em questão.


Será necessário considerar a conectividade com o fornecedor, a estrutura de quaisquer APIs, a pontualidade dos dados, os requisitos de armazenamento e a resiliência em face de um fornecedor ficar off-line. Também é aconselhável ter acesso rápido a vários fornecedores! Vários instrumentos têm suas próprias peculiaridades de armazenamento, exemplos dos quais incluem vários símbolos de ticker para ações e datas de vencimento para futuros (para não mencionar quaisquer dados OTC específicos). Isso precisa ser levado em conta no design da plataforma.


A frequência da estratégia é provavelmente um dos maiores impulsionadores de como a pilha de tecnologia será definida. Estratégias que empregam dados com mais freqüência do que minuciosamente ou em segundo lugar exigem consideração significativa com relação ao desempenho.


Uma estratégia que excede as segundas barras (isto é, dados de ticks) leva a um design orientado pelo desempenho como o requisito primário. Para estratégias de alta frequência, uma quantidade substancial de dados de mercado precisará ser armazenada e avaliada. Softwares como HDF5 ou kdb + são comumente usados ​​para essas funções.


Para processar os volumes extensos de dados necessários para aplicativos HFT, um backtester e um sistema de execução extensivamente otimizados devem ser usados. C / C ++ (possivelmente com algum montador) é provável que seja o candidato a idioma mais forte. Estratégias de frequência ultra-alta quase certamente exigirão hardware customizado, como FPGAs, co-location de troca e ajuste de interface de rede / kernal.


Sistemas de pesquisa.


Os sistemas de pesquisa geralmente envolvem uma mistura de desenvolvimento interativo e scripts automatizados. O primeiro ocorre com frequência dentro de um IDE, como o Visual Studio, o MatLab ou o R Studio. Este último envolve extensos cálculos numéricos sobre numerosos parâmetros e pontos de dados. Isso leva a uma escolha de idioma que fornece um ambiente simples para testar o código, mas também fornece desempenho suficiente para avaliar estratégias em várias dimensões de parâmetro.


IDEs típicos neste espaço incluem o Microsoft Visual C ++ / C #, que contém extensos utilitários de depuração, recursos de conclusão de código (via "Intellisense") e visões gerais simples da pilha inteira do projeto (via banco de dados ORM, LINQ); MatLab, que é projetado para extensa álgebra linear numérica e operações vetorizadas, mas de uma forma de console interativo; R Studio, que envolve o console de linguagem estatística R em um IDE completo; Eclipse IDE para Linux Java e C ++; e IDEs semi-proprietários como o Enthought Canopy for Python, que incluem bibliotecas de análise de dados como NumPy, SciPy, scikit-learn e pandas em um único ambiente interativo (console).


Para backtesting numérico, todos os idiomas acima são adequados, embora não seja necessário utilizar uma GUI / IDE, pois o código será executado "em segundo plano". A consideração principal neste estágio é a velocidade de execução. Uma linguagem compilada (como C ++) é geralmente útil se as dimensões do parâmetro de backtesting forem grandes. Lembre-se que é necessário ter cuidado com esses sistemas, se for esse o caso!


Linguagens interpretadas, como Python, geralmente usam bibliotecas de alto desempenho, como NumPy / pandas, para a etapa de backtesting, a fim de manter um grau razoável de competitividade com equivalentes compilados. Em última análise, a linguagem escolhida para o backtesting será determinada por necessidades algorítmicas específicas, bem como o leque de bibliotecas disponíveis na linguagem (mais sobre isso abaixo). No entanto, a linguagem usada para os ambientes de backtester e de pesquisa pode ser completamente independente daquelas usadas nos componentes de construção de portfólio, gerenciamento de risco e execução, como será visto.


Construção de Carteira e Gestão de Risco.


Os componentes de gerenciamento de risco e de construção de portfólio são frequentemente negligenciados pelos traders algorítmicos de varejo. Isso é quase sempre um erro. Essas ferramentas fornecem o mecanismo pelo qual o capital será preservado. Eles não apenas tentam aliviar o número de apostas "arriscadas", mas também minimizam a rotatividade dos negócios, reduzindo os custos de transação.


Versões sofisticadas desses componentes podem ter um efeito significativo na qualidade e consistência da lucratividade. É fácil criar uma estratégia estável, pois o mecanismo de construção de portfólio e o gerenciador de risco podem ser facilmente modificados para lidar com vários sistemas. Assim, eles devem ser considerados componentes essenciais no início do projeto de um sistema de negociação algorítmica.


O trabalho do sistema de construção de portfólio é pegar um conjunto de negócios desejados e produzir o conjunto de negociações reais que minimizam o churn, manter exposições a vários fatores (como setores, classes de ativos, volatilidade, etc.) e otimizar a alocação de capital para vários estratégias em um portfólio.


A construção de portfólio geralmente se reduz a um problema de álgebra linear (como uma fatoração de matriz) e, portanto, o desempenho é altamente dependente da eficácia da implementação da álgebra linear numérica disponível. Bibliotecas comuns incluem uBLAS, LAPACK e NAG para C ++. O MatLab também possui operações de matriz amplamente otimizadas. O Python utiliza o NumPy / SciPy para tais cálculos. Um portfólio freqüentemente reequilibrado exigirá uma biblioteca matricial compilada (e bem otimizada!) Para realizar este passo, de modo a não afunilar o sistema de negociação.


O gerenciamento de riscos é outra parte extremamente importante de um sistema de negociação algorítmica. O risco pode vir de várias formas: aumento da volatilidade (embora isso possa ser visto como desejável para certas estratégias!), Aumento de correlações entre classes de ativos, inadimplência de terceiros, paralisações de servidores, eventos "black swan" e erros não detectados no código de negociação. para nomear alguns.


Os componentes de gerenciamento de risco tentam antecipar os efeitos da volatilidade excessiva e correlação entre as classes de ativos e seus efeitos subsequentes sobre o capital comercial. Muitas vezes, isso reduz a um conjunto de cálculos estatísticos, como os "testes de estresse" de Monte Carlo. Isso é muito semelhante às necessidades computacionais de um mecanismo de precificação de derivativos e, como tal, será vinculado à CPU. Estas simulações são altamente paralelizáveis ​​(veja abaixo) e, até certo ponto, é possível "lançar hardware no problema".


Sistemas de Execução.


O trabalho do sistema de execução é receber sinais de negociação filtrados dos componentes de construção de carteira e gerenciamento de risco e enviá-los para uma corretora ou outros meios de acesso ao mercado. Para a maioria das estratégias de negociação algorítmica de varejo, isso envolve uma conexão API ou FIX para uma corretora como a Interactive Brokers. As principais considerações ao decidir sobre uma linguagem incluem a qualidade da API, a disponibilidade do wrapper de idioma para uma API, a frequência de execução e o escorregamento previsto.


A "qualidade" da API refere-se a quão bem documentada ela é, que tipo de desempenho ela fornece, se precisa de software independente para ser acessado ou se um gateway pode ser estabelecido de maneira sem cabeça (ou seja, sem GUI). No caso dos Interactive Brokers, a ferramenta Trader WorkStation precisa estar em execução em um ambiente GUI para acessar sua API. Certa vez, tive que instalar uma edição Ubuntu Desktop em um servidor de nuvem da Amazon para acessar remotamente o Interactive Brokers, puramente por esse motivo!


A maioria das APIs fornecerá uma interface C ++ e / ou Java. Geralmente, cabe à comunidade desenvolver wrappers específicos de linguagem para C #, Python, R, Excel e MatLab. Observe que, com cada plug-in adicional utilizado (especialmente os wrappers de APIs), há escopo para os bugs se infiltrarem no sistema. Sempre teste plugins desse tipo e garanta que eles sejam ativamente mantidos. Um indicador que vale a pena é ver quantas novas atualizações foram feitas em uma base de código nos últimos meses.


Freqüência de execução é da maior importância no algoritmo de execução. Observe que centenas de pedidos podem ser enviados a cada minuto e, como tal, o desempenho é crítico. A derrapagem será incorrida através de um sistema de execução com péssimo desempenho e isso terá um impacto dramático na lucratividade.


As linguagens com tipagem estática (veja abaixo) como C ++ / Java são geralmente ótimas para execução, mas há um compromisso em tempo de desenvolvimento, teste e facilidade de manutenção. Linguagens dinamicamente tipificadas, como Python e Perl, são geralmente "rápidas o suficiente". Certifique-se sempre de que os componentes são projetados de maneira modular (veja abaixo) para que possam ser "trocados" conforme o sistema é dimensionado.


Planejamento arquitetônico e processo de desenvolvimento.


Os componentes de um sistema de negociação, seus requisitos de frequência e volume foram discutidos acima, mas a infra-estrutura do sistema ainda não foi coberta. Aqueles que atuam como comerciantes de varejo ou que trabalham em um pequeno fundo provavelmente estarão "usando muitos chapéus". Será necessário estar cobrindo o modelo alfa, os parâmetros de gerenciamento e execução de riscos, e também a implementação final do sistema. Antes de aprofundar em linguagens específicas, o design de uma arquitetura de sistema ideal será discutido.


Separação de preocupações.


Uma das decisões mais importantes que devem ser tomadas no início é como "separar as preocupações" de um sistema de negociação. No desenvolvimento de software, isso significa essencialmente dividir os diferentes aspectos do sistema de negociação em componentes modulares separados.


Ao expor as interfaces em cada um dos componentes, é fácil trocar partes do sistema por outras versões que auxiliem o desempenho, a confiabilidade ou a manutenção, sem modificar nenhum código de dependência externo. Essa é a "melhor prática" para esses sistemas. Para estratégias em freqüências mais baixas, tais práticas são recomendadas. Para negociação de ultra alta frequência, o livro de regras pode ter que ser ignorado em detrimento do ajuste do sistema para um desempenho ainda maior. Um sistema mais fortemente acoplado pode ser desejável.


Criar um mapa de componentes de um sistema de negociação algorítmico vale um artigo em si. No entanto, uma abordagem ideal é garantir que haja componentes separados para as entradas de dados de mercado históricas e em tempo real, armazenamento de dados, API de acesso a dados, backtester, parâmetros estratégicos, construção de portfólio, gerenciamento de risco e sistemas automatizados de execução.


Por exemplo, se o armazenamento de dados em uso estiver atualmente com desempenho insatisfatório, mesmo em níveis significativos de otimização, ele poderá ser substituído com reescritas mínimas para a API de acesso a dados ou acesso a dados. Tanto quanto o backtester e componentes subseqüentes estão em causa, não há diferença.


Outro benefício dos componentes separados é que ele permite que uma variedade de linguagens de programação seja usada no sistema geral. Não há necessidade de se restringir a um único idioma se o método de comunicação dos componentes for independente de idioma. Este será o caso se eles estiverem se comunicando via TCP / IP, ZeroMQ ou algum outro protocolo independente de linguagem.


As a concrete example, consider the case of a backtesting system being written in C++ for "number crunching" performance, while the portfolio manager and execution systems are written in Python using SciPy and IBPy.


Performance Considerations.


Performance is a significant consideration for most trading strategies. For higher frequency strategies it is the most important factor. "Performance" covers a wide range of issues, such as algorithmic execution speed, network latency, bandwidth, data I/O, concurrency/parallelism and scaling. Each of these areas are individually covered by large textbooks, so this article will only scratch the surface of each topic. Architecture and language choice will now be discussed in terms of their effects on performance.


The prevailing wisdom as stated by Donald Knuth, one of the fathers of Computer Science, is that "premature optimisation is the root of all evil". This is almost always the case - except when building a high frequency trading algorithm! For those who are interested in lower frequency strategies, a common approach is to build a system in the simplest way possible and only optimise as bottlenecks begin to appear.


Profiling tools are used to determine where bottlenecks arise. Profiles can be made for all of the factors listed above, either in a MS Windows or Linux environment. There are many operating system and language tools available to do so, as well as third party utilities. Language choice will now be discussed in the context of performance.


C++, Java, Python, R and MatLab all contain high-performance libraries (either as part of their standard or externally) for basic data structure and algorithmic work. C++ ships with the Standard Template Library, while Python contains NumPy/SciPy. Common mathematical tasks are to be found in these libraries and it is rarely beneficial to write a new implementation.


One exception is if highly customised hardware architecture is required and an algorithm is making extensive use of proprietary extensions (such as custom caches). However, often "reinvention of the wheel" wastes time that could be better spent developing and optimising other parts of the trading infrastructure. Development time is extremely precious especially in the context of sole developers.


Latency is often an issue of the execution system as the research tools are usually situated on the same machine. For the former, latency can occur at multiple points along the execution path. Databases must be consulted (disk/network latency), signals must be generated (operating syste, kernal messaging latency), trade signals sent (NIC latency) and orders processed (exchange systems internal latency).


For higher frequency operations it is necessary to become intimately familiar with kernal optimisation as well as optimisation of network transmission. This is a deep area and is significantly beyond the scope of the article but if an UHFT algorithm is desired then be aware of the depth of knowledge required!


Caching is very useful in the toolkit of a quantitative trading developer. Caching refers to the concept of storing frequently accessed data in a manner which allows higher-performance access, at the expense of potential staleness of the data. A common use case occurs in web development when taking data from a disk-backed relational database and putting it into memory. Any subsequent requests for the data do not have to "hit the database" and so performance gains can be significant.


For trading situations caching can be extremely beneficial. For instance, the current state of a strategy portfolio can be stored in a cache until it is rebalanced, such that the list doesn't need to be regenerated upon each loop of the trading algorithm. Such regeneration is likely to be a high CPU or disk I/O operation.


However, caching is not without its own issues. Regeneration of cache data all at once, due to the volatilie nature of cache storage, can place significant demand on infrastructure. Another issue is dog-piling , where multiple generations of a new cache copy are carried out under extremely high load, which leads to cascade failure.


Dynamic memory allocation is an expensive operation in software execution. Thus it is imperative for higher performance trading applications to be well-aware how memory is being allocated and deallocated during program flow. Newer language standards such as Java, C# and Python all perform automatic garbage collection , which refers to deallocation of dynamically allocated memory when objects go out of scope .


Garbage collection is extremely useful during development as it reduces errors and aids readability. However, it is often sub-optimal for certain high frequency trading strategies. Custom garbage collection is often desired for these cases. In Java, for instance, by tuning the garbage collector and heap configuration, it is possible to obtain high performance for HFT strategies.


C++ doesn't provide a native garbage collector and so it is necessary to handle all memory allocation/deallocation as part of an object's implementation. While potentially error prone (potentially leading to dangling pointers) it is extremely useful to have fine-grained control of how objects appear on the heap for certain applications. When choosing a language make sure to study how the garbage collector works and whether it can be modified to optimise for a particular use case.


Many operations in algorithmic trading systems are amenable to parallelisation . This refers to the concept of carrying out multiple programmatic operations at the same time, i. e in "parallel". So-called "embarassingly parallel" algorithms include steps that can be computed fully independently of other steps. Certain statistical operations, such as Monte Carlo simulations, are a good example of embarassingly parallel algorithms as each random draw and subsequent path operation can be computed without knowledge of other paths.


Other algorithms are only partially parallelisable. Fluid dynamics simulations are such an example, where the domain of computation can be subdivided, but ultimately these domains must communicate with each other and thus the operations are partially sequential. Parallelisable algorithms are subject to Amdahl's Law, which provides a theoretical upper limit to the performance increase of a parallelised algorithm when subject to $N$ separate processes (e. g. on a CPU core or thread ).


Parallelisation has become increasingly important as a means of optimisation since processor clock-speeds have stagnated, as newer processors contain many cores with which to perform parallel calculations. The rise of consumer graphics hardware (predominently for video games) has lead to the development of Graphical Processing Units (GPUs), which contain hundreds of "cores" for highly concurrent operations. Such GPUs are now very affordable. High-level frameworks, such as Nvidia's CUDA have lead to widespread adoption in academia and finance.


Such GPU hardware is generally only suitable for the research aspect of quantitative finance, whereas other more specialised hardware (including Field-Programmable Gate Arrays - FPGAs) are used for (U)HFT. Nowadays, most modern langauges support a degree of concurrency/multithreading. Thus it is straightforward to optimise a backtester, since all calculations are generally independent of the others.


Scaling in software engineering and operations refers to the ability of the system to handle consistently increasing loads in the form of greater requests, higher processor usage and more memory allocation. In algorithmic trading a strategy is able to scale if it can accept larger quantities of capital and still produce consistent returns. The trading technology stack scales if it can endure larger trade volumes and increased latency, without bottlenecking .


While systems must be designed to scale, it is often hard to predict beforehand where a bottleneck will occur. Rigourous logging, testing, profiling and monitoring will aid greatly in allowing a system to scale. Languages themselves are often described as "unscalable". This is usually the result of misinformation, rather than hard fact. It is the total technology stack that should be ascertained for scalability, not the language. Clearly certain languages have greater performance than others in particular use cases, but one language is never "better" than another in every sense.


One means of managing scale is to separate concerns, as stated above. In order to further introduce the ability to handle "spikes" in the system (i. e. sudden volatility which triggers a raft of trades), it is useful to create a "message queuing architecture". This simply means placing a message queue system between components so that orders are "stacked up" if a certain component is unable to process many requests.


Rather than requests being lost they are simply kept in a stack until the message is handled. This is particularly useful for sending trades to an execution engine. If the engine is suffering under heavy latency then it will back up trades. A queue between the trade signal generator and the execution API will alleviate this issue at the expense of potential trade slippage. A well-respected open source message queue broker is RabbitMQ.


Hardware and Operating Systems.


The hardware running your strategy can have a significant impact on the profitability of your algorithm. This is not an issue restricted to high frequency traders either. A poor choice in hardware and operating system can lead to a machine crash or reboot at the most inopportune moment. Thus it is necessary to consider where your application will reside. The choice is generally between a personal desktop machine, a remote server, a "cloud" provider or an exchange co-located server.


Desktop machines are simple to install and administer, especially with newer user friendly operating systems such as Windows 7/8, Mac OSX and Ubuntu. Desktop systems do possess some significant drawbacks, however. The foremost is that the versions of operating systems designed for desktop machines are likely to require reboots/patching (and often at the worst of times!). They also use up more computational resources by the virtue of requiring a graphical user interface (GUI).


Utilising hardware in a home (or local office) environment can lead to internet connectivity and power uptime problems. The main benefit of a desktop system is that significant computational horsepower can be purchased for the fraction of the cost of a remote dedicated server (or cloud based system) of comparable speed.


A dedicated server or cloud-based machine, while often more expensive than a desktop option, allows for more significant redundancy infrastructure, such as automated data backups, the ability to more straightforwardly ensure uptime and remote monitoring. They are harder to administer since they require the ability to use remote login capabilities of the operating system.


In Windows this is generally via the GUI Remote Desktop Protocol (RDP). In Unix-based systems the command-line Secure SHell (SSH) is used. Unix-based server infrastructure is almost always command-line based which immediately renders GUI-based programming tools (such as MatLab or Excel) to be unusable.


A co-located server, as the phrase is used in the capital markets, is simply a dedicated server that resides within an exchange in order to reduce latency of the trading algorithm. This is absolutely necessary for certain high frequency trading strategies, which rely on low latency in order to generate alpha.


The final aspect to hardware choice and the choice of programming language is platform-independence. Is there a need for the code to run across multiple different operating systems? Is the code designed to be run on a particular type of processor architecture, such as the Intel x86/x64 or will it be possible to execute on RISC processors such as those manufactured by ARM? These issues will be highly dependent upon the frequency and type of strategy being implemented.


Resilience and Testing.


One of the best ways to lose a lot of money on algorithmic trading is to create a system with no resiliency . This refers to the durability of the sytem when subject to rare events, such as brokerage bankruptcies, sudden excess volatility, region-wide downtime for a cloud server provider or the accidental deletion of an entire trading database. Years of profits can be eliminated within seconds with a poorly-designed architecture. It is absolutely essential to consider issues such as debuggng, testing, logging, backups, high-availability and monitoring as core components of your system.


It is likely that in any reasonably complicated custom quantitative trading application at least 50% of development time will be spent on debugging, testing and maintenance.


Nearly all programming languages either ship with an associated debugger or possess well-respected third-party alternatives. In essence, a debugger allows execution of a program with insertion of arbitrary break points in the code path, which temporarily halt execution in order to investigate the state of the system. The main benefit of debugging is that it is possible to investigate the behaviour of code prior to a known crash point .


Debugging is an essential component in the toolbox for analysing programming errors. However, they are more widely used in compiled languages such as C++ or Java, as interpreted languages such as Python are often easier to debug due to fewer LOC and less verbose statements. Despite this tendency Python does ship with the pdb, which is a sophisticated debugging tool. The Microsoft Visual C++ IDE possesses extensive GUI debugging utilities, while for the command line Linux C++ programmer, the gdb debugger exists.


Testing in software development refers to the process of applying known parameters and results to specific functions, methods and objects within a codebase, in order to simulate behaviour and evaluate multiple code-paths, helping to ensure that a system behaves as it should. A more recent paradigm is known as Test Driven Development (TDD), where test code is developed against a specified interface with no implementation. Prior to the completion of the actual codebase all tests will fail. As code is written to "fill in the blanks", the tests will eventually all pass, at which point development should cease.


TDD requires extensive upfront specification design as well as a healthy degree of discipline in order to carry out successfully. In C++, Boost provides a unit testing framework. In Java, the JUnit library exists to fulfill the same purpose. Python also has the unittest module as part of the standard library. Many other languages possess unit testing frameworks and often there are multiple options.


In a production environment, sophisticated logging is absolutely essential. Logging refers to the process of outputting messages, with various degrees of severity, regarding execution behaviour of a system to a flat file or database. Logs are a "first line of attack" when hunting for unexpected program runtime behaviour. Unfortunately the shortcomings of a logging system tend only to be discovered after the fact! As with backups discussed below, a logging system should be given due consideration BEFORE a system is designed.


Both Microsoft Windows and Linux come with extensive system logging capability and programming languages tend to ship with standard logging libraries that cover most use cases. It is often wise to centralise logging information in order to analyse it at a later date, since it can often lead to ideas about improving performance or error reduction, which will almost certainly have a positive impact on your trading returns.


While logging of a system will provide information about what has transpired in the past, monitoring of an application will provide insight into what is happening right now . All aspects of the system should be considered for monitoring. System level metrics such as disk usage, available memory, network bandwidth and CPU usage provide basic load information.


Trading metrics such as abnormal prices/volume, sudden rapid drawdowns and account exposure for different sectors/markets should also be continuously monitored. Further, a threshold system should be instigated that provides notification when certain metrics are breached, elevating the notification method (email, SMS, automated phone call) depending upon the severity of the metric.


System monitoring is often the domain of the system administrator or operations manager. However, as a sole trading developer, these metrics must be established as part of the larger design. Many solutions for monitoring exist: proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case.


Backups and high availability should be prime concerns of a trading system. Consider the following two questions: 1) If an entire production database of market data and trading history was deleted (without backups) how would the research and execution algorithm be affected? 2) If the trading system suffers an outage for an extended period (with open positions) how would account equity and ongoing profitability be affected? The answers to both of these questions are often sobering!


It is imperative to put in place a system for backing up data and also for testing the restoration of such data. Many individuals do not test a restore strategy. If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment?


Similarly, high availability needs to be "baked in from the start". Redundant infrastructure (even at additional expense) must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such systems. I won't delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system.


Choosing a Language.


Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system. The next stage is to discuss how programming languages are generally categorised.


Type Systems.


When choosing a language for a trading stack it is necessary to consider the type system . The languages which are of interest for algorithmic trading are either statically - or dynamically-typed . A statically-typed language performs checks of the types (e. g. integers, floats, custom classes etc) during the compilation process. Such languages include C++ and Java. A dynamically-typed language performs the majority of its type-checking at runtime. Such languages include Python, Perl and JavaScript.


For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors. However, type-checking doesn't catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations. 'Dynamic' languages (i. e. those that are dynamically-typed) can often lead to run-time errors that would otherwise be caught with a compilation-time type-check. For this reason, the concept of TDD (see above) and unit testing arose which, when carried out correctly, often provides more safety than compile-time checking alone.


Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the type (and thus memory requirements) are known at compile-time. In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performance hit. Libraries for dynamic languages, such as NumPy/SciPy alleviate this issue due to enforcing a type within arrays.


Open Source or Proprietary?


One of the biggest choices available to an algorithmic trading developer is whether to use proprietary (commercial) or open source technologies. There are advantages and disadvantages to both approaches. It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documentation and any licensing/maintenance costs.


The Microsoft stack (including Visual C++, Visual C#) and MathWorks' MatLab are two of the larger proprietary choices for developing custom algorithmic trading software. Both tools have had significant "battle testing" in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds.


Microsoft and MathWorks both provide extensive high quality documentation for their products. Further, the communities surrounding each tool are very large with active web forums for both. The software allows cohesive integration with multiple languages such as C++, C# and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ. MatLab also has many plugins/libraries (some free, some commercial) for nearly any quantitative research domain.


There are also drawbacks. With either piece of software the costs are not insignificant for a lone trader (although Microsoft does provide entry-level version of Visual Studio for free). Microsoft tools "play well" with each other, but integrate less well with external code. Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned.


MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading. The main issue with proprietary products is the lack of availability of the source code. This means that if ultra performance is truly required, both of these tools will be far less attractive.


Open source tools have been industry grade for sometime. Much of the alternative asset space makes extensive use of open-source Linux, MySQL/PostgreSQL, Python, R, C++ and Java in high-performance production roles. However, they are far from restricted to this domain. Python and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats.


The main benefit of using interpreted languages is the speed of development time. Python and R require far fewer lines of code (LOC) to achieve similar functionality, principally due to the extensive libraries. Further, they often allow interactive console based development, rapidly reducing the iterative development process.


Given that time as a developer is extremely valuable, and execution speed often less so (unless in the HFT space), it is worth giving extensive consideration to an open source technology stack. Python and R possess significant development communities and are extremely well supported, due to their popularity. Documentation is excellent and bugs (at least for core libraries) remain scarce.


Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces. A typical Linux server (such as Ubuntu) will often be fully command-line oriented. In addition, Python and R can be slow for certain execution tasks. There are mechanisms for integrating with C++ in order to improve execution speeds, but it requires some experience in multi-language programming.


While proprietary software is not immune from dependency/versioning issues it is far less common to have to deal with incorrect library versions in such environments. Open source operating systems such as Linux can be trickier to administer.


I will venture my personal opinion here and state that I build all of my trading tools with open source technologies. In particular I use: Ubuntu, MySQL, Python, C++ and R. The maturity, community size, ability to "dig deep" if problems occur and lower total cost ownership (TCO) far outweigh the simplicity of proprietary GUIs and easier installations. Having said that, Microsoft Visual Studio (especially for C++) is a fantastic Integrated Development Environment (IDE) which I would also highly recommend.


Batteries Included?


The header of this section refers to the "out of the box" capabilities of the language - what libraries does it contain and how good are they? This is where mature languages have an advantage over newer variants. C++, Java and Python all now possess extensive libraries for network programming, HTTP, operating system interaction, GUIs, regular expressions (regex), iteration and basic algorithms.


C++ is famed for its Standard Template Library (STL) which contains a wealth of high performance data structures and algorithms "for free". Python is known for being able to communicate with nearly any other type of system/protocol (especially the web), mostly through its own standard library. R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code (which can be found in portfolio optimisation and derivatives pricing, for instance).


Outside of the standard libraries, C++ makes use of the Boost library, which fills in the "missing parts" of the standard library. In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C++11 spec, including native support for lambda expressions and concurrency.


Python has the high performance NumPy/SciPy/Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research. Further, high-performance plugins exist for access to the main relational databases, such as MySQL++ (MySQL/C++), JDBC (Java/MatLab), MySQLdb (MySQL/Python) and psychopg2 (PostgreSQL/Python). Python can even communicate with R via the RPy plugin!


An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API. Most APIs natively support C++ and Java, but some also support C# and Python, either directly or with community-provided wrapper code to the C++ APIs. In particular, Interactive Brokers can be connected to via the IBPy plugin. If high-performance is required, brokerages will support the FIX protocol.


Conclusão.


As is now evident, the choice of programming language(s) for an algorithmic trading system is not straightforward and requires deep thought. The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries.


The benefit of a separated architecture is that it allows languages to be "plugged in" for different aspects of a trading stack, as and when requirements change. A trading system is an evolving tool and it is likely that any language choices will evolve along with it.


A Quantcademy.


Participe do portal de associação da Quantcademy que atende à crescente comunidade de traders de quantificação de varejo e aprenda como aumentar a lucratividade de sua estratégia.


Negociação Algorítmica Bem Sucedida.


Como encontrar novas ideias de estratégia de negociação e avaliá-las objetivamente para o seu portfólio usando um mecanismo de backtesting personalizado no Python.


Comércio Algorítmico Avançado.


Como implementar estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas Bayesianas com R e Python.


Bem-vindo aos gurus de negociação!


Os Trading Gurus criam sistemas de negociação algorítmica.


Nossos sistemas são baseados em uma estrutura orientada a objetos que suporta redes locais e de área ampla de sistemas heterogêneos usando buffers de protocolo do Google e / ou 0MQ. We also support a wide variety of market data/broker interfaces, including the FIX protocol.


Oferecemos suporte a Java, C #, C ++ e Object Pascal.


Também suportamos MultiCharts e NinjaTrader para aqueles com um orçamento apertado.


Notícias de choque! We now even support "object-oriented" MetaTrader 4 build 600+ and MetaTrader 5 too!


If you have an unusual requirement such as getting FIX 4.2 talking to MT4 over a wide area network using Google protocol buffers and/or JSON over 0MQ then please do not hesitate to get in touch.


Nós já implementamos essa combinação improvável de sons! Se você é do Reino Unido também, e você está interessado em propagandas automatizadas profissionais, então você pode estar interessado em algo similar.


25 Great Master of Financial Engineering Programs.


By Kelley Jacobs.


Financial engineering is an interdisciplinary field which applies mathematical practice and methods to provide solutions in finance. Institutions of higher education have several names for these programs, including financial engineering, financial mathematics, mathematical engineering, and computational finance. These programs are housed in departments such as Mathematics, Engineering, Finance and Business. Graduates often find employment in investment banking, business, regulatory agencies and insurance companies.


The list below seeks to highlight 25 exceptional masters of financial engineering programs in the United States – programs worthy of your consideration if you’re contemplating study in this area.


Our editorial team selected an initial set of competitive programs, then narrowed the list with a scoring system (explained below) based on those offering programming options for students (concentrations or specific coursework based on interests) and a way to measure student success through projects, thesis, essay or another type of evaluation criteria. Information below was drawn from the program webpage on the institution website. Where there are ties, the program with the lower tuition rate is favored. Rankings are based on the following point system.


Innovative program offerings.


Availability of a concentration – 2 points Student engagement in the field-internship or project – 3 points.


Ranking the Top Master of Financial Engineering Degree Programs.


25. University of Southern California.


USC Viterbi School of Engineering.


Engenharia financeira.


Los Angeles, California.


The University of Southern California Viterbi School of Engineering offers a masters in Financial Engineering. Students can complete the program taking between 29 and 31 credit hours of coursework. The program is also offered online. Both programs are extremely selective and offer the same high quality education opportunity that USC is known for.


Tuition: $51,446 is the cost of the program.


Courses: Probability for Electrical and Computer Engineers; Stochastic Processes; Mathematics and Tools for Financial Engineers.


24. University of Notre Dame.


Department of Applied and Computational Mathematics and Statistics.


Master of Science in Applied and Computational Mathematics and Statistics with a specialty in Computational Finance.


Notre Dame, Indiana.


The Financial Engineering program at UCLA is offered as a full-time program that can be completed in 13.5 months. Curriculum is based on the business school model. Students complete a corporate sponsored Applied Finance Program and complete a summer internship prior to graduation. Currently, 94% of graduates find full-time employment within 6 months of graduation.


Tuition: $46,010 is the cost of the program.


Courses: Time Series Analysis; Statistical Methods in Data Mining; Linear Statistical Models.


23. Boston University.


Questrom School of Business.


Mathematical Finance.


Boston, Massachusetts.


The MS in Mathematical Finance program at Boston University can be completed in 17 months - 3 semesters and a 2 month summer internship (recommended). The program integrates principles of math with theory and practice of finance. 97% of students wanting a summer internship have accepted an offer and most students are employed in the field shortly after graduation. An extensive alumni network helps keep graduates connected and establish professional networks.


Tuition: $47,422 program tuition.


Coursework: Stochastic Methods of Mathematical Finance; Statistical Methods of Mathematical Finance; Stochastic Optimal Control and Investment.


22. Fordham University.


Gabelli School of Business.


Finança quantitativa.


New York, New York.


The Quantitative Finance program at Fordham University is home to a state-of-the-art simulated trading floor complete with Bloomberg terminals. Students can complete their degree is as little as 1 year (they are encouraged to take longer to deepen their understanding and further develop professional connections). A cohort model is used as students complete 3 terms, with the 3rd term being a summer project. This program accommodates full-time students.


Tuition: $50,897 for the program.


Courses: Interest Rate Derivatives; Large-Scale Data Modeling; Credit Risk Management.


21. University of California-Los Angeles.


UCLA Anderson School of Management.


Engenharia financeira.


Los Angeles, California.


The Financial Engineering program at UCLA is offered as a full-time program that can be completed in 13.5 months. Curriculum is based on the business school model. Students complete a corporate sponsored Applied Finance Program and complete a summer internship prior to graduation. Currently, 94% of graduates find full-time employment within 6 months of graduation.


Tuition: $57,268 is the cost of the program.


Courses: Empirical Methods in Finance; Computational Methods in Finance; Introduction to Econometrics.


20. University of Illinois at Urbana-Champaign.


College of Business and Engineering at Illinois.


Engenharia financeira.


Urbana, Illinois.


The Financial Engineering program at the University of Illinois Urbana-Champaign is a joint program between the College of Engineering and the College of Business. Financial Engineering is a three-semester program available to students able to study full-time. Approximately 90% of graduates will find employment within 6 months of graduation. Students complete a practicum course prior to graduation to gain “real world” experience in financial engineering and risk management problems.


Courses: Numerical Methods in Finance; Clustering and Approximation Methods; and Market MicroStructure Trading.


19. Johns Hopkins University.


Department of Applied Mathematics and Statistics.


Financial Mathematics Masters Program.


Baltimore, Maryland.


The Financial Mathematics program at Johns Hopkins University emphasizes computing and effective communication as key skills and abilities that every graduate needs to possess. Students are able to complete their degree in three semesters beginning in late summer. Students complete a summer internship prior to their last semester to gain real world experience.


Courses: Monte Carlo Methods; Applied Statistics and Data Analysis; Análise de Séries Temporais.


18. University of California-Berkeley.


Haas School of Business.


Master of Financial Engineering Program.


Berkeley, California.


The University of California-Berkeley is home to the 2nd oldest business school in the US. Nearly 100% of graduates seeking full-time employment after graduation are placed within the first year. The financial engineering program is a 12-month, full-time program. UC-Berkeley is the only school offering a 10 week mid-program internship as part of the curriculum. Students also complete an applied finance project.


Tuition: $63,540/year tuition and fees.


Coursework: Investments and Derivatives; Empirical Methods in Finance; and Positioning Yourself for Opportunities in the Financial World.


17. Stony Brook University.


Department of Applied Mathematics and Statistics.


Finança quantitativa.


Stony Brook, New York.


The Quantitative Finance Track at Stony Brook University is aimed at producing applied mathematicians who specialize in finance. Students can pursue their degree on a full-time or part-time basis, although no formal part-time program has been established. This degree is not a terminal degree and students can move on to a PhD. Internships are available and encouraged.


Tuition: Per semester: $7,980.50 (In State) and $12,970.50 (Out of State)


Courses: Capital Markets and Portfolio Theory; Statistical Methods in Finance; Mathematics of High Frequency Finance.


16. New York University.


Courant Institute of Mathematical Sciences.


Masters in Mathematics in Finance.


New York, New York.


The Masters in Mathematics in Finance program curriculum at New York University is made up of study in financial theory and modeling, mathematical tools, financial applications, computational skills, and practical training. Students can complete the program on a part-time or full-time basis. Students pursuing their degree full-time can complete in three semesters, beginning with the fall semester, taking four courses per semester. Students complete a summer internship between the 2nd and 3rd semester. The department also offers a join MBA/MS degree in Mathematics in Finance.


Courses: Algorithmic Trading And Quantitative Strategies; Mortgage-Backed Securities and Energy Derivatives; Active Portfolio Management.


15. Rutgers University.


Department of Mathematics.


Mathematical Finance.


Piscataway, New Jersey.


Rutgers University offers an MS degree in Mathematical Finance. Students can pursue full-time or part-time enrollment options. Full-time students can complete the program in one year. Prior to graduation, students complete a masters degree essay. While an internship is not required, it is highly suggested. Nearly 100% of graduates are employed in the field.


Tuition: $58,317 is the approximate cost of the program.


Coursework: Computational Finance; Credit Risk Modeling; Portfolio Theory and Applications.


14. Illinois Institute of Technology.


Department of Applied Mathematics/ Stuart School of Business.


Mathematical Finance.


Chicago, Illinois.


The Illinois Institute of Technology offers a Mathematical Finance degree in partnership with the Department of Applied Mathematics and the Stuart School of Business. The typical full-time plan of study allows students to complete the program over four semesters which includes a summer internship. The program requires 11 courses be completed to earn the degree, but no thesis is required.


Tuition: $1,613/credit hour (33 credit hours=$53,229)


Courses: Bayesian Econometrics; and Database Management; OOP and Algorithmic Trading Systems.


13. University of Chicago.


Department of Mathematics.


MS in Financial Mathematics.


Chicago, Illinois.


The University of Chicago offers a MS degree in Financial Management with both full-time and part-time program options. Students can complete in 5 quarters or 15 months and must complete within four years. Students can study in either Chicago or Singapore (depending on program acceptance). An internship or project lab may be completed during the summer quarter.


Tuition: $5,786/100 level course (approximately $52,000 for the program)


Coursework: Statistical Risk Management; Mathematical Foundations of Option Pricing; Portfolio Theory and Risk Management.


12. University of Minnesota.


College of Science and Engineering.


Financial Mathematics.


Minneapolis, Minnesota.


The University of Minnesota offers a Financial Mathematics program that accommodates the working professional by offering courses in the evening. This is a coursework-only program. Most students complete the program in 2 years, but it could theoretically be completed in one year. Students have the opportunity to complete a program emphasis which allows for the opportunity to take coursework in related areas of interest. 85% of graduates are employed in the field.


Tuition: Approximately $38,000 for the program.


Emphasis Options: Management; Estatisticas; Applied Economics; Economics; Computer Science; Mathematics; Industrial and Systems Engineering; and World Economy and Rates.


11. Georgia Institute of Technology.


Scheller College of Business.


Quantitative and Computational Finance.


Atlanta, Georgia.


The Quantitative and Computational Finance program is interdisciplinary between the Scheller College of Business, the H. Milton Stewart School of Industrial and Systems Engineering and the School of Mathematics. Students can complete their studies full-time or part-time. Full-time students can complete in three semesters. 96% of graduates are employed within 3 months and almost all complete a summer internship.


Tuition: $7,933/semester in-state and $18,533/semester out-of-state.


Courses: Design and Implementation of Systems that Support Computational Finance; Derivative Securities; Numerical Methods in Finance.


10. North Carolina State University.


Department of Mathematics.


Financial Mathematics.


Raleigh, North Carolina.


The Financial Mathematics program at North Carolina State University is an 18-month program (if a full-time student) that is a joint venture across 5 departments and 4 colleges. Students typically start in the fall (there are exceptions) and may pursue full or part-time study. 100% of all graduates find placement in the field after completing their degree.


Tuition: $19,759 (in-state)-$38,266 (our-of-state) is approximate cost of program.


Courses: Equity Valuation; International Finance; Corporate Risk Management.


9. Universidade de Columbia.


The Fu Foundation School of Engineering and Applied Science.


MS in Financial Engineering.


New York, New York.


The Financial Engineering program at Columbia University is one of the most prestigious in the field. The program has a 100% job placement rate; ensuring graduates are able to apply their education immediately after graduation. Students attend the program full-time and complete in 2 semesters. 51% of summer internships are converted into full-time offers.


Tuition: $1,782/credit hour.


Areas of Concentration: Finance and Economics; Derivados; Asset Management; Computation and Programming; Computational Finance/Trading Systems.


8. Cornell University.


School of Operations Research and Information Engineering.


Cornell Financial Engineering Manhattan.


Ithaca, New York.


The Cornell Financial Engineering Manhattan program can be completed in three semesters, with the third semester completed at CFEM. Students complete coursework in two semesters and spend the third semester participating in professional development programs and practical curriculum. All graduates are placed within 1 year and 100% are placed in summer internships.


Tuition: $48,900/2 semester program.


Concentrations: Financial Engineering is one of 7 areas of concentration within the Master of Engineering program along with Applied Operations Research (AOR); Data Analytics (DA); Financial Engineering (FE); Information Technology (IT); Manufacturing and Industrial Engineering (MIE); Strategic Operations (SO); and Systems Engineering.


7. Baruch College/CUNY New York City.


Department of Mathematics.


Engenharia financeira.


New York, New York.


The Financial Engineering program at Baruch College in New York claims a 100% employment placement rate for new graduates with an average starting salary of $115,000. Students complete twelve three-credit courses and can pursue their degree full-time or part-time to allow working professionals to complete the program. All courses are offered in the evening to allow those already working in the field or looking to change careers to meet their educational goals.


Tuition: $24,315 (in-state)-$35,040 (out of state)


Courses: Volatility Filtering and Estimation; Commodities and Futures Trading; Advanced Risk and Portfolio Management.


6. Carnegie Mellon University.


Tepper School of Business.


MS in Computational Finance.


Pittsburg, Pennsylvania.


The Computational Finance degree program at Carnegie Melon University can be completed in three semesters, and students can participate full-time, part-time or online via distance learning. The program is fully integrated among 4 Carnegie Melon Colleges including business, math, statistics and IT. 99% of full-time students are accepted into a summer internship and 86% accept full-time positions within three months of graduation.


Tuition: $3,216-$3,353/6 unit course.


Coursework: Macroeconomics for Computational Finance; Multi-Period Asset Pricing; Financial Computing.


5. Polytechnic Institute of New York University.


NYU School of Engineering.


Engenharia financeira.


New York, New York.


The MS in Financial Engineering is a 33-credit program that can be completed either full-time or part-time. Students are required to complete an applied lab and a capstone experience which can be an internship, project or thesis. Students have the opportunity to complete the Bloomberg Essentials Online Training Program, which fulfills a requirement for graduation. The NYU School of Engineering has almost a 90% post-graduation job placement rate.


Tuition: $1,626/point (33 points=$53,658)


Program Tracks: Risk Finance; Computational Finance; Technology and Algorithmic Finance; Financial Markets and Corporate Finance.


4. Rensselaer Polytechnic Institute.


Lally School of Management.


Quantitative Finance and Risk Analysis.


Troy, New York.


The Lally School of Management at Rensselaer Polytechnic Institute offers an MS degree in Quantitative Finance and Risk Analysis. Students can complete the program full-time in one year, but a part-time option is also available. The program is interdisciplinary in nature and crosses several departments within the institution. The curriculum balances finance with students’ specialized interests. Rensselaer Polytechnic Institute is the oldest technological university in the United States.


Tuition: $48,100 is the approximate cost of the program.


Concentrations: Quantitative Finance Track or Financial Risk Analysis Track.


3. Stanford University.


Institute for Computational and Mathematical Engineering.


Computational and Mathematical Engineering.


Stanford, California.


Stanford University offers a Computational and Mathematical Engineering full-time program leading to a terminal professional degree. Students engage in research activities but are not required to complete a thesis. Students also have the opportunity to participate in an internship. The program offers over 60 courses for students to choose from (following program criteria). Faculty are actively involved in research.


Program Tracks: Computational Geoscience Track; Data Science Track; Mathematical and Computational Finance Track; Imaging Sciences Track.


2. Stevens Institute of Technology.


School of Systems and Enterprises.


Engenharia financeira.


Hoboken, Nova Jersey.


The Stevens Institute of Technology offers a ten-course MS in Financial Engineering. Students are able to participate in a required internship and must complete a project or thesis as a requirement for graduation. Students can complete the program full-time, part-time or online. SIT is home of the state of the art Hanlon Financial Systems Lab, which contains a trading room and Bloomberg terminals. Students can also participate in the Financial Engineering Seminar Series where they can hear from leading professionals in the field about current research and industry trends.


Tuition: $1,450/credit hour (30 credits=$43,500)


Concentrations: Quantitative Finance; Financial Services Analytics; Financial Risk and Regulation; Financial Systems.


1. University of Washington.


Department of Applied Mathematics.


Computational Finance and Risk Management.


Seattle, Washington.


The University of Washington Computational Finance and Risk Management program is available for full or part-time study. Students can select from three different program options to meet their professional goals. The general program option can be completed in 18 months and includes a summer internship. The Risk Management Option and Computing Option can be completed in 2 years and include extended internships. The program can also be completed online.


Tuition: $37,800 for 42 credit option, $48,600 for 54 hour credit option.


Program Options: Risk Management Option with Extended Internship; Computing Option with Extended Internship.


A high resolution version of the award badge can be found here. You are welcome to use it for your publications.


Python para negociação algorítmica.


Um curso de treinamento on-line em profundidade.


AGORA FINANCIAMENTO COM PYTHON CURSO E VÍDEOS INCLUÍDOS.


Este é um curso de treinamento on-line aprofundado sobre Python para Algorithmic Trading que coloca você na posição de negociar CFDs (em moedas, índices ou commodities), ações, opções e moedas criptografadas automaticamente. Atualmente, o material do curso tem mais de 450 páginas em formato PDF (mais de 600 páginas, incluindo o material Finanças com Python) e inclui mais de 3.000 linhas de código Python.


Reserve o curso hoje com base em nossa oferta especial de 219 EUR (em vez de 299 EUR) & mdash; ou leia para saber mais. Agora Finanças com o curso de Python (incl. 7 + horas de instrução de vídeo) incluído.


Nenhum reembolso é possível desde que você tenha acesso total ao material completo do curso eletrônico (HTML, Notebooks Jupyter, códigos Python, etc.). Observe também que o material do curso é protegido por direitos autorais e não pode ser compartilhado ou distribuído. Não vem com garantias ou representações, na medida permitida pela lei aplicável.


O que os outros dizem


Análise premiada.


Estamos orgulhosos por sermos nomeados como Provedor de Soluções Top 10 Banking Analytics de 2017 pelo Banking CIO Outlook.


Uma Simbiose Perfeita.


Encontrar o algoritmo certo para comercializar automaticamente e com sucesso os mercados financeiros é o santo graal das finanças. Não muito tempo atrás, o Algorithmic Trading estava disponível apenas para jogadores institucionais com muitos recursos e muitos ativos sob gestão. Desenvolvimentos recentes nas áreas de código aberto, dados abertos, computação em nuvem e armazenamento, bem como plataformas de negociação on-line, nivelaram o campo de atuação para instituições menores e comerciantes individuais - mdash; tornando possível começar nesta disciplina fascinante, sendo equipado apenas com um portátil moderno e uma conexão à Internet.


Hoje em dia, o Python e seu ecossistema de pacotes poderosos é a plataforma de tecnologia de escolha para negociação algorítmica. Entre outros, o Python permite que você faça análise de dados eficiente (por exemplo, pandas) para aplicar o aprendizado de máquina à previsão do mercado de ações (por exemplo, com o scikit-learn) ou até mesmo usar a tecnologia de aprendizado profundo do Google (com o tensorflow).


Tópicos do curso.


Este é um curso on-line intensivo e intensivo sobre o Python (versão 3.5) para o Algorithmic Trading. Tal curso na intersecção de dois campos vastos e excitantes dificilmente pode abranger todos os tópicos de relevância. No entanto, ele pode abranger uma série de tópicos metafundos importantes em profundidade: dados financeiros: os dados financeiros estão no centro de todo projeto de comércio algorítmico; Python e pacotes como o NumPy e pandas fazem um ótimo trabalho ao lidar com dados financeiros estruturados de qualquer tipo (final do dia, intradiário, alta frequência) backtesting: sem negociação algorítmica automatizada sem um teste rigoroso da estratégia de negociação para ser implantado; o curso abrange, entre outras, estratégias de negociação baseadas em médias móveis simples, momentum, reversão à média e previsão em tempo real baseada em aprendizagem profunda de máquina / máquina: a negociação algorítmica requer lidar com dados em tempo real, algoritmos on-line baseados nela e visualização em tempo real. tempo real; o curso introduz a programação de socket com ZeroMQ e visualização de streaming com plataformas online Plotly: sem negociação sem uma plataforma de negociação; o curso abrange três plataformas populares de negociação eletrônica: Oanda (negociação de CFDs), Interactive Brokers (negociação de ações e opções) e Gemini (negociação de criptomoeda); Ele também oferece convenientes classes de wrapper no Python para funcionar em poucos minutos de automação: a beleza, bem como alguns dos principais desafios no comércio algorítmico resultam da automação da operação de negociação; O curso mostra como implantar o Python na nuvem e como configurar um ambiente apropriado para negociação algorítmica automatizada.


Índice.


Dê uma olhada no sumário (atual) da versão em PDF do material do curso on-line.


Exclusividade e Benefícios.


O curso oferece uma experiência única de aprendizado com os seguintes recursos e benefícios. cobertura de tópicos relevantes: é o único curso cobrindo tal amplitude e profundidade com relação a tópicos relevantes em Python para base de código independente de negociação algorítmica: o curso é acompanhado por um repositório Git na plataforma Quant contendo todos os códigos em um self - contained, forma executável (3.000 + linhas de código) versão do livro como PDF: além da versão on-line do curso, há também uma versão do livro como PDF (450+ páginas) on-line / vídeo de treinamento (opcional): The Python Os Quants oferecem uma aula de treinamento on-line e em vídeo (não incluída) baseada neste curso / livro que fornece uma experiência de aprendizado interativo (por exemplo, para ver o código executado ao vivo, fazer perguntas individuais), bem como tópicos adicionais ou tópicos de um ângulo diferente de negociação real como o objetivo: a cobertura de três diferentes plataformas de negociação on-line coloca o aluno na posição de iniciar o comércio de papel e ao vivo de forma eficiente; Este curso fornece ao aluno conhecimentos relevantes, práticos e valiosos: faça você mesmo e uma abordagem individualizada: como o material e os códigos são autônomos e dependem apenas de pacotes Python padrão, o aluno tem total conhecimento e total controle sobre o que está acontecendo, como usar os exemplos de código, como alterá-los, etc; não há necessidade de confiar em plataformas de terceiros, por exemplo, para fazer o backtesting ou conectar-se às plataformas de negociação; você pode fazer tudo isso por conta própria com este curso & mdash; em um ritmo que seja mais conveniente & mdash; e você tem todas as linhas de código para fazer isso no fórum do usuário disponível: embora você deva ser capaz de fazer tudo sozinho, nós estamos lá para ajudá-lo; você pode postar perguntas e comentários em nosso fórum de usuários; Nosso objetivo é acompanhar em até 24 horas o curso de Finanças com Python: nosso curso introdutório agora está totalmente incluído neste pacote com mais de 150 páginas de conteúdo em PDF, Jupyter Notebooks e mais de 7 horas de instruções em vídeo.


Vídeo de visão geral.


Abaixo, um pequeno vídeo (cerca de 4 minutos) que fornece uma visão geral técnica do material do curso (conteúdo e códigos Python) em nossa plataforma Quant and Training.


Sobre o autor do curso.


O Dr. Yves J. Hilpisch é fundador e sócio-gerente da The Python Quants, um grupo focado no uso de tecnologias de código aberto para a ciência de dados financeiros, comércio algorítmico e finanças computacionais. Ele é o autor dos livros.


Yves dá palestras sobre finanças computacionais no Programa CQF, em ciência de dados na Universidade de Ciências Aplicadas e é o diretor do programa de treinamento on-line que leva ao primeiro Certificado Universitário Python for Finance (concedido pela htw saar).


Yves escreveu a biblioteca de análise financeira DX Analytics e organiza encontros e conferências sobre Python para finanças quantitativas em Frankfurt, Londres e Nova York. Ele também deu palestras em conferências de tecnologia nos Estados Unidos, Europa e Ásia.


Repositório Git.


Todos os códigos Python e os Jupyter Notebooks são fornecidos como um repositório Git no Quant Platform para fácil atualização e uso local. Certifique-se de ter uma instalação científica abrangente do Python 3.5 pronta.


Encomende o curso.


Atualmente, oferecemos uma oferta especial ao se inscrever hoje. Apenas pague.


em vez do preço normal de 299 euros. O material ainda está parcialmente em desenvolvimento. Com sua inscrição hoje, você também protege o acesso a atualizações futuras. Isso deve ajudá-lo um pouco em fazer essa decisão potencialmente mudar de carreira. Nunca foi tão fácil dominar o Python para o Algorithmic Trading.


Basta fazer o seu pedido através do PayPal para o qual você também pode usar seu cartão de crédito.


Nenhum reembolso é possível desde que você tenha acesso total ao material completo do curso eletrônico (HTML, Notebooks Jupyter, códigos Python, etc.). Observe também que o material do curso é protegido por direitos autorais e não pode ser compartilhado ou distribuído. Não vem com garantias ou representações, na medida permitida pela lei aplicável.


MetaTrader 4 vs 5 – Which One? (2015 Review)


I get asked this question a lot. So much that today I want to settle the scores once and for all in this monster review.


Let’s get one thing out of the way straight up. Despite obvious sequencing in names, MetaTrader 5 is not the successor of MetaTrader 4.


These are two completely separate platforms that are being developed in parallel by MetaQuotes Software Corp. It is up to you to choose one of them for your trading and that is what we will be discussing here.


I found that most (if not all) of the articles that compare MetaTrader 4 vs 5 are diluted with nuances of the two platforms. By focusing on the little details they miss the big picture and fail to answer the main question everybody is interested in:


“Do I stick with MetaTrader 4 or should I switch to MetaTrader 5?”


In this blog we will answer exactly that question. In fact, I’m going to throw in a little bit extra.


Being an Die-hard fan of Algorithmic Trading I’m also going to answer that same question from the point of view of EAs and MQL4 vs MQL5 overall.


Strap yourselves in, ladies and gentlemen. Things are about to get hot!


Metatrader 4 vs 5.


To start off, I will outline how this blog is structured so you know what to expect.


First, in Part A, we will talk about the core differences of MT4 and MT5. And I mean the ones that really matter, not “MT5 has bigger buttons”.


In Part B, I will give you something you won’t find anywhere else. A detailed year-by-year analysis of how MT4 and MT5 have been developing over the past decade.


Finally, in the third section we will draw a conclusion. From what we discuss in the first two parts the answer will seem extremely obvious.


Vamos começar.


Part A. Core Differences (The Ones That Actually Matter)


Often when you read about MT4 vs MT5 you see a table and a side-by-side comparison of the two. We’re not going to waste our time on that here.


Sure, there are minor differences like “MT5 has an in-built calendar and MT4 doesn’t” , “MT5 supports 2-minute and 8-hour timeframes” , etc. But do you really care about all of that?


You can rebuild virtually any timeframe in MT4 using the period converter script and if you need an economic calendar – ForexFactory will do just fine.


These factors and any others of the like are negligible. You can either work around them or if traders really like a certain feature of MT5, MetaQuotes will sooner or later implement it in MT4 as well, like it happened with MetaTrader 4 for iPhone.


Realistically, there are only three core differences between the two platforms that actually matter. Esses são:


Additional Markets via MT5 The No Hedging Rule MQL4 vs MQL5.


Let’s go over them one-by-one:


Item #1: Additional Markets.


MetaQuotes had already dominated the Forex market with their revolutionary MT4 platform. So why MetaTrader 5?


Is it really an altruistic move to give traders even more functionality, more indicators, more timeframes, a better (see below) coding language? That doesn’t sound like the whole story, does it?


If there is an ulterior motive, what could it be?


The real reason (I should probably say main but I’m going to stick with real ) MetaQuotes developed MT5 is because they want access to markets which they cannot tap into with good’ol MT4.


New markets means more brokerages, more clients, more revenue. And they’re doing pretty well so far. Here’s a sample list of exchanges which you can access via MetaTrader 5 already today:


You see, MetaTrader 4 is great for the decentralized, open, and highly unregulated on a global scale FX market. However, it doesn’t check all the boxes as a platform for other markets.


It’s just not designed that way: to connect directly to exchanges, like those listed above, the platform has to integrate with gateways for those exchanges – that’s how it will get quotes and market news, and perform trade operations. Plus, there are heaps of other nuances.


Mas realmente? Is the revenue stream associated with the above markets substantial enough to justify a whole new platform?


While markets like Warsaw Stock Exchange and ASX (Australian Stock Exchange) are good wins, they are not the main goal for MetaQuotes. The big prize are the US Equity Markets, aka Stock Markets with there trillions of dollars market cap:


Here’s a quote from CEO of MetaQuotes, Renat Fatkhullin, which should give you a better view of their intentions for MetaTrader 5:


From the beginning we were developing the trading system [MetaTrader 5] without hedging. It is a prerequisite if you want to distribute a platform for equity markets.


We will talk about the no-hedging rule in the next section. But what’s interesting is that just a few months prior to the release of MT5, NFA applied the no-hedging rule to Forex Trading too, basically making MT4 unusable in the US.


Incredible luck for Renat! Por quê? Well, now even Forex traders won’t be able to use MetaTrader 4 anymore and will be forced to move to MetaTrader 5. Surely, if MetaQuotes can conquer the US markets then the whole world will follow suit.


Resultado? Global dominance, total control! All markets: Forex, Equities, Futures, Options, the list goes on – would move under the umbrella of MetaTrader 5. MetaQuotes doubles, triples, 10x it’s revenue over the course of a few years, maybe even has an IPO of its own.


Ingenious plan, isn’t it?


Except for one minor detail… Traders don’t like being told what they can and can’t do… Which nicely brings us to the next section:


Item #2: The ‘No Hedging’ Rule Explained.


NOTE: Read this first bit if you aren’t familiar with the No Hedging rule. Otherwise, feel free to skip to “what does the new rule mean for traders” below.


What is this No Hedging rule?


The NFA is an organization in the US that safeguards market integrity on the Futures, Forex, Swaps, etc. markets.


Forex Dealer Members may not carry offsetting positions in a customer account but must offset them on a first-in, first-out basis. At the customer’s request, an FDM may offset same-size transactions even if there are older transactions of a different size but must offset the transaction against the oldest transaction of that size.


This rule is also sometimes called the FIFO rule (first-in-first-out) and it was adopted in May 2009. Prior to that you could hedge your transactions when trading Forex in the US.


To quickly illustrate this – imagine that on three consecutive days (Mon-Wed) you conducted the following three transactions on EURUSD: Buy 1Lot, Buy 1Lot, Sell 3Lots. The table below shows how these transactions would be represented in MT4 and MT5:


You can see that in MetaTrader 4 the orders are kept independently, whereas in MetaTrader 5 the orders are aggregated together.


This is what is meant when they say that MT4 has hedging, and MT5 doesn’t have hedging.


What does the new rule mean for traders?


Personally, I don’t see why the NFA/CFTC would be so concerned about hedging. The whole world uses hedging and is fine with it, why deprive US citizens of this option in their FX trading?


What does hedging mean for me? Generally speaking, in manual trading: take it or leave it – nada demais. However, when it comes to Algorithmic Trading , the FIFO rule is a major concern. Allow me to explain why…


Imagine, that you have two Expert Advisors (Forex Robots) trading on your account on the same financial instrument, e. g. EURUSD. Completely independent by design, trading style, strategy, timeframe – basically, each system is unique in every possible way.


The only thing they have in common is that you have launched them both on the same currency pair. But the trick is that they don’t know about that.


At some point one of them opens a buy order. Then 10 minutes later the other one decides to open a sell order. BAM! The orders cancel each other out. Por quê? Because surprise-surprise No Hedging!


But that doesn’t help the EAs, it only confuses them. Most advanced robots monitor their orders: perform trailing of StopLosses, adjust TakeProfits, close the order when the time is right. But here there is no order to monitor!


How will your EA react? Answer: Reaction unknown. They could ignore it and continue with their work, or… They could go nuts and start franticly re-opening the “missing” orders.


This would cost you extra spread, commission, but most importantly – this would totally mess up your trading strategies. Very likely that you could lose a lot of funds on a single issue like this.


There are two ways out of this situation for Algo Traders: 1) think all of this through in the design of your trading strategy, or 2) avoid simultaneously launching EA’s that could potentially create a hedge.


The former overly complicates your strategy creation process, and actually makes some strategies simply impossible to implement. The latter is a restriction on your portfolio, and therefore limits the earning potential of your trading.


I know a lot of my readers are from the US. To you guys I wanted to say that from this perspective I totally understand why you don’t like the new FIFO rule. É uma merda!


I don’t see the FIFO rule providing ANY benefits to the trader whatsoever. What is it “safeguarding” against? It only limits your capacity to create independent strategies.


Seriously guys, if anybody know how the FIFO rule is “good” for the trader please post in the comments section below. I would be interested to hear your thoughts. Maybe I’m missing something…


How MetaQuotes Shot Themselves In The Foot.


Okay, so FIFO happened – can’t do anything about it. NFA is NFA and you have to play by the new rules. I can accept that.


The only thing I don’t understand is why would you hard-code NFA rules into a piece of software with a global user base?! Through this move MetaQuotes have virtually made MT5 a US-only product, alienating a massive portion of their user base.


The UK, Australia, Europe, and pretty much the rest of the world don’t care about the No Hedging rule. So why would traders in these countries even consider switching to MT5 if it imposes US regulations onto them, when they don’t have to obey these regulations?


Moreover, a lot of US investors have since moved their funds overseas to find ways to continue trading with hedging. This is difficult, because most brokers world-wide now won’t accept US Citizens as clients. However, I think there have to be ways, because people are doing it.


Even US brokers have special off-shore divisions to service non-US residents. Por quê? Because traders don’t want to be told what to do by the NFA.


No wonder MetaTrader 5 didn’t get any substantial uptake. As we know, demand will dictate which product takes off and which fails. In this sense, MetaTrader 5 failed: there are so many more brokers offering MT4 than those offering MT5.


This, my friends, is, hands down, one big mistake on the side of MetaQuotes. What were they thinking?


Item #3: MQL4 vs MQL5.


NOTE: If you are not interested in coding and algo trading, then you can skip most of this section. But don’t skip all of it – the conclusion is important.


What is Object-Oriented Programming (OOP)?


The whole hype around MQL5 is that it brings OOP into algorithmic trading. That is why a lot of traders / programmers were so excited about MT5 in the first place.


In simple terms, OOP allows you to break down you program into blocks. Each of these blocks is like a black box: something goes in and some result / or action is produced:


In the world of programming this is very powerful for multiple reasons. For instance, once you’ve coded one of these black boxes for one of your Expert Advisors you can then clone it and use it in the next system you develop too.


Also, OOP is great for collaboration. You can assign one developer to work on one set of black boxes, and another developer – on another. Then you can bring them together into one final program without even knowing what’s inside each of these blocks.


As long as you know what goes in and what comes out, you can build a final product out of them. That’s why I like to explain the concept using the term “Black Box”.


Wikipedia has a good article about OOP, if you would like more info on this topic.


Is OOP really that valuable in trading?


In my opinion – NÃO.


I’ve developed OOP software before – back in high school 🙂 Those were massive 10,000+ lines of code programs tackling complex mathematical programs and collaborative research projects for modelling the behaviour of robots in labyrinths.


That’s when you really benefit from OOP… On the other hand, in trading, when I have a 1000–2000 lines of code program, there is no need to over-complicate. I am more than satisfied with the simple MQL4 and prefer its procedural nature.


I could go on for a while more about why or why not to use OOP in trading, but I won’t. Because: Guess What?


Starting from build 600 OOP is available in MT4 too. This happened in February 2014; if you want more details, check out the news release.


Therefore, OOP is no longer relevant in the MQL4 vs MQL5 showdown. What is relevant, is backward compatibility, or to be precise – the lack of it.


No Backward Compatibility.


As you are probably aware, you cannot simply transfer your MQL4 code into MQL5 – it just won’t work.


MetaTrader 4 originally took Forex Trading by storm mostly thanks to its ability to run Algorithmic Trading systems, or EAs. A huge percentage of traders use EAs or custom indicators / scripts in their trading. Moving these from MQL4 to MQL5 would be a very costly and time consuming exercise for most.


Then why bother? If MT4 hasn’t been deprecated, it’s much easier to continue doing what you were doing the old way.


Some true advantages of MQL5.


To be fair to the developers of MT5, I would like to name two outstanding advantages that this platform has over MT4:


1) Multi-currency strategy tester; e.


2) MT5 is superior for testing and optimization. Hundreds times faster.


While the first would probably be of interest to about 10–15% of traders, the second is a great improvement. Faster optimizations means less time spent configuring your EAs, more time spent outside doing what you like.


But alas, the backward compatibility issue really ruins these great features. You will spend more time re-writing your code in MQL5 and debugging it than will be required to test out your strategies in the slower MT4 platform.


MQL4 vs MQL5 Conclusion.


As we figured out OOP is no longer a point of friction, since both MT4 and MT5 now have it.


There are some great advantages of MQL5 such as multi-currency strategy tester and MT5 is faster at testing and optimization. However, lack of backward compatibility between MQL4 and MQL5 kills all the benefits.


This is your cherry on top of the icing! Lack of backward compatibility is the second major reason why retail traders will not switch from MT4 to MT5.


Part B. Historical Evidence.


By now you probably see where this whole review is headed. In this section we will really put the nails into the coffin of MetaTrader 5 so you don’t have any doubts about its future.


Google Trends.


Using (Google Trends)[google/trends/] we can visualise how frequently the terms MetaTrader 4 and MetaTrader 5 have been searched for over the past 10 years:


We can see that hype started building up around MT5 (red) after the its imminent arrival was announced in early 2009. However, the curve flattens out right after the beta version was released in October 2009 and the trend has not picked up since.


Searches for MetaTrader 4, on the other hand, had been growing since inception all the way up to early 2010. Then a bit off a flat period in 2010–2012, and again steady growth picked up in 2012 and has been continuing since.


This is a great illustration of what we talked about earlier – demand for the two platforms. It is clear, that the number of traders searching for MetaTrader 4 is constantly growing, whereas interest in MetaTrader 5 has been stagnant for the past 5+ years.


The chart for MQL4 and MQL5 is surprisingly different:


Though MQL4 is still searched for about twice as frequently as MQL5, the latter is catching up. The MQL4 programming language flattened out at the start of 2009 (connected to MT5 announcement?). At the same time, interest in MQL5 grew steadily 2009–2014 and really hit it off in mid–2014.


However, let’s not forget that these charts don’t illustrate interest in the specific programming language, but rather – interest in the search term. Over the past couple of years MetaQuotes have been actively developing the MQL5munity (which is for both MQL4 and MQl5 programmer). This could be the reason for the rapid increase in “MQL5” searches.


History of builds.


Let’s do some data mining!


If we go to the news releases page for MetaTrader 4 (here) and do some simple web-scraping, we can retrieve all of the dates of the releases/updates/patches that ever occurred for MT4 since 2008 until mid–2015.


Putting all of these updates together creates the chart below, which basically illustrates the number of updates that happened in each month (the vertical axis on the left ranges from 1–4 updates in any given month).


Note that this chart doesn’t take into account significance of the updates, it’s a simple count of updates:


Here you see 4 distinct areas.


Area A. Prior to the release of MetaTrader 5 Area B. The 1.5 years(!) following MT5 Beta release Area C. The following 1.5 years Area D. The following 3 years.


We see that before the release of MT5 (Area A) there was about 1 update to MT4 per month on average. Which is reasonable.


Area B – As soon as MT5 Beta hit the markets updates to MT4 stopped. There were three error fixes along the way there, but that doesn’t really count.


O que isso nos diz? One might say that MetaQuotes were so pre-occupied with MT5 that they didn’t have time for MT4. I say that MetaQuotes had no intention of maintaining MT4 anymore. They were actually waiting out for MT5 to takeover to then completely deprecate MetaTrader 4 just like they did with MetaTrader 3 back in 2005.


However, as history tells us, that didn’t happen. For the reasons discussed above, traders didn’t want to move to MetaTrader 5. And after waiting for 1.5 years(!) MetaQuotes finally caved in.


In early 2011 MT4 updates slowly started seeing light again. These weren’t major updates, still just fixes, but at least something was happening.


I imagine that MetaQuotes finally came to terms with the defeat of MT5 only in early 2012. Why? Because that’s when MT4 finally started catching up to MetaTrader 5: in February 2012 MT4 for iPhone came out (1 year after MT5 for iPhone), and two months later, in April 2012 MT4 for Android arrived (only 6 months later than MT5 for Android).


Then came period D when substantial updates to MT4 started popping up on a regular basis. Entre eles, # 8211; the legendary Build 600 , which introduced the new MQL4 programming language, added the MetaTrader 4 markets tab, and introduced the User Account Control (UAC) system, which everybody now hates, but which is necessary for an application to have if it’s going to be compatible with Windows 8 and onward.


You can read more about build 600 in this news release.


What does the story of build 600 tell us?


Build 600, my friends, was the final nail in MT5’s coffin. It would have cost MetaQuotes an incredible investment of funds and effort to completely overhaul MetaTrader 4 and come up with build 600. As a software development company you just would not do a major improvement like that for a product you are planning to abandon in the foreseeable future.


I think, that MetaQuotes hoped they wouldn’t have to do this, they hoped that MetaTrader 5 would take over and they could abandon MT4. However, four years after the release of the new platform traders still favoured the old one, and the developers had no choice but to invest into a new MetaTrader 4.


Build 600, is where we won! MetaTrader 4 is staying.


Conclusão.


Once upon a time I worked quite closely with a director of a now very large brokerage company. Although we don’t work together anymore, we’re still in touch and a couple of years back he asked my opinion on MetaTrader 5.


The advice I gave him was akin to the information you found in this review. Basically, I was of the opinion that he shouldn’t force MT5 onto his customers. Traders admire MT4 too much and always will.


I think this was back in 2011–2012. It’s been 3–4 years since that company still doesn’t offer MetaTrader 5 and are doing just fine. Bom para eles.


MetaTrader 5 was developed with US Equity & other markets in mind MetaTrader 5 won’t fly with retail Forex traders in the foreseeable future for two main reasons: Hardcoded NFA No Hedging rule No backward compatibility with the old MQL4 MetaQuotes are investing substantial efforts into further development of MetaTrader 4, which indicates that our favourite MT4 will be around for a while.


As an experienced trader, I’m staying with MT4 and not switching to MT5. If you are just starting out in Forex, go with MetaTrader 4.


Same thinking goes for beginners in programming – go with MT4 and MQL4. You will have so much fun and your skills will be applicable across so many more brokerages.


The conclusion for experienced programmers is a bit different: If you really think you will need the multi-currency strategy tester as well as the very fast testing and optimization, then maybe give MT5 a shot. However, it will only be worth it if you can commit to building your systems from scratch.


At the same time, MT4 should already have most of the things an experienced coder will ever need, including OOP. If that’s not enough then instead of MT5 you can have a look into using DLL or even other platforms with good API like jForex from DukasCopy.


Thanks for powering through this 3,700+ words monster-of-a-blog.


I hope you enjoyed the journey we went on together.


Question of the day: What do YOU Love most about MetaTrader 4?


Leave your comments below…


COMECE COM A ACADEMIA DE NEGOCIAÇÃO DE FOREX.


Eu sou um comerciante de Forex, um cientista de dados, um empreendedor, um treinador on-line. Essas são minhas principais ocupações. Eu estive em Forex Trading desde 2007 e, como dizem, eu vi o bom, o ruim e o feio. Eu sobrevivi ao GFC e aprendi muito ao longo do caminho. Hoje quero compartilhar todos os meus conhecimentos e insights com você.


Thank you Kirill for a clear explanation of the issue. I was wondering why mt5 cannot get a traction for so long. Agora eu sei.


Thanks Nik! Glad you picked up some new insights.


Loved the article Kirill! Thank you for making a difficult subject easy to understand. You articulated what I was thinking and feeling, but did not have the words.


Thank you my friend!


Wow Kirill! & # 8211; Now I know, once more, that I am SO lucky that I found you, your Udemy Courses and – last but not least – your blog here. & # 8211; This article surely has saved much precious time and painstakingly efforts (and some headache) for me thinking about what’s the point and switching to MT5 – and now you finally assured me that I really do not have to (I am a german citizen + a beginner in coding EA’s anyway)! & # 8211; Thank you SO much again for sharing your knowledge + expertise! & # 8211; 🙂 & # 8211; Thumbs up – BIG TIME!


Thanks Rene! If you’re in Europe, then there’s definitely not much point in switching to MetaTrader 5. You have everything you need in MT4.


By the way, glad you are still in the game buddy. We kind of lost contact for a while there. See if you can make it to the live webinar that’s coming – we can catch-up there:


I just signed up to the webinar – thanx for the hint! & # 8211; 🙂


btw: It’s now possible to run x86 apps on a ARM-based mini-pc like the RaspberryPi2 – check this out: eltechs/product/exagear-desktop/exagear-desktop-features-and-prices/ – Since the RasPi2 just needs a few watts of power to run, this is imho the cheapest way to set up a little VPS – não é isso? & # 8211; For my service I do pay round about 15 USD a month – the server farm is based in Amsterdam (NL) and my Ping to my Broker’s servers is less than 10 milliseconds. & # 8211; I guess you won’t get this with a home-based VPS running an a RasPi2 – but if you’re not into arbitrage or scalping with your strategy, I guess it’s worth taking a closer look to this solution. & # 8211; Would be nice to get your opinion on that! & # 8211; Fale em breve! & # 8211; 🙂 & # 8211; Felicidades!


I just signed up to the webinar – thanx for the hint! & # 8211; 🙂


btw: It’s now possible to run x86 apps on a ARM-based mini-pc like the RaspberryPi2 – check this out: eltechs/product/exa…


& # 8211; Since the RasPi2 just needs a few watts of power to run, this is imho.


the cheapest way to set up a little VPS – não é isso? & # 8211; For my service I.


do pay round about 15 USD a month – the server farm is based in.


Amsterdam (NL) and my Ping to my Broker’s servers (based in London (UK)) is less than 10 milliseconds. & # 8211; I guess you won’t get this with a home-based VPS running.


an a RasPi2 – but if you’re not into arbitrage or scalping with your.


strategy, I guess it’s worth taking a closer look to this solution. & # 8211;


Would be nice to get your opinion on that! & # 8211; Fale em breve! & # 8211; 🙂 & # 8211; Felicidades!


Sounds intriguing! You should put this idea on Kickstarter and create a competitive solution for traders. You can even ship it to them 🙂


Thanx for your comment! & # 8211; Well, I don’t see what would be the benefit I could give to people – everyone who’s interested in RasPi mini-PC’s does already know that there is this solution for running x86 apps on a RasPi. I do not own the rights to sell the software that makes it possible to do so – because I did not create it. & # 8211; As well, I did not build the hardware. & # 8211; I guess it would simply not be enough to combine those two and then create a Kickstarter project. & # 8211; Also, I would not be able to put it all together all alone – people would wait a long time (imho way too long) until they would finally get what they paid for (if anyone would pay me to do so, which I do not believe in, as it’s easy to buy a RasPi, buy the software and install it, and then run a MetaTrader on the RasPi). & # 8211; Maybe this would be worth an article posted in your blog – but I am unsure about a Kickstarter project.


Please elaborate on what you mean with “create a competitive solution for traders”. & # 8211; What’s on your mind? What would be the benefit for people when they invest in a Kickstarter project instead of simply doing it themselves? & # 8211; Would you invest in such a Kickstarter project, knowing that you could do this yourself?


I could draw a boardgame myself, yet I choose to invest into one on kickstarter. People like pre-packaged solutions ready to work out-of-the-box. People pay for convenience. Can you make your product more convenient for the consumer than setting the same thing up themselves?


Competitive – your product has to be better than the existing solutions and cheaper at the same time. Simples assim.


RE: “competitive” & # 8211; I can’t make it cheaper, as I’d pay the same price as everyone else. & # 8211; PLUS: If I’d make it an out of the box product, I’d have to put work into it (install the software, validate that it’s working correctly, pack it, send it to customers) – SO: I’d throw my own labour away, if I’d do it for other people with no extra-charging. & # 8211; And I’d throw my money away if I’d buy it for the same price as everyone else could do, but then sell it even cheaper. & # 8211; Não funciona. Desculpa.


The only convenience there would be is the pre-installation of the software. & # 8211; But I’d still do it for nothing, as I’d earn no money from that, if I’d follow the process I outlined above. & # 8211; Again: imho it does not work. Sorry again.


Anyway: Thanx for trying to motivate me. I really appreciate that, Kirill! & # 8211; 😉


Sem problemas! I’m throwing ideas around – ultimately, it’s all in your hands 🙂


i have no thing to say.


really i m in forex trading more than 5 years.


your article is amazing more than excellent . i follow your articles and i m a big fan for you …..


your friend from cairo.


Thanks Ahmed! Will make sure to say hi next time I’m in Egypt 🙂


i think master/ Kirill it s not the first time.


Hello and Welcome any time to your Second Country.


thank you ahmed.


we have to thank him, MISS.


this topic i was searching about from a while actually.


tenha um bom dia.


Fantastic post, Kirill. Thanks so much for sharing your knowledge on this.


Hi Rico. Glad you found this information insightful!


OUTSTANDING… THIS POST WILL BE VERY HARD TO SUPERSEDE… JUST LIKE META TRADER 4.


Thank you friend!


Ótimo post! Definitely the best explanation I have found regarding differences of MQL4 vs 5. Thank you for sharing this.


Awesome, thanks for the great comment Renato!


Superb comparison — the best I have seen. You even gave me a laugh when you said you won’t be comparing button sizes 🙂


Thanks Tom, glad you enjoyed it!


Perfect article. Your article brought me back for 2 years back when I used MT4. MT4 was my favorite. I actually left it and now using VertexFX. No more paying hundreds monthly for features I found built in within VertexFX.


Is it me or is it everyone suffering from MQ support?


I instantly lost interest in VertexFX after looking at their pricing:


@disqus_OhSIPyg3xb:disqus I used that platform a couple of months back but the front end and it is great. I’m not sure about the back end for brokers.


@genericid:disqus just curious, are these prices to buy the whole setup (back end and front end)? What’s up with the price?


Thanx Kirill. Brilliant post. I’m new to trading & have just downloaded MT4 & MT5 to my Android device to try & figure out which one to use, now I know which way to go thanx to you. The Android app seem to differ alot from the desktop version but alas it’s the only one i have access to so can you perhaps post a downloadable tutorial on how to use the Android app. Also can you advise of a good broker. I’m in RSA.


Thanx Kirill. Brilliant post. I’m new to trading & have just downloaded MT4 & MT5 to my Android device to try & figure out which one to use, now I know which way to go thanx to you. The Android app seem to differ alot from the desktop version but alas it’s the only one i have access to so can you perhaps post a downloadable tutorial on how to use the Android app. Also can you advise of a good broker. I’m in RSA.


Thanks for the great feedback! I will consider your idea about the Android tutorial, however right now I’m super busy and cannot give a timeframe on this.


Check out broker review here: forexboat/brokers.


I am US trader (and software developer) trying to start with algorithmic trading. Kirill, I have bought many of your courses on Udemy and they are fantastic. I am currently with Oanda but they only offer MT4. Reading this blog post it seems like MT4 is not a good choice for US traders. Should I be looking to switch to another broker that offers MT5? Any advice on the best way for me to get the most out of algorithmic trading is greatly appreciated.


Hi, what did you end up doing?


Out of any subject on the internet, this is the ultimate explanation. No loose ends or new questions bought up needed… I’ve been using forex now for only three years. I think metatrader will slowly dwindle over time. New players in the market such as Ctrader are so muched liked by retail investors not using EA’s.


Ei & # 8211; great post and comparison! Contudo & # 8211; just one thing I noticed some days ago and maybe you might.


have experienced the same while comparing the mt4 vs. mt5. I just compared the charts on mt4 and mt5 and found substantial differences in information on the charts/candles. I explain you in more details: I opened both mt4 and mt5 (both running a Meta-Quotes Demo-Account) on the same currency-pair (i. e.. EURUSD) and the same time frame (i. e. 5 minutes) and … they where showing substantiall differences – por exemplo. while there was a bullish movement on mt4 there was a bearish one on mt5 … of course with some time lag mt4 was adjusting after a while … but this explained to me why sometimes I was losing some trades! Did you have the same issues or how would you explain this difference in information time lag on mt4 and mt5? Would appreciate some comments on that from other readers – Thank you for sharing your thoughts and ideas. Btw: I somehow found out that mt5 is much more accurate or real-time re. trading information – so I am not using mt4 any longer although there are much better indicators available for mt4. Cheers and keep on writing that interesting posts!


Thank you for the great comments!


In regards to your observations – this may be due to where the quotes are coming from. If you are using the MetaQuotes default quotes feed, then I would check with them. If you are hooked up to a broker on both MT4 and MT5 (the same one), then I would ask them the question why the feeds are different.


Espero que isto ajude,


Very informative post! So if I am in the US, I shouldn’t be using MT4 at all correct?


Hi @keremenko:disqus and thanks for making clarity regarding MT4 & MT5!


I just started trading and your article is now 2 years old so I was wondering if there’s something new to be added or if MT4 is still the way to go.


Has anything changed with NFA? Is the “no hedging” policy still enforced?


Also, what about the brokers moving overseas trend? Did it take up completely so that most brokers now allow hedge trading to US traders too?


Thanks a lot for your help!


Keep up your great work and good luck with your algos 😉


EDIT: as soon as I finished reading your article and wrote this comment, I went out researching and guess what I found? There’s a new MetaTrader 5 build that allows hedge trading, check this out: metaquotes/en/company/news/4678 I’d really love to hear your opinions on this and on how things have generally changed! Again, thanks!


kirill — thanks great write up.


Categorias.


Algorithmic Trading (1) Curso: Forex Trading para Iniciantes (6) Curso: MQL4 para Iniciantes Completos (48) Curso: Estrategista para Iniciantes (11) FOREX (89) Estrategia Forex (89) Negociacao Forex para Principiantes (74) Forex VPS (1) Análise Fundamental (3) Entrevistas (1) Diversos (4) MQL4 (2) Análise Técnica (12)


Postagem recente.


Tags populares.


COMECE COM A ACADEMIA DE NEGOCIAÇÃO DE FOREX.


Forexboat Pty Ltd (ABN: 29 609 855 414) um Representante Autorizado Corporativo (AR No. 001238951) da HLK Group Pty Ltd (ACN: 161 284 500) que detém uma Licença Australiana de Serviços Financeiros (AFSL no. 435746). Qualquer informação ou conselho contido neste site é apenas de natureza geral e não constitui aconselhamento pessoal ou de investimento. Não nos responsabilizamos por qualquer perda ou dano, incluindo, sem limitação, qualquer perda de lucro, que possa surgir direta ou indiretamente do uso ou confiança em tais informações. Você deve procurar aconselhamento financeiro independente antes de adquirir um produto financeiro. Todas as transacções de valores mobiliários e produtos financeiros ou instrumentos envolvem riscos. Lembre-se de que os resultados de desempenho anteriores não são necessariamente indicativos de resultados futuros.


As informações contidas neste site podem ser acessadas em todo o mundo, porém não são dirigidas a residentes em qualquer país ou jurisdição onde tal distribuição ou uso seja contrário à lei ou regulamentação local. A Forexboat Pty Ltd não está registada em nenhum regulador dos EUA, incluindo a National Futures Association (& NFA & # 8221;) e a Commodity Futures Trading Commission (& # 8220; CFTC & # 8221;) portanto os produtos e serviços oferecidos neste site não são destinado a residentes dos Estados Unidos.

Comments

Popular Posts