Menulis arahan kumpulan dalam strategi dagangan kuantitatif

Penulis:Kebaikan, Dicipta: 2019-07-10 09:55:13, Dikemas kini: 2019-07-16 15:37:32

Mengapa perlu mengumpul arahan?

Keperluan pemaju strategi

Untuk pasaran yang berlainan, pertimbangan yang berbeza diperlukan. Bolehkah saya menetapkan harga stop loss yang berbeza mengikut keadaan awal yang berbeza?

Sebagai contoh, model tradisional menulis syarat-syarat kedudukan tidak membezakan antara syarat-syarat kedudukan yang berbeza.

Kod berikut adalah satu strategi mudah untuk tidak membezakan syarat penyimpanan tradisional:

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;

Perintah pemasangan berbeza.

Arahan pemasangan boleh membahagikan n kumpulan untuk keadaan rata, kedudukan terbuka bersyarat bagi satu kumpulan hanya dapat menyamakan keadaan rata yang sepadan dengan kumpulan tertentu, dan syarat rata yang lain tidak akan ditandakan atau 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 keadaan yang berbeza dalam model yang sama? Mari kita laksanakan mereka.

Cara penulisan arahan pembiakan

Pertama, model ini dibahagikan kepada model penapisan dan model tidak penapisan:

  • Model penapisan: Syarat bukaan yang berbeza ingin diselaraskan dengan syarat kedudukan yang berbeza, yang boleh dilaksanakan dengan menggunakan arahan pengelompokan.

  • Model tanpa penapisan: Strategi masuk pertama berbeza dengan strategi kenaikan harga, yang boleh dilaksanakan dengan menggunakan pembiakan 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: Pengelompokan model penapisan adalah yang memerlukan kumpulan yang disertakan selepas arahan dagangan dan dibungkus dengan tanda kutip tunggal seperti 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: Pengelompokan model tanpa penapisan memerlukan pengelompokan dan nombor tangan yang disertakan selepas arahan dagangan, dan pengelompokan perlu disertakan dengan tanda kutip tunggal. Contohnya BK ((A,2)

Mekanisme operasi arahan pemasangan

Model penapis: penapis kumpulan dan penapis isyarat

  • Penapisan kumpulan bermaksud: jika isyarat garis K sebelum ini adalah isyarat perdagangan yang dikeluarkan oleh kumpulan A (BK SK BPK SPK) baris K semasa hanya boleh menjadi isyarat perdagangan yang dikeluarkan oleh kumpulan A. Jika isyarat garis K sebelum ini adalah isyarat perdagangan yang dikeluarkan oleh kumpulan A (BP SP) baris K semasa boleh menjadi isyarat perdagangan yang dikeluarkan oleh kumpulan manapun (BK SK BPK SPK).

  • Keadaan kedudukan yang tidak dikelompokkan hanya boleh menjadi keadaan kedudukan yang tidak dikelompokkan

Penapisan isyarat bermaksud: penapisan isyarat terbuka

Peringkat keutamaan adalah:

  • Garis K atas adalah BK, Garis K semasa mestilah SPK atau SP (SPK lebih penting daripada SP, di bawah adalah sama)
  • Garis K atas ialah SK. Garis K sekarang mestilah BPK atau BP.
  • Garis K atas ialah BP. Garis K sekarang mestilah BK atau SK.
  • Garis K atas ialah SP. Garis K sekarang mestilah BK atau SK.
  • Garis K atas ialah BPK. Garis K sekarang mestilah SPK atau SP.
  • Garis K atas ialah SPK. Garis K sekarang mestilah BPK atau BP.

Model tanpa penapis:

  • Jika isyarat sebelumnya adalah isyarat bukaan bagi kumpulan A, isyarat seterusnya mestilah isyarat kenaikan atau isyarat perhentian bagi kumpulan A.
  • Jika isyarat sebelumnya adalah isyarat kedudukan untuk kumpulan A dan kumpulan A memegang kedudukan 0, isyarat seterusnya boleh menjadi isyarat kedudukan untuk kumpulan manapun.
  • Jika kedudukan kumpulan A lebih besar daripada 0, maka ini mesti menjadi isyarat pembukaan atau isyarat penghentian untuk kumpulan A. Perhatian: Syarat kedudukan yang tidak dikelompokkan hanya boleh digunakan untuk kedudukan yang tidak dikelompokkan

Analisis kes arahan pembahagian

Berikut adalah beberapa contoh strategi untuk melihat bagaimana arahan ini dikumpulkan semasa menulis kod.

Model penapis

Idea dagangan: menggunakan 20 kitaran dan 60 kitaran sebagai kriteria untuk menentukan trend.

  • Melakukan lebih banyak di atas garis purata 20 kitaran daripada garis purata 60 kitaran; sebaliknya, kosongkan.
  • Dalam melakukan banyak trend, jika harga tertinggi menubuhkan 10 garis k yang baru tinggi dan untuk garis matahari, trend lebih tinggi. Apabila berpaut, berpaut dengan titik stop loss yang lebih besar atau berpaut dengan garisan mati berpaut; lakukan kosong sebaliknya.
  • Dalam trend berlebih, jika penunjuk KDJ adalah garpu emas dan untuk garis matahari, rentang gelombang adalah lebih banyak. Apabila rata-rata, berhadapan dengan titik stop loss yang lebih kecil atau berhadapan dengan titik stop loss yang lebih rendah.

Kode:

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 dagangan: sebagai syarat untuk membuka dagangan pertama dengan 5 kitaran dan 10 kitaran.

  • 5 kitaran dan 60 kitaran pusingan berturut-turut sebelum pertama kali membuka lebih banyak kedudukan dan tidak berdamai; 5 kitaran dan 60 kitaran pusingan berturut-turut sebelum pertama kali membuka kosong dan tidak berdamai;
  • Pada 5 kitaran lebih besar daripada 60 kitaran trend, harga tertinggi mencipta 10 garis k baru tinggi, kemudian kedua kali lebih banyak kedudukan. Pada 5 kitaran kurang daripada 60 kitaran trend, harga minimum mencipta 10 garis k baru rendah, kemudian kedua kali lebih kosong kedudukan.
  • Untuk pertama kali menambah kedudukan, untuk membuat 5 garis k baru rendah atau lebih kecil titik penghentian kerugian.
  • Untuk kedua kali menambah kedudukan, kedudukan garpu lurus dengan 5 kitaran dan 60 kitaran.

Kode:

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 khusus untuk kedua-dua jenis model ini, pembaca dapat melihat bagaimana bahasa My menangani arahan pengumpulan, setiap orang boleh membuat keperluan pengumpulan yang berbeza mengikut logik strategi mereka sendiri, sehingga mereka dapat berusaha untuk menyatakan logik strategi yang ingin dinyatakan dalam kod dengan cara yang paling jelas dan paling sedikit kesilapan.


Lebih lanjut