Setelah mempelajari bagian-bagian sebelumnya, akhirnya kami siap untuk menulis strategi perdagangan kuantitatif. Ini akan menjadi langkah terpenting dalam masuk Anda ke perdagangan kuantitatif dari perdagangan manual. Sebenarnya, itu tidak begitu misterius. Menulis strategi tidak lebih dari merealisasikan ide Anda dengan kode. Bagian ini akan menerapkan strategi perdagangan kuantitatif dari awal, setelah studi, semua orang akan terbiasa dengan cara menulis strategi pada sistem FMZ Quant.
Pertama, buka situs web resmi FMZ Quant, masuk ke akun Anda. klik pada
Dalam bab sebelumnya, saya memperkenalkan strategi rata-rata bergerak. yaitu: jika harga lebih tinggi dari harga rata-rata 10 hari terakhir, buka posisi panjang. jika harga lebih rendah dari harga rata-rata 10 hari terakhir, pendekkan. Namun, meskipun harga dapat langsung mencerminkan status pasar, masih akan ada banyak sinyal terobosan palsu; oleh karena itu, kita harus meningkatkan dan meningkatkan strategi ini.
Pertama, pilih rata-rata bergerak periode yang lebih besar untuk menilai arah tren. Setidaknya setengah dari sinyal terobosan palsu telah disaring. Rata-rata bergerak siklus besar lambat, tetapi akan lebih stabil. Kemudian, untuk meningkatkan tingkat keberhasilan posisi pembukaan, kita menambahkan kondisi lain. Rata-rata bergerak siklus besar ini setidaknya ke atas; akhirnya, hubungan posisi relatif antara harga, rata-rata bergerak jangka pendek dan rata-rata bergerak jangka panjang digunakan untuk membentuk strategi perdagangan yang lengkap.
Dengan ide-ide strategi di atas, kita bisa mencoba membangun logika strategi ini. logika di sini bukan untuk membiarkan Anda menghitung hukum gerakan langit, itu tidak begitu rumit. itu tidak lebih dari mengekspresikan ide-ide strategi sebelumnya dalam kata-kata.
Open long position: Jika saat ini tidak ada posisi, dan harga penutupan lebih besar dari rata-rata bergerak jangka pendek, dan harga penutupan lebih besar dari rata-rata bergerak jangka panjang, dan rata-rata bergerak jangka pendek lebih besar dari rata-rata bergerak jangka panjang, dan rata-rata bergerak jangka panjang naik.
Open short position: Jika saat ini tidak ada posisi, dan harga penutupan lebih rendah dari rata-rata bergerak jangka pendek, dan harga penutupan lebih rendah dari rata-rata bergerak jangka panjang, dan rata-rata bergerak jangka pendek lebih rendah dari rata-rata bergerak jangka panjang, dan rata-rata bergerak jangka panjang menurun.
Tutup Posisi Panjang: Jika saat ini memegang posisi panjang, dan harga penutupan lebih rendah dari rata-rata bergerak jangka panjang, atau rata-rata bergerak jangka pendek lebih rendah dari rata-rata bergerak jangka panjang, atau rata-rata bergerak jangka panjang menurun.
Close Short Position: Jika posisi pendek saat ini dipegang, dan harga penutupan lebih besar dari rata-rata bergerak jangka panjang, atau rata-rata bergerak jangka pendek lebih besar dari rata-rata bergerak jangka panjang, atau rata-rata bergerak jangka panjang naik.
Di atas adalah logika dari seluruh strategi, jika kita mengubah versi teks dari strategi ini ke dalam kode, itu akan mencakup: akuisisi kutipan pasar, perhitungan indikator, menempatkan pesanan untuk membuka dan menutup posisi, tiga langkah ini.
Yang pertama adalah untuk mendapatkan penawaran pasar. Dalam strategi ini, kita hanya perlu mendapatkan harga penutupan. Dalam bahasa M, API untuk mendapatkan harga penutupan adalah: CLOSE, yang berarti Anda hanya perlu menulis CLOSE di area pengkodean untuk mendapatkan harga penutupan garis K terbaru.
Hal berikutnya adalah menghitung indikator. Dalam strategi ini, kita akan menggunakan dua indikator, yaitu: rata-rata bergerak jangka pendek dan rata-rata bergerak jangka panjang. Kita berasumsi bahwa rata-rata bergerak jangka pendek adalah rata-rata bergerak 10 periode dan rata-rata bergerak jangka panjang adalah rata-rata bergerak 50 periode. Bagaimana menggunakan kode untuk mewakili keduanya? Silakan lihat di bawah:
MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50
Dalam perdagangan manual, kita dapat melihat sekilas apakah rata-rata bergerak 50 periode naik atau turun, tetapi bagaimana kita mengekspresikannya dalam kode? Pikirkan dengan hati-hati, menilai apakah rata-rata bergerak naik atau tidak, apakah rata-rata bergerak saat ini dari garis K lebih besar dari rata-rata bergerak dari garis K sebelumnya? atau apakah lebih tinggi dari dua garis K sebelumnya? Jika jawabannya ya, maka kita dapat mengatakan bahwa rata-rata bergerak sedang melonjak. Kita juga dapat menilai penurunan dengan metode yang sama.
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
Perhatikan bahwa pada baris 8 dan 9 kode di atas, kata
Langkah terakhir adalah menempatkan pesanan, Anda hanya perlu memanggil FMZ Quant
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position
Perhatikan bahwa baris 13 dan 14 di atas, kata
Harap dicatat bahwa
Di atas adalah seluruh proses menulis strategi trading di platform FMZ Quant dengan menggunakan bahasa pemrograman M. Ada tiga langkah secara total: dari memiliki ide strategi, pemikiran strategi dan menggunakan teks untuk menggambarkan logika, dan akhirnya menerapkan strategi trading lengkap dengan kode. Meskipun ini adalah strategi sederhana, proses implementasi spesifik mirip dengan strategi yang kompleks, kecuali bahwa strategi dan struktur data dari strategi berbeda. Oleh karena itu, selama Anda memahami proses strategi kuantitatif di bagian ini, Anda dapat melakukan penelitian dan praktik strategi kuantitatif di platform FMZ Quant.
Cobalah untuk menerapkan strategi di bagian ini sendiri.
Berdasarkan strategi dari bagian ini, tambahkan fungsi stop loss dan take profit.
Dalam pengembangan strategi perdagangan kuantitatif, bahasa pemrograman seperti senjata, bahasa pemrograman yang baik dapat membantu Anda mendapatkan hasil dua kali lipat dengan setengah usaha. Misalnya, ada lebih dari selusin bahasa Python, C ++, Java, C #, EasyLanguage, dan M yang paling umum digunakan di dunia perdagangan kuantitatif. Senjata apa yang harus Anda pilih untuk bertarung di medan perang?