Análise de casos de vários indicadores comuns escritos e modelos de cross-indicadores na linguagem My

Autora:Bem-estar, Criado: 2019-07-08 10:01:48, Atualizado: 2019-07-16 15:38:53

O My Language é um linguagem de programação quantitativa altamente integrada em funções e com funções poderosas, projetada para iniciantes em quantificação. Apesar de ser popular entre os iniciantes, é um pouco inferior em funções a outras linguagens de programação. Em termos de personalização profunda de algumas estratégias complexas, a base de funções já personalizada é muito poderosa, juntamente com o excelente suporte da plataforma de quantificação da Inventor para as interfaces API das principais exchanges, o que permite não apenas economizar muito tempo em escrever código, mas também concentrar sua energia principalmente no design de lógica estratégica, e o custo extremamente baixo (um preço de até 3 yuan por dia) deixa você sem preocupações.

A linguagem My não é apenas para futuros de commodities domésticos, mas também para transações relacionadas a moedas digitais sem diferenças de função.

Este artigo apresenta a redação de alguns indicadores comuns e a análise de casos de vários modelos trans-indicadores.

Classificação e redação de alguns indicadores comuns

  • As formas tradicionais clássicas de K-line incluem: três patas de corvo, estrelas cruzadas, cabeça quebrada, um céu de coluna, o caminho dos Sentenciados, o fundo de uma agulha de ouro, etc.

  • No que diz respeito aos indicadores, os indicadores de tendência são: MA (combinação de linha média), BOLL, PUBU (linha de queda), SAR (ponto de parada) e outros.

  • Indicadores de oscilação: ATR (amplitude real), KDJ (indicador aleatório), MACD, WR (indicador William), etc.

  • Índice de análise de quantidade de estoque CJL (volume de transação), DUALVOL (proporção de quantidade de espaço livre), OBV (volume de energia)

Em seguida, vamos implementar as formas e indicadores clássicos acima em uma plataforma de quantificação de inventores usando a linguagem My, o objetivo não é fazer com que o leitor use diretamente esses indicadores (claro que, em certas condições, o uso direto também pode não ser um problema), mas para que o leitor possa analisar os movimentos de tempo com base nesses indicadores e aprimorar esses clássicos de acordo com as condições do setor e suas próprias condições de gestão de fundos.

A linha do sol: o preço de abertura é o preço mais baixo, o preço de fechamento é o preço mais alto, a linha K subiu mais de 4%

AA:=OPEN=LOW; 
BB:=CLOSE=HIGH; 
CC :=CLOSE/OPEN>1.04; 

A condição lógica de um conjunto de julgamentos aqui é: AA&&BB&&CC

Pôr-cabeça: duas linhas K são formadas, o que significa que o mercado vai virar, com um desvio de pelo menos 4% no valor de abertura da linha K atual. Se for o tipo de pôr-cabeça para cima, a linha K deve se soltar, enquanto o preço mais alto e o preço mais baixo da linha K atual devem cobrir a primeira linha K.

A1:=REF(CLOSE,1); 
A2:=REF(OPEN,1); 
BB:C/O>1.04;
B1:=OPEN<A1; 
B2:=CLOSE>A2;

A condição de julgamento lógico aqui é: BB&&B1&B2

Indicadores de tendência

  • Cruzamento da linha média: linha média de 5 dias para cima através da linha média de 10 dias (forca de ouro); linha média de 5 dias para baixo através da linha média de 10 dias (forca morta)
MA5:=MA(CLOSE,5); 
MA10:=MA(CLOSE,10);
金叉 CROSSUP(MA5,MA10);
死叉 CROSSDOWN(MA5,MA10);

Como você pode ver aqui, as funções do My Language são altamente integradas, uma função que julga o cruzamento de linhas uniformes, o que o usuário precisa fazer é apenas chamá-la, não é preciso construir funções individuais a partir de uma nova e lógica básica, e é muito mais fácil para a configuração posterior.

Da mesma forma, para a lógica estratégica de três linhas médias, assumindo uma linha média de 5 dias, uma linha média de 10 dias e uma linha média de 30 dias em uma série de linhas médias de 3 dias, podemos escrever:

