0
fokus pada
78
Pengikut

Menulis arahan kumpulan dalam strategi perdagangan kuantitatif

Dicipta dalam: 2019-07-10 09:55:13, dikemas kini pada: 2019-07-16 15:37:32
comments   0
hits   2376

Mengapa arahan pengelompokan

Keperluan pembangun strategi

Apakah saya boleh menetapkan perbezaan harga hentian yang berbeza mengikut keadaan pembukaan yang berbeza?

Sebagai contoh, model tradisional menulis syarat kedudukan kosong tanpa membezakan antara syarat pembukaan yang berbeza.

Kode berikut adalah strategi yang mudah untuk membuka syarat-syarat tanpa membezakan:

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;

Ia berbeza dengan menggunakan arahan pengelompokan.

Arahan pengelompokan boleh dibahagikan kepada n kumpulan untuk syarat pembukaan, kedudukan terbuka bersyarat untuk satu kumpulan hanya dapat diselesaikan oleh syarat pembukaan yang sesuai dengan satu kumpulan, dan syarat pembukaan yang sesuai dengan kumpulan lain tidak akan memberi isyarat, dan tidak akan diamanahkan.

Contohnya:

Kumpulan pertama melakukan pelbagai syarat.

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

Kumpulan kedua melakukan pelbagai syarat.

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;

Bagaimana untuk membezakan antara kumpulan syarat yang berbeza dalam model yang sama? Mari kita amalkan mereka.

Cara untuk menulis arahan pengelompokan

Pertama, model terbahagi kepada model penapis dan model tidak penapis:

  • Model penapisan: syarat pembukaan yang berbeza ingin menetapkan kedudukan dengan syarat kedudukan yang berbeza, boleh digunakan untuk mengelompokkan arahan.

  • Model yang tidak disaring: Strategi masuk pertama berbeza dengan strategi kenaikan, anda ingin melakukan penyelesaian dengan strategi hentikan kerugian yang berbeza, anda boleh menggunakan pengelompokan arahan.

Model penapis

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

Nota: Kumpulan dalam model penapisan perlu dimasukkan ke dalam kumpulan selepas arahan perdagangan dan dibungkus dengan tanda petik tunggal. Contohnya BK ((‘A’)

Model tanpa penapis

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

Nota: Kumpulan model yang tidak disaring perlu ditambah kumpulan dan nombor tangan selepas arahan perdagangan, dan kumpulan perlu dibungkus dengan tanda petik tunggal. Contohnya BK ((‘A’,2)

Mekanisme arahan pengelompokan

Model penapis: penapis kumpulan dan penapis isyarat

  • Penapis kumpulan bermaksud: jika isyarat K baris terdahulu adalah isyarat bukaan saham yang dikeluarkan oleh kumpulan A (((BK SK BPK SPK) isyarat K baris semasa hanya boleh menjadi isyarat bukaan saham kumpulan A. Jika isyarat K baris terdahulu adalah isyarat bukaan saham yang dikeluarkan oleh kumpulan A (((BP SP) isyarat K baris semasa boleh menjadi isyarat bukaan saham kumpulan mana-mana . (((ambil isyarat bukaan saham pertama mengikut urutan isyarat muncul)

  • Syarat kedudukan kosong tanpa pengelompokan hanya boleh syarat kedudukan terbuka tanpa pengelompokan

Penapisan isyarat bermaksud: penapisan isyarat terbuka

Urutan keutamaan:

  • Garis K teratas adalah BK Garis K semasa mestilah SPK atau SP (SPK lebih utama daripada SP, sama dengan berikut)
  • Garis K teratas adalah SK Garis K semasa mestilah BPK atau BP
  • Garis K di atas ialah BP Garis K semasa mestilah BK atau SK
  • Garis K di atas adalah SP dan Garis K semasa mestilah BK atau SK.
  • Garis K di atas adalah BPK Garis K semasa mestilah SPK atau SP
  • Garis K teratas adalah SPK Garis K semasa mestilah BPK atau BP

Model tanpa penapis:

  • Jika isyarat terdahulu adalah isyarat pembukaan kedudukan yang dikeluarkan oleh kumpulan A, isyarat seterusnya mestilah isyarat kenaikan kedudukan atau isyarat penurunan kedudukan kumpulan A.
  • Jika isyarat terdahulu adalah isyarat penutupan kumpulan A dan kumpulan A memegang kedudukan 0, isyarat seterusnya boleh menjadi isyarat bukaan untuk kumpulan mana-mana.
  • Jika Kumpulan A memegang kedudukan lebih besar daripada 0, maka ia mesti menjadi isyarat bukaan kedudukan atau isyarat kedudukan kosong untuk Kumpulan A.

Nota: Syarat kedudukan kosong tanpa pengelompokan hanya boleh syarat kedudukan terbuka tanpa pengelompokan

Analisis kes arahan pengelompokan

Seterusnya, kita akan melihat bagaimana arahan dikelompokkan semasa kita menulis kod, dengan beberapa contoh strategi.

Model penapis

Idea perdagangan: dengan 20 kitaran dan 60 kitaran rata-rata garpu mati garpu sebagai kriteria untuk menilai trend.

  • Di atas garis purata 20 kitaran lebih besar daripada garis purata 60 kitaran. Sebaliknya, kosong.
  • Dalam melakukan tren berganda, jika harga tertinggi mencapai 10 garis k tinggi baru dan garis matahari, tren lebih banyak. Apabila kedudukan terhad, berhenti dengan titik kerugian yang lebih besar atau berlaku kedudukan terhad yang rata-rata.
  • Dalam melakukan lebih banyak trend, jika penunjuk KDJ bercabang emas dan adalah garis matahari, lebih banyak gelombang. Apabila kedudukan yang lemah, berhenti dengan titik pelupusan yang lebih kecil atau membuka kedudukan yang paling rendah pada garis k.

Kod:

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;

Model tanpa penapis

Idea perdagangan: dengan 5 kitaran dan 10 kitaran rata-rata garpu mati garpu sebagai syarat untuk membuka kedudukan pertama.

  • 5 kitaran dan 60 kitaran rata-rata garpu emas tambah banyak kedudukan sebelum pertama kali membuka kedudukan dan tidak ada kedudukan kosong. 5 kitaran dan 60 kitaran rata-rata garpu mati tambah kosong kedudukan sebelum pertama kali membuka kedudukan kosong dan tidak ada kedudukan kosong.
  • Dalam 5 kitaran lebih besar daripada 60 trend kitaran, harga tertinggi mencapai 10 root k barisan tinggi baru, maka kedua kali menambah kedudukan. Dalam 5 kitaran kurang daripada 60 trend kitaran, harga terendah mencapai 10 root k barisan rendah baru, maka kedua kali kosong kedudukan.
  • Untuk pertama kali menambah kedudukan, dengan membuat 5 akar k garis baru rendah atau lebih kecil titik henti kerugian meratakan kedudukan ≠ kosong sebaliknya ≠
  • Untuk kedua kali menambah kedudukan, dengan 5 kitaran dan 60 kitaran rata-rata, kedudukan mati dan rata-rata.

Kod:

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

Di atas adalah analisis kes-kes khusus untuk kedua-dua jenis model ini, yang mana pembaca dapat melihat bagaimana bahasa saya menangani arahan pengelompokan, kita boleh membuat keperluan pengelompokan yang berbeza mengikut logik strategi kita sendiri, sehingga logik strategi yang ingin dinyatakan dapat ditunjukkan dalam kod dengan cara yang paling jelas dan paling sedikit kesilapan.