Penemu Quantitative Trading - Mulai dari Dasar hingga Perang Dunia II

Penulis:Kebaikan, Dibuat: 2019-06-25 15:48:58, Diperbarui: 2023-10-31 21:01:08

Saat harga jatuh dari atas ke bawah, atau ketika harga jatuh dari garis pendukung, kita berpikir bahwa kekuatan udara semakin kuat, gelombang tren penurunan telah terbentuk, dan sinyal jual terbuka dihasilkan.imgGambar 4-20

Jika setelah membeli posisi terbuka, harga kembali jatuh ke jalur tengah garis Brin, kita berpikir bahwa kekuatan multilateral melemah, atau kekuatan udara menguat, dan sinyal penjualan posisi rata dihasilkan; jika setelah menjual posisi terbuka, harga kembali naik ke jalur tengah garis Brin, kita berpikir bahwa kekuatan udara melemah, atau kekuatan udara melemah, dan sinyal pembelian posisi rata dihasilkan.

Kondisi jual beli

Berinvestasi:如果无持仓,并且收盘价大于上轨,并且时间非14:45 Berjualan dengan tangan kosong:如果无持仓,并且收盘价小于下轨,并且时间非14:45 Banyak posisi:如果持多单,并且收盘价小于中轨,或者时间是14:45 Tangan kosong:如果持空单,并且收盘价大于中轨,或者时间是14:45

Implementasi kode strategi

Untuk menerapkan strategi, pertama-tama kita perlu mempertimbangkan data apa yang kita butuhkan? melalui API apa yang akan kita dapatkan? lalu bagaimana kita menghitung logika transaksi? dan akhirnya dengan cara apa kita akan melakukan transaksi?

Langkah 1: Gunakan kerangka strategi CTA

CTA adalah kerangka kerja standar yang diluncurkan secara resmi oleh penemu kuantitas. Dengan menggunakan kerangka kerja ini, Anda tidak perlu memikirkan masalah-masalah kecil dalam mengembangkan strategi perdagangan kuantitatif, tetapi langsung fokus pada logika perdagangan pemrograman. Misalnya, jika Anda tidak menggunakan kerangka kerja ini, Anda perlu mempertimbangkan masalah seperti pergeseran bulan, harga jual beli, penarikan atau pelacakan saat pesanan tidak ditransfer, dll.imgGambar 4-21.

Gambar di atas adalah kerangka strategi CTA yang menggunakan alat kuantifikasi penemu. Ini adalah format kode yang tetap, semua kode logika transaksi ditulis dari baris ke-3.

Perlu dicatat bahwa kode varietas dalam gambar di atas adalah rb000/rb888. Ini berarti bahwa data sinyal digunakan adalah rb000, data transaksi digunakan adalah rb888, dan secara otomatis beralih posisi. Tentu saja Anda juga dapat menentukan kode varietas tertentu, seperti menggunakan kode varietas rb1910, yaitu data sinyal dan data transaksi menggunakan rb1910.

FMZ memiliki JavaScript built-in commodity futures trading class library yang dapat digunakan dalam kode dengan mengklik referensi langsung di interface editor strategi:img

Langkah 2: Mendapatkan berbagai data

Dari logika trading strategi kami, kita akan menemukan bahwa kita harus mendapatkan posisi saham saat ini, kemudian membandingkan hubungan antara harga penutupan dengan tren penurunan pada indikator Blink-Blink, dan akhirnya menilai apakah pasar akan ditutup.

Mendapatkan data K-line

Hal pertama yang harus dilakukan adalah dengan mendapatkan array K-line dan harga penutupan garis atas K-line, karena dengan memiliki array K-line, Anda dapat menghitung indikator Blink-band.imgGambar 4-22