MA5:=MA(CLOSE,5); 
MA10:=MA(CLOSE,10); 
MA30:=MA(CLOSE,30); 
CC:=MA5>MA30 AND MA10>MA30;
  • Canal BOLL: O BOLL é composto por três canais: Bottom, Top e Mid. Quando o canal se torna mais amplo e ascende, o preço está acima do trajeto, e a tendência é multi-head. A tendência é inversa.

O código da linguagem My pode ser escrito assim:

MID:MA(CLOSE,26);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,26);//求M个周期内的收盘价的标准差
TOP:MID+2*TMP2;//布林通道上轨
BOTTOM:MID-2*TMP2;//布林通道下轨
AA:=TOP>REF(TOP,1)&&BOTTOM<REF(BOTTOM,1)&&MID>REF(MID,1);
BB:=C>TOP;

A maioria das tendências são AA&&BB.

  • Indicador SAR (ponto de interrupção): SAR para cima através de 0, tendência de múltiplos pontos; SAR para baixo através de 0, tendência de vazio.

Primeiro, definimos os seguintes parâmetros na biblioteca de transações da linguagem Ma na barra de parâmetros e na página de revisão de parâmetros abaixo da interface de escrita de código da estratégia de quantificação dos inventores:

img img

N 1 100 4 PASSO 1 20 2 VALOR VALOR 1 10 2

STEP1:=STEP/100;
MVALUE1:=MVALUE/10;
SARLINE:SAR(N,STEP1,MVALUE1),CIRCLEDOT;
//N个周期的抛物转向,步长为STEP1,极限值为MVALUE1.
CROSS(SARLINE,0),BPK;//抛物转向值上穿0,做多。
CROSS(0,SARLINE),SPK;//抛物转向值下穿0,作空。
AUTOFILTER;

Indicadores de classe oscilante

Qualquer pessoa que tenha alguma experiência de negociação sabe que, em qualquer mercado, os preços são turbulentos 80% do tempo, e os preços são tendentes apenas 20% do tempo.

Portanto, os indicadores oscilantes são mais importantes do que os indicadores tendenciais e influenciam mais sobre o resultado das negociações, e na maioria dos mercados turbulentos, os indicadores tendenciais são praticamente inoperantes; enquanto os indicadores oscilantes podem variar com as flutuações dos preços, os indicadores oscilantes também podem ser chamados de indicadores aleatórios.

Características dos indicadores oscilantes: a variação dos valores dos indicadores oscilantes tem um valor médio, que pode ser dividido em áreas horizontais em metade superior e metade inferior, geralmente sensíveis às mudanças de preço.

O indicador de tendência é uma boa opção para julgar a tendência que está chegando, o indicador de tendência que está chegando é uma boa opção.

  • O indicador aleatório KDJ é composto por três linhas K, D e J, que variam entre 0 e 100, a linha J é inferior a 20, entra na zona de supervenda, a linha J é superior a 80 e entra na zona de supercompra.
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。
K:SMA(RSV,M1,1);//RSV的移动平均值
D:SMA(K,M2,1);//K的移动平均值
J:3*K-2*D;
BACKGROUNDSTYLE(1);
CROSS(K,D),BPK;//KD金叉,做多。
CROSS(J,20),BP;//J值上穿20
CROSS(D,K),SPK;//KD死叉,做空。
CROSS(80,J),SP;// J值下穿80
AUTOFILTER;
  • O MACD é um indicador de média de desaceleração, desenvolvido a partir de uma média móvel de dois índices, que é uma média móvel de índices rápidos (EMA) menos uma média móvel de índices lentos. O MACD é basicamente o mesmo que uma média móvel dupla.
DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA:EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
CROSS(DIFF,DEA),BPK;//DIFF上穿DEA,做多。
CROSS(DEA,DIFF),SPK;//DIFF下穿DEA,做空。
AUTOFILTER;

Modelo de casos entre indicadores

