Sumber daya yang dimuat... Pemuatan...

3.3 Bagaimana menerapkan strategi dalam bahasa M

Penulis:Kebaikan, Dibuat: 2019-06-25 12:08:47, Diperbarui: 2023-11-11 17:01:30

img

Bagaimana menerapkan strategi dalam bahasa M

Ringkasan

Dalam artikel sebelumnya, kami menjelaskan premis mewujudkan strategi trading dari aspek pengenalan bahasa M, tata bahasa dasar, metode eksekusi model, dan klasifikasi model. dalam artikel ini, kami akan melanjutkan bagian sebelumnya, dari modul dan teknologi strategi yang umum digunakan. indikator, langkah demi langkah untuk membantu Anda mencapai strategi perdagangan kuantitatif intraday yang layak.

Modul Strategi

img

Pikirkan tentang hal itu, bagaimana Anda membangun robot dengan potongan Lego? Anda tidak bisa selalu dari atas ke bawah atau dari bawah ke atas, menyatukan bagian demi bagian. Orang dengan sedikit akal sehat tahu bahwa mereka harus menempatkan kepala, lengan, kaki, sayap, dll bersama-sama, dan kemudian menggabungkannya menjadi robot lengkap. Hal yang sama berlaku untuk menulis program, menulis fungsi yang diperlukan ke dalam modul strategi tunggal, dan kemudian menggabungkan modul strategi individu ini ke dalam strategi perdagangan yang lengkap. Di bawah ini saya akan mencantumkan beberapa modul strategi umum:

img

Peningkatan Tahap

Peningkatan tahap adalah menghitung persentase dari harga penutupan garis K saat ini dibandingkan dengan N periode sebelumnya dari perbedaan harga penutupan.

CLOSE_0:=CLOSE; //get the current K-line's closing price, and save the results to variable CLOSE_0. 
CLOSE_10:=REF(CLOSE,10); //get the pervious 10 K-lines' closing price, and save the results to variable CLOSE_10

(CLOSE_0-CLOSE_10)/CLOSE_10*100;//calculating the percentage of current K line's closing price compare with previous N periods of closing price's difference.

Harga tinggi baru

Harga tertinggi baru dihitung dengan apakah garis K saat ini lebih besar dari harga tertinggi N siklus.

HHV_10:=HHV(HIGH,10); //Get the highest price of latest 10 K-lines, which includes the current K-line.
HIGH>REF(HHV_10,1); //Judge whether the current K-line's highest price is greater than pervious K-lines' HHV_10 value.

Peningkatan harga dengan peningkatan volume perdagangan yang besar

Misalnya: Jika harga penutupan garis K saat ini adalah 1,5 kali harga penutupan 10 garis K sebelumnya, yang berarti dalam 10 hari, harga telah naik 50%; dan volume perdagangan juga meningkat lebih dari 5 kali dari 10 garis K sebelumnya. dapat ditulis:

CLOSE_10:=REF(CLOSE,10); //get the 10th K-line closing price
IS_CLOSE:=CLOSE/CLOSE_10>1.5; //Judging whether the current K Line closing price is 1.5 times greater than the value of CLOSE_10 

VOL_MA_10:=MA(VOL,10); //get the latest 10 K-lines' average trading volume
IS_VOL:=VOL>VOL_MA_10*5; //Judging whether the current K-line's trading volume is 5 times greater than the value of VOL_MA_10

IS_CLOSE AND IS_VOL; //Judging whether the condition of IS_CLOSE and IS_VOL are both true.

Pasar shock harga sempit

Narrow-shock market berarti bahwa harga dipertahankan dalam kisaran tertentu dalam periode terakhir. Misalnya: Jika harga tertinggi dalam 10 siklus dikurangi harga terendah dalam 10 siklus, hasilnya dibagi dengan harga penutupan K-line saat ini kurang dari 0.05.

HHV_10:=HHV(CLOSE,10); //Get the highest price in 10 cycles(including current K-line)
LLV_10:=LLV(CLOSE,10); //Get the lowest price in 10 cycles(including current K-line)

(HHV_10-LLV_10)/CLOSE<0.05; //Judging whether the difference between HHV_10 and LLV_10 divided by current k-line's closing price is less than 0.05.

Rata-rata bergerak menunjukkan pasar bull

Moving Average menunjukkan arah panjang dan pendek, K line didukung atau ditentang oleh 5,10,20,30,60 moving average line, Moving average menunjukkan bull market atau bear market. dapat ditulis:

MA_5:=MA(CLOSE,5);  //get the moving average of 5 cycle closing price.
MA_10:=MA(CLOSE,10);//get the moving average of 10 cycle closing price.
MA_20:=MA(CLOSE,20);//get the moving average of 20 cycle closing price.
MA_30:=MA(CLOSE,30);//get the moving average of 30 cycle closing price.