Seperti gambar di atas: Garis 4: Dapatkan Array K-Line, yang merupakan format tetap. Baris 5: Filter panjang K, karena parameter yang kita gunakan untuk menghitung indikator Binding adalah 20, tidak dapat menghitung indikator Binding ketika K kurang dari 20 kata. Jadi di sini Anda harus menyaring panjang K, jika K kurang dari 20 kata, langsung kembali dan terus menunggu untuk K berikutnya. Baris ke-6: Dari array K-line yang diperoleh, pertama-tama mengambil objek dari akar K-line, kemudian mengambil harga penutupan dari objek tersebut. Mengambil elemen kedua dari bilangan bulat dari sebuah array, yaitu panjangnya minus 2 ((r [r.length - 2]); elemen dalam array K-line adalah satu objek, objek yang berisi harga buka, harga tertinggi, harga terendah, harga penutupan, volume transaksi, waktu, untuk mendapatkan harga penutupan langsung di sampingnya.

Mendapatkan data waktu K-line

Karena kita adalah strategi harian, kita perlu meratakan posisi sebelum penutupan, jadi untuk menentukan apakah garis K saat ini mendekati penutupan, jika garis K mendekati penutupan maka kita meratakan posisi, jika tidak garis K mendekati penutupan maka kita dapat membuka posisi, dengan kode yang ditulis seperti ini:imgGambar 4-23

Seperti gambar di atas: Baris 8: Dapatkan properti timestamp dari root K, lalu buat objek waktu ((new Date ((timestamp)). Baris ke-9: Perhitungkan jumlah jam dan menit berdasarkan objek waktu, dan tentukan apakah waktu pada garis akar K adalah 14:45.

Mendapatkan data penyimpanan

Informasi kepemilikan adalah kondisi penting dalam strategi perdagangan kuantitatif. Ketika kondisi perdagangan ditetapkan, juga perlu berdasarkan status kepemilikan dan jumlah kepemilikan untuk menentukan apakah pesanan dilakukan. Misalnya: ketika kondisi perdagangan pembelian terbuka ditetapkan, jika ada kepemilikan, maka tidak perlu melakukan pemesanan berulang; jika tidak ada kepemilikan, maka dapat dilakukan pemesanan.imgGambar 4-24 Seperti gambar di atas: Baris 11: Dapatkan status kepemilikan saat ini. Jika ada banyak pesanan, nilai adalah 1; jika ada pesanan kosong, nilai adalah 1; jika tidak ada kepemilikan, nilai adalah 0.

Mendapatkan data pita Brin

Selanjutnya perlu dihitung nilai indikator Blink pada lintasan, lintasan tengah, lintasan bawah. Pertama, harus mendapatkan Array Blink, dan mendapatkan nilai lintasan atas dan bawah dari Array tersebut. Dalam alat kuantifikasi penemu, mendapatkan Array Blink masih sangat sederhana, dapat langsung memanggil API Blink, sulit untuk mendapatkan nilai lintasan atas dan bawah, karena Array Blink adalah himpunan bilangan dua dimensi.

Matrix dua dimensi sebenarnya sangat baik dipahami, yaitu matrix dalam matrix, maka urutan yang diperoleh adalah: pertama mendapatkan matrix yang ditentukan dalam matrix, dan kemudian mendapatkan elemen yang ditentukan dari matrix yang ditentukan, seperti yang ditunjukkan di bawah ini:imgGambar 4-25

Seperti yang ditunjukkan di bawah ini, baris ke-13 sampai ke-19 adalah kode yang digunakan untuk mendapatkan nilai lintasan, lintasan tengah, lintasan bawah. Di antaranya, baris ke-13 adalah API yang langsung menggunakan alat kuantifikasi penemu, untuk mendapatkan array lintasan; baris ke-14 sampai ke-16 adalah untuk mendapatkan array lintasan, lintasan tengah, lintasan bawah dari array dua dimensi masing-masing; baris ke-17 sampai ke-19 adalah untuk mendapatkan nilai lintasan, lintasan tengah, lintasan bawah dari akar garis K di atas array lintasan, lintasan tengah, lintasan bawah.imgGambar 4-26

Langkah 3: Buat transaksi

Dengan data di atas, Anda dapat menulis logika transaksi dan kode untuk transaksi suborder. Formatnya juga sangat sederhana, yang paling sering digunakan adalah kata sandi if, yang dapat dijelaskan dengan kata: jika kondisi 1 dan kondisi 2 berlaku, suborder; jika kondisi 3 atau kondisi 4 berlaku, suborder. Seperti yang ditunjukkan di bawah:imgGambar 4-27.

Pada gambar di atas, baris ke-21 sampai ke-24 adalah kode logika transaksi dan kode transaksi yang akan dipesan. Dari atas ke bawah, masing-masing adalah: kosong, kosong, kosong, terbuka.

Sebagai contoh, ini adalah kalimat if yang dapat dilewatkan jika hanya satu baris kode yang dieksekusi dalam kalimat ini. Kalimat ini diterjemahkan sebagai: jika posisi saat ini adalah 0, dan harga penutupan lebih besar dari tren, dan waktu baris K bukan 14:45, maka return 1 ton.

Jika Anda berhati-hati, Anda mungkin akan melihat bahwa beberapa baris ini memiliki penyetreturn 1 dan penyetreturn -1, yang merupakan format yang tetap, yaitu: jika dibeli, tulis penyetreturn 1; jika dijual, tulis penyetreturn -1.

Kode Strategi Lengkap

Jika Anda menulis kode strategi yang lengkap, apakah akan mudah jika Anda menulisnya secara terpisah, seperti kerangka kerja transaksi, data transaksi, logika transaksi, pembelian pesanan, dan sebagainya, berikut adalah kode keseluruhan strategi:imgGambar 4-28.

Ada dua hal yang perlu diperhatikan: mencoba (tapi tidak harus) menulis logika strategi sebagai ketika kondisi akar K terbentuk, akar bawah K dikeluarkan, atau akar atas K dikeluarkan, sehingga hasil yang diulas tidak jauh berbeda dengan hasil yang terjadi di piringan nyata. Ini juga bisa ditulis dengan cara lain, tetapi perlu diperhatikan apakah logika strategi benar. Secara umum, menulis logika posisi tetap di depan logika perdagangan terbuka, tujuan untuk melakukan ini adalah untuk membuat logika strategi sesuai dengan harapan Anda.

Pengamatan

Di atas, kita belajar setiap langkah untuk mengembangkan strategi perdagangan kuantitatif sehari-hari yang lengkap, termasuk: gambaran strategi, metode penghitungan indikator Blink Band, logika strategi, kondisi jual beli, implementasi kode strategi, dll. Dengan contoh strategi ini, tidak hanya akrab dengan metode pemrograman alat kuantitatif penemu, tetapi juga dapat mengubah strategi yang berbeda berdasarkan template ini.

Strategi perdagangan kuantitatif tidak lebih dari ringkasan dari pengalaman atau sistem perdagangan subjektif. Jika kita menulis pengalaman atau sistem yang digunakan dalam perdagangan subjektif secara terpisah sebelum menulis strategi, dan kemudian menerjemahkannya satu per satu ke dalam kode, Anda akan menemukan bahwa menulis strategi akan jauh lebih mudah. Cobalah!

Bagian berikutnya

Dalam pengembangan strategi transaksi kuantitatif, jika hanya ada satu bahasa pemrograman yang dapat dipilih, maka jangan ragu untuk memilih Python, mulai dari pengambilan data hingga strategi retesting hingga transaksi, Python telah mencakup seluruh rantai bisnis.

PR setelah sekolah

1. Cobalah untuk menggunakan pengetahuan dari bagian ini untuk memulai implementasi strategi dua garis lurus. 2, mencoba mengimplementasikan algoritma indikator KDJ menggunakan bahasa JavaScript dalam alat kuantifikasi penemu.

4.3 Perkenalan Cepat Bahasa Python

Rincian

Dalam pengembangan strategi transaksi kuantitatif, jika hanya ada satu bahasa pemrograman yang dapat dipilih, maka jangan ragu untuk memilih Python, mulai dari pengambilan data hingga retesting strategi hingga transaksi, Python telah mencakup seluruh rantai bisnis.

Mengapa belajar begitu banyak bahasa pemrograman?

Dengan melihat kembali ke kelas sebelumnya, kami belajar bersama: bahasa mac, bahasa visualisasi, bahasa JavaScript, termasuk bahasa Python yang akan kami pelajari di bagian ini. Mungkin beberapa teman bertanya-tanya, mengapa saya belajar begitu banyak bahasa pemrograman?

Sebenarnya, setiap bahasa pemrograman memiliki karakteristik bahasa sendiri, dan bahasa-bahasa ini tidak memiliki kelebihan dan kekurangan, lebih dari itu untuk melihat strategi yang lebih cocok dengan bahasa pemrograman, dan apakah bahasa pemrograman ini sesuai dengan diri Anda sendiri.

Kami juga berkomitmen untuk membuka pintu kuantitas bagi semua orang, untuk menyebarkan pengetahuan tentang berbagai bahasa pemrograman, kuantitas tidak begitu mendalam dan tidak terjangkau seperti yang kita bayangkan, dan kami percaya bahwa kuantitas di masa depan akan menjadi umum dan sipil.

Mengapa memilih Python

Proses transaksi kuantitatif tidak lain adalah untuk mendapatkan data, menganalisis data perhitungan, memproses data, dll. Dalam hal analisis data, tidak ada bahasa lain yang dapat menghitung dan mempertahankan kinerja seperti Python. Khususnya dalam data analisis urutan waktu (K-line adalah data urutan waktu).

5 Alasan Terbaik untuk Memilih Python

1. Penggunaan kuantitatif yang luas:

Quantipian dari Amerika Serikat dan penemu lokal dapat mengkuantifikasi dengan bahasa Python.

2. Mudah dipelajari:

Filsafat desain Python adalah user-centered dan merupakan bahasa interpretasi yang mudah di-debug.

3. Sumber terbuka gratis:

Tidak ada biaya penggunaan, berbagi kode sumber terbuka, meningkatkan pembelajaran dan efisiensi penggunaan.

4. Perpustakaan yang kaya:

Data processing, pemrosesan data, visualisasi, analisis statistik, analisis teknis, pembelajaran mesin...

5. Antarmuka aplikasi:

Data dari berbagai platform memperoleh antarmuka untuk menyimpan panggilan dan melakukan transaksi secara real-time.

Strategi Lengkap

Untuk membantu Anda dengan cepat memahami pengetahuan utama dalam bagian ini, sebelum kita memperkenalkan pengembang bahasa JavaScript kuantitatif dengan cepat, kita harus memiliki pemahaman awal tentang konsep kata dalam bagian ini.

Berinvestasi: Jika saat ini tidak ada posisi, dan garis rata 5 siklus lebih besar dari garis rata 20 siklus.Berjualan dengan tangan kosong: Jika saat ini tidak ada posisi, dan garis rata 5 siklus lebih kecil dari garis rata 20 siklus.Banyak posisi: Jika saat ini memegang beberapa order, dan rata-rata 5 siklus kurang dari rata-rata 20 siklus.Tangan kosong: Jika saat ini memegang pesanan kosong, dan rata-rata 5 siklus lebih besar dari rata-rata 20 siklus.

Jika ditulis dalam kode bahasa Python, seperti ini:imgGambar 4-29

Kode di gambar di atas adalah strategi transaksi kuantitatif yang lengkap yang ditulis dalam bahasa Python. Kode ini dapat berjalan secara real time dan secara otomatis melakukan transaksi. Dari segi jumlah kode, bahasa Python lebih banyak daripada bahasa JavaScript, karena kita tidak menggunakan kerangka transaksi CTA.

Tapi proses desain dari seluruh strategi hampir sama: mengatur varietas pasar, mendapatkan data K-line, mendapatkan informasi kepemilikan, menghitung logika transaksi, membeli dan menjual.

Pilihan versi

Ada dua versi Python, yaitu: Python 2 dan Python 3. Pada suatu waktu ada sebuah bagian yang mengatakan bahwa Python seperti pistol bertipe ganda, tetapi hanya dapat menembakkan peluru dengan satu tabung setiap kali, tetapi Anda tidak pernah tahu persis mana yang lebih akurat. Jadi jika Anda baru mengenal Python, disarankan untuk langsung belajar Python 3 karena ini adalah yang terbaru dan komunitas Python selalu memelihara. Kursus kami juga diajarkan dengan Python 3.

Pengidentifikasi

Identifier adalah nama variabel, seperti di gambar berikut, test, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10, etc.demo dan sebagainya. Semua (variabel, nama fungsi, dan operator) dalam Python ditulis dengan huruf besar, yaitu nama variabel test dan nama variabel Test adalah dua variabel yang berbeda.), karakter yang diikuti juga bisa berupa angka, seperti yang ditunjukkan pada gambar di bawah ini:imgGambar 4-30

Komentar

Komentar adalah terjemahan atau interpretasi dari satu baris kode yang memiliki aturan yang sangat sederhana, yang terdiri dari komentar baris tunggal dan komentar tingkat blok. Komentar baris tunggal dimulai dengan tanda sumbu ((#), komentar blok dimulai dengan tiga tanda kutip tunggal (() atau tiga tanda kutip ganda ((""") dan diakhiri dengan tiga tanda kutip tunggal (()) atau tiga tanda kutip ganda ((""")), seperti yang ditunjukkan di bawah ini:imgGambar 4-31

Garis dan penyempitan

Fitur utama dari Python adalah penggunaan penyusutan untuk mewakili blok kode, tanpa perlu menggunakan tanda kurung besar {}. Jumlah ruang penyusutan dapat berubah, tetapi pernyataan dari blok kode yang sama harus berisi jumlah ruang penyusutan yang sama. Seperti gambar di bawah ini: dalam kasus ini, program akan memberikan laporan kesalahan. Bahkan jika kondisi if berlaku, tidak akan mengeluarkan True, karena Python akan secara otomatis memeriksa apakah sintaksis kode benar sebelum kode dijalankan, jika kode formatnya salah, program tidak akan berjalan.imgGambar 4-32

Variabel

Variabel dapat menyimpan data dari jenis apa pun, nama variabel yang ditulis langsung adalah nama variabel yang dibuat, tetapi jika Anda menetapkan nilai variabel pada saat membuat variabel, maka program akan memberikan kesalahan..imgGambar 4-33

Data

Python memiliki enam jenis data, yang terdiri dari tiga data yang tidak dapat diubah, dan tiga data yang dapat diubah. Dengan nama, data yang tidak dapat diubah, setelah dibuat, nilainya tidak dapat diubah, alamatnya unik di memori; data yang dapat diubah adalah referensi alamat di memori, jika nilainya berubah, alamat memori tidak berubah. Data yang tidak dapat diubah (tiga): Number (angka), String (string), Tuple (sumbu); Variabel data (tiga): List (daftar), Dictionary (kamus), Set (kumpulan).imgGambar 4-34

Angka

Jenis angka Python mendukung int (integral), float (floating), bool (bool), complex (plural) dan built-in (type) fungsi yang dapat digunakan untuk menanyakan jenis objek yang dirujuk oleh variabel.imgGambar 4-35

Operator

Seperti kebanyakan bahasa, operasi matematika dalam Python sangat intuitif. Operator aritmatika, operator perbandingan, dan operator logis sama seperti yang kita ketahui di sekolah. Operator aritmatika adalah operasi matematika penjumlahan dan pengurangan. Operator perbandingan dapat membandingkan dua nilai yang lebih kecil atau lebih kecil.imgGambar 4-36

Perlu dicatat bahwa: and adalah logis dengan, yang berarti dan . or adalah logis atau, yang berarti atau . ! adalah non-logis, yang berarti atau : Tanda dan tanda adalah ketika semua kondisi adalah benar, maka kondisi akhir adalah benar. or adalah dalam semua kondisi, jika ada salah satu kondisi yang true, maka kondisi akhir adalah true.

Prioritas

Jika ada ekspresi 100* ((10-1) / ((10+5)), langkah mana yang harus dihitung terlebih dahulu? Matematika sekolah menengah memberi tahu kita: (1) Jika operasi tingkat yang sama, biasanya menghitung dari kiri ke kanan. (2) Jika ada pengurangan dan perkalian, perkalian terlebih dahulu. (3) Jika ada tanda kurung, perhitungan di dalam tanda kurung.imgGambar 4-37

Nilai Bull

Jenis boolean mewakili benar dan salah, yang biasanya digunakan dalam penilaian kondisional dan kalimat loop. Python mendefinisikan dua konstanta yang disebut True-Line dan Flase-Line untuk mewakili benar.imgGambar 4-38

String

String adalah kata, yang sering digunakan dalam pengaturan kode varietas seperti if1905. String dalam Python menggunakan tanda kutip tunggal atau tanda kutip ganda. Tambahan + adalah konektor string.imgGambar 4-39

Daftar

Daftar adalah jenis data yang paling sering digunakan di Python. Anda dapat membayangkan daftar sebagai wadah, tetapi elemen dalam wadah disusun dari kiri ke kanan, dengan elemen pertama adalah 0, elemen kedua adalah 1, dan sebagainya. Selain itu, daftar Python dapat menyimpan jenis data apa pun, seperti yang ditunjukkan di bawah ini:imgGambar 4-40

Fungsi

Fungsi dalam Python tidak memiliki perbedaan esensial dari fungsi di sekolah menengah kita, dan Anda dapat memahami apa yang ditransfer, apa yang diekspor melalui perhitungan fungsi, seperti yang ditunjukkan di bawah ini:imgGambar 44-41

kalimat if

if statements sering muncul dalam kehidupan kita, seperti: jika hari ini hujan, saya akan bertaruh; yaitu, statements hanya akan mengeksekusi kode jika kondisi yang ditentukan adalah True. Perhatikan, perhatikan format penyusutan kode, jika tidak akan menghasilkan kesalahan Python!imgGambar 44-42

if...else kalimat

if...else juga merupakan kalimat yang biasa digunakan, misalnya: jika hari ini hujan, saya akan bertaruh; jika tidak, saya tidak akan bertaruh.imgGambar 44-43

kalimat elif

Karena python tidak mendukung kata ganti, Python hanya dapat melakukan penghakiman dengan kata elif dalam beberapa kondisi. Misalnya: jika sinar matahari, saya melihat lebih banyak; jika tidak, saya melihat kosong; jika tidak, saya melihat; seperti yang ditunjukkan di bawah ini:imgGambar 44-44

untuk berputar

Kadang-kadang kita perlu mendapatkan data K-line dari hari-hari terakhir, kita hanya perlu mengambil data dari K-line array, berdasarkan lokasi data K-line, maka menggunakan loop for sangat mudah, seperti yang ditunjukkan di bawah ini:imgGambar 4-45

while loop

Kita semua tahu bahwa pasar terus berubah, jika Anda ingin mendapatkan array K terbaru, Anda harus terus menjalankan kode yang sama berulang kali, maka gunakan loop whilex, yang akan terus mendapatkan array K terbaru selama kondisi yang ditentukan benar.imgGambar 44-46

kalimat break dan kalimat continue

Sebuah loop memiliki syarat, yaitu bahwa loop akan melakukan sesuatu secara berulang-ulang hanya ketika kondisi ini adalah false false, dan loop akan berakhir sampai kondisi ini adalah false false. Namun, break statements dapat melompat dari loop secara langsung dalam proses pelaksanaan loop; continue statements dapat menghentikan suatu loop dan melanjutkan ke loop berikutnya, seperti yang ditunjukkan di bawah ini:imgGambar 44-47

kalimat return

return statement akan menghentikan fungsi dan mengembalikan nilai dari fungsi tersebut. return statement hanya dapat muncul di dalam tubuh fungsi, dan muncul di tempat lain dalam kode akan menyebabkan kesalahan tata bahasa!imgGambar 44-48

Arsitektur Strategi

Arsitektur strategi dapat dipahami sebagai format tetap dari strategi, penemu alat kuantitatif menggunakan model konsultasi, berikut adalah arsitektur strategi komoditas berjangka klasik.

Baris ke-4 sampai ke-7 adalah fungsi input utama dari seluruh program, yaitu komputer menjalankan kode dari baris ke-4, kemudian langsung menjalankan baris ke-5 dan masuk ke loop tak terbatas; kemudian dalam loop tak terbatas terus menjalankan fungsi onTick dan sleep; fungsi onTick adalah baris pertama kode, Anda dapat menulis logika pada baris ke-2; kita tahu bahwa dalam loop, program berjalan sangat cepat, maka menggunakan sleep dapat mematikan, dan pada generasi berikutnya, sleep (500) adalah setiap siklus, tidur 500 millisecond.imgGambar 44-49

Pengamatan

Ini adalah pengantar singkat untuk bahasa Python, meskipun hanya dasar-dasar sederhana, tetapi tidak masalah untuk menulis strategi transaksi kuantitatif yang sederhana. Jika Anda perlu menulis strategi yang lebih kompleks, Anda dapat merujuk pada dokumentasi API Python, alat kuantitatif yang ditemukan oleh penemu.

Bagian berikutnya

Dalam analisis teknis, strategi trendline dan penembusan saluran tidak diragukan lagi adalah dua strategi utama. Meskipun tujuan mereka adalah untuk menangkap tren pergerakan harga, filosofi perdagangan dan karakteristik risiko kedua strategi ini sangat berbeda. Setelah mempelajari pengantar bahasa Python pada bagian ini, kita akan membantu Anda menulis strategi perdagangan kuantitatif untuk penembusan saluran.

PR setelah sekolah

1. Cobalah untuk mendapatkan data K-line historis menggunakan bahasa Python dalam alat kuantifikasi penemu. 2. Cobalah menulis kode strategi di awal bagian ini, dan tulis komentar.

4.4 Cara menggunakan bahasa Python untuk melakukan transaksi strategis

Rincian

Pada artikel sebelumnya, kami telah mempelajari pengantar bahasa Python, tata bahasa dasar, kerangka kerja strategi, dll. Meskipun kontennya membosankan, ini adalah keterampilan penting yang harus Anda pelajari untuk menerapkan strategi perdagangan.

Penjelasan tentang strategi

Dari banyak strategi perdagangan, strategi saluran Dongjian seharusnya menjadi salah satu strategi terobosan klasik, yang telah terkenal sejak tahun 1970 ketika perusahaan asing melakukan uji coba dan penelitian simulasi khusus pada strategi perdagangan terprogram yang populer. Hasilnya menunjukkan bahwa dari semua tes strategi, strategi saluran Dongjian adalah yang paling sukses.

Kemudian, terjadi pelatihan pedagang kerapu yang paling terkenal dalam sejarah perdagangan di Amerika Serikat, yang menghasilkan kesuksesan besar. Pada saat itu, metode perdagangan kerapu adalah rahasia, tetapi setelah lebih dari satu dekade, undang-undang perdagangan kerapu diumumkan, orang-orang baru menyadari bahwa kerapu menggunakan strategi Dongchin yang disempurnakan.

Strategi trading break-through cocok untuk jenis perdagangan yang cenderung lebih lancar. Cara trading break-through yang paling umum adalah dengan menggunakan hubungan harga dengan posisi relatif dukungan dan resistensi untuk menentukan titik jual dan beli transaksi tertentu.

Peraturan Strategi Jalan Dongjian

Saluran Dongqian adalah indikator trendy yang memiliki tampilan dan sinyal yang sedikit mirip dengan indikator Blink-Blink. Namun, saluran Dongqian dibangun berdasarkan harga tertinggi dan harga terendah dalam periode tertentu. Misalnya, dalam menghitung nilai maksimum dari harga tertinggi 50 garis K terbaru, terbentuk lintasan; menghitung nilai minimum dari harga terendah 50 garis K terbaru, terbentuk lintasan. Indikator ini terdiri dari 3 kurva dengan warna yang berbeda, dengan standar harga tertinggi dan terendah dalam 20 siklus untuk menunjukkan volatilitas harga pasar, ketika saluran yang sempit menunjukkan volatilitas pasar yang lebih kecil, sedangkan saluran yang lebar menunjukkan volatilitas pasar yang lebih besar.

Jika harga naik dan naik, sinyalnya adalah membeli; sebaliknya, jika harga turun, sinyalnya adalah menjual. Karena naik dan turunnya dihitung dengan harga tertinggi dan terendah, biasanya harga jarang naik dan turun pada jalur saluran pada saat yang sama. Dalam kebanyakan kasus, harga bergerak di sepanjang tren naik atau turun secara sepihak, atau bergerak di antara tren naik dan turun.

Metode perhitungan saluran Dongjian

Dalam alat pengukuran penemu, metode perhitungan saluran Dongjian sangat sederhana, dengan menggunakan harga tertinggi atau minimum dalam siklus yang ditentukan, seperti yang ditunjukkan di bawah ini: baris 5 adalah nilai maksimum dari harga tertinggi 50 siklus, baris 6 adalah nilai minimum dari harga minimum 50 siklus.imgGambar 4-50

Logika strategis

Ada banyak cara untuk menggunakan saluran Dongguan, yang dapat digunakan sendiri-sendiri, atau juga dapat digunakan bersama dengan indikator lain. Pada bagian ini kita akan menggunakan metode yang paling sederhana. yaitu: ketika harga dari bawah ke atas menembus lintasan naik, yaitu menembus garis tekanan di atas, kita menganggap kekuatan multilateral semakin kuat, gelombang bullish atas telah terbentuk, dan sinyal beli dan buka terjadi; ketika harga dari atas turun dan menembus lintasan bawah, yaitu jatuh, kita menganggap kekuatan di atas semakin kuat, gelombang penurunan telah terbentuk, dan sinyal jual dan buka terjadi.imgGambar 4-51

Jika setelah membeli posisi terbuka, harga jatuh kembali ke lintasan tengah saluran Dongjian, kita berpikir bahwa kekuatan multilateral melemah, atau kekuatan udara menguat, dan sinyal jual rata-rata dihasilkan; jika setelah menjual posisi terbuka, harga kembali naik kembali ke lintasan tengah saluran Dongjian, kita berpikir bahwa kekuatan udara melemah, atau kekuatan udara menguat, dan sinyal pembelian rata-rata dihasilkan.

Kondisi jual beli Berinvestasi: Jika tidak ada saham dan harga penutupan lebih besar dari harga di atasBerjualan dengan tangan kosong: Jika tidak ada saham dan harga penutupan kurang dari trenBanyak posisi: Jika Anda memiliki lebih banyak pesanan, dan harga penutupan kurang dari rata-rataTangan kosong: Jika Anda memiliki kartu kosong, dan harga penutupan lebih besar dari rata-rata

Implementasi kode strategi

Langkah pertama dalam menerapkan strategi adalah dengan mendapatkan data terlebih dahulu, karena data merupakan bagian penting dari strategi trading. Bayangkan, apa data yang kita butuhkan? dan bagaimana kita mendapatkan data tersebut? kemudian kita menghitung logika trading berdasarkan data tersebut; dan akhirnya dengan menggunakan logika trading, kita membeli dan menjual satu transaksi; langkah spesifik adalah sebagai berikut:

Langkah 1: Menggunakan Perpustakaan Perdagangan

Anda dapat membayangkan sebuah database perdagangan sebagai modul fungsi, dan manfaatnya adalah bahwa Anda dapat menempatkan energi Anda pada menulis logika strategi. Contoh: ketika kita menggunakan database perdagangan, ketika kita membuka posisi, kita dapat langsung menggunakan API yang tercantum di dalam database perdagangan; tetapi jika kita tidak menggunakan database perdagangan, ketika kita membuka posisi, kita perlu mendapatkan harga transaksi, masalah yang perlu dipertimbangkan dalam laporan yang tidak ditangani, masalah yang perlu dipertimbangkan dalam penarikan pesanan, dll.imgGambar 4-52

Gambar di atas adalah kerangka strategi CTA yang menggunakan alat kuantifikasi penemu. Ini adalah format kode yang tetap, dan semua kode logika transaksi ditulis dari baris ke-4.

JavaScript memiliki sebuah template library built-in, dan Python perlu menyalin dan menyimpan template ini:https://www.fmz.com/strategy/24288Anda dapat memilih referensi di halaman edit kebijakan. Anda juga dapat menyelesaikan kebijakan tanpa menggunakan perpustakaan template.

img

Langkah 2: Mendapatkan berbagai data

Dari logika trading strategi kami, kita akan menemukan bahwa kita harus mendapatkan posisi saham saat ini, kemudian membandingkan hubungan antara harga penutupan dengan tren penurunan pada indikator Blink-Blink, dan akhirnya menilai apakah pasar akan ditutup.

Mendapatkan data K-line

Pertama adalah untuk mendapatkan Array K-line dan harga penutupan K-line saat ini, karena memiliki Array K-line, API dapat dipanggil untuk mendapatkan harga tertinggi atau harga terendah siklus N.imgGambar 4-53 Seperti gambar di atas: Garis 4: Dapatkan Array K-Line, yang merupakan format tetap. Baris 5: Filter panjang K-line, karena kita menghitung harga tertinggi atau terendah siklus N, parameter yang digunakan adalah 50, dan ketika K-line kurang dari 50 kata, tidak dapat dihitung. Jadi di sini untuk menyaring panjang K-line, jika K-line kurang dari 50 kata, skip loop ini dan terus menunggu K-line berikutnya. Baris ke 6: Kita menggunakan kode len ((records - 1] untuk mendapatkan data terakhir dari array K-line, yaitu data K-line terbaru. Data ini adalah objek yang berisi: harga buka, harga tertinggi, harga minimum, harga tutup, volume transaksi, waktu, dll.

Mendapatkan data penyimpanan

Informasi kepemilikan adalah kondisi penting dalam strategi perdagangan kuantitatif. Ketika kondisi perdagangan ditetapkan, Anda juga perlu menilai apakah pesanan dilakukan melalui status kepemilikan dan jumlah kepemilikan. Misalnya: ketika kondisi perdagangan pembelian posisi terbuka ditetapkan, jika ada kepemilikan, maka tidak perlu melakukan pemesanan berulang; jika tidak ada kepemilikan, maka Anda dapat melakukan pemesanan.imgGambar 4-54

Seperti gambar di atas: Ini adalah fungsi untuk mendapatkan informasi penyimpanan, kembali 0 jika kosong; kembali 1 jika banyak; kembali -1 jika kosong; perhatikan kode di atas: Baris 2: Buat fungsi bernama mp yang tidak memiliki parameter. Baris 3: Dapatkan Array Holding, yang merupakan format yang tetap. Garis 4: Tentukan panjang array yang disimpan, jika panjangnya sama, itu pasti kosong, jadi kembali ke 0. Baris ke-6: Gunakan loop for, mulai melintasi array ini, dan logika selanjutnya sudah sangat sederhana, jika memegang banyak baris, akan mengembalikan 1; jika memegang baris kosong, akan mengembalikan −1. Baris 18: Panggilan fungsi pemegang informasi pemegang yang baru saja ditulis.

Dapatkan harga tertinggi dan terendah dari 50 garis K terbaru

Dalam alat kuantifikasi penemu, fungsi TA.Highest TA.Lowest TA.Lowest dapat diperoleh langsung dengan menggunakan TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest tanpa harus menulis lagi perhitungan logika sendiri. Dan fungsi TA.Highest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest tidak hanya mengembalikan hasil yang spesifik, tetapi juga hasil dari hasil yang berbeda.imgGambar 4-55

Seperti gambar di atas: Baris 19: Panggilan fungsi TA.Highest hash untuk mendapatkan nilai maksimum dari harga tertinggi 50 siklus Baris 20: Panggilan untuk TA.Lowest untuk mendapatkan nilai minimum dari harga minimum 50 siklus Baris 21: Rata-rata dihitung berdasarkan nilai maksimum dari harga tertinggi 50 siklus dan nilai minimum dari harga terendah 50 siklus

Langkah 3: Buat transaksi

Dengan data di atas, Anda dapat menulis logika transaksi dan kode untuk transaksi suborder. Formatnya juga sangat sederhana, yang paling sering digunakan adalah kata sandi if, yang dapat dijelaskan dengan kata: jika kondisi 1 dan kondisi 2 berlaku, suborder; jika kondisi 3 atau kondisi 4 berlaku, suborder.imgGambar 4-56

Seperti gambar di atas: Baris 22: Menggunakan database kelas transaksi, yang merupakan format yang tetap Garis 23, 24: Ini adalah pernyataan sederhana yang menggunakan rumus perbandingan dan rumus logika yang telah kita pelajari sebelumnya, yang berarti bahwa jika Anda memiliki banyak pesanan saat ini dan harga penutupan kurang dari jalur tengah, semua posisi akan diratakan. Baris 25, 26: Ini adalah pernyataan dari daftar kosong kosong, yang menggunakan rumus perbandingan dan rumus logika yang telah kita pelajari sebelumnya, yang berarti bahwa jika Anda memiliki daftar kosong saat ini dan harga penutupan lebih besar dari tengah, semua posisi akan diratakan. Baris 27: Pertimbangkan status saham saat ini, dan langkah selanjutnya adalah jika saham kosong. Baris 28, 29: Memutuskan apakah harga penutupan lebih besar dari tren, jika harga penutupan naik melewati tren, beli posisi terbuka. Baris 30 dan 31: menilai apakah harga penutupan kurang dari tren, jika harga penutupan turun dari tren, jual posisi terbuka.

Pengamatan

Di atas, kita mempelajari setiap langkah untuk mengembangkan strategi perdagangan kuantitatif yang lengkap dengan Python, termasuk: gambaran strategi, metode perhitungan saluran Dongjian, logika strategi, kondisi jual beli, implementasi kode strategi, dll. Bagian ini hanyalah strategi sederhana, sebagai penghilang kerucut, lebih dari satu metode yang dapat Anda gunakan untuk menyusun strategi perdagangan kuantitatif Anda sendiri.

Bagian berikutnya

Dalam pengembangan strategi transaksi kuantitatif, dari sudut pandang kecepatan pelaksanaan bahasa pemrograman, hanya C ++ yang dapat dikatakan paling cepat. Terutama di bidang derivatif dan perdagangan frekuensi tinggi, C ++ memiliki keunggulan dalam perhitungan numerik, yang dapat meningkatkan kecepatan beberapa tingkat dibandingkan dengan JavaScript dan Python.

PR setelah sekolah

1, Mulai dari saat ini, mulailah menerapkan strategi untuk bagian ini. 2. Cobalah untuk menambahkan satu indikator rata-rata untuk strategi bagian ini, mengurangi frekuensi perdagangan.

Bab 5: Uji Kembali, Debug, dan Peningkatan Strategi

5.1 Makna dan perangkap dari retesting

Rincian

Retrospeksi adalah hal yang paling berbeda dari perdagangan kuantitatif, yang didasarkan pada data pasar nyata yang telah terjadi secara historis, pemicu sinyal strategi simulasi cepat dan pengambilan gambar perdagangan, laporan kinerja dalam jangka waktu tertentu, dan lain-lain. Untuk pasar saham, komoditas berjangka, mata uang asing, dan pasar domestik dan luar negeri, ini adalah salah satu komponen terpenting dalam pengembangan strategi.

Makna dari retesting

Pada bab sebelumnya, kita mempelajari dasar-dasar bahasa pemrograman utama, dan mengajarkan bagaimana menggunakan dasar-dasar pemrograman ini untuk menulis beberapa strategi transaksi sederhana. Kita bisa mengatakan bahwa perjalanan mil telah berjalan setengah jalan. Namun, setelah menulis sebuah strategi, pasti tidak dapat langsung dipraktekkan, itu juga membutuhkan uji ulang yang terus menerus, uji ulang, uji ulang, uji ulang, uji ulang, dll, sampai strategi dapat sepenuhnya mengimplementasikan konten model dan dapat berjalan dengan lancar.

Dari sudut pandang logika perdagangan kuantitatif, strategi sebenarnya didasarkan pada serangkaian persepsi dan asumsi tentang pasar, yang dapat secara efisien ditentukan oleh retrospeksi apakah asumsi-asumsi tersebut valid dan stabil. Dalam periode ketidakstabilan sejarah, kerugian apa yang mungkin terjadi dan membantu membuat keputusan untuk mencegah kerugian tersebut.

Selain itu, dari sudut pandang operasi perdagangan kuantitatif, retesting dapat membantu mendeteksi bug dalam logika strategi, seperti fungsi masa depan, harga curian, banyak pencocokan, dll.

  • Untuk mengkonfirmasi keakuratan sinyal transaksi.
  • Anda bisa melakukan hal yang sama dengan orang lain, tetapi Anda tidak bisa melakukannya sendiri.
  • Mengidentifikasi kelemahan dalam sistem perdagangan dan memperbaiki strategi awal.

Oleh karena itu, maksud dari retesting adalah untuk mereproduksi proses perdagangan yang sebenarnya dengan data historis, memverifikasi efektivitas strategi, menghindari biaya yang mahal untuk strategi yang salah, dan membantu kita menyaring, memperbaiki, dan mengoptimalkan strategi perdagangan.

Perangkap Retestasi

Dia mengatakan, "Saya tidak tahu apa yang terjadi".

Strategi trading pada saat retargeting didasarkan pada data historis statis; sedangkan data perdagangan yang sebenarnya bersifat dinamis. Sebagai contoh: jika harga tertinggi lebih besar dari harga penutupan kemarin maka posisi terbuka akan dibeli. Kondisi ini adalah bahwa pada disk nyata, jika garis K belum selesai, maka harga tertinggi adalah dinamis, dan sinyal perdagangan mungkin akan berkedip kembali.

Fungsi masa depan dari jebakan:

Fungsi masa depan menggunakan harga masa depan, yang berarti kondisi saat ini mungkin akan diubah di masa depan, dan fungsi masa depan juga dapat menyebabkan sinyal berkedip. Oleh karena itu, setiap fungsi memiliki sifat fungsi masa depan, seperti kata-kata yang berubah menjadi fungsi yang berkedip.

Seperti gambar di bawah ini: Fungsi Word-shift menunjukkan titik balik dari puncak gelombang dan lembah gelombang, dan dapat menyesuaikan pengukuran sendiri sesuai dengan harga real-time terbaru, tetapi jika harga saat ini berubah, hasil perhitungan fungsi Word-shift juga akan berubah. Jika menggunakan fungsi dengan fungsi masa depan, sinyal order saat ini mungkin dibuat dan di-order, tetapi setelah beberapa saat mungkin sinyal ini tidak berlaku lagi.imgGambar 5-1

Mengidentifikasi Harga Pencurian

Penguatan harga adalah perdagangan yang menggunakan harga masa lalu. Sebagai contoh, jika harga tertinggi lebih besar dari harga tetap, maka pembelian dilakukan dengan harga buka. Kondisi ini adalah pencurian, karena pada saat harga tertinggi lebih besar dari harga tertentu, harga sudah berada di atas harga buka dengan jarak tertentu, maka tidak dapat dibeli dengan harga buka.

Ada juga kasus di mana jika harga melompat lebih tinggi dari harga tetap yang ditetapkan oleh strategi, harga tetap dapat ditransfer pada saat retrospeksi, tetapi harga tetap ini jelas tidak dapat dibeli di pasar nyata.

Harga yang tidak mungkin untuk menjebak kembali

Harga yang tidak dapat diselesaikan dapat dibagi menjadi beberapa situasi: Yang pertama: di bursa nyata, harga pegat pada umumnya tidak dapat dibeli, sebaliknya jatuh juga demikian. Tetapi di bursa balik, itu dapat ditukar.

Yang kedua: mekanisme pengambilan gambar di bursa adalah: prioritas harga, prioritas waktu. Beberapa jenis transaksi akan sering memiliki pesanan besar, jika transaksi yang dilakukan secara real time, Anda perlu menunggu ketebalan transaksi, untuk melakukan transaksi atau bahkan tidak melakukan transaksi. Tetapi pada saat retesting, transaksi yang dilakukan dapat dilakukan.

Ketiga: jika strategi suku cadang, maka keuntungan retargeting sangat tinggi, karena setiap kali retargeting telah diasumsikan untuk merebut perbedaan harga ini. Dalam kasus yang sebenarnya, banyak perbedaan harga tidak dapat direbut, atau hanya merebut satu kaki, secara umum pasti tidak menguntungkan arah Anda, maka Anda harus segera melakukan transaksi pertama, maka Anda harus segera mengisi kaki lain, saat ini titik geser tidak lagi 1-2 poin, dan strategi retargeting sendiri akan merebut perbedaan harga beberapa poin ini, yang tidak dapat disimulasikan dalam retargeting.

Jenis keempat: Black Swan Event. Seperti di bawah ini, dalam Forex Swiss Black Swan Event, meskipun terlihat seperti harga buka, harga tertinggi, harga minimum, harga penutupan, sebenarnya dalam pasar ekstrim hari itu, harga tengah adalah kekosongan, banyak pesanan stop loss, menyebabkan kejadian penetrasi, likuiditas nol, kesulitan transaksi sangat besar, tetapi dapat menghentikan kerugian dalam pengujian kembali.imgGambar 5-2

Mengidentifikasi ketergantungan yang berlebihan pada perangkap

Setiap kali saya melihat gambar di bawah ini, pikiran saya adalah: hahaha... Dari gambar di bawah ini, Anda dapat melihat bahwa model yang tidak masuk akal, jika cukup kompleks, dapat menyesuaikan dengan data dengan sempurna.imgGambar 5 - 3

Untuk transaksi kuantitatif, retargeting didasarkan pada data historis, tetapi sampel data historis terbatas jika parameter strategi perdagangan terlalu banyak, atau logika perdagangan terlalu kompleks, yang menyebabkan strategi perdagangan terlalu beradaptasi dengan data historis.

Proses pemodelan strategi kuantitatif pada dasarnya adalah proses mencari data non-random lokal dari sejumlah besar data yang tampaknya acak, dan jika tidak menggunakan pengetahuan statistik, mudah jatuh ke dalam jebakan overfitting.

Jadi, jangan tertipu. Jika Anda menemukan bahwa data luar sampel tidak berkinerja baik, dan merasa terlalu menyedihkan untuk membuang model atau tidak mau mengakui bahwa model Anda tidak berhasil, dan terus mengoptimalkan model dengan data luar sampel sampai data luar sampel juga berkinerja baik, luka terakhir pasti akan menjadi perak emas Anda.

Mengidentifikasi Kecurangan yang Terjadi

Sebuah lelucon yang populer di Wall Street adalah: asumsikan ada 1.000 monyet yang berpartisipasi dalam investasi di pasar, tahun pertama, buang 500 monyet yang kalah; tahun kedua, buang setengahnya, dan tersisa 250 monyet; dan pada akhir tahun ketiga, tersisa 125 monyet.imgGambar 5-4

Pada tahun kesembilan, masih ada satu ekor yang tersisa. Kemudian Anda melihat, lihat, lihat ke kiri dan ke kanan, dan melihat, Anda merasa tertekan. Akhirnya melihat sampul majalah keuangan, tiba-tiba saya berpikir, wow, bukankah itu Buffett?

Tentu saja ini hanya sebuah lelucon, tetapi apakah Anda pernah berpikir bahwa jika ada 1000 manajer dana, maka dalam 10 tahun, sekitar 10 manajer dana akan berlari dan memenangkan pasar selama 10 tahun berturut-turut.

Seperti di gambar di kiri, saya yakin sebagian besar investor akan melihat hasil yang baik. Strategi investasi ini sangat solid dan tidak ada penurunan yang signifikan.imgGambar 5-5

Dan lambat, seperti yang ditunjukkan pada gambar di sebelah kanan, situasi yang sebenarnya ada di dalamnya. Curve retrospective di sebelah kiri adalah yang terbaik dari banyak retrospective. Artinya, di belakang retrospective di sebelah kiri ada banyak situasi yang lebih buruk.

Mengukur kembali biaya dampak dari perangkap

Dalam lingkungan perdagangan yang nyata, harga selalu berfluktuasi, dan ketika Anda melihat peluang perdagangan, saat Anda memesan, mungkin harga sudah berubah. Jadi masalah titik slip, baik dalam perdagangan subjektif maupun kuantitatif, tidak dapat dihindari.

Tetapi retrospeksi didasarkan pada data statis dan sulit untuk mensimulasikan lingkungan perdagangan yang nyata. Sebagai contoh: harga pesanan adalah 1050 beli, tetapi harga transaksi sebenarnya mungkin 1051. Ada banyak prinsip yang menyebabkan fenomena ini, seperti: ruang likuiditas saat pasar ekstrim, keterlambatan jaringan, sistem perangkat lunak, respon server, dll.

Pengukuran ulang tanpa titik geser

imgGambar 5-6

Seperti di gambar di atas, retrospeksi titik non-slip, kurva dana terlihat lebih baik, tetapi harga transaksi yang sebenarnya dalam perdagangan real-time berbeda dengan harga transaksi ideal dari retrospeksi strategi. Jadi untuk mengurangi kesalahan ini, saat melakukan retrospeksi strategi, Anda dapat mengatur dua titik slip untuk meningkatkan harga beli atau menurunkan harga jual.

Tambah retesting pada titik slider

imgGambar 5-7

Seperti gambar di atas, strategi yang sama, jika ditambah 2 jump slider, hasil retesting dengan hasil retesting tanpa slip slider, sangat berbeda, maka juga berarti strategi ini perlu ditingkatkan atau dihilangkan. Terutama strategi dengan frekuensi perdagangan yang relatif tinggi, menambahkan 1-2 jump slider saat retesting, dapat membuat retesting lebih dekat dengan lingkungan perdagangan yang sebenarnya.

Pengamatan

Mungkin ada yang bertanya, bagaimana saya bisa membuktikan bahwa strategi saya tidak bermasalah, karena transaksi kuantitatif dapat menimbulkan banyak masalah? Sebenarnya jawabannya sangat sederhana, trading simulasi harus dilakukan untuk waktu yang lama sebelum strategi berhasil, jika harga transaksi simulasi sama dengan harga transaksi saat re-metering, maka strategi ini tidak bermasalah, setidaknya logika strategi tidak bermasalah.

Bagaimanapun, untuk seorang pengembang sistem perdagangan yang berpengalaman, backtesting adalah suatu keharusan; karena itu dapat memberi tahu Anda apakah ide strategi dapat diverifikasi dan berhasil dalam perdagangan historis; tetapi banyak kali backtesting tidak berarti keuntungan di masa depan; karena banyak lubang di dalam backtesting dan Anda tidak akan mengerti pelajaran yang tidak Anda beli; dan pelajaran-pelajaran itu ditumpuk dengan emas dan perak sejati. Saya ingin membaca artikel ini setidaknya membuat Anda tidak mengalami banyak kemacetan dan jebakan kuantitatif.

PR setelah sekolah

1. Apa yang disebut overfit dan bagaimana cara menghindarinya? 2/ Apa yang terjadi dalam kehidupan nyata yang menjadi keanehan para korban?

5.2 Cara Mengukur Ulang Transaksi

Rincian

Makna dan pentingnya retrospeksi telah dibantah, dan ketika melakukan retrospeksi kuantifikasi, strategi harus berada di lingkungan nyata sejarah sebanyak mungkin, jika rincian di lingkungan sejarah diabaikan, itu dapat menyebabkan seluruh retrospeksi kuantifikasi tidak berlaku.

Retrospeksi adalah reproduksi data yang dilakukan dengan memutar kembali data K-line sejarah dan melakukan simulasi aturan perdagangan yang nyata, sehingga akhirnya mengumpulkan data seperti rasio Sharp, rasio maksimum retrospeksi, rasio tahunan, kurva modal, dan lain-lain dalam jangka waktu tertentu. Saat ini ada banyak perangkat lunak yang dapat melakukan retrospeksi, seperti keuangan Cina yang sangat lengkap, VNPY yang dapat disesuaikan secara fleksibel, dan sebagainya.

Penemu kuantifikasi sebagai perangkat lunak perdagangan kuantifikasi komersial, dilengkapi dengan mesin kuantifikasi kinerja tinggi, menggunakan kerangka kuantifikasi for-loop, untuk melakukan perhitungan kuantifikasi vektor, lebih cepat; dan menyamakan kuantifikasi dan kode real disk, sebagian memecahkan kesulitan kuantifikasi real disk yang mudah dan sulit.

Penjelasan tentang antarmuka

Kami menggunakan strategi inventor-quantitative mailing untuk membuat situs web pengembang alat transaksi kuantitatif.www.fmz.comSetelah itu, klik Pusat Kontrol, Pustaka Kebijakan, Pilih Kebijakan, Uji Kembali Analog, dan Anda akan menemukan halaman berikut:imgGambar 5-8

Dalam antarmuka konfigurasi retest, Anda dapat menyesuaikan sesuai dengan kebutuhan Anda sendiri. Misalnya: mengatur waktu retest, siklus K-line, jenis data (data tingkat analog atau data tingkat real disk. Sebaliknya, retest data tingkat analog lebih cepat, retest data tingkat real disk lebih akurat). Selain itu, Anda juga dapat mengatur biaya prosedur saat retest dan dana awal akun, dll.

Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode Metode MetodeimgGambar 5-9

Jumlah posisi terbuka secara default adalah jumlah posisi terbuka pada saat retargeting, dan jumlah maksimum pada satu transaksi adalah jumlah maksimum posisi terbuka pada satu transaksi yang ditugaskan pada mesin retargeting. Harga transaksi pada piringan nyata terjadi pergeseran antara harga transaksi dan kisaran harga transaksi yang ditetapkan, pergeseran ini umumnya bergerak ke arah yang tidak menguntungkan trader, menyebabkan transaksi terjadi kerugian tambahan, jadi perlu untuk menambahkan titik geser, dan futures komoditas domestik umumnya bergabung dengan 1-2 lompat, atau bahkan lebih, untuk mensimulasikan lingkungan perdagangan yang nyata.

Opsi berjangka berisi jenis kontrak yang ingin diulang, seperti rb000 atau rb888. Opsi nyata digunakan terutama untuk perdagangan nyata dan tetap pada pengaturan default saat diulang. Jika klik kemajuan pemulihan otomatis benar, maka setelah kebijakan menghentikan bot dalam operasi nyata, robot akan diulang kembali ke posisi sinyal sebelumnya, tanpa perlu menghitung ulang sinyal.imgGambar 5-10

Opsi perdagangan langsung terutama ditujukan untuk perdagangan mata uang digital, yang dapat tetap menjadi pengaturan default dalam retrospeksi. Anda dapat menentukan volume transaksi tunggal, volume transaksi minimum, akurasi mata uang yang ditentukan, akurasi varietas transaksi, biaya prosedur, waktu sinkronisasi akun, interval statistik laba rugi, dll. Selain itu, untuk pertukaran mata uang digital individu, Anda juga dapat mengatur leverage multiplier dan pengaturan terkait lainnya.imgGambar 5-11

Uji Kembali Strategi

Sebelum mengulas kembali, tentukan strategi trading Anda, di sini kita akan menggunakan strategi Thermostat Thermostat, yang akan menggunakan strategi tren di pasar tren, strategi goncangan di pasar goyah, berdasarkan kondisi pasar.imgGambar 5-12 Setelah mengkonfigurasi pengaturan retest, klik langsung pada tombol mulai retest, dan hasil retest akan segera ditampilkan setelah beberapa puluh detik. Dalam log retest, jumlah detik yang digunakan untuk retest, total log, dan jumlah transaksi dicatat. Di dalamnya informasi akun dicetak untuk strategi retest hasil akhir: rata-rata laba rugi, kerugian saham, uang jaminan, biaya prosedur, dan perkiraan keuntungan.imgGambar 5-13

Tab status mencatat jenis transaksi, volume kepemilikan, harga kepemilikan, harga terbaru, jenis sinyal terakhir, harga tertinggi dan terendah setelah kepemilikan, jumlah dan waktu pembaruan, dan informasi dana. Selain itu, label laba rugi yang mengambang menunjukkan kurva dana yang terperinci untuk akun, dan juga indikator kinerja yang sering digunakan: tingkat laba, tingkat laba tahunan, rasio Sharpe, tingkat fluktuasi tahunan maksimum, tingkat penarikan kembali, yang pada dasarnya dapat memenuhi kebutuhan sebagian besar pengguna.

Di antaranya, indikator kinerja yang paling penting adalah: rasio Sharpe. Ini adalah indikator komprehensif yang mempertimbangkan keuntungan dan risiko, dan juga merupakan indikator referensi penting untuk mengukur produk dana, yang secara umum adalah berapa banyak uang yang Anda ambil risiko per dolar, jadi nilai rasio Sharpe semakin tinggi, semakin baik.

Rasio fluktuasi tahunan, seperti namanya, adalah rasio fluktuasi harian x jumlah hari perdagangan per tahun, yang merupakan ukuran risiko dana, tetapi tidak sepenuhnya semua risiko. Misalnya, strategi A memiliki fluktuasi yang besar, tetapi selalu berfluktuasi ke atas, laba yang baik, strategi B memiliki fluktuasi yang kecil, tetapi selalu diam, dapatkah kita mengatakan strategi B lebih baik daripada strategi A?imgGambar 5-14

Akhirnya, di kolom informasi log, detail tentang pengambilan gambar setiap transaksi pada saat retargeting, termasuk waktu tertentu transaksi, pasar, jenis jual beli dan bukaan, harga transaksi yang diambil oleh mesin retargeting, jumlah transaksi, dan informasi cetak, dll.imgGambar 5-15

Setelah ditinjau kembali

Seringkali, bahkan dalam kebanyakan kasus, hasil dari retesting jauh berbeda dari yang Anda harapkan. Strategi yang stabil dan menguntungkan dalam jangka panjang tidak mudah dicapai, dan itu membutuhkan kemampuan Anda untuk memahami pasar.

Jika strategi Anda mengalami kerugian, jangan putus asa, ini adalah hal yang normal. Pertama, periksa apakah logika strategi Anda salah, apakah Anda menggunakan parameter ekstrim, apakah Anda terlalu banyak membuka kondisi trading, dan sebagainya, dan jika perlu, periksa kembali strategi dan ide perdagangan Anda dari sudut pandang lain.

Jika Anda memiliki strategi yang sangat baik, kurva dana yang sangat sempurna, rasio Sharp lebih dari 1 atau bahkan lebih. Jangan terburu-buru untuk bersukacita, sebagian besar dari situasi ini adalah dengan menggunakan fungsi masa depan, atau harga curian, atau overmatching, atau tidak mengatur slider, dll.

Pengamatan

Di atas ini adalah pengantar dari seluruh proses penyesuaian strategi perdagangan, yang dapat dikatakan sudah spesifik sampai ke setiap detail. Perlu dicatat bahwa penyesuaian data historis adalah lingkungan ideal setelah semua risiko yang diketahui. Oleh karena itu, waktu penyesuaian strategi yang terbaik adalah melalui satu putaran pasar beruang, dan jumlah transaksi yang efektif harus tidak kurang dari 100 kali, sehingga dapat menghindari sebagian penyimpangan survivor.

Pasar selalu dalam perubahan dan evolusi, strategi yang baik dalam sejarah tidak selalu berarti strategi yang baik di masa depan. Strategi tidak hanya dapat menangani risiko yang diketahui dalam lingkungan yang ditelusuri, tetapi juga menghadapi risiko yang tidak diketahui di masa depan. Oleh karena itu, peningkatan daya tahan risiko dan universalitas strategi sangat diperlukan.

PR setelah sekolah

1. Cobalah untuk meniru strategi di bagian ini dan uji ulang laporan kinerja 2. Cobalah untuk memperbaiki dan mengoptimalkan strategi dalam bagian ini berdasarkan pengalaman trading Anda sendiri

5.3 Cara membaca laporan kinerja RSI

Rincian

Setelah evaluasi strategi kami selesai, penemu alat perdagangan kuantitatif akan mengeluarkan berbagai indikator kinerja, grafik kurva laba di halaman web. Tetapi mungkin karena kita tidak terlalu akrab dengan pengertian dan isi indikator ini, sehingga tidak dapat menilai strategi yang baik, artikel ini akan memulai dari konsep indikator utama untuk membantu Anda membaca laporan evaluasi kinerja strategi, membedakan kelebihan dan kekurangan strategi.

Penilaian Objektif dan Komprehensif

Baik sebagai catatan data transaksi real-time atau laporan retesting yang menggunakan data historis yang ditelusuri kembali (Back-Testing), kelebihan dan kekurangan model dinilai melalui statistik situasi transaksi.

Pertanyaannya adalah, dengan statistik apa yang harus kita bandingkan? Pertama, mari kita lihat contoh ini: Jika kita mendapatkan dua set data berikut dalam tes pada periode waktu yang sama, apakah kita dapat menentukan model mana yang lebih baik?imgGambar 5-16

Jawabannya adalah tidak. Sistem penilaian yang bersifat unilateral akan menyebabkan sistem perdagangan kuantitatif terkuras.

Sistem perdagangan harus dapat digunakan melalui retrospeksi historis. Sistem perdagangan yang tidak dapat melalui retrospeksi historis tidak dapat menghasilkan keuntungan dalam jangka panjang dalam perdagangan yang sebenarnya.

Sistem perdagangan yang dapat diulang secara historis tidak selalu merupakan sistem perdagangan yang berguna, tetapi sistem perdagangan yang tidak dapat diulang secara historis tidak selalu merupakan sistem perdagangan yang berguna. Secara umum, kita perlu menganalisis laporan kinerja dari segi stabilitas, keberlanjutan, penilaian apakah itu diharapkan, dll.imgGambar 5-17

Seperti gambar di atas, tetapi siapa pun yang terlibat dalam perdagangan kuantitatif mungkin telah menemukan istilah data yang panjang dan sulit dipahami, bahkan dalam data kinerja ini, banyak data yang saling bertentangan.

Istilah indikator kinerja dalam gambar di atas, umumnya dapat dibagi menjadi beberapa kategori besar: rasio kinerja, analisis siklus, berbagai kurva, analisis perdagangan ekstrim, dll. Bahkan dari sudut pandang produk dana yang ketat, sebagian besar hanya menampilkan hasil perhitungan retrospektif, yang sebenarnya tidak berarti banyak, seperti: kebutuhan dana rekening, keuntungan yang dipegang, batas kepercayaan, dll. Bahkan Anda hanya perlu memperhatikan beberapa yang penting. Di bawah ini saya memilih beberapa indikator kinerja retrospektif yang paling penting sebagai penjelasan rinci.

Indikator Kinerja Penting

Maximum Aset Drawdown Ratio (Max Drawdown)

Rumus maksimum mundur adalah seperti di atas untuk


Berkaitan

Lebih banyak

Hailhydra2Artikel yang bagus!

Kuantitas Ruangantanda