Por que estamos a passar por cima dos indicadores?

  • A primeira razão: os indicadores cruzados no modelo são uma idéia de negociação em ressonância com os elementos internos do lado técnico, que combina várias idéias de negociação de indicadores classificados diferentes para fazer uma visão de mercado.

  • A segunda razão é que os indicadores de tendência falham no mercado integral, os indicadores de oscilação não podem ser usados sozinhos para determinar o estado atual do mercado e precisam de uma combinação de vários indicadores para análise.

Pensamento comum

  • A análise de tendências é combinada com uma análise minuciosa.
  • A maioria das condições são idênticas ao julgamento.

Exemplos de modelos de choque

  • Índice de maré
ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100

Medir os movimentos de preços em um determinado ciclo: os movimentos do índice em sequência dentro de um pequeno intervalo indicam que está em um mercado consolidado, caso contrário, é um mercado de tendência.

Ideias de negociação de modelos de turbulência: índice de fluxo de maré, índice de oscilação de KDJ para encontrar pontos de entrada e pontos de saída

O modelo pode ser escrito assim:

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);//RSV的移动平均值
D:SMA(K,M2,1);//K的移动平均值
J:3*K-2*D;
CMIVAL:ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100,NODRAW;
BACKGROUNDSTYLE(1);
K>D&&EVERY(CMIVAL<20,2),BPK;//盘整行情,KD金叉,做多。
CROSS(J,10)||CROSS(K,D),BP;// J值上穿10超卖或者KD金叉,平仓
D>K&&EVERY(CMIVAL<20,2),SPK;//盘整行情,KD死叉,做空。
CROSS(90,J)||CROSS(D,K),SP;// J值下穿90超买或者KD死叉,平仓
AUTOFILTER;

img

Exemplos de modelos de tendências

Modelo de tendência: A EMA determina a tendência ascendente ou descendente; o índice ADX reflete o grau de mudança da tendência, a tendência forte e a tendência fraca.

A EMA avalia tendências de sistemas de negociação:

UPPERMA:EMA(HIGH,30);//计算30根K线最高价的EMA
LOWERMA:EMA(LOW,30);//计算30根K线最低价的EMA
CROSSUP(C,UPPERMA),BPK;//收盘价上穿EMA,做多
CROSSDOWN(C,LOWERMA),SPK;//收盘价下穿EMA,做空
AUTOFILTER;

img

A EMA só pode julgar tendências multi-tendências e ações, mas não pode julgar a força e a fraqueza da tendência, por isso a EMA falha no balanço do mercado, por isso precisamos de encontrar um indicador que possa refletir a tendência forte e fraca: o índice ADX.

O código é o seguinte:

TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);
HD:=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差
LD:=REF(LOW,1)-LOW;//前一周期最低价与最低价做差
DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);
//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。
DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);
//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。
PDI:=DMP*100/TR;
MDI:=DMM*100/TR;
ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);

O ADX indica uma tendência forte para cima e o ADX indica uma tendência fraca para baixo.

img

Então, nós combinamos os dois e formamos um sistema de negociação baseado no ADX e no EMA.

O código é o seguinte:

TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);
DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);
PDI:=DMP*100/TR;
MDI:=DMM*100/TR;
ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);
UPPERMA:=EMA(HIGH,30);
LOWERMA:=EMA(LOW,30);
CROSSUP(C,UPPERMA)&&EVERY(ADX>REF(ADX,1),2),BPK;
//当ADX连续两周期向上且当前价大于30根K线最高价的EMA满足买入条件
CROSSDOWN(C,LOWERMA)&&EVERY(ADX>REF(ADX,1),2),SPK;
//当ADX连续两周期向上且当前价下于30根K线最低价的EMA满足卖出条件
AUTOFILTER;

Múltiples indicadores idênticos Análise precisa para aumentar as chances de vitória

Procure por vários indicadores de tendência: BOLL, Dongqian e Dynamic Breakthrough Systems, baseados em BOLL e Dongqian.

Canal de Donchian: inventado pelo físico americano Richard Dennis, lendário do mercado de futuros, e antecessor da lei do furacão. Ele é composto por preços mais altos e mais baixos em um determinado ciclo (geralmente 20, em casos definidos como variáveis) que formam um trajeto ascendente e descendente, quando o preço quebra a trajetória ascendente e descendente, o que é um sinal de compra possível na trajetória ascendente; ao contrário, o que quebra na trajetória descendente é um sinal de venda possível.