MA_5>MA_10 AND MA_10>MA_20 AND MA_20>MA_30; //determine wether the MA_5 is greater than MA_10, and MA_10 is greater than MA_20, and MA_20 is greater than MA_30.

Harga tinggi sebelumnya dan lokasinya

Untuk mendapatkan lokasi harga tertinggi sebelumnya dan lokasinya, Anda dapat menggunakan FMZ Quant API secara langsung. dapat ditulis:

HHV_20:=HHV(HIGH,20); //get the highest price of 20 cycle(including current K line)
HHVBARS_20:=HHVBARS(HIGH,20); //get the number of cycles from the highest price in 20 cycles to current K line
HHV_60_40:REF(HHV_20,40); //get the highest price between 60 cycles and 40 cycles.

Perbedaan harga melompat

Kesenjangan harga adalah kasus di mana harga tertinggi dan terendah dari dua garis K tidak terhubung. Ini terdiri dari dua garis K, dan kesenjangan harga adalah harga referensi dari titik dukungan dan tekanan dalam pergerakan harga di masa depan. Ketika kesenjangan harga terjadi, dapat diasumsikan bahwa akselerasi di sepanjang tren dengan arah asli telah dimulai. dapat ditulis:

HHV_1:=REF(H,1); //get the pervious K line's highest price
LLV_1:=REF(L,1); //get the pervious K line's lowest price
HH:=L>HHV_1; //judging wether the current K line's lowest price is greater than pervious K line's highest price (jump up)
LL:=H<LLV_1; //judging wether the current K line's highest price is greater than pervious K line's lowest price (jump down)
HHH:=L/REF(H,1)>1.001; //adding additional condition, the bigger of the price gap, the stronger the signal (jump up)  
LLL:=H/REF(L.1)<0.999; //adding additional condition, the bigger of the price gap, the stronger the signal (jump down)  
JUMP_UP:HH AND HHH; //judging the overall condition, whether it is a jump up
JUMP_DOWN:LL AND LLL; //judging the overall condition, whether it is a jump down

Indikator teknis umum

Rata-rata bergerak

img

Dari sudut pandang statistik, rata-rata bergerak adalah rata-rata aritmatika harga harian, yang merupakan lintasan harga tren. Sistem rata-rata bergerak adalah alat teknis umum yang digunakan oleh sebagian besar analis. Dari sudut pandang teknis, ini adalah faktor yang mempengaruhi harga psikologis analis teknis. Faktor pengambilan keputusan berpikir perdagangan adalah alat referensi yang baik untuk analis teknis. Alat FMZ Quant mendukung banyak jenis rata-rata bergerak yang berbeda, seperti yang ditunjukkan di bawah ini:

MA_DEMO:MA(CLOSE,5);   // get the moving average of 5 cycle
MA_DEMO:EMA(CLOSE,15); // get the smooth moving average of 15 cycle
MA_DEMO:EMA2(CLOSE,10);// get the linear weighted moving average of 10 cycle
MA_DEMO:EMAWH(CLOSE,50); // get the exponentially weighted moving average of 50 cycle
MA_DEMO:DMA(CLOSE,100);  // get the dynamic moving average of 100 cycle
MA_DEMO:SMA(CLOSE,10,3); // get the fixed weight of 3 moving average of closing price in 10 cycle
MA_DEMO:ADMA(CLOSE,9,2,30); // get the fast-line 2 and slow-line 30 Kaufman moving average of closing price in 9 cycle.

Bollinger Bands

img

Bollinger band juga didasarkan pada prinsip statistik. Rel tengah dihitung sesuai dengan rata-rata bergerak N-hari, dan rel atas dan bawah dihitung sesuai dengan penyimpangan standar. Ketika saluran BOLL mulai berubah dari lebar ke sempit, yang berarti harga akan secara bertahap kembali ke rata-rata. Ketika saluran BOLL berubah dari sempit ke lebar, itu berarti bahwa pasar akan mulai berubah. Jika harga naik melintasi rel atas, itu berarti bahwa daya beli meningkat. Jika harga turun melintasi rel bawah, itu menunjukkan bahwa daya jual meningkat.

Di antara semua indikator teknis, metode perhitungan Bollinger Bands adalah salah satu yang paling rumit, yang memperkenalkan konsep standar deviasi dalam statistik, yang melibatkan lintasan tengah (MB ), lintasan atas (UP ), dan lintasan bawah (DN ). Untungnya, Anda tidak perlu mengetahui rincian perhitungan, Anda dapat menggunakannya langsung di platform FMZ Quant sebagai berikut:

MID:MA(CLOSE,100); //calculating moving average of 100 cycle, call it Bollinger Bands middle trajectory   
TMP2:=STD(CLOSE,100); //calculating standard deviation of closing price of 100 cycle.
TOP:MID+2*TMP2; //calculating middle trajectory plus 2 times of standard deviation, call it upper trajectory
BOTTOM:MID-2*TMP2; //calculating middle trajectory plus 2 times of standard deviation, call it lower trajectory

Indikator MACD

img

Indikator MACD adalah operasi perataan ganda yang menggunakan rata-rata bergerak cepat (jangka pendek) dan lambat (jangka panjang) dan agregasi dan pemisahan mereka. MACD yang dikembangkan sesuai dengan prinsip rata-rata bergerak menghilangkan kekurangan bahwa rata-rata bergerak sering mengeluarkan sinyal palsu, dan juga mempertahankan efek dari aspek baik lainnya. Oleh karena itu, indikator MACD memiliki tren dan stabilitas rata-rata bergerak. Ini digunakan untuk mempelajari waktu pembelian dan penjualan saham dan memprediksi perubahan harga saham. Anda dapat menggunakannya sebagai berikut:

DIFF:EMA(CLOSE,10)-EMA(CLOSE,50); //First calculating the difference between short-term moving average and long-term moving average.
DEA:EMA(DIFF,10); //Then calculating average of the difference.

Di atas adalah modul strategi yang umum digunakan dalam pengembangan strategi perdagangan kuantitatif. Selain itu, ada lebih dari itu. Melalui contoh modul di atas, Anda juga dapat menerapkan beberapa modul perdagangan yang paling sering Anda gunakan dalam perdagangan subjektif. Metode-metode yang sama. Selanjutnya, kami mulai menulis strategi perdagangan intraday yang layak.

Menulis Strategi

Di pasar spot Forex, ada strategi terkenal yang disebut HANS123. Logika dasarnya adalah menilai apakah harga pecah melalui harga tertinggi atau terendah dari jumlah K baris setelah pembukaan pasar

Logika strategi

  • Siap untuk memasuki pasar setelah 30 menit pembukaan;

  • Rel atas = 30 menit tinggi setelah dibuka;

  • Rel bawah = 30 menit rendah setelah dibuka;

  • Ketika harga melanggar batas atas, beli dan buka posisi;

  • Ketika harga turun di bawah rel bawah, penjual membuka posisi.

  • Strategi perdagangan intraday, penutupan sebelum penutupan;

Kode Strategi

// Data Calculation
Q:=BARSLAST(DATA<>REF(DATA,1))+1; //Calculating the number of period from 
the first K line of the current trading day to current k line, and assign the results to N 
HH:=VALUEWHEN(TIME=0930,HHV(H,Q)); //when time is 9:30, get the highest price of N cycles, and assign the results to HH
LL:=VALUEWHEN(TIME=0930,LLV(L,Q)); //When time is 9:30, get the lowest price of N cycles, and assign the results to LL

//Placing Orders
TIME>0930 AND TIME<1445 AND C>HH,BK; //If the time is greater than 9:30 and lesser than 14:45, and the closing price is greater than HH, opening long position.
TIME>0930 AND TIME<1445 AND C<LL,SK; //If the time is greater than 9:30 and lesser than 14:45, and the closing price is lesser than LL, opening short position.
TIME>=1445,CLOSEOUT; //If the time is greater or equal to 14:45, close all position.

//Filtering the signals
AUTOFILTER;  //opening the filtering the signals mechanism

Untuk meringkas

Di atas kami telah mempelajari konsep modul strategi. Melalui beberapa kasus modul strategi yang umum digunakan, kami memiliki gagasan umum tentang alat pemrograman FMZ Quant, dapat dikatakan bahwa belajar menulis modul strategi dan meningkatkan pemikiran logika pemrograman adalah langkah kunci dalam perdagangan kuantitatif lanjutan. Akhirnya, kami menggunakan alat FMZ Quant untuk menerapkan strategi perdagangan sesuai dengan strategi perdagangan Forex klasik.

Pemberitahuan bagian berikutnya

Mungkin masih ada beberapa kebingungan bagi beberapa orang, terutama karena bagian pengkodean. Jangan khawatir, kami sudah memikirkan itu untuk Anda. Di platform FMZ Quant, ada alat pemrograman lain yang lebih mudah untuk pemula. Ini adalah pemrograman visual, mari kita pelajari segera!

Latihan setelah sekolah

  1. Cobalah untuk menerapkan beberapa modul perdagangan yang paling sering Anda gunakan dalam perdagangan subjektif.

  2. Cobalah untuk menerapkan algoritma indeks KDJ menggunakan bahasa M pada platform FMZ Quant.


Lebih banyak