O que você ganha ao fazer este curso? Em primeiro lugar, este curso é baseado em linguagens de programação JavaScript e Python. A linguagem é apenas uma tecnologia. Finalmente, devemos aplicar essa tecnologia em uma indústria. O comércio quantitativo é uma indústria emergente, que atualmente está em um estágio de rápido desenvolvimento e tem uma grande demanda por talentos.
Com o aprendizado sistemático deste curso, você pode ter uma compreensão mais profunda do campo da negociação quantitativa. Se você é um estudante que se prepara para entrar no campo da negociação quantitativa, também o ajudará. Se você é um entusiasta de investimento em ações ou futuros, então a negociação quantitativa pode ajudar sua negociação subjetiva. Desenvolvendo estratégias de negociação, você pode obter lucros no mercado financeiro e também ampliar os canais e plataformas para seu investimento e gerenciamento financeiro.
Antes disso, deixe-me falar sobre a minha experiência pessoal de negociação. Eu não sou um especialista em finanças, eu estudei estatística. No início, eu comecei a negociar ações subjetivamente em meus dias de escola. Mais tarde, eu me tornei um praticante de negociação quantitativa de fundos de private equity domésticos, principalmente envolvido em pesquisa de estratégia e desenvolvimento de estratégia.
Eu tenho negociado neste círculo por mais de dez anos, e desenvolvi vários tipos de estratégias. Minha filosofia de investimento é: o controle de risco está acima de tudo e se concentra em retornos absolutos. O tópico do nosso tópico é: da negociação quantitativa à gestão de ativos - desenvolvimento de estratégia CTA para retornos absolutos.
Alguém pode perguntar o que é o CTA? O que é exatamente o CTA? O CTA é chamado de consultores de negociação de commodities em países estrangeiros e gerente de investimentos na China. O CTA tradicional é coletar os fundos da maioria dos investidores, em seguida, confiá-los a instituições de investimento profissionais e, finalmente, investir em futuros de índices de ações, futuros de commodities e futuros de títulos do tesouro através de consultores de negociação (nomeadamente CTA).
Mas, na verdade, com o contínuo desenvolvimento e expansão do mercado global de futuros, o conceito de CTA também está se expandindo, e seu escopo está muito além dos futuros tradicionais. Ele pode investir não apenas no mercado de futuros, mas também no mercado de taxas de juros, no mercado de ações, no mercado de câmbio e no mercado de opções.
Na década de 1980, a tecnologia de negociação eletrônica não estava madura. Naquela época, a maioria dos comerciantes julgava a tendência futura dos futuros de commodities desenhando indicadores técnicos manualmente, como índice William, KDJ, RSI, MACD, CCI, etc. Mais tarde, os comerciantes criaram um fundo especial CTA para ajudar os clientes a gerenciar ativos.
Mudanças no tamanho do fundo de gestão da CTA
Em bilhões de dólares
Com a ascensão da negociação quantitativa, a escala dos fundos globais CTA aumentou de US $ 130,6 bilhões em 2005 para mais de US $ 300 bilhões em 2015.
O índice Barclay CTA é um benchmark representativo da indústria para os consultores globais de commodity trading. Desde o final de 1979 até o final de 2016, o retorno acumulado do índice Barclay CTA Fund foi de até 28,95 vezes, o retorno anualizado foi de 9,59%, a taxa Sharp foi de 0,37, e a retirada máxima foi de 15,66%.
Como mostrado no círculo vermelho abaixo, durante o mercado de ações global de 2000 a 2002 e a crise global de subprime em 2008, o índice do fundo Barclay CTA não só não caiu, mas também alcançou retornos positivos. Quando o mercado de ações e o mercado de títulos estavam em crise, o CTA poderia fornecer retornos fortes. Além disso, podemos ver que o nível de lucro do índice CTA de commodities Barclay desde 1980 foi mais forte do que o S&P 500, e a retirada também é muito menor do que o S&P 500.
O desenvolvimento da CTA na China só ocorreu nos últimos dez anos, mas o ímpeto é muito forte. Isso se deve principalmente ao ambiente de negociação relativamente aberto de futuros de commodities domésticos, ao baixo limiar de fundos de negociação, ao uso do sistema de margem para negociar posições longas e curtas, aos baixos custos de transação, à estrutura técnica mais avançada da bolsa em comparação com ações e ao sistema de negociação mais fácil.
Desde 2010, os fundos CTA existem principalmente na forma de fundos privados. Com a abertura gradual do escopo de investimento da conta especial do fundo nas políticas domésticas, os fundos CTA começaram a existir na forma de conta especial do fundo. Seu modo de operação mais transparente e aberto também se tornou uma ferramenta necessária para mais investidores alocarem ativos.
As estratégias de CTA também são mais adequadas para comerciantes individuais do que outras estratégias de negociação em termos de facilidade de entrada, limite de capital, execução de estratégias de negociação e conectividade de API. Os contratos futuros domésticos são muito pequenos. Por exemplo, milhares de yuans podem ser negociados com milhares de yuans de milho ou soja, e quase não há limite de capital. Além disso, porque algumas estratégias de CTA vêm da análise técnica tradicional, é relativamente fácil em comparação com outras estratégias.
O processo de design da estratégia CTA também é relativamente simples. Primeiro, os dados históricos são processados inicialmente e, em seguida, inseridos no modelo quantitativo. O modelo quantitativo inclui a estratégia de negociação formada por modelagem matemática, design de programação e outras ferramentas, e o sinal de negociação é gerado por cálculo e análise desses dados.
Do ponto de vista da estratégia de negociação, a estratégia CTA também é diversificada: pode ser uma estratégia de tendência ou uma estratégia de arbitragem; pode ser uma estratégia de médio e longo prazo de longo período, ou uma estratégia de curto prazo intradiário; A lógica da estratégia pode ser baseada em análise técnica ou análise fundamental; Pode ser uma transação subjetiva ou uma transação de sistema.
A estratégia CTA tem diferentes métodos de classificação. De acordo com o método de transação, pode ser dividida em transação subjetiva e transação de sistema. O desenvolvimento da estratégia CTA estrangeira é relativamente avançado, e a estratégia CTA de transação de sistema está próxima de 100%. De acordo com o método de análise, pode ser dividida em análise básica e análise técnica. De acordo com a fonte de renda, pode ser dividida em negociação de tendência e negociação oscilante.
Em geral, a estratégia CTA representa cerca de 70% do total do mercado de negociação, a estratégia de tendência representa cerca de 25% e a estratégia de contra-tendência ou inversão de tendência representa cerca de 5%.
Atualmente, existem duas principais estratégias de negociação de alta frequência no mercado: uma é a estratégia de criação de mercado de alta frequência, a outra é a estratégia de arbitragem de alta frequência. A estratégia de criação de mercado é fornecer liquidez no mercado de negociação. Ou seja, no mercado de negociação com um market maker, se alguém quiser negociar, o market maker deve garantir que sua ordem possa ser negociada. Se houver liquidez insuficiente no mercado e a ordem não puder ser negociada, o market maker deve comprar ou vender a ordem da contraparte.
A arbitragem de alta frequência refere-se à negociação de duas ações altamente correlacionadas ou ETF e carteira ETF. De acordo com o método de cálculo do ETF, o preço esperado de um ETF pode ser calculado da mesma forma. O preço do índice ETF pode subtrair o preço esperado do ETF para obter uma diferença de preço. Normalmente, a diferença de preço será executada em um canal de preço. Se a diferença de preço atravessar os canais superior e inferior, você pode negociar a diferença de preço, esperar o retorno da diferença de preço e ganhar renda com isso.
Em sentido literal, enquanto não houver posição durante a noite, pode ser chamada de estratégia de negociação intra-diária. Devido ao curto período de detenção da negociação intradiária, geralmente é impossível obter lucros imediatamente após entrar no mercado e depois sair do mercado rapidamente. Portanto, este modo de negociação carrega baixo risco de mercado. No entanto, porque o mercado muda rapidamente em um curto período de tempo, a estratégia intra-diária geralmente tem requisitos mais altos para os traders.
Em teoria, quanto maior o período de detenção, maior a capacidade estratégica e menor a relação risco-retorno. Especialmente em transações institucionais, devido à capacidade limitada de estratégias de curto prazo, grandes fundos não podem entrar e sair do mercado em um curto período de tempo, estratégias mais de longo prazo serão alocadas. Geralmente, o período de posição é de vários dias e meses, ou até mais.
Em geral, a estratégia CTA é estudada com dados de minutos, horas e diários, que incluem: preço de abertura, preço mais alto, preço mais baixo, preço de fechamento, volume de negociação, etc. Apenas algumas estratégias CTA usarão dados Tick, como preço de compra, preço de venda, volume de compra, volume de venda e outros dados detalhados em dados L2.
Quanto à ideia básica da estratégia CTA, a primeira coisa que pensamos é baseada em indicadores técnicos tradicionais, porque existem muitos materiais de referência pública nesta área, e a lógica é geralmente simples, a maioria dos quais baseia-se em princípios estatísticos.
Existem também alguns modelos clássicos de negociação no mercado, que também podem ser utilizados como referência e melhorados, incluindo: combinação de médias móveis múltiplas, DualThrust, R-Breaker, método de negociação Turtle, método de negociação grid, etc.
Todos esses são estratégias de negociação baseadas em análise técnica tradicional. O processo é extrair fatores ou condições de negociação com vantagens de probabilidade de acordo com dados históricos e conceitos de negociação corretos, e assumir que o mercado ainda terá tais leis no futuro. Finalmente, a estratégia de negociação é realizada por código e negociação totalmente automática.
A maior vantagem da estratégia CTA é que não importa se o mercado atual está subindo ou caindo, ele pode obter retornos absolutos, especialmente quando o mercado está mudando rapidamente, ou a tendência do mercado é obviamente suave, a vantagem da estratégia é óbvia, em suma, se há uma tendência, há um ganho.
A estratégia de futuros CTA é rentável principalmente devido aos seguintes pontos:
Além disso, a característica de negociação do rastreamento de tendências é perder uma pequena quantidade de dinheiro quando não há mercado e fazer uma grande fortuna quando o mercado vem. No entanto, as pessoas que fizeram negociação sabem que o mercado é volátil a maior parte do tempo, e apenas em um pequeno período de tempo é o mercado de tendências. Portanto, a estratégia de rastreamento de tendências tem uma baixa taxa de ganho na negociação, mas o lucro e perda geral de cada transação é relativamente grande.
Como a estratégia de rastreamento de tendências é instável em termos de renda, muitas instituições de investimento usarão várias variedades e estratégias para construir um portfólio, que também será configurado com uma certa quantidade de estratégias de reversão.
Correlação entre o CTA e os activos tradicionais
Em teoria, várias estratégias com estilos diferentes ou correlação relativamente baixa, às vezes, o mesmo e às vezes diferentes sinais de negociação ao mesmo tempo, quando confrontados com várias mudanças nos preços do mercado.
A partir do ponto de vista acima, pode-se concluir que é melhor desenvolver várias sub-estratégias moderadas do que desenvolver uma estratégia principal. Como controlar essas estratégias? Aqui podemos aprender com o algoritmo de floresta aleatória no aprendizado de máquina. A floresta aleatória não é um algoritmo independente, é uma estrutura de decisão contendo várias árvores de decisão. É equivalente à estratégia principal acima da sub-estratégia da árvore de decisão. O aglomerado de subestratégias é organizado e controlado através da estratégia principal.
Em seguida, precisamos projetar uma estratégia principal. Podemos avaliar a liquidez, rentabilidade e estabilidade de cada variedade em todo o mercado de futuros de commodities para selecionar o portfólio de variedades de futuros de commodities com baixa volatilidade de ganhos, e depois conduzir uma triagem neutra do setor, reduzir ainda mais a volatilidade geral através da dispersão do setor do portfólio e, finalmente, construir o portfólio de multi-variedade de futuros de commodities real através da correspondência de valor de mercado para negociação.
Cada variedade também pode ser configurada com estratégias de múltiplos parâmetros, e pode selecionar a combinação de parâmetros com bom desempenho no backtest. Quando a tendência do mercado é óbvia, as estratégias de múltiplos parâmetros geralmente funcionam de forma consistente, o que equivale a adicionar posições; Quando o mercado está em uma situação volátil, o desempenho de vários conjuntos de estratégias de parâmetros geralmente será inconsistente, de modo que eles possam cobrir riscos indo longos ou curtos, respectivamente, o que equivale a reduzir posições. Isso pode reduzir ainda mais a taxa máxima de backtest da carteira, mantendo a taxa geral de retorno inalterada.
Newton disse uma vez: Se vejo mais longe do que os outros, é porque estou nos ombros de gigantes.
As estratégias de CTA disponíveis publicamente no mercado incluem a estratégia SMA, a estratégia de bandas de Bollinger, as regras de negociação de tartaruga, a estratégia de impulso, a estratégia de arbitragem, etc. As estratégias de negociação quantitativas têm uma característica, ou seja, elas falharão lentamente uma vez que sejam tornadas públicas.
A análise fundamental não precisa se preocupar com a tendência de preço a curto prazo. Acredita-se que o valor será refletido no preço em última análise. Trata-se mais de analisar os fatores por trás do preço para determinar quanto vale a variedade. Geralmente, o método de análise de cima para baixo é adotado: a partir de fatores macro, fatores de variedade e outros fatores.
Podemos ver no gráfico acima que há muitos fatores que afetam os preços das commodities, e esses dados estão mudando constantemente.
Na verdade, a análise fundamental de futuros de commodities não é para analisar todos os fatores.
Os dados macroeconômicos são complexos e mutáveis. Todos os dias, a cada momento, existem muitos dados econômicos publicados, da política nacional, bancos centrais, bancos de investimento, oficiais e não oficiais. Além da crise política e econômica, a macroanálise é um bom material para conversar, mas não prático.
Na análise fundamental, a análise de variedade é principalmente para analisar prêmio e desconto, relação oferta e demanda, estoque de commodities, lucro industrial, etc. Pode-se dizer que dominar a análise de fatores de variedade de futuros de commodities pode julgar a maior parte da tendência do mercado.
Como os amigos que fizeram futuros sabem, os futuros de commodities domésticos podem ser simplesmente divididos em produtos industriais e produtos agrícolas. Os métodos de análise de produtos industriais e produtos agrícolas são diferentes. Vamos elaborar sobre os dois aspectos da oferta e da demanda. Nos produtos industriais, a oferta é relativamente estável. A menos que haja um grande avanço tecnológico, a capacidade de produção provavelmente não mudará significativamente em um curto período de tempo. Portanto, o principal fator que afeta o preço dos produtos industriais é a demanda. A demanda por produtos agrícolas é relativamente estável. A longo prazo, a demanda por produtos agrícolas muda, mas a curto prazo, a demanda por produtos agrícolas tende a ser estável, portanto, o principal fator que afeta o preço dos produtos agrícolas é a oferta.
Portanto, de acordo com as leis da economia, é a relação entre oferta e demanda que determina o preço dos bens em última análise. Em teoria, enquanto os dados de oferta e demanda podem ser obtidos, o preço futuro dos bens pode ser determinado. Para produtos industriais, os dados de oferta são fáceis de obter, mas é difícil obter os dados de demanda. Para produtos agrícolas, os dados de demanda são fáceis de obter e é difícil obter os dados de oferta.
De fato, podemos subtrair ainda mais. O resultado mútuo da oferta e da demanda no mercado econômico é o estoque. Podemos julgar a força da relação entre a oferta e a demanda do mercado por meio de dados de estoque. Se o estoque de uma mercadoria for muito alto, isso significa que a oferta do mercado é maior que a demanda, e o preço da mercadoria diminuirá na premissa de que as condições externas permaneçam inalteradas. Se o estoque de uma mercadoria for muito baixo, isso significa que a demanda do mercado é maior que a oferta, e o preço da mercadoria aumentará na premissa de que as condições externas permaneçam inalteradas.
Além de analisar o estoque de commodities, também precisamos analisar a diferença de preço entre o mercado spot e o mercado de futuros, que também é chamado de diferença de base. Se o preço de futuros for maior que o preço spot, chamamos de prêmio de futuros; Se o preço de futuros for menor que o preço spot, chamamos de desconto de futuros. De acordo com o sistema de entrega de futuros, na data de entrega de futuros, o preço de futuros deve ser igual ao preço spot.
Independentemente do prêmio ou desconto, devido às restrições do sistema de entrega de futuros, o preço dos futuros na data de entrega deve ser igual ao preço ao instante em teoria.
De acordo com o princípio acima, podemos usar o estoque e a diferença de base para determinar os preços futuros de futuros ao mesmo tempo. Se o estoque de uma mercadoria for baixo, e se o preço de futuros for muito menor do que o preço spot, podemos julgar que a demanda do mercado spot é maior do que a oferta, e a probabilidade de o preço spot aumentar no futuro é grande; Também devido ao sistema de entrega de futuros, à medida que a data de entrega se aproxima, o preço dos futuros aumentará e será igual ao preço spot. A probabilidade de o preço dos futuros aumentar é maior no futuro.
Finalmente, julgamos a direção provável do preço futuro através da diferença de estoque e base, mas não há um ponto preciso de compra e venda, por isso precisamos cooperar com a análise técnica para dar um sinal claro de entrada e saída.
Quando se trata de estratégias de negociação, temos que falar sobre as regras de negociação de tartaruga representativas. A regra de negociação de tartaruga vem do experimento mais famoso da história da negociação. Richard Dennis, um especulador de commodities, quer saber se grandes comerciantes nascem ou são treinados. Para este fim, em 1983, ele recrutou 13 pessoas e ensinou-lhes os conceitos básicos de negociação de futuros, bem como seus próprios métodos e princípios de negociação. Esses alunos foram chamados de
Em quatro anos, as Tartarugas alcançaram uma média anual de juros compostos de 80%. Dennis provou que, com um sistema e regras simples, pessoas com pouca ou nenhuma experiência de negociação podem se tornar excelentes comerciantes. No entanto, algumas tartarugas vendem regras de negociação de tartarugas no site para obter lucro.
Depois que a verdade saiu, as pessoas descobriram que as regras de negociação da Tartaruga adotaram o canal Donchian otimizado e usaram indicadores ATR para gerenciamento de posição.
Então, agora, vamos ver o que as regras de negociação da Tartaruga dizem.
Assim, podemos ver que, embora as regras de negociação Turtle parecem muito simples, na verdade, ele formou um sentido real do protótipo do sistema de negociação. ele abrange todos os aspectos de um sistema de negociação completa, não deixando espaço para os comerciantes para tomar decisões imaginativas subjetivas, o que apenas faz as vantagens de operação programada do sistema jogar, incluindo: regras de entrada e saída, gestão de fundos e controle de risco, etc.
A maior vantagem do método de negociação de tartaruga é nos ajudar a estabelecer um conjunto de métodos de negociação eficazes. É uma combinação de abertura de lote, stop profits dinâmicos e stop loss, e a estratégia de tendência seguinte do mercado, especialmente o uso do valor ATR e o conceito de gestão de posição, que vale muito a pena aprender. Claro, também tem um problema comum com a estratégia de rastreamento de tendência, ou seja, lucro flutuante e retorno. É provável que todos os lucros flutuantes obtidos com a compra dos vencedores sejam retirados devido à onda seguinte de quedas acentuadas. É muito forte na tendência geral, e não tão bom quanto esperado no mercado volátil.
No final do século passado, um método de negociação muito surpreendente começou a prevalecer no campo do investimento financeiro nos Estados Unidos. Após milhares de pessoas praticarem, as pessoas descobriram que esse método tem eficácia e grande valor prático. Ao mesmo tempo, ele foi reconhecido por muitos especialistas em investimento e comerciantes profissionais. Até agora, ele pode ser aplicado a quase todos os campos de investimento financeiro perfeitamente, seja câmbio, ouro, ações, futuros, petróleo bruto ou índice e bônus, que é o método de operação do caos.
A palavra caos refere-se à descrição do estado caótico do universo originalmente. Sua idéia é que o resultado é inevitável, mas porque o conhecimento existente não pode calcular o resultado, porque o próprio cálculo também está mudando o resultado, o resultado máximo ou mínimo pode aparecer finalmente, mas não há resultado inevitável. Isso é muito semelhante ao mercado de negociação. Os participantes também mudam o mercado quando analisam o mercado e compram e vendem. O mercado tem variabilidade eterna. Quando os participantes entendem a nova forma do mercado, o mercado também entende que é reconhecido pelos participantes, então a variação ocorre. E ele tenderá a mudar na direção desconhecida dos participantes. Ele tem sabedoria suficiente para impedir que os participantes pegem suas regras de mudança, ou seja, o mercado não é estável e a compreensão do passado do mercado não pode representar o futuro.
O método de operação do caos é um conjunto completo de ideias de investimento, estratégias de negociação e sinais de entrada e saída, inventado por Bill Williams. Atualmente, muitos investidores no mundo adotam a operação do caos para participar de transações de mercado. Como o desenvolvimento do mercado financeiro da China está atrasado e a teoria do caos também é uma idéia relativamente nova, há poucas pessoas estudando métodos de operação do caos na China.
Como o nome sugere, a base teórica do método de operação do caos é a teoria do caos, que foi proposta pelo meteorologista Edward Lorenz. Foi uma das maiores descobertas científicas no final do século XX. Ele apresentou o famoso "efeito borboleta". Bill Williams aplicou a teoria do caos ao campo do investimento financeiro de forma criativa, combinando com geometria fractal, dinâmica não linear e outras disciplinas, e criou uma série de indicadores de análise técnica muito eficazes.
Todo o método de operação do Caos é composto por cinco dimensões principais (indicadores técnicos):
Alligador
O Fractal
O Impulso
Aceleração
A linha de equilíbrio
O Alligator é um conjunto de linhas de equilíbrio usando geometria fractal e dinâmica não linear. Sua essência é estender a média móvel ponderada exponencialmente, que é uma espécie de linha média, mas seu método de cálculo é um pouco mais complicado do que a linha média comum. Em seguida, vamos ver como definir o Alligator no MyLanguage:
// Parameters
N1:=11;
N2:=21;
// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
Primeiro, definimos 2 parâmetros externos N1 e N2, e então calcular a média HL do preço mais alto e o preço mais baixo de acordo com os parâmetros externos, e então calcular a média HL com parâmetros diferentes.
No método de operação do caos, um conceito de fractal é definido vividamente. Podemos fazer uma analogia: abra a palma da mão, com os dedos virados para cima, o dedo médio é o fractal superior, o dedo mindinho esquerdo e o dedo anelar, e o dedo indicador direito e o polegar, respectivamente, representam a linha K sem alta recorde. Um fractal básico é composto por essas cinco linhas K. Então você pode definir o fractal com o seguinte código:
// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
Depois de calcular o índice de crocodilo e fractal, podemos escrever uma estratégia de operação de caos simples baseada nessas duas condições e usar um grupo de linhas médias móveis ponderadas exponencialmente como o preço de referência para calcular o índice de crocodilo e fractal.
// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);
Para facilitar a compreensão, escrevi os comentários detalhados diretamente no código.
Em seguida, vamos ver como realmente são os resultados deste backtest de estratégia de operação de caos simples. A fim de tornar o backtest mais próximo do ambiente real do mercado, a comissão é definida em duas vezes a taxa de câmbio, e as posições de abertura e fechamento estão sujeitas a um ponto de deslizamento de dois saltos cada. O tipo de dados do backtest é o índice de rebar, e o tipo de negociação é a força principal do rebar contínua, com uma posição de abertura fixa de 1 lote. A seguir está o relatório preliminar do desempenho do backtest no nível de 1 hora.
A partir da curva de capital e dos dados de desempenho do backtest, a estratégia teve um bom desempenho e a curva geral de capital foi constantemente ascendente. No entanto, desde o final de 2016, as características do mercado das variedades de barras de reforço mudaram, da tendência unilateral de alta volatilidade para a tendência de volatilidade ampla.
Em uma palavra, a essência do método de operação do caos é encontrar um ponto de virada, sem se preocupar com como o mercado vai ou se é verdadeiro ou falso ruptura.
George Soros apresentou uma importante proposição em
De acordo com os princípios acima, podemos saber que em um mercado de futuros ineficaz, a razão pela qual o impacto do mercado em contratos de entrega em períodos diferentes nem sempre é sincrônico e o preço não é completamente eficaz.
Como os futuros de commodities, a moeda digital também tem uma carteira de contratos de arbitragem de período cruzado. Por exemplo, na bolsa OKEX, há: ETC semana atual, ETC próxima semana, ETC trimestre. Por exemplo, suponha que a diferença de preço entre a semana atual de ETC e o trimestre de ETC permaneça em torno de 5 por um longo tempo. Se a diferença de preço atingir 7 em um dia, esperamos que a diferença de preço volte a 5 no futuro. Então podemos vender ETC naquela semana e comprar ETC trimestre ao mesmo tempo para diminuir a diferença de preço, e vice-versa.
Embora essa diferença de preço exista, há muitas incertezas na arbitragem manual devido a operações manuais demoradas, pouca precisão e o impacto das mudanças de preço. O charme da arbitragem quantitativa reside na captura de oportunidades de arbitragem através de modelos quantitativos e na formulação de estratégias de negociação de arbitragem, bem como na colocação de ordens de negociação automaticamente nas bolsas através de algoritmos programados, de modo a capturar oportunidades de forma rápida e precisa e obter lucros de forma eficiente e estável.
Este curso irá ensinar-lhe como usar a plataforma de negociação FMZ Quant e o contrato de futuros ETC na troca OKEX para demonstrar como capturar as oportunidades de arbitragem instantâneas, aproveitar os lucros que podem ser vistos a cada vez, e cobrir os riscos que podem ser encontrados na negociação de moeda digital com uma estratégia de arbitragem simples.
Criar uma estratégia de arbitragem interperíodo para a moeda digitalDificuldade: Normal
Ambiente estratégico
Estratégia lógica
O acima é uma simples descrição lógica da estratégia de arbitragem de período cruzado de moeda digital. Então, como implementar nossas ideias no programa?
function Data() {} // Basic data function
Data.prototype.mp = function () {} // Position function
Data.prototype.boll = function () {} // Indicator function
Data.prototype.trade = function () {} // Order placement function
Data.prototype.cancelOrders = function () {} // Order withdrawal function
Data.prototype.isEven = function () {} // Processing single contract function
Data.prototype.drawingChart = function () {} // Drawing function
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // Create a basic data object
var accountStocks = data.accountData.Stocks; // Account balance
var boll = data.boll(dataLength, timeCycle); // Calculate the technical indicators of boll
data.trade(); // Calculate trading conditions to place an order
data.cancelOrders(); // Cancel orders
data.drawingChart(boll); // Drawing
data.isEven(); // Processing of holding individual contract
}
//Entry function
function main() {
while (true) { // Enter the polling mode
onTick(); // Execute onTick function
Sleep(500); // Sleep for 0.5 seconds
}
}
Imagine como é o nosso processo de negociação na negociação de supervisão. Não há diferença essencial nas transações do sistema. Não é nada mais do que adquirir dados, calcular dados, colocar uma transação de ordem e processar após a colocação de uma ordem. O mesmo é verdade no programa. Primeiro, o programa executará a função principal na linha 20, que é uma convenção. Quando o programa concluir o pré-processamento da estratégia de negociação (se houver), entrará no modo de loop infinito, ou seja, no modo de votação. No modo de votação, a função onTick será executada repetidamente.
Em seguida, na função onTick, é o nosso processo de negociação na transação subjetiva: primeiro, obter os dados de preço básicos, em seguida, obter o saldo da conta, em seguida, calcular o índice, em seguida, calcular as condições de negociação e colocar a ordem, e, finalmente, o processamento após a colocação da ordem, incluindo cancelamento da ordem, desenho e processamento de um único contrato.
O quadro estratégico pode ser facilmente configurado de acordo com a ideia estratégica e o processo de transacção.
Em seguida, precisamos preencher o código de detalhes necessário no quadro estratégico de acordo com o processo real de transação e os detalhes da transação.
var chart = {}
var ObjChart = Chart ( chart )
var bars = []
var oldTime = 0
var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
this.accountData = _C(exchange.GetAccount); // Get account information
this.positionData = _C(exchange.GetPosition); // Get position information
var recordsData = _C(exchange.GetRecords); // Get K-line data
exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
// Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // Get position information
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // Temporary objects
// Median value of positive arbitrage price difference and negative arbitrage price difference
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // Compare two depth data timestamps
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // Pass in the price difference data object into the K-line array according to the specified time period
if (bars.length > num * 2) {
bars.shift(); // Control the length of the K-line array
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
return {
up: boll[0][boll[0].length - 1], // boll indicator upper track
middle: boll[1][boll[1].length - 1], // boll indicator middle track
down: boll[2][boll[2].length - 1] // boll indicator down track
} // Return a processed boll indicator data
}
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // If the order is placed in contract A
askPrice = this.askA; // set askPrice
bidPrice = this.bidA; // set bidPrice
} else if (tradeType == tradeTypeB) { // If the order is placed in contract B
askPrice = this.askB; // set askPrice
bidPrice = this.bidB; // set bidPrice
}
switch (type) { // Match order placement mode
case "buy":
exchange.SetDirection(type); // Set order placement mode
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // Set order placement mode
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // Set order placement mode
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // Set order placement mode
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
Data.prototype.cancelOrders = function () {
Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
if (orders.length > 0) { // If there are unfilled orders
for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
Sleep(500); // Delay 0.5 seconds
}
return false; // Return false if an unfilled order is cancelled
}
return true; // Return true if there are no unfilled orders
}
Data.prototype.isEven = function () {
var positionData = this.positionData; // Get position information
var type = null; // Switch position direction
// If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
if (positionData[i].Type == 0) { // If it is a long order
type = 10; // Set order parameters
} else if (positionData[i].Type == 1) { // If it is a short order
type = -10; // Set order parameters
}
// Close all positions
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3