A ideia de um modelo de negociação multi-indicador:

  • O preço foi maior ontem do que no canal Brin, e o preço do ciclo foi maior naquele dia do que no canal Dongcheng.

  • O preço foi menor ontem do que no túnel de Brin e o preço do ciclo do dia foi menor do que no túnel de Dongcheng, abrindo um pedido vazio.

  • O preço é menor do que a linha média de saída de adaptação, e o preço é mais barato.

  • O preço é maior do que a linha média de saída de adaptação, quando a carteira está vazia.

Podemos escrever assim:

//当日市场波动
TODAYVOLATILITY:=STD(CLOSE,30);
//昨日市场波动
YESTERDAYVOLATILITY:=REF(TODAYVOLATILITY,1);
//市场波动的变动率
DELTAVOLATILITY:(TODAYVOLATILITY-YESTERDAYVOLATILITY)/TODAYVOLATILITY;
//计算自适应参数
LOOKBACKDAYS1:=LOOP2(BARPOS=30,20,REF(LOOKBACKDAYS1,1)*(1+DELTAVOLATILITY));
LOOKBACKDAYS2:=ROUND(LOOKBACKDAYS1,0);
LOOKBACKDAYS3:=MIN(LOOKBACKDAYS2,60);//60自适应参数的上限
LOOKBACKDAYS:=MAX(LOOKBACKDAYS3,20);//20自适应参数的下限
//自适应布林通道中轨
MIDLINE:=MA(CLOSE,LOOKBACKDAYS);
BAND:=STD(CLOSE,LOOKBACKDAYS); 
//自适应布林通道上轨
UPBAND:=MIDLINE+2*BAND;
//自适应布林通道下轨
DNBAND:=MIDLINE-2*BAND; 
//自适应唐奇安通道上轨
BUYPOINT:=HHV(HIGH,LOOKBACKDAYS);
//自适应唐奇安通道下轨
SELLPOINT:=LLV(LOW,LOOKBACKDAYS);
//自适应出场均线
LIQPOINT:=MIDLINE;
//昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,开多单
REF(C,1)>REF(UPBAND,1)&&HIGH>=REF(BUYPOINT,1),BK;
//持有多单时,昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,平多单
REF(C,1)<REF(DNBAND,1)&&LOW<=REF(SELLPOINT,1),SP;
//持有多单时,价格小于自适应出场均线,平多单
BARSBK>=1&&LOW<=REF(LIQPOINT,1),SP;
//持有空单时,昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,平空单
REF(C,1)>REF(UPBAND,1)&&H>=REF(BUYPOINT,1),BP;
//昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,开空单
REF(CLOSE,1)<REF(DNBAND,1)&&LOW<=REF(SELLPOINT,1),SK;
//持有空单时,价格大于自适应出场均线,平空单
BARSSK>=1&&HIGH>=REF(LIQPOINT,1),BP;
AUTOFILTER;

Durante o processo de escrita, é importante notar que, na linguagem My, a diferença entre o símbolo CROSSUP, o símbolo CROSSDOWN e o símbolo > símbolo, o símbolo < símbolo, bem como o uso flexível do símbolo AND & &, o símbolo OR ou o símbolo OR, o operador de conexão multiconditional que atende à questão de prioridade. Há também um símbolo: símbolo e símbolo: = símbolo, e, finalmente, uma modificação das mesmas variáveis e parâmetros.

A linguagem My é uma linguagem de script muito poderosa, além de uma experiência de aprendizagem amigável para iniciantes, mesmo um especialista em quantificação pode usar com flexibilidade a combinação de indicadores e gramática para criar estratégias de negociação poderosas, com o excelente suporte da interface API da plataforma de quantificação do inventor, os desenvolvedores de quantificação podem finalmente colocar todas as suas energias na pesquisa e na redação de estratégias, em vez de se dedicar à arquitetura subjacente do sistema de negociação que não tem nada a ver com a negociação quantitativa.


Mais.

glicogênioMarc.

wwwq4817Muito bem.