Nos capítulos 1 e 2, aprendemos os fundamentos da negociação quantitativa e os usos das ferramentas FMZ Quant. Neste capítulo, implementaremos as estratégias reais de negociação. Se um trabalhador quiser fazer algo de bom, ele deve primeiro afiar suas ferramentas. Para implementar uma estratégia de negociação, você deve primeiro dominar uma linguagem de programação. Esta seção introduz primeiro as principais linguagens de programação na negociação quantitativa, bem como as características de cada linguagem de programação em si.
Antes de aprender uma linguagem de programação, você deve primeiro entender o conceito de linguagem de programação. Uma linguagem de programação é uma linguagem que tanto humanos quanto computadores podem entender. É um código de comunicação padronizado. O propósito de uma linguagem de programação é usar uma linguagem humana para controlar um computador e dizer ao computador o que vamos fazer.
Assim como os pais nos ensinaram a falar e nos ensinaram a entender o que as outras pessoas estão dizendo. Após um longo período de edificação e auto-aprendizagem, aprendemos a falar sem saber, e podemos entender o significado de outras crianças falando.
Chinês: Olá mundo
Português: Hello World
Francês: Bonjour tout le monde
Se você usar a linguagem de programação para exibir
Língua C: puts (
Língua Java: System.out.println ((
Língua Python: impressão (
Você pode ver que as linguagens de computador têm suas próprias regras específicas, e há muitas linguagens, e essas regras de linguagem são a classificação de linguagens de programação que precisamos explicar para você hoje. Em cada categoria, só precisamos lembrar as regras mais básicas. Podemos usar essas linguagens de programação para se comunicar com o computador e deixar o computador executar a estratégia correspondente de acordo com nossas instruções.
Para facilitar a referência e comparação, escolha a linguagem de programação de negociação quantitativa que lhe convém.
Nós os classificamos por capacidade funcional, velocidade, extensão e dificuldade de aprendizagem. Uma pontuação de 1 a 5, por exemplo, uma pontuação de 5 na faixa funcional significa poderosa, e 1 ponto significa menos funcionalidade. (Como mostrado acima) A programação visual e EasyLanguage são fáceis de aprender e muito novas; Python tem poderosas capacidades de extensão e é adequado para o desenvolvimento de estratégias de negociação mais complexas; A programação C ++ é a mais rápida e mais adequada para traders de alta frequência.
Mas para cada linguagem de programação, a avaliação é principalmente para a aplicação no campo da negociação quantitativa. e com o componente subjetivo do indivíduo.
A programação visual existe há muito tempo, este tipo de "o que você vê é o que você obtém" ideia de programação, equipada com uma variedade de módulos de controle, apenas por arrastar e soltar, você pode construir lógica de código, completar o projeto de estratégia de negociação, o processo é como blocos de construção.
Como mostrado acima, o mesmo procedimento é apenas algumas linhas de código na programação visual da plataforma de negociação FMZ Quant.
Como a estratégia de implementação subjacente desta programação visual é convertida para C++, ela tem pouco efeito na velocidade de execução do programa.
A chamada EasyLanguage refere-se à linguagem de programação exclusiva de alguns softwares de negociação quantitativa comercializados. Embora essas linguagens também tenham algumas características orientadas a objetos, elas são principalmente scriptadas no aplicativo. Em termos gramaticais, também é muito próximo de nossa linguagem natural. Para iniciantes em negociação quantitativa, usar a EasyLanguage como ponto de partida é uma boa escolha.
Este tipo de linguagem de scripting não tem problema em backtesting de estratégia e mercado real em seu software específico, mas em termos de expansão, é muitas vezes limitado. Por exemplo, desenvolvedores de estratégia não podem chamar APIs externas.
Como mostrado na figura abaixo, no Stackoverflow, o número de acessos de linguagem de programação mainstream não mudou muito nos últimos anos, e apenas o Python está em enorme aumento. Python pode ser usado para desenvolvimento web, aprendizado de máquina, deep learning, análise de dados, etc. Tornou-se a linguagem mais versátil por causa de sua flexibilidade e abertura. O mesmo é verdade no campo do investimento quantitativo.
As listas e dicionários básicos de estrutura de dados do Python são muito poderosos e podem atender a quase todas as necessidades de análise de dados.
Para a engenharia financeira, a biblioteca mais direcionada é Pandas, com duas estruturas de dados, Series e DataFrame, que são ideais para processar séries temporais.
Em termos de velocidade, o Python está no meio do jogo, mais lento que o C++ e mais rápido que o EasyLanguage, principalmente porque o Python é uma linguagem dinâmica que funciona na velocidade normal como uma linguagem Python pura.
Como uma linguagem de cola, o Python é o número um em termos de escalabilidade. Além de ser capaz de interagir com outras linguagens extensivamente, o design da API de extensão é muito fácil de usar. Em termos de dificuldade de aprendizagem, o Python tem uma sintaxe simples, alta legibilidade de código e fácil entrada.
Depois há o Matlab e a linguagem R. Essas duas linguagens são principalmente orientadas para análise de dados. Os criadores de linguagem fizeram muito design para operações científicas em gramática, que é caracterizada por suporte natural para operações quantitativas de negociação. No entanto, a gama de aplicações é limitada e é geralmente usada para análise de dados e backtesting de estratégia. Para o desenvolvimento de algoritmos de sistema e estratégia de negociação, sua facilidade de uso e estabilidade são menores.
Além disso, sua velocidade e escalabilidade são relativamente pobres, porque o Matlab e a linguagem R funcionam em uma máquina virtual de linguagem única. Em termos de desempenho, suas máquinas virtuais são muito piores do que o Java e o C #. Mas porque sua gramática está mais próxima da fórmula de expressão matemática, é relativamente fácil de aprender.
C++ é uma linguagem de programação de propósito geral que suporta vários padrões de programação, como programação procedimental, abstração de dados, programação orientada a objetos, programação genérica e padrões de design.
Atualmente, o C ++ ainda é a linguagem de programação preferida para negociação de alta capacidade e alta frequência. A razão é simples. Como os recursos da linguagem C ++ são mais fáceis de acessar a camada subjacente do computador, é a ferramenta mais eficaz para o desenvolvimento de sistemas de backtesting e execução de alto desempenho que processam grandes quantidades de dados.
Java/C# são linguagens estáticas que são executadas em máquinas virtuais. Em comparação com C++, não há matriz fora dos limites, não há coredump, exceções lançadas podem localizar com precisão o código de erro, trazer mecanismo automático de coleta de lixo, não precisa se preocupar com vazamento de memória e assim por diante.
Mas em termos de funcionalidade, é impossível otimizar o sistema de negociação subjacente como o C ++. Em termos de desempenho de expansão, é mais fraco do que o C ++, porque sua extensão precisa passar a ponte C, e as duas linguagens correm na máquina virtual, então ao expandir o módulo de funções, você precisa atravessar mais uma parede de camada.
No entanto, no final, a linguagem de programação quantitativa não é importante, o importante é a ideia. A linguagem FMZ Quant M e a linguagem de programação visual não são completamente um problema como um trampolim para a entrada da negociação quantitativa. Após o básico, a melhoria é explorar continuamente diferentes condições de mercado e tentar usar mais linguagem subjacente, como C ++.
Quais são as vantagens da linguagem Python como uma ferramenta de negociação quantitativa?
Tentar escrever algumas APIs comumente usadas pela linguagem M?
Anúncio da secção seguinte
Eu acredito que com a introdução acima para a linguagem de programação, você deve saber como escolhê-lo, em seguida, nos próximos capítulos, vamos desenvolver uma estratégia quantitativa de negociação com base na classificação de linguagens de programação.