Rédaction d'instructions de groupe dans une stratégie de transaction quantitative

Auteur:La bonté, Créé: 2019-07-10 09:55:13, mis à jour: 2019-07-16 15:37:32

Pourquoi les instructions doivent être regroupées

Les besoins des développeurs stratégiques

Pour les différents marchés, il est nécessaire d'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, le modèle traditionnel ne fait pas de distinction entre les différentes conditions d'ouverture.

Le code ci-dessous est une simple stratégie traditionnelle pour ne pas faire de distinction entre les conditions de stockage:

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;

Il y a une différence avec les instructions de regroupement.

L'instruction de regroupement permet de diviser n groupes pour les conditions d'équilibrage, les positions conditionnelles d'un groupe ne peuvent être équilibrées que par les conditions d'équilibrage correspondantes d'un groupe, les conditions d'équilibrage d'un autre groupe ne sont pas signalées et ne sont pas chargées.

Par exemple:

Le premier groupe est multi-conditionnel

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

Deuxième groupe, multi-conditionnel

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 conditions de différents groupes dans le même modèle?

Comment écrire des instructions de regroupement

Tout d'abord, les modèles sont divisés en modèles filtrés et non filtrés:

  • Modèle de filtrage: les différentes conditions d'ouverture veulent que les différentes conditions d'équilibrage soient équilibrées, ce qui peut être réalisé à l'aide de l'instruction de regroupement.

  • Modèle non filtré: la stratégie d'entrée initiale est différente de la stratégie d'augmentation du risque, qui consiste à appliquer des stratégies de compensation de la perte différente, qui peut être réalisée à l'aide de l'assemblage des 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 regroupement des modèles de filtrage nécessite d'ajouter des groupes après les instructions de transaction et de les regrouper avec des quotes-clés.

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 nécessitent l'ajout des groupes et des nombres de mains après les instructions de transaction, et les groupes doivent être regroupés par des guillemets. Par exemple BK (A, 2)

Mécanisme de fonctionnement des instructions de regroupement

Modèle de filtrage: filtrage de groupe, filtrage de signal

  • Le filtrage de groupe signifie: si le signal de ligne K précédent est le signal d'ouverture du groupe A (BK SK BPK SPK), le signal de position actuel ne peut être que le signal d'équilibre du groupe A. Si le signal de ligne K précédent est le signal d'équilibre du groupe A (BP SP), le signal de position actuel peut être le signal d'ouverture de n'importe quel groupe.

  • Les conditions de mise en place non groupées ne peuvent être remplacées que par des conditions d'ouverture non groupées.

Le filtrage du signal est le filtrage du signal ouvert.

Les priorités sont les suivantes:

  • La ligne K supérieure est BK. La ligne K actuelle doit être SPK ou SP (SPK a la priorité sur SP, l'asymétrie suivante)
  • La ligne K en haut est SK, la ligne K actuelle doit être BPK ou BP.
  • La première ligne K est BP. 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 en haut est BPK. La ligne K actuelle doit être SPK ou SP.
  • La ligne K en haut est SPK, la ligne K actuelle doit être BPK ou BP.

Les modèles non filtrés:

  • Si le signal précédent est le signal d'ouverture du groupe A, le signal suivant doit être le signal d'augmentation du groupe A ou le signal de levage.
  • Si le signal précédent est le signal d'équilibrage du groupe A et que le groupe A est en position 0, le signal suivant peut être le signal d'ouverture de l'opération pour n'importe quel groupe.
  • Si le groupe A détient une position supérieure à 0, il doit être un signal d'ouverture ou un signal d'équilibrage pour le groupe A. Remarque: les conditions d'équilibrage non regroupées ne sont valables que pour les conditions d'ouverture non regroupées.

Analyse de cas de commandes de segmentation

Nous allons voir comment ces instructions sont regroupées lors de l'écriture du code, avec quelques exemples de stratégies.

Modèle de filtrage

L'idée de trading: utiliser les 20 cycles et les 60 cycles comme critères de détermination de la tendance.

  • Faites plus au-dessus de la moyenne de 20 cycles que de la moyenne de 60 cycles. Faites le contraire.
  • Dans la tendance à la hausse, si le prix le plus élevé est de 10 k plus élevé et pour la ligne du soleil, la tendance est plus élevée. Lors de l'équilibre, un équilibre à un point de rupture plus grand ou un équilibre à une fourche morte homogène apparaît. Faire l'inverse.
  • Dans une tendance à la hausse, si l'indicateur KDJ est en forge dorée et pour la ligne du soleil, la bande d'onde est plus grande. Lors de l'équilibre, la bande d'onde est supérieure au point de rupture ou au point de rupture de la bande d'onde.

Le 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é

L'idée de la transaction: une condition pour ouvrir une position pour la première fois est une fourchette dorée horizontale de 5 cycles et de 10 cycles.

  • 5 cycles et 60 cycles d'affilée avant la première ouverture d'un poste sans équilibre; 5 cycles et 60 cycles d'affilée avant la première ouverture d'un poste sans équilibre.
  • Dans 5 cycles de tendance supérieure à 60 cycles, le prix le plus élevé crée un nouveau sommet de 10 bases de k, puis un deuxième plus grand poste. Dans 5 cycles de tendance inférieure à 60 cycles, le prix le plus bas crée un nouveau bas de 10 bases de k, puis un deuxième plus grand poste.
  • Pour la première fois, après avoir ajouté des positions, pour créer 5 lignes k, un nouveau point de rupture bas ou inférieur est établi.
  • Pour la deuxième fois, après avoir ajouté des positions, les positions de la fourchette sont alignées sur une ligne droite à 5 cycles et 60 cycles.

Le 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, qui permettent au lecteur de voir comment My Language traite les instructions de regroupement. Chacun peut élaborer des exigences de regroupement différentes en fonction de sa propre logique stratégique, afin de s'efforcer d'exprimer la logique stratégique souhaitée dans le code de la manière la plus claire et la moins erronée possible.


Plus de