Escribir instrucciones de agrupación en estrategias de transacción cuantitativas

El autor:La bondad, Creado: 2019-07-10 09:55:13, Actualizado: 2019-07-16 15:37:32

¿Por qué agrupar las instrucciones?

Las necesidades de los desarrolladores de estrategias

Para diferentes mercados se requieren diferentes indicadores. ¿Puedo establecer diferentes diferencias de stop loss según las diferentes condiciones de apertura?

Por ejemplo, los modelos tradicionales de escritura de condiciones de liquidación no distinguen entre diferentes condiciones de apertura.

El siguiente código es una simple estrategia tradicional para no diferenciar las condiciones de almacenamiento:

MA5^^MA(C,5);
MA10^^MA(C,10);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K..SMA(RSV,3,1);
D..SMA(K,3,1);
CROSS(MA5,MA10)||CROSS(K,D),BK;
C>HV(H,10)||C<BKPRICE-5*MINPRICE,SP;
AUTOFILTER;

El uso de instrucciones de agrupación es diferente.

Las instrucciones de agrupación pueden dividir n grupos de condiciones de equilibrio, en los que solo se pueden igualar las condiciones de equilibrio correspondientes a un grupo, y en los que las condiciones de equilibrio de otros grupos no se señalan ni se encargan.

Por ejemplo:

El primer grupo es multi-condicional.

MA5^^MA(C,5);
MA10^^MA(C,10);
CROSS(MA5,MA10),BK;
CROSS(MA10,MA5),SP;

El segundo grupo es multi-condicional.

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K..SMA(RSV,3,1);
D..SMA(K,3,1); 
CROSS(K,D),BK; 
C>HV(H,10)||C<BKPRICE-5*MINPRICE,SP;

¿Cómo distinguir los diferentes grupos de condiciones en el mismo modelo? Vamos a implementarlos.

Cómo escribir instrucciones de agrupación

Primero, los modelos se dividen en modelos filtrados y modelos no filtrados:

  • Modelo de filtración: diferentes condiciones de apertura de posiciones se desean equilibrar con diferentes condiciones de equilibrio, que se pueden implementar con la instrucción de agrupación.

  • Modelo no filtrado: la estrategia de entrada por primera vez es diferente a la estrategia de aumento de riesgo, y se puede implementar con la agrupación de instrucciones para equilibrar con diferentes estrategias de liquidación de pérdidas.

Modelo de filtro

//A组指令
A组的开多条件,BK('A');
A组的开空条件,SK('A');
A组的平多条件,SP('A');
A组的平空条件,BP('A');
//B组指令
B组的开多条件,BPK('B');
B组的开空条件,SPK('B');
B组的平多条件,SP('B');
B组的平空条件,BP('B');
AUTOFILTER;//过滤函数

Nota: Los grupos de modelos filtrados requieren que se agreguen a los grupos después de las instrucciones de transacción y se encierren con una sola cita; por ejemplo, BK (A).

Modelo sin filtro

//A组指令
A组的开多条件1,BK('A',2);
A组的开空条件1,SK('A',2);
A组的加多条件2,BK('A',1);
A组的加空条件2,SK('A',1);
A组的平多条件,SP('A',GROUPBKVOL('A'));
A组的平空条件,BP('A',GROUPSKVOL('A'));
//B组指令
B组的加多条件,BK('B',1);
B组的加空条件,SK('B',1);
B组的平多条件1,SP('B',GROUPBKVOL('B'));
B组的平空条件1,BP('B',GROUPSKVOL('B'));

Nota: Los grupos de modelos sin filtro requieren la inclusión de grupos y números de manos después de las instrucciones de transacción, y los grupos deben estar enmarcados con una sola cita. Por ejemplo, BK (A, 2)

Mecanismos de operación de las instrucciones de subgrupo

Modelo de filtración: primero el filtro de grupo y luego el filtro de señal

  • El filtro de grupo se refiere a: si la señal anterior de la línea K es la señal de apertura del grupo A (BK SK BPK SPK) la línea actual de K puede ser solo la señal de equilibrio del grupo A. Si la señal anterior de la línea K es la señal de equilibrio del grupo A (BP SP), la línea actual de K puede ser la señal de apertura de cualquier grupo.

  • Las condiciones de liquidación no agrupadas solo pueden ser las condiciones de apertura de las posiciones no agrupadas.

El filtro de señales se refiere al filtro de señales abiertas.

El orden de prioridad es:

  • La línea K superior es BK. La línea K actual debe ser SPK o SP (SPK tiene prioridad sobre SP, el siguiente es el anómalo)
  • La línea K superior es SK, la línea K actual debe ser BPK o BP.
  • La primera línea K es BP, la K actual tiene que ser BK o SK.
  • La primera línea K es SP. La K actual debe ser BK o SK.
  • La primera línea K es BPK, la K actual debe ser SPK o SP.
  • La primera línea K es SPK, la K actual debe ser BPK o BP.

Modelo sin filtro:

  • Si la señal anterior es la señal de apertura del grupo A, la siguiente señal debe ser la señal de aumento del grupo A o la señal de liquidación.
  • Si la señal anterior es la señal de liquidación del grupo A y el grupo A tiene un posicionamiento de 0, la siguiente señal puede ser la señal de apertura de cualquier grupo.
  • Si el grupo A tiene una posición mayor a 0, debe ser una señal de apertura o una señal de liquidación para el grupo A. Nota: las condiciones de liquidación no agrupadas sólo pueden ser aplicadas a las condiciones de apertura no agrupadas

Análisis de casos de instrucciones de desagregación

A continuación, vamos a mostrar algunos ejemplos de estrategias para ver cómo se agrupan estas instrucciones cuando se escribe el código.

Modelo de filtro

Ideas de negociación: para determinar la tendencia, se utilizan 20 ciclos y 60 ciclos de línea recta.

  • Haga más por encima de la línea media de 20 ciclos que por encima de la línea media de 60 ciclos.
  • En la tendencia de hacer más, si el precio más alto crea una nueva línea de 10 k más alta y para la línea del sol, la tendencia es más. Cuando se estabiliza, se estabiliza con un punto de stop loss más grande o se produce una estabilización de muesca homogénea.
  • En la tendencia de hacer más, si el indicador de KDJ es el dorado y para la línea del sol, la banda de onda es más. Cuando el equilibrio, el menor punto de stop-loss para el equilibrio de la parada de pérdida o la caída de la onda para abrir la posición de la línea k mínimo punto de parada de pérdida para el equilibrio.

El código es:

MA20^^MA(C,20);
MA60^^MA(C,60);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
HH:=HV(H,10);
LL:=LV(L,10);
MA20>MA60&&H>HH&&C>O,BK('A');
MA20<MA60&&L<LL&&C<O,SK('A');
L<LV(L,5)||CROSSDOWN(MA20,MA60)||C<BKPRICE-5*MINPRICE,SP('A');
H>HV(H,5)||CROSSUP(MA20,MA60)||C>SKPRICE+5*MINPRICE,BP('A');//只平A组开仓
MA20>MA60&&CROSSUP(K,D)&&C>O,BK('B');
MA20<MA60&&CROSSDOWN(K,D)&&C<O,SK('B');
C>BKPRICE+5*MINPRICE||C<BKPRICE-2*MINPRICE||C<REF(L,BARSBK),SP('B');
C<SKPRICE-5*MINPRICE||C>SKPRICE+2*MINPRICE||C>REF(H,BARSSK),BP('B');//只平B组开仓
//不同的开仓条件开仓,用不同的平仓条件,有针对性的平仓。达到不同行情试用不同策略的目的。
AUTOFILTER;

Modelo sin filtro

Ideas de negociación: como condición para abrir una posición por primera vez con 5 ciclos y 10 ciclos.

  • 5 ciclos y 60 ciclos de forcadas de oro de línea recta antes de la primera posición abierta y sin equilibrio. 5 ciclos y 60 ciclos de forcadas de oro de línea recta antes de la primera posición abierta y sin equilibrio.
  • En 5 ciclos de tendencia mayor a 60 ciclos, el precio más alto creará 10 nuevos altos de la línea k, y luego un segundo aumento de posición. En 5 ciclos de tendencia menor a 60 ciclos, el precio más bajo creará 10 nuevos bajos de la línea k, y luego un segundo aumento de posición.
  • Para la primera vez que se agrega más posiciones, para crear 5 líneas k nuevas bajas o menores puntos de parálisis de pérdidas.
  • Para el segundo aumento de la posición, el estancamiento de la horquilla en línea recta con 5 ciclos y 60 ciclos; plano vacío inverso.

El código es:

MA5^^MA(C,5);
MA10^^MA(C,10);
MA20:=MA(C,20);
MA60^^MA(C,60);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
HH:=HV(H,10);
LL:=LV(L,10);
CROSSUP(MA5,MA10)&&BKVOL=0&&C>=O,BK('A',2);
CROSSDOWN(MA5,MA10)&&SKVOL=0&&C<=O,SK('A',2);
CROSSUP(MA5,MA60)&&ISLASTBK&&BKVOL=2,BK('A',1);
CROSSDOWN(MA5,MA60)&&ISLASTSK&&SKVOL=2,SK('A',1);
MA5>MA60&&H>HH&&ISLASTSP&&REF(GROUPBKVOL('A'),BARSSP+1)>0,BK('B',1);
MA5<MA60&&L<LL&&ISLASTBP&&REF(GROUPSKVOL('A'),BARSBP+1)>0,SK('B',1);
L<LV(L,5)||C<REF(L,BARSBK)&&(C<BKPRICE-2*MINPRICE),SP('A',GROUPBKVOL('A'));
H>HV(H,5)||C>REF(H,BARSSK)&&(C>SKPRICE+2*MINPRICE),BP('A',GROUPSKVOL('A'));
C>BKPRICE+10*MINPRICE||CROSSDOWN(MA5,MA60),SP('B',BKVOL);
C<SKPRICE-10*MINPRICE||CROSS(MA5,MA60),BP('B',SKVOL);

Los ejemplos anteriores son análisis de casos concretos de estos dos modelos, donde el lector puede ver cómo My Language trata las instrucciones de agrupación, y cómo cada uno puede formular diferentes requisitos de agrupación según su propia lógica de estrategia, para tratar de expresar la lógica de estrategia que desea expresar en el código de la manera más clara y con el menor número de errores posible.


Más.