量化取引戦略におけるグループ指令の書き込み

作者: リン・ハーン優しさ, 作成日: 2019-07-16 09:55:13, 更新日: 2019-07-16 15:37:32

なぜ命令をグループ化するのか

戦略開発者の必要性

異なる市場では異なる指標で判断する必要があります. 異なる開場条件に応じて異なるストップ損失差を設定できますか?

例えば,従来のモデルでは,平衡条件を記述する際に,異なる開設条件を区別しない.

このコードは,従来の不分別状態の簡単な戦略です.

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;

グループ化指令を使うのは違います

分群命令は,平衡条件を n グループに分け,あるグループの条件開いたポジションは,あるグループの対応平衡条件のみが平衡できる.他のグループの平衡条件を満たす場合は,信号を出せず,委託しない.

例えば:

1組は多条件で

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

2番目のグループは多条件

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;

同じモデル内の条件の異なるグループをどのように区別するか?それらを実現してみましょう.

分類指令の書き方

まず,モデルをフィルタリングモデルと非フィルタリングモデルに分けます.

  • フィルタリングモデル: 異なる開場条件を異なる平衡条件で平衡させたい.

  • 非フィルターモデル:最初の入場戦略は,異なるストップ損失平衡戦略で平衡したいと望んで,指令のグループ化を使用して実現することができる.

フィルターモデル

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

注: フィルタモデルでは,取引指示後にグループを組み,単語の引数で括り込む必要があります. 例えば BK (A)

フィルターなしのモデル

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

注意:非フィルターモデルでは,取引指示の後,グループと手数を追加する必要があり,グループが単語の引数で括り合わなければなりません. BK (A,2) といった

分類指令の動作メカニズム

フィルタリングモデル: グループフィルタリングから信号フィルタリング

  • グループフィルタとは,前回のK線信号がグループAからの開場信号である場合 (BK SK BPK SPK) 現在のK線はグループAの平成信号のみである.前回のK線信号がグループAからの平成信号である場合 (BP SP) 現在のK線は任意のグループからの開場信号である場合 (信号が出る順に最初の開場信号を取ります).

  • グループ化されていない平仓条件は,グループ化されていない平仓条件のみです.

シグナルフィルタリングとは,平面信号のフィルタリングです.

優先順位は以下の通りです.

  • 上の一つのK線はBKであり,現在のK線はSPKまたはSP (SPKはSPより優先され,以下の同義語) でなければならない.
  • 上のK線はSKで,現在のK線はBPKかBPでなければなりません.
  • 上のK線はBPで,現在のK線はBKかSKでなければなりません.
  • 上のK行はSPで,現在のK行はBKかSKでなければなりません.
  • 上のK線はBPKで,現在のK線はSPKかSPでなければなりません.
  • 上のK線はSPKで,現在のK線はBPKかBPでなければなりません.

フィルターなしのモデル:

  • 前回の信号がグループAから発信された開場信号である場合,次の信号はグループAの上場信号または平止信号である必要があります.
  • 前記信号がグループAの平衡信号で,グループAが保持する状態が0である場合,次の信号は任意のグループの開設信号となる.
  • グループAが0を超える場合は,グループAの開場信号または平止信号である必要があります. 注意: グループ化されていない平衡条件は, グループ化されていない平衡条件のみに有効です.

分類指令の事例分析

プログラムを書く時に,これらの指令がどのようにグループ化されているか,いくつかの戦略例で説明します.

フィルターモデル

取引の考え:20サイクルと60サイクルを基準として,均線金としてトレンド判断.

  • 20周期平均線より60周期平均線より大きい場合は,その上に多くを行う.
  • 多トレンドでは,最高価格が10根k線が新高で陽線である場合,トレンドは多である.平衡時,より大きな止損点で止損平衡または均線死叉平衡が発生する.空を逆にする.
  • 多動向の中で,KDJ指標が金叉で陽線である場合,波段は多である.平衡時,より小さな停止損平衡点で停止損平衡または波段を壊して開始する.k線最低停止損平衡点を空にする.逆である.

コード:

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;

フィルターなしのモデル

取引アイデア: 5サイクルと10サイクル均線金死叉を最初の取引条件として.

  • 最初の多ポジション開設前5サイクルと60サイクル均線金フォーク多ポジション. 最初の空ポジション開設前5サイクルと60サイクル均線死フォーク空ポジション.
  • 5サイクルのトレンドが60サイクルのトレンドより大きい場合,最高価格が10基k線新高,そして2度目の増進です. 5サイクルのトレンドが60サイクルのトレンド未満の場合,最低価格が10基k線新低,そして2度目の増進です.
  • 最初の追加後,5つのk線を新たに低か小かの止損点平衡に設定する.平空逆転.
  • 第2回追加後,5サイクルと60サイクルで均線死叉平置.平空逆転.

コード:

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

上記は,この2つのタイプのモデルの具体的な事例分析であり,My言語がグループ命令の処理方法を見ることができる.各人は,自分の戦略論理に基づいて異なるグループ要求を策定することができ,コードの中で表現したい戦略論理を最も明確でエラーが最小限に表現することができます.


もっと