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.
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 (
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 (
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:
Modelo sin filtro:
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.
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.
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.