Setelah mempelajari bahagian-bahagian sebelumnya, kita akhirnya bersedia untuk menulis strategi perdagangan kuantitatif. Ini akan menjadi langkah yang paling penting dalam kemasukan anda ke dalam perdagangan kuantitatif dari perdagangan manual. Sebenarnya, ia tidak begitu misterius. Menulis strategi tidak lebih daripada merealisasikan idea anda dengan kod. Bahagian ini akan melaksanakan strategi perdagangan kuantitatif dari awal, selepas kajian, semua orang akan biasa dengan cara menulis strategi pada sistem FMZ Quant.
Pertama, buka laman web rasmi FMZ Quant, log masuk ke akaun anda. klik pada
Dalam bab sebelumnya, saya memperkenalkan strategi purata bergerak. iaitu: jika harga lebih tinggi daripada harga purata 10 hari yang lalu, buka kedudukan panjang. jika harga lebih rendah daripada harga purata 10 hari yang lalu, pendekkan. Walau bagaimanapun, walaupun harga boleh mencerminkan secara langsung keadaan pasaran, masih akan ada banyak isyarat terobosan palsu; oleh itu, kita mesti menaik taraf dan memperbaiki strategi ini.
Pertama, pilih purata bergerak tempoh yang lebih besar untuk menilai arah trend. Sekurang-kurangnya separuh daripada isyarat terobosan palsu telah disaring. Purata bergerak kitaran besar adalah perlahan, tetapi ia akan lebih stabil. Kemudian, untuk meningkatkan kadar kejayaan kedudukan pembukaan, kita menambah satu lagi syarat. Purata bergerak kitaran besar ini sekurang-kurangnya ke atas; akhirnya, hubungan kedudukan relatif antara harga, purata bergerak jangka pendek dan purata bergerak jangka panjang digunakan untuk membentuk strategi perdagangan yang lengkap.
Dengan idea strategi di atas, kita boleh cuba membina logika strategi ini. logik di sini bukan untuk membiarkan anda mengira undang-undang pergerakan langit, ia tidak begitu rumit. ia tidak lebih daripada menyatakan idea strategi sebelumnya dalam perkataan.
Posisi panjang terbuka: Jika pada masa ini tidak ada kedudukan, dan harga penutupan lebih besar daripada purata bergerak jangka pendek, dan harga penutupan lebih besar daripada purata bergerak jangka panjang, dan purata bergerak jangka pendek lebih besar daripada purata bergerak jangka panjang, dan purata bergerak jangka panjang meningkat.
Posisi pendek terbuka: Jika pada masa ini tidak ada kedudukan, dan harga penutupan lebih rendah daripada purata bergerak jangka pendek, dan harga penutupan lebih rendah daripada purata bergerak jangka panjang, dan purata bergerak jangka pendek lebih rendah daripada purata bergerak jangka panjang, dan purata bergerak jangka panjang menurun.
Penutupan Posisi Panjang: Jika kini memegang kedudukan panjang, dan harga penutupan adalah lebih rendah daripada purata bergerak jangka panjang, atau purata bergerak jangka pendek adalah lebih rendah daripada purata bergerak jangka panjang, atau purata bergerak jangka panjang menurun.
Posisi Pendek Tutup: Jika kedudukan pendek semasa dipegang, dan harga penutupan lebih besar daripada purata bergerak jangka panjang, atau purata bergerak jangka pendek lebih besar daripada purata bergerak jangka panjang, atau purata bergerak jangka panjang meningkat.
Di atas adalah logik keseluruhan strategi, jika kita menukar versi teks strategi ini ke dalam kod, ia akan termasuk: pemerolehan sebut harga pasaran, pengiraan penunjuk, meletakkan pesanan untuk membuka dan menutup kedudukan, ketiga-tiga langkah ini.
Dalam strategi ini, kita hanya perlu mendapatkan harga penutupan. Dalam bahasa M, API untuk mendapatkan harga penutupan adalah: CLOSE, yang bermaksud anda hanya perlu menulis CLOSE di kawasan pengekodan untuk mendapatkan harga penutupan baris K terkini.
Dalam strategi ini, kita akan menggunakan dua indikator, iaitu: purata bergerak jangka pendek dan purata bergerak jangka panjang. Kita menganggap bahawa purata bergerak jangka pendek adalah purata bergerak 10 tempoh dan purata bergerak jangka panjang adalah purata bergerak 50 tempoh. Bagaimana untuk menggunakan kod untuk mewakili kedua-dua ini? Sila 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 sama ada purata bergerak 50 tempoh naik atau turun, tetapi bagaimana kita mengekspresikannya dalam kod? Fikirkan dengan teliti, menilai sama ada purata bergerak naik atau tidak, adakah purata bergerak semasa garis K lebih besar daripada purata bergerak garis K sebelumnya? atau adakah ia lebih tinggi daripada dua garis K sebelumnya? Jika jawapannya ya, maka kita boleh mengatakan bahawa purata bergerak melanda. Kita juga boleh menilai jatuh dengan kaedah 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 bahawa pada baris 8 dan 9 kod di atas, perkataan
Langkah terakhir adalah untuk meletakkan pesanan, anda hanya perlu memanggil API pesanan 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 bahawa baris 13 dan 14 di atas, perkataan
Sila ambil perhatian bahawa
Di atas adalah keseluruhan proses menulis strategi dagangan di platform FMZ Quant dengan menggunakan bahasa pengaturcaraan M. Terdapat tiga langkah secara keseluruhan: dari mempunyai idea strategi, untuk pemikiran strategi dan menggunakan teks untuk menerangkan logik, dan akhirnya melaksanakan strategi dagangan lengkap dengan kod. Walaupun ini adalah strategi yang mudah, proses pelaksanaan khusus adalah sama dengan strategi yang kompleks, kecuali bahawa strategi dan struktur data strategi adalah berbeza. Oleh itu, selagi anda memahami proses strategi kuantitatif dalam bahagian ini, anda boleh menjalankan penyelidikan dan amalan strategi kuantitatif di platform FMZ Quant.
Cuba melaksanakan strategi dalam bahagian ini sendiri.
Berdasarkan strategi dalam seksyen ini, tambahkan fungsi stop-loss dan mengambil keuntungan.
Dalam membangunkan strategi perdagangan kuantitatif, bahasa pengaturcaraan seperti senjata, bahasa pengaturcaraan yang baik dapat membantu anda mendapatkan hasil dua kali ganda dengan separuh usaha. Sebagai contoh, terdapat lebih daripada selusin bahasa Python, C ++, Java, C #, EasyLanguage, dan M yang paling biasa digunakan dalam dunia perdagangan kuantitatif. Senjata mana yang harus anda pilih untuk berperang di medan perang? Di bahagian seterusnya kita akan memperkenalkan bahasa pengaturcaraan yang biasa ini, serta ciri-ciri setiap bahasa pengaturcaraan itu sendiri.