Apa itu bahasa M? Bahasa M yang disebut adalah seperangkat fungsi pemrograman yang meluas dari indikator teknis perdagangan saham awal. Mengekap algoritma menjadi satu fungsi, pengguna hanya perlu memanggil fungsi tertentu seperti
Ini mengadopsi mode konstruksi "grammar kecil, fungsi besar", yang sangat meningkatkan efisiensi pemrograman. Strategi menulis lebih dari 100 kalimat dalam bahasa lain dapat dikompilasi hanya dengan beberapa baris dalam bahasa M. Perpustakaan fungsi statistik keuangan dan struktur data bersama dengan alat FMZ Quant juga dapat mendukung beberapa logika perdagangan yang kompleks.
Untuk membantu Anda dengan cepat memahami pengetahuan kunci dari bagian ini, sebelum memperkenalkan bahasa FMZ Quant M, mari kita terlebih dahulu memiliki pemahaman awal tentang konsep kata benda dari bagian ini.
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.
Jika Anda menulisnya dengan bahasa M, itu akan menjadi:
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
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
Untuk menulis strategi trading yang lengkap, Anda akan membutuhkan: pengambilalihan data, perhitungan data, perhitungan logika, dan penempatan pesanan. Seperti yang ditunjukkan di atas, di seluruh kode, hanya satu API untuk mendapatkan data dasar yang digunakan, yaitu " CLOSE " di baris pertama dan kedua; kemudian baris pertama sampai kesembilan adalah bagian perhitungan data; baris 11 sampai 14 adalah perhitungan logis dan bagian penempatan pesanan.
Perhatikan bahwa MA10, MA50, MA10_1, MA50_1, MA10_2, dan MA50_2 adalah variabel; pada baris pertama sampai kesembilan, " := " adalah tanda penugasan, dan data di sebelah kanan tanda penugasan ditugaskan ke variabel di sebelah kiri tanda penugasan;
Data dasar (harga pembukaan, harga tertinggi, harga terendah, harga penutupan, volume) adalah bagian yang sangat penting dari perdagangan kuantitatif. Untuk mendapatkan data dasar terbaru dalam strategi, Anda hanya perlu memanggil API FMZ Quant. Jika Anda ingin mendapatkan data dasar harga historis, Anda dapat menggunakan " REF ", seperti: REF (CLOSE, 1) adalah untuk mendapatkan harga penutupan kemarin.
Variabel dapat diubah. Nama variabel dapat dipahami sebagai nama kode. Namanya didukung oleh huruf, angka, dan baris bahasa Inggris. Namun, panjangnya harus dikontrol dalam 31 karakter. Nama variabel tidak dapat diulang dengan yang lain, tidak dapat diduplikasi dengan nama parameter, tidak dapat diulang dengan nama fungsi (API ), dan setiap pernyataan harus diakhiri dengan titik koma. Menulis komentar setelah " // ". Seperti yang ditunjukkan di bawah ini:
INT:=2; //Integer type
FLOAT:=3.1; //Floating point
ISTRUE:=CLOSE>OPEN; //Boolean type
Variabel penugasan berarti bahwa nilai di sebelah kanan tanda penugasan diberikan kepada variabel di sebelah kiri. Ada empat jenis penugasan, yang dapat mengontrol apakah nilai ditampilkan pada grafik atau posisi tampilan. Mereka adalah " : ", " := ", " ^^ ", "... ", dan komentar kode di bawah ini menjelaskan maknanya secara rinci.
CC1: C; //Assign the closing price to the variable CC1 and display it in the sub-chart
CC2:=C; //Assign the closing price to variable CC2, but not display in the status bar and chart
CC3^^C; //Assign the closing price to the variable CC3 and display it in the main chart
CC4..0; //Assign the closing price to the variable CC4 and display it in the status bar, but not in the chart
Ada beberapa jenis data dalam bahasa M, yang paling umum adalah jenis numerik, jenis string, dan jenis boolean. Jenis numerik adalah angka, termasuk bilangan bulat, desimal, bilangan positif dan negatif, dll, seperti: 1, 2, 3, 1,1234, 2.23456...; jenis string dapat dipahami sebagai teks, Cina, Inggris, angka juga dapat menjadi string, seperti:
Operator relasional, seperti namanya, adalah operator yang digunakan untuk membandingkan hubungan dua nilai. Mereka sama dengan, lebih besar dari, kurang dari, lebih besar dari atau sama dengan, kurang dari atau sama dengan, tidak sama dengan, seperti yang ditunjukkan di bawah ini:
CLOSE = OPEN; //when closing price equals to opening price, return 1 (true), otherwise return 0 (false)
CLOSE > OPEN; //when closing price greater than opening price, return 1 (true), otherwise return 0 (false)
CLOSE < OPEN; //when closing price less than opening price, return 1 (true), otherwise return 0 (false)
CLOSE >= OPEN; //when closing price greater than or equal to opening price, return 1 (true), otherwise return 0 (false)
CLOSE <= OPEN; //when closing price less than or equal to opening price, return 1 (true), otherwise return 0 (false)
CLOSE <> OPEN; //when closing price is not equal to opening price, return 1 (true), otherwise return 0 (false)
Operasi logis dapat menggabungkan pernyataan tipe Boolean yang terpisah ke dalam keseluruhan, yang paling umum digunakan adalah "AND" dan "OR". Misalkan ada dua nilai tipe Boolean,
AA:=2>1; //return true
BB:=4>3; //return true
CC:=6>5; //return true
DD:=1>2; //return false
Tolong perhatikan:
" AND " adalah ketika semua kondisi adalah
"ATAU" berarti dalam semua kondisi, selama salah satu kondisi adalah
" AND " dapat ditulis sebagai " && ", dan " OR " dapat ditulis sebagai ".
Tidak ada perbedaan antara operator aritmatika (" +
AA:=1+1; //the result is 2
BB:=2-1; //the result is 1
CC:=2*1; //the result is 2
DD:=2/1; //the result is 2
Jika ada 100*(10-1)/(10+5) ungkapan, langkah mana yang dihitung program pertama?
1, Jika tingkat operasi yang sama, biasanya dihitung dari kiri ke kanan. 2, Jika ada penjumlahan dan pengurangan, dan perkalian dan pembagian, pertama menghitung perkalian dan pembagian, kemudian penjumlahan dan pengurangan. 3, Jika ada tanda kurung, perhitungkan bagian dalam tanda kurung terlebih dahulu. 4, Jika hukum operasi mudah dipenuhi, hukum dapat digunakan untuk perhitungan.
Hal yang sama berlaku untuk bahasa M, seperti yang ditunjukkan di bawah ini:
100*(10-1)/(10+5) //the result is 60
1>2 AND (2>3 OR 3<5) //the result is false
1>2 AND 2>3 OR 3<5 //the result is true
Dalam bahasa M dari alat FMZ Quant, ada dua mode eksekusi program, yaitu, mode harga penutupan dan mode harga real-time.
Jika ini adalah strategi perdagangan intraday, Anda perlu menggunakan fungsi waktu " WAKTU " ketika Anda perlu menutup posisi pada akhirnya. Fungsi ini berada di atas siklus kedua dan di bawah siklus hari, ditunjukkan dalam bentuk empat digit: HHMM (1450 - 14: 50).
CLOSE>OPEN && TIME<1450,BK; //if it is a positive k-line and the time is less than 14:50, opening position.
TIME>=1450,CLOSEOUT; //if the time is beyond 14:50, closing all position.
Ada dua jenis klasifikasi model dalam bahasa M: model non-filter dan model filter. Ini sebenarnya sangat dipahami: model non-filter memungkinkan sinyal pembukaan atau penutupan terus menerus, yang dapat digunakan untuk menambahkan dan mengurangi posisi. Model filter tidak memungkinkan sinyal pembukaan atau penutupan terus menerus, yaitu ketika sinyal pembukaan muncul, sinyal pembukaan berikutnya akan disaring sampai sinyal penutupan muncul. Urutan model non-filter adalah: posisi terbuka - posisi dekat - posisi terbuka - posisi dekat - posisi terbuka...
Di atas adalah isi dari awal cepat dari bahasa M, sekarang Anda dapat memprogram strategi trading Anda sendiri sekarang. Jika Anda perlu menulis yang lebih kompleks, Anda dapat merujuk ke FMZ Quant platform
Trading intraday juga merupakan mode trading yang populer. Metode ini tidak memegang posisi dalam semalam. Oleh karena itu, hal ini tunduk pada risiko rendah dari volatilitas pasar. Setelah kondisi pasar yang tidak menguntungkan terjadi, hal ini dapat disesuaikan dalam waktu.