Les besoins des développeurs de stratégies
Pour les différentes situations, il faut utiliser des indicateurs différents. Puis-je définir des différences de prix de stop-loss en fonction des différentes conditions d’ouverture ?
Par exemple, les modèles traditionnels écrivent les conditions de clôture sans faire de distinction entre les différentes conditions d’ouverture.
Le code ci-dessous est une stratégie simple et traditionnelle pour ouvrir des positions sans distinction:
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;
C’est différent d’utiliser une instruction de groupage.
L’instruction de regroupement peut être divisée en n groupes de conditions de mise en équilibre, la position de mise en équilibre d’un groupe ne peut être mise en équilibre que si les conditions de mise en équilibre d’un groupe sont remplies, les conditions de mise en équilibre des autres groupes ne sont pas signalées et ne sont pas confiées.
Par exemple:
Le premier groupe a fait des conditionnements.
MA5^^MA(C,5);
MA10^^MA(C,10);
CROSS(MA5,MA10),BK;
CROSS(MA10,MA5),SP;
Deuxième groupe, plus de conditions
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;
Comment distinguer les différents groupes de conditions dans un même modèle ?
Tout d’abord, les modèles sont divisés en modèles filtrés et non filtrés:
Modèle de filtrage: différentes conditions d’ouverture de la position, différentes conditions de mise en équilibre, peuvent être réalisées à l’aide d’un regroupement d’instructions.
Modèle sans filtrage: la stratégie d’entrée initiale est différente de la stratégie d’acquisition de position. La stratégie de mise en équilibre avec une stratégie de mise en équilibre différente peut être réalisée à l’aide d’un regroupement d’instructions.
Modèle de filtrage
//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;//过滤函数
Remarque: le groupe des modèles de filtrage est celui qui doit être ajouté au groupe après l’instruction de transaction et entouré d’une seule référence, comme BK ((‘A’)
Modèle non filtré
//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'));
Remarque: les groupes des modèles non filtrés doivent être ajoutés après l’instruction de la transaction. Les groupes doivent être entourés d’une seule virgule. comme BK ((‘A’,2)
Modèle de filtrage: filtrage de groupe et filtrage de signal
Le filtrage de groupe signifie que si le signal de la ligne K précédente est un signal d’ouverture de position émis par le groupe A (((BK SK BPK SPK), le signal de la ligne K actuelle ne peut être que le signal de placement du groupe A. Si le signal de la ligne K précédente est un signal de placement du groupe A (((BP SP), le signal de placement du groupe K actuel peut être le signal d’ouverture de position de n’importe quel groupe.
Les conditions de placement non regroupées ne peuvent être que les conditions d’ouverture non regroupées
Filtrage du signal désigne le filtrage des signaux en surface.
Voici les priorités:
Le modèle non filtré:
Remarque: les conditions de clôture de positions non regroupées ne peuvent être que les conditions de clôture de positions non regroupées
Ensuite, nous allons voir comment ces instructions sont regroupées dans le code avec quelques exemples de stratégies.
Modèle de filtrage
L’idée de négociation est de déterminer la tendance à l’aide d’une fourchette linéaire de 20 cycles et d’une fourchette de 60 cycles.
Code:
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;
Modèle non filtré
La méthode de négociation est la suivante: la condition pour la première ouverture de position est que la fourchette linéaire soit à 5 cycles et la fourchette morte à 10 cycles.
Code:
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);
Ce qui précède est une analyse de cas concrets de ces deux types de modèles, à partir desquels le lecteur peut voir comment le langage My traite les instructions de regroupement. On peut définir des exigences de regroupement différentes en fonction de sa propre logique de stratégie, afin d’exprimer la logique de stratégie souhaitée dans le code de la manière la plus claire et la moins erronée possible.