0
Seguir
78
Seguidores

Cómo escribir instrucciones de agrupación en estrategias de trading cuantitativo

Creado el: 2019-07-10 09:55:13, Actualizado el: 2019-07-16 15:37:32
comments   0
hits   2376

¿Por qué las instrucciones de agrupación?

Necesidades de los desarrolladores de estrategias

¿Puedo establecer un diferencial de stop loss para diferentes condiciones de apertura?

Por ejemplo, los modelos tradicionales escriben las condiciones de posición cerrada sin distinguir entre las diferentes condiciones de apertura.

El siguiente código es una estrategia sencilla para abrir una posición de manera indistinta y tradicional:

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;

Pero el uso de la directiva de agrupamiento es diferente.

Las instrucciones de agrupamiento pueden dividirse en n grupos de condiciones de estabilización, y las posiciones de estabilización de un grupo solo se pueden estabilizar con las condiciones de estabilización correspondientes a un grupo, y las condiciones de estabilización de otros grupos no se cumplen.

Por ejemplo:

El primer grupo hace más condiciones.

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

El segundo grupo hace más condiciones.

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 diferenciar los diferentes grupos de condiciones en un mismo modelo?

Cómo se escribe una directiva de agrupación

En primer lugar, los modelos se dividen en modelos filtrados y no filtrados:

  • Modelo de filtrado: diferentes condiciones de apertura de posición para cerrar con diferentes condiciones de liquidación, que se puede implementar mediante el agrupamiento de instrucciones.

  • Modelo no filtrado: La estrategia de entrada inicial es diferente a la estrategia de subida de posición, y se puede realizar mediante el agrupamiento de instrucciones para cerrar posiciones con una estrategia de cierre de pérdida diferente.

Modelo de filtración

//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: El grupo de los modelos de filtración es el que se necesita para agregar a los grupos después de la instrucción de negociación y rodearlos con una sola referencia. 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: El grupo de los modelos no filtrados requiere agregar el grupo y el número de manos después de la instrucción de negociación, y el grupo debe estar rodeado de comillas. Por ejemplo, BK ((‘A’,2)

Mecanismo de funcionamiento de las instrucciones de agrupamiento

Modelo de filtrado: primero grupo de filtros y luego señal de filtros

  • El filtro de grupo significa: si la señal de la línea K anterior es una señal de apertura de la posición emitida por el grupo A ((BK SK BPK SPK) la línea K actual puede ser solo una señal de apertura de la posición del grupo A. Si la señal de la línea K anterior es una señal de apertura de la posición emitida por el grupo A ((BP SP) la línea K actual puede ser una señal de apertura de la posición de cualquier grupo.

  • Las condiciones de posición cerrada sin agrupar solo pueden ser condiciones de posición abierta sin agrupar

El filtro de la señal es: el filtro de la señal de plano abierto

El orden de prioridad es:

  • La línea K superior es BK y la línea K actual debe ser SPK o SP (SPK tiene prioridad sobre SP, lo que equivale a)
  • La línea K anterior es SK y la línea K actual debe ser BPK o BP
  • La línea K superior es BP y la línea K actual debe ser BK o SK
  • La línea K anterior es SP y la línea K actual debe ser BK o SK.
  • La línea K superior es BPK y la línea K actual debe ser SPK o SP
  • La línea K superior es SPK y la línea K actual debe ser BPK o BP

Modelo sin filtro:

  • Si la señal anterior es una señal de apertura de posición emitida por el grupo A, la siguiente señal debe ser una señal de subida de posición o una señal de baja de posición del grupo A.
  • Si la señal anterior es la señal de posición cerrada del grupo A y el grupo A tiene una posición de 0, la siguiente señal puede ser la señal de apertura de posición de cualquier grupo.
  • Si el grupo A mantiene una posición mayor a 0, debe haber una señal de apertura de posición para el grupo A o una señal de posición cerrada para el grupo A.

Nota: las condiciones de posición cerrada sin agrupar solo se pueden abrir en condiciones de posición cerradas sin agrupar

Análisis del caso de las directivas de agrupación

A continuación, vamos a ver cómo se agrupan estas instrucciones en el código, con algunos ejemplos de estrategias.

Modelo de filtración

La estrategia de negociación: el criterio para juzgar la tendencia es la línea de 20 y 60 ciclos.

  • Haga más sobre la línea media de 20 ciclos que sobre la línea media de 60 ciclos. Por el contrario, haga vacío.
  • En una tendencia múltiple, si el precio más alto alcanza la línea k de 10 y es el sol, la tendencia es más. Al cerrar la posición, cierre la posición con un punto de parada más grande o aparezca una posición de parada de la línea media. Haga el contrario.
  • En una tendencia de multiplicación, si el indicador de KDJ es un forcado y una línea de sol, la franja de multiplicación. Al cerrar la posición, cierre la posición con un punto de parada menor o abra una posición con una franja de pérdida menor.

Código:

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

La estrategia de negociación: con 5 ciclos y 10 ciclos de la línea de la horca de la horca muerta como condición de la primera apertura de la posición.

  • Se añade un forja de oro de 5 y 60 ciclos antes de la apertura de la primera posición y sin posición baja. Se añade un forja de oro de 5 y 60 ciclos antes de la apertura de la primera posición y sin posición baja.
  • En 5 ciclos mayores a 60 ciclos de la tendencia, el precio más alto creado 10 raíz k línea nueva alta, y luego una segunda vez más de la posición. En 5 ciclos menores a 60 ciclos de la tendencia, el precio más bajo creado 10 raíz k línea nueva baja, y luego una segunda vez más de la posición vacía.
  • Para la primera posición adicional, para hacer 5 raíces de la línea k de nuevo bajo o menor punto de parada para nivelar la posición .
  • Para el segundo aumento de la posición, en 5 y 60 períodos de la línea media de la posición de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea

Código:

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);

Lo anterior es un análisis de casos concretos de estos dos tipos de modelos, a partir de los cuales el lector puede ver cómo el lenguaje de My maneja las instrucciones de agrupación, y puede crear diferentes requisitos de agrupación de acuerdo con su propia lógica de estrategia, para que la lógica de la estrategia que se desea expresar se exprese en el código de la manera más clara y con menos errores posible.