0
tập trung vào
78
Người theo dõi

Viết hướng dẫn nhóm trong chiến lược giao dịch định lượng

Được tạo ra trong: 2019-07-10 09:55:13, cập nhật trên: 2019-07-16 15:37:32
comments   0
hits   2376

Tại sao lại có những chỉ thị phân nhóm?

Nhu cầu của các nhà phát triển chiến lược

Tôi có thể thiết lập chênh lệch giá dừng lỗ khác nhau cho các điều kiện mở vị trí khác nhau không?

Ví dụ, mô hình truyền thống viết các điều kiện đóng không phân biệt các điều kiện mở khác nhau.

Sau đây là một đoạn mã đơn giản cho một chiến lược mở kho không phân biệt các điều kiện cổ phiếu truyền thống:

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;

Nhưng việc sử dụng lệnh phân nhóm thì khác.

Chỉ thị phân nhóm có thể được chia thành n nhóm đối với điều kiện mở bằng, vị trí mở bằng của một nhóm chỉ có thể được điều kiện bằng của một nhóm tương ứng, điều kiện bằng của các nhóm khác sẽ không được báo hiệu và không được ủy thác.

Ví dụ:

Nhóm 1 làm nhiều điều kiện

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

Nhóm thứ hai làm nhiều điều kiện.

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;

Làm thế nào để phân biệt các nhóm điều kiện khác nhau trong cùng một mô hình?

Phương thức viết lệnh phân nhóm

Đầu tiên, mô hình được chia thành mô hình lọc và không lọc:

  • Mô hình lọc: các điều kiện mở kho khác nhau muốn thanh toán bằng các điều kiện thanh toán khác nhau, có thể thực hiện bằng cách sử dụng nhóm chỉ thị.

  • Mô hình không lọc: Chiến lược nhập đầu tiên khác với chiến lược đặt cược, muốn thanh toán bằng chiến lược dừng lỗ khác nhau, có thể thực hiện bằng cách sử dụng nhóm chỉ thị.

Mô hình lọc

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

Lưu ý: Phân nhóm của mô hình lọc là cần phải tham gia nhóm sau lệnh giao dịch và gộp lại bằng dấu ngoặc kép đơn. Ví dụ: BK ((‘A’)

Mô hình không lọc

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

Lưu ý: Phân nhóm của mô hình không lọc cần được thêm vào nhóm và số lần sau lệnh giao dịch, nhóm cần được gộp lại bằng một dấu ngoặc kép. Ví dụ: BK ((‘A’,2)

Cơ chế hoạt động của lệnh phân nhóm

Mô hình lọc: lọc nhóm và sau đó là lọc tín hiệu

  • Bộ lọc nhóm có nghĩa là: nếu tín hiệu K đầu tiên là tín hiệu mở kho của nhóm A ((BK SK BPK SPK) thì tín hiệu K hiện tại chỉ có thể là tín hiệu bán kho của nhóm A. Nếu tín hiệu K đầu tiên là tín hiệu bán kho của nhóm A ((BP SP) thì tín hiệu K hiện tại có thể là tín hiệu mở kho của bất kỳ nhóm nào. ((Lấy tín hiệu mở kho đầu tiên theo thứ tự tín hiệu xuất hiện))

  • Các điều kiện mở vị thế không phân nhóm chỉ có thể được mở các điều kiện mở vị thế không phân nhóm

Bộ lọc tín hiệu là bộ lọc tín hiệu phẳng.

Bước thứ tự là:

  • Dòng K trên là BK Dòng K hiện tại phải là SPK hoặc SP (SPK được ưu tiên hơn SP, tương tự như sau)
  • K trên là SK và K hiện tại phải là BPK hoặc BP
  • Dòng K trên là BP, dòng K hiện tại phải là BK hoặc SK
  • Dòng K trên là SP. Dòng K hiện tại phải là BK hoặc SK.
  • K trên là BPK, K hiện tại phải là SPK hoặc SP
  • Dòng K trên là SPK, dòng K hiện tại phải là BPK hoặc BP

Mô hình không lọc:

  • Nếu tín hiệu trước là tín hiệu mở kho gửi từ nhóm A, tín hiệu tiếp theo phải là tín hiệu tăng kho hoặc tín hiệu giảm kho của nhóm A.
  • Nếu tín hiệu trước là tín hiệu giữ vị trí của nhóm A và nhóm A giữ vị trí là 0, tín hiệu tiếp theo có thể là tín hiệu mở vị trí của bất kỳ nhóm nào.
  • Nếu nhóm A giữ vị thế lớn hơn 0, thì phải có tín hiệu mở hoặc tín hiệu yên cho nhóm A.

Lưu ý: Các điều kiện đóng cửa không phân nhóm chỉ có thể mở cửa các điều kiện đóng cửa không phân nhóm

Phân tích trường hợp của chỉ thị phân nhóm

Tiếp theo, chúng ta sẽ sử dụng một số ví dụ để xem các lệnh này được sắp xếp như thế nào khi viết mã.

Mô hình lọc

Phương pháp giao dịch: Xác định xu hướng bằng 20 chu kỳ và 60 chu kỳ.

  • Đường trung bình 20 chu kỳ lớn hơn đường trung bình 60 chu kỳ.
  • Trong nhiều xu hướng, nếu giá cao nhất đạt 10 đường k mới cao và là đường dương, xu hướng nhiều hơn. Khi dừng chân, dừng chân bằng điểm dừng lỗ lớn hơn hoặc xuất hiện đường trung bình.
  • Trong nhiều xu hướng, nếu chỉ số KDJ Gold Forks và là đường nắng, các khu vực làm nhiều. Khi giao dịch bằng phẳng, bằng một điểm dừng nhỏ hơn để dừng giao dịch bằng phẳng hoặc giảm xuống khu vực mở vị trí bằng phẳng điểm dừng giao dịch bằng phẳng thấp nhất k line.

Mã số:

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;

Mô hình không lọc

Phương pháp giao dịch: Cài đặt lần đầu tiên với 5 chu kỳ và 10 chu kỳ.

  • 5 chu kỳ và 60 chu kỳ trung bình của các cổ phiếu được thêm vào trước khi lần đầu tiên mở một vị trí nhiều và không có vị trí thấp. 5 chu kỳ và 60 chu kỳ trung bình của các cổ phiếu chết được thêm vào trước khi lần đầu tiên mở một vị trí trống và không có vị trí thấp.
  • Trong 5 chu kỳ lớn hơn 60 chu kỳ xu hướng, giá cao nhất đạt 10 root k đường mới cao, sau đó lần thứ hai gia tăng vị trí. Trong 5 chu kỳ nhỏ hơn 60 chu kỳ xu hướng, giá thấp nhất đạt 10 root k đường mới thấp, sau đó lần thứ hai tháo lỗ.
  • Đối với lần đầu tiên thêm vị trí, bằng cách tạo ra 5 gốc k dòng thấp hơn hoặc nhỏ hơn điểm dừng lỗ bằng phẳng vị trí.
  • Đối với vị trí tăng thêm lần thứ hai, bằng phẳng bằng phẳng bằng phẳng bằng phẳng bằng 5 chu kỳ và 60 chu kỳ.

Mã số:

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

Dưới đây là phân tích các trường hợp cụ thể của cả hai loại mô hình, từ đó người đọc có thể thấy cách ngôn ngữ của tôi xử lý các chỉ thị phân nhóm, bạn có thể tạo các yêu cầu phân nhóm khác nhau theo logic chính sách của mình, để có thể thể hiện logic chính sách muốn thể hiện trong mã theo cách rõ ràng nhất và ít lỗi nhất có thể.