0
Suivre
78
Abonnés

Rédaction d'instructions de regroupement dans les stratégies de trading quantitatives

Créé le: 2019-07-10 09:55:13, Mis à jour le: 2019-07-16 15:37:32
comments   0
hits   2376

Pourquoi les instructions de groupage

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 ?

Comment écrire une instruction de groupage

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)

Mécanisme de fonctionnement de l’instruction de regroupement

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:

  • La ligne K supérieure est BK, la ligne K actuelle doit être SPK ou SP (SPK a la priorité sur SP, parallèle suivant)
  • La ligne K précédente est SK et la ligne K actuelle doit être BPK ou BP
  • La ligne K précédente est BP et la ligne K actuelle doit être BK ou SK
  • La première ligne K est SP, la ligne K actuelle doit être BK ou SK.
  • La ligne K supérieure est BPK, la ligne K actuelle doit être SPK ou SP
  • La première ligne K est SPK, la ligne K actuelle doit être BPK ou BP

Le modèle non filtré:

  • Si le signal précédent est un signal d’ouverture de position émis par le groupe A, le signal suivant doit être un signal d’acquisition ou de liquidation du groupe A.
  • Si le signal précédent est un signal de clôture pour le groupe A et que le groupe A détient une position de 0, le signal suivant peut être un signal d’ouverture pour n’importe quel groupe.
  • Si le groupe A détient une position supérieure à 0, un signal d’ouverture ou de clôture du groupe A doit être donné.

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

Analyse du cas de la directive de groupement

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.

  • La moyenne des 20 cycles est supérieure à la moyenne des 60 cycles. Au contraire, la moyenne des 20 cycles est supérieure à la moyenne des 60 cycles.
  • Lors d’une tendance de multiplication, si le prix le plus élevé atteint 10 k et que la ligne est la ligne du soleil, la tendance de multiplication. Lorsque la position est à l’arrêt, la position est à l’arrêt avec un point de rupture plus grand ou une position de rupture moyenne. Faire le contraire.
  • Dans une tendance à la multiplication, si l’indicateur KDJ est une fourchette et un rayonnement solaire, la zone de multiplication. Lorsque la position est à l’arrêt, cessez la position avec un point d’arrêt plus faible ou ouvrez la position au-dessus de la ligne de la zone de la zone la plus basse.

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.

  • Avant la première ouverture d’une position plus élevée et sans position plus basse, 5 cycles et 60 cycles avant la première ouverture d’une position plus basse et sans position plus basse. Avant la première ouverture d’une position vide et sans position plus basse, 5 cycles et 60 cycles avant la première ouverture d’une position vide et sans position plus basse, 5 cycles et 60 cycles avant la première ouverture d’une position vide.
  • Dans le cas d’une tendance de 5 cycles supérieure à 60 cycles, le prix le plus élevé atteint une nouvelle ligne de 10 racines k, puis une deuxième fois plus de positions. Dans le cas d’une tendance de 5 cycles inférieure à 60 cycles, le prix le plus bas atteint une nouvelle ligne de 10 racines k, puis une deuxième fois plus de positions vides.
  • Pour la première fois, après avoir ajouté une position, il est recommandé d’établir un nouveau point d’arrêt plus bas ou plus petit en créant 5 racines de la ligne k.
  • Pour la deuxième fois, après l’ajout d’une position, la position de mort-forcage est réglée en moyenne sur 5 cycles et 60 cycles. Le vide est inverse.

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.