0
konzentrieren Sie sich auf
78
Anhänger

Verfassen von Gruppierungsanweisungen in quantitativen Handelsstrategien

Erstellt in: 2019-07-10 09:55:13, aktualisiert am: 2019-07-16 15:37:32
comments   0
hits   2376

Warum eine Gruppenrichtlinie

Die Bedürfnisse von Strategieentwicklern

Kann ich eine unterschiedliche Stop-Loss-Differenz für verschiedene Aufnahmebedingungen festlegen?

So werden beispielsweise in einem herkömmlichen Modell keine Unterschiede zwischen den verschiedenen Aufnahmebedingungen gemacht.

Der folgende Code ist eine einfache Strategie zur traditionellen, nicht differenzierten Eröffnung von Positionsbedingungen:

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;

Das ist eine andere Art von Gruppen-Instruktion.

Die Gruppenanweisung kann für die Ausgleichsbedingungen in n Gruppen unterteilt werden, wobei die geöffneten Positionen einer Gruppe nur für die Ausgleichsbedingungen der entsprechenden Gruppe ausgeglichen werden können. Die Ausgleichsbedingungen der anderen Gruppen werden nicht signalisiert oder beauftragt.

Zum Beispiel:

Die erste Gruppe hat mehrere Bedingungen.

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

Die zweite Gruppe hat mehrere Bedingungen.

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;

Wie unterscheiden wir verschiedene Gruppen von Bedingungen in einem Modell?

Schreibweise der Gruppierungsanweisung

Zunächst werden die Modelle in Filter- und Nicht-Filter-Modelle unterteilt:

  • Filtermodell: Verschiedene Anlagebedingungen, um mit unterschiedlichen Ausgleichsbedingungen auszugleichen, kann mit der Gruppenbildung von Anweisungen umgesetzt werden.

  • Unfiltermodell: Die Erst-Eintritts-Strategie unterscheidet sich von der Aufnahme-Strategie. Die Ausgleichs-Strategie wird durch eine andere Stop-Loss-Strategie ersetzt, die mit der Anweisungsgruppierung umgesetzt werden kann.

Filtermodell

//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;//过滤函数

Anmerkung: Die Gruppierung des Filtermodells ist erforderlich, um die Gruppe nach dem Handelsbefehl zu verbinden und mit einem Einzigezeichen zu umfassen. Wie BK ((‘A’)

Nicht-Filtermodell

//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'));

Anmerkung: Die Gruppe der nicht-filternden Modelle muss nach dem Handelsbefehl mit einer Gruppe und einer Handnummer versehen werden. Die Gruppe muss mit einem einzigen Komma umschrieben werden. Wie BK ((‘A’,2)

Die Funktionsweise der Gruppierungsanweisung

Filtermodell: Zunächst Gruppefilter, dann Signalfilter

  • Eine Gruppefilterung bedeutet: Wenn das vorherige K-Linie-Signal ein Open-Position-Signal aus Gruppe A ist ((BK SK BPK SPK), kann das aktuelle K-Line-Signal nur ein Open-Position-Signal aus Gruppe A sein. Wenn das vorherige K-Linie-Signal ein Open-Position-Signal aus Gruppe A ist ((BP SP), kann das aktuelle K-Line-Signal ein Open-Position-Signal aus einer beliebigen Gruppe sein.

  • Ungruppierte Stillstandsbedingungen können nur ungruppierte Aufnahmebedingungen sein

Signalfilterung bezeichnet die Filterung eines ausgeglichenen Signals.

Die Prioritäten sind:

  • Die oberste K-Linie ist BK, die aktuelle K-Linie muss SPK oder SP sein (SPK hat Vorrang vor SP, folgendes ist gleichbedeutend)
  • Die K-Linie oben ist SK, die K-Linie muss BPK oder BP sein.
  • Die oberste K-Linie ist BP, die aktuelle K-Linie muss BK oder SK sein
  • Die K-Linie oben ist SP, die K-Linie muss BK oder SK sein.
  • Die oberste K-Linie ist BPK, die aktuelle K-Linie muss SPK oder SP sein
  • Die oberste K-Linie ist SPK, die aktuelle K-Linie muss BPK oder BP sein

Nicht gefilterte Modelle:

  • Wenn das vorherige Signal ein Positionseröffnungssignal von Gruppe A ist, muss das nächste Signal ein Positionserhöhungs- oder -erhöhungssignal von Gruppe A sein.
  • Wenn das vorherige Signal ein Stillstandssignal für Gruppe A ist und Gruppe A eine Position von 0 hält, kann das nächste Signal ein Aufschlagsignal für eine beliebige Gruppe sein.
  • Wenn die Gruppe A eine Position von mehr als 0 hält, muss das Signal für die Gruppe A eine offene Position oder eine offene Position sein.

Anmerkung: Nicht-gruppierte Stillstandsbedingungen sind nur für nicht-gruppierte Aufnahmebedingungen gültig.

Fallanalyse der Gruppenrichtlinien

Als Nächstes werden wir einige Beispiele für Strategien anzeigen, um zu sehen, wie man diese Anweisungen beim Codieren zusammenfasst.

Filtermodell

Handelsideologie: Die Trendkriterien sind 20 und 60 Zyklen.

  • Wenn die 20-periodische Durchschnittslinie größer ist als die 60-periodische Durchschnittslinie, wird mehr getan.
  • In einem mehreren Trend, wenn der höchste Preis 10 K-Linie neu hoch und ist der Sonnenschein, der Trend mehr. Wenn die Position platziert, mit einem größeren Stop-Loss-Stopp-Position oder die mittlere Linie der Todesforke-Platzierung.
  • In einem Trend, wenn der KDJ-Indikator Goldfork und ist der Sonnenstrahl, die Bandbreite zu tun. Wenn die Position zu platzieren, mit einem kleineren Stop-Loss-Stopp-Stopp-Position oder Fallen in die Bandbreite zu öffnen, die Position zu platzieren, die k-Linie niedrigste Stop-Loss-Stopp-Position.

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;

Nicht-Filtermodell

Handelsmethode: Die erste Position wird mit einem 5- und 10-Zyklus-Linien-Dot-Fork als Bedingung für die Eröffnung der Position genommen.

  • 5 Zyklen und 60 Zyklen linearer Gold- und Goldfork-Höchstposition vor dem ersten Über- und Kein-Position. 5 Zyklen und 60 Zyklen linearer Dead- und Kein-Position vor dem ersten Über- und Kein-Position.
  • Bei 5 Perioden größer als 60 Perioden Trend, höchster Preis 10 Grundk-Linie neu hoch, dann zum zweiten Mal mehr Position. Bei 5 Perioden kleiner als 60 Perioden Trend, niedriger Preis 10 Grundk-Linie neu niedrig, dann zum zweiten Mal leer Position.
  • Nach dem ersten Aufschlag wird mit einer neuen oder kleineren Stop-Loss-Gleichstellung auf der K-Linie der 5-Kern-Linie geplatzt.
  • Nach dem zweiten Zugabe wird die Position mit 5 und 60 Zyklen durchschnittlich platziert. Die Position wird umgekehrt platziert.

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);

Das ist eine konkrete Fallanalyse für diese beiden Arten von Modellen, aus der der Leser sehen kann, wie die My-Sprache die Gruppierungsanweisungen handhabt. Sie können verschiedene Gruppierungsanforderungen nach ihrer eigenen Strategie-Logik erstellen, um die gewünschte Strategie-Logik in der Code möglichst klar und mit den geringsten Fehlern darzustellen.