O recurso está a ser carregado... Carregamento...

2.4 Como escrever uma estratégia de negociação na plataforma FMZ Quant

Autora:Bem-estar, Criado: 2019-04-17 15:01:01, Atualizado: 2019-04-27 11:55:41

Resumo

Depois de estudar as seções anteriores, finalmente estamos prontos para escrever uma estratégia de negociação quantitativa. Este será o passo mais importante na sua entrada na negociação quantitativa a partir da negociação manual. Na verdade, não é tão misterioso. Escrever uma estratégia não é nada mais do que realizar suas ideias com código. Esta seção implementará uma estratégia de negociação quantitativa do zero, após o estudo, todos estarão familiarizados com como escrever estratégias no sistema FMZ Quant.

Pronto.

Primeiro, abra o site oficial do FMZ Quant, faça login em sua conta. clique em DashboardstrategyAdd Strategy. por favor note que antes de começar a escrever o código, você precisa selecionar os tipos de linguagem de programação. nesta seção vamos usar JavaScript. selecione-o a partir do menu suspenso. além disso, a plataforma FMZ Quant também Suporte para Python, C ++, e programação visual.

Ideia estratégica

No capítulo anterior, introduzi uma estratégia de média móvel. Ou seja: se o preço for superior ao preço médio dos últimos 10 dias, abra uma posição longa. se o preço for inferior ao preço médio dos últimos 10 dias, curte-o. No entanto, embora o preço possa refletir diretamente o estado do mercado, ainda haverá muitos falsos sinais de ruptura; portanto, devemos atualizar e melhorar essa estratégia.

Primeiro, escolha uma média móvel de período maior para julgar a direção da tendência. Pelo menos metade dos falsos sinais de ruptura foram filtrados. A média móvel de ciclo grande é lenta, mas será mais estável. Em seguida, para aumentar a taxa de sucesso da posição de abertura, adicionamos outra condição. Esta média móvel de ciclo grande é pelo menos ascendente; finalmente, a relação posicional relativa entre preço, média móvel de curto prazo e média móvel de longo prazo é usada para formar uma estratégia de negociação completa.

img

Estratégia lógica

Com as idéias de estratégia acima, podemos tentar construir essa lógica de estratégia. A lógica aqui não é deixar você calcular a lei do movimento celeste, não é tão complicado. Não é nada mais do que expressar as idéias de estratégia anteriores em palavras.

  • Posição longa aberta: se não houver atualmente nenhuma posição e o preço de encerramento for superior à média móvel de curto prazo, e o preço de encerramento for superior à média móvel de longo prazo, e a média móvel de curto prazo for superior à média móvel de longo prazo, e a média móvel de longo prazo estiver em alta.

  • Posição curta aberta: Se, atualmente, não houver posição, e o preço de encerramento for inferior à média móvel de curto prazo, e o preço de encerramento for inferior à média móvel de longo prazo, e a média móvel de curto prazo for inferior à média móvel de longo prazo, e a média móvel de longo prazo estiver em queda.

  • Fechar posição longa: se a posição longa estiver atualmente detida e o preço de fechamento for inferior à média móvel de longo prazo, ou a média móvel de curto prazo for inferior à média móvel de longo prazo, ou a média móvel de longo prazo estiver a cair.

  • Fechar posição curta: Se a posição curta atual for mantida e o preço de fechamento for superior à média móvel de longo prazo, ou a média móvel de curto prazo for superior à média móvel de longo prazo, ou a média móvel de longo prazo estiver em alta.

O acima é a lógica de toda a estratégia, se convertermos a versão textual desta estratégia em código, ela incluirá: a aquisição da cotação de mercado, o cálculo de indicadores, a colocação de ordem para abrir e fechar posição, estas três etapas.

M Estratégia linguística

A primeira coisa é obter a cotação do mercado. Nesta estratégia, precisamos apenas obter o preço de fechamento. Na linguagem M, a API para obter o preço de fechamento é: CLOSE, o que significa que você só precisa escrever CLOSE na área de codificação para obter o último preço de fechamento da linha K.

A próxima coisa a fazer é calcular o indicador. Nesta estratégia, vamos usar dois indicadores, ou seja: média móvel de curto prazo e média móvel de longo prazo. Assumimos que a média móvel de curto prazo é a média móvel de 10 períodos e a média móvel de longo prazo é a média móvel de 50 períodos.

MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50

Na negociação manual, podemos ver de uma olhada se a média móvel de 50 períodos está subindo ou caindo, mas como expressá-la em código? Pense cuidadosamente, julgando se a média móvel está subindo ou não, a média móvel atual da linha K é maior do que a média móvel da linha K anterior? ou é maior do que duas linhas K anteriores? Se a resposta for sim, então podemos dizer que a média móvel está rasgando. Também podemos julgar a queda pelo mesmo método.

MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10

MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling

Observe que nas linhas 8 e 9 do código acima, a palavra AND, é um Operador Lógico. o que significa que quando os dois lados da condição and são verdadeiros, toda a frase é verdadeira, caso contrário é falsa.

O passo final é colocar ordens, você só precisa chamar a API de ordens do FMZ Quant para executar a operação de compra e venda após o código lógico.

MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10

MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling

CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position

Observe que as linhas 13 e 14 acima, a palavra OR, que é outro operador lógico, na linguagem M significa or, traduza para o inglês: se o preço de fechamento da linha K atual for menor que a média móvel de 50 períodos da linha K atual, ou a média móvel de 10 períodos da linha K atual for menor que a média móvel de 50 períodos da linha K atual, o valor é calculado como Sim. E coloque a ordem imediatamente; caso contrário, o cálculo é não e não faça nada.

Observe que AND e OR são todos operadores lógicos na linguagem M:

  • AND é quando todas as condições são sim, e a condição final é sim;

  • OR é quando, enquanto qualquer uma das condições for sim, a condição final é sim.

Resumindo

O processo acima é todo o processo de escrever uma estratégia de negociação na plataforma FMZ Quant usando a linguagem de programação M. Existem três etapas no total: de ter uma ideia de estratégia, para o pensamento estratégico e usar texto para descrever a lógica, e finalmente implementar uma estratégia de negociação completa com código. Embora esta seja uma estratégia simples, o processo de implementação específico é semelhante à estratégia complexa, exceto que a estratégia e a estrutura de dados da estratégia são diferentes. Portanto, desde que você entenda o processo de estratégia quantitativa nesta seção, você pode realizar pesquisa e prática de estratégia quantitativa na plataforma FMZ Quant.

Exercícios após a escola

  1. Tente implementar as estratégias desta seção por conta própria.

  2. Em função da estratégia desta secção, adicionar a função stop-loss e take-profit.

Anúncio da secção seguinte

No desenvolvimento de estratégias de negociação quantitativas, as linguagens de programação são como armas, uma boa linguagem de programação pode ajudá-lo a obter o dobro do resultado com metade do esforço. Por exemplo, existem mais de uma dúzia das linguagens Python, C ++, Java, C #, EasyLanguage e M mais comumente usadas no mundo da negociação quantitativa. Qual arma você deve escolher para lutar no campo de batalha? Na próxima seção vamos apresentar essas linguagens de programação comuns, bem como as características de cada linguagem de programação em si.


Mais.