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

Tác giả:Tốt, Tạo: 2019-07-10 09:55:13, Cập nhật: 2019-07-16 15:37:32

Tại sao nên phân loại các chỉ dẫn

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

Các thị trường khác nhau sẽ cần các chỉ số khác nhau để đánh giá. Tôi có thể đặt giá dừng lỗ khác nhau theo các điều kiện mở đầu khác nhau không?

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

Mã sau đây là một chiến lược đơn giản để không phân biệt các điều kiện đặt hàng 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;

Và điều này là rất khác với các chỉ dẫn phân nhóm.

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

Ví dụ:

Nhóm đầu tiên là 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 điều kiện khác nhau trong cùng một mô hình? Hãy thực hiện chúng.

Cách viết lệnh phân nhóm

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

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

  • Mô hình không lọc: Chiến lược đầu tiên vào khác với chiến lược tăng giá, bạn có thể thực hiện bằng cách sử dụng lệnh phân nhóm.

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à những nhóm cần được thêm vào sau lệnh giao dịch và được đóng gói bằng dấu phẩy đơn; ví dụ như 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 mô hình không lọc là những nhóm cần thêm nhóm và số tay sau lệnh giao dịch và nhóm cần được gộp lại bằng dấu chấm đơn. Ví dụ như 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à 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ở của nhóm A (BK SK BPK SPK) thì tín hiệu mở của nhóm A là tín hiệu mở của nhóm A. Nếu tín hiệu K đầu tiên là tín hiệu mở của nhóm A (BP SP), thì tín hiệu mở đầu của nhóm A là tín hiệu mở của nhóm A (BK SK BPK SPK).

  • Điều kiện giao dịch không phân nhóm chỉ có thể mở giao dịch không phân nhóm

Bộ lọc tín hiệu: bộ lọc tín hiệu mở

Các ưu tiên sau đây:

  • 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ự sau)
  • Dòng K trên cùng là SK. Dòng K hiện tại phải là BPK hoặc BP.
  • Dòng K trên cùng là BP, và Dòng K hiện tại phải là BK hoặc SK.
  • Dòng K đầu tiên là SP. Dòng K hiện tại phải là BK hoặc SK.
  • Dòng K trên cùng là BPK, và dòng K hiện tại phải là SPK hoặc SP.
  • Dòng K trên cùng 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ở của nhóm A, thì tín hiệu tiếp theo phải là tín hiệu tăng giá hoặc tín hiệu hòa vốn của nhóm A.
  • Nếu tín hiệu trước đó là tín hiệu ngang hàng của nhóm A và nhóm A giữ 0 thì tín hiệu tiếp theo có thể là tín hiệu mở cửa của bất kỳ nhóm nào.
  • Nếu nhóm A nắm giữ lớn hơn 0, thì phải có tín hiệu mở hoặc tín hiệu đóng cửa cho nhóm A. Lưu ý: Điều kiện giao dịch không phân loại chỉ có thể mở giao dịch không phân loại

Phân tích các trường hợp của lệnh phân chia

Sau đó, chúng ta sẽ sử dụng một vài chiến lược để xem các chỉ dẫn được sắp xếp như thế nào khi viết mã.

Mô hình lọc

Ý tưởng giao dịch: sử dụng 20 chu kỳ và 60 chu kỳ như một tiêu chuẩn để xác định xu hướng.

  • Làm nhiều hơn trên đường trung bình 20 chu kỳ hơn đường trung bình 60 chu kỳ.
  • Trong quá trình tăng xu hướng, nếu giá cao nhất là 10 đường k mới cao hơn và là đường dương, xu hướng tăng. Khi ổn định, hãy dừng lỗ bằng điểm dừng lớn hơn hoặc có sự ổn định cái cột ngang ngang.
  • Trong quá trình tăng xu hướng, nếu chỉ số KDJ là vàng và cho đường dương, dải sóng là nhiều. Khi ổn định, dừng lỗ ổn định với điểm dừng lỗ nhỏ hơn hoặc phá vỡ dải sóng để bắt đầu hoạt động. Đường k là điểm dừng lỗ thấp nhất.

Mã là:

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

Ý tưởng giao dịch: với 5 chu kỳ và 10 chu kỳ đường thẳng vàng chui như là điều kiện đầu tiên để mở giao dịch.

  • 5 chu kỳ và 60 chu kỳ đường thẳng vàng tăng thêm trước khi mở nhiều lần đầu tiên và không có sự cân bằng; 5 chu kỳ và 60 chu kỳ đường thẳng chết tăng thêm trước khi mở nhiều lần đầu tiên và không có sự cân bằng.
  • Trong 5 chu kỳ xu hướng lớn hơn 60 chu kỳ, giá cao nhất tạo ra 10 đường k mới cao hơn, sau đó thêm vị trí thứ hai. Trong 5 chu kỳ xu hướng nhỏ hơn 60 chu kỳ, giá thấp nhất tạo ra 10 đường k mới thấp hơn, sau đó thêm vị trí thứ hai.
  • Đối với lần đầu tiên thêm vị trí, tạo ra 5 đường k mới thấp hơn hoặc nhỏ hơn điểm dừng.
  • Đối với lần thứ hai, sau khi thêm vị trí, đặt chân ngang ngang 5 chu kỳ và 60 chu kỳ.

Mã là:

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à các phân tích trường hợp cụ thể của hai loại mô hình này, người đọc có thể thấy cách ngôn ngữ My xử lý các chỉ thị phân nhóm, mọi người có thể xây dựng các yêu cầu phân nhóm khác nhau theo logic chiến lược của riêng họ, để cố gắng thể hiện logic chiến lược mà họ muốn thể hiện trong mã theo cách rõ ràng nhất và ít lỗi nhất.


Thêm nữa