Die Bedürfnisse von Strategieentwicklern
Für verschiedene Märkte müssen verschiedene Indikatoren verwendet werden. Kann ich unterschiedliche Stop-Loss-Differenzen für verschiedene Anlaufbedingungen festlegen?
So unterscheidet das herkömmliche Modell, in dem die Ausgleichsbedingungen geschrieben werden, nicht zwischen den verschiedenen Eröffnungsbedingungen.
Der folgende Code ist eine einfache Strategie, die traditionell nicht unterscheidet zwischen Lagerbedingungen:
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 nicht so, wenn man die Anweisungen für die Zusammenstellung benutzt.
Die Komponentenanweisung kann die Ausgleichsbedingungen in n Gruppen aufteilen, wobei nur die Ausgleichsbedingungen für eine Gruppe ausgeglichen werden können, und die Ausgleichsbedingungen für andere Gruppen nicht signalisiert oder beauftragt werden.
Zum Beispiel:
Die erste Gruppe ist mehrbedingter
MA5^^MA(C,5);
MA10^^MA(C,10);
CROSS(MA5,MA10),BK;
CROSS(MA10,MA5),SP;
Die zweite Gruppe war mehr als bedingt.
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 demselben Modell?
Zunächst wird das Modell in Filtermodelle und Nichtfiltermodelle unterteilt:
Filtermodell: Verschiedene Ausgangszustände wollen mit verschiedenen Ausgangszuständen ausgeglichen werden, was mit der Anweisung "Gruppieren" erreicht werden kann.
Nicht-filterendes Modell: Die erste Eintrittsstrategie unterscheidet sich von der Aufstockungsstrategie, bei der man sich mit verschiedenen Stop-Loss-Bilanzierungsstrategien ausgleichen möchte, die mit der Anweisungsgruppierung realisiert werden können.
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;//过滤函数
Hinweis: Eine Filtermodellgruppe ist eine Gruppe, die nach einer Transaktionsanweisung zusammengefasst und mit einem Komma gekennzeichnet werden muss.
Nicht-filternde Modelle
//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'));
Hinweis: Eine Gruppe in einem nicht-filternden Modell benötigt nach einer Transaktionsanweisung Gruppen und Handzahlen, die mit einem einzigartigen Anführungszeichen gekennzeichnet sind.
Wie BK (
Filtermodell: Erst das Gruppenfilter, dann das Signalfilter
Die Gruppefilterung bedeutet: Wenn das vorherige K-Signal das Eröffnungssignal der Gruppe A ist (BK SK BPK SPK), kann das aktuelle K-Signal nur das Eröffnungssignal der Gruppe A sein. Wenn das vorherige K-Signal das Eröffnungssignal der Gruppe A ist (BP SP), kann das aktuelle K-Signal das Eröffnungssignal der beliebigen Gruppe sein (BK SK BPK SPK).
Nicht gruppierte Ausgleichsbedingungen können nur für nicht gruppierte Ausgleichsbedingungen verwendet werden.
Signalfilter: Filter für ein offenes Signal
Die Prioritäten sind:
Ein nicht-filterndes Modell:
Im Folgenden werden wir einige Strategien als Beispiele anführen, um zu sehen, wie diese Befehle beim Schreiben von Code zusammengefasst werden.
Filtermodell
Handelstheorie: Trends werden mit 20- und 60-Zyklus-Goldforken als Trendkriterium beurteilt.
Der 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-filternde Modelle
Handelsidee: Als Voraussetzung für die Eröffnung einer Position mit 5- und 10-Zyklus-Goldforks.
Der 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 der beiden Modelle, aus der der Leser sehen kann, wie die My-Sprache die Komponentenanweisungen behandelt. Jeder kann unterschiedliche Komponentenanforderungen nach seiner eigenen Strategie-Logik erstellen, um die gewünschte Strategie-Logik in der Code so klar und fehlerfrei wie möglich darzustellen.