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?
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)
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:
Modelo sin filtro:
Nota: las condiciones de posición cerrada sin agrupar solo se pueden abrir en condiciones de posición cerradas sin agrupar
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.
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.
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.