avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

Dibuat di: 2021-04-19 14:16:21, diperbarui pada: 2024-12-04 21:21:43
comments   0
hits   4006

Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

Pada artikel sebelumnya, kita membahas tentang skrip perdagangan terprogram. Sebenarnya, strategi trading adalah program skrip trading. Artikel ini terutama membahas tentang perlunya perangkat keras pembawa untuk program skrip trading (tempat program berjalan), bahasa pemrograman komputer apa yang dapat digunakan untuk menulis program skrip trading ini (daftar penggunaan Platform Perdagangan Kuantitatif Inventor Ada tiga bahasa pemrograman. Tentu saja, Anda dapat menggunakan bahasa pemrograman apa pun untuk menerapkan strategi perdagangan terprogram). Dalam artikel ini, kami terus membahas analisis kuantitatif lingkaran mata uang kripto dan memahami pengetahuan tentang analisis kuantitatif lingkaran mata uang kripto.

Skrip perdagangan terprogram

  • Jenis-jenis Strategi Perdagangan Para pemula yang baru mengenal perdagangan terprogram dan perdagangan kuantitatif mungkin bingung dengan berbagai istilah seperti strategi tren, strategi arbitrase, strategi frekuensi tinggi, strategi grid, dll. Faktanya, jenis strategi umum perdagangan terprogram dan perdagangan kuantitatif dapat dengan mudah dijelaskan sebagai berikut: Beberapa arah.

    • Strategi lindung nilai arbitrase Sederhananya, pada dasarnya, strategi menahan posisi panjang di satu sisi dan posisi pendek di sisi lain dapat diklasifikasikan sebagai strategi arbitrase. Ada banyak jenis yang spesifik, termasuk pasar lintas-spot, periode lintas-berjangka, arbitrase spot-berjangka, arbitrase lintas-produk, dan lain-lain.
    • Strategi Tren Sederhananya, ini adalah strategi mengikuti tren untuk menempatkan pesanan dan menahan posisi, seperti rata-rata pergerakan ganda, MACD, dan strategi lainnya.
    • Strategi Regresi Misalnya, strategi jaringan dapat memperoleh laba dari fluktuasi harga di pasar yang bergejolak.
    • Strategi Frekuensi Tinggi Sederhananya, ini adalah strategi perdagangan frekuensi tinggi melalui beberapa algoritma untuk menemukan struktur mikro pasar, aturan, peluang, dll.

Di atas dibagi dari perspektif strategi perdagangan. Dari perspektif desain strategi pada Platform Perdagangan Kuantitatif Inventor, strategi juga dapat dibagi menjadi:

  • Strategi produk tunggal Dengan kata lain, strategi ini hanya mengoperasikan satu produk, seperti perdagangan BTC atau perdagangan ETH.

  • Strategi multi-produk Secara sederhana, tujuannya adalah mengoperasikan berbagai jenis menurut logika strategi.

  • Strategi multi-akun Secara sederhana, tujuannya adalah untuk mengonfigurasi beberapa objek pertukaran pada disk nyata (konsep pertukaran telah diperkenalkan dalam artikel sebelumnya, dan objek pertukaran dengan KUNCI API yang dikonfigurasi mewakili akun pertukaran). Misalnya, beberapa strategi copy trading melibatkan beberapa akun yang mengikuti operasi (bisa di bursa yang sama atau bursa yang berbeda). Singkatnya, beberapa objek bursa (akun) dikelola pada satu akun riil.

  • Berbagai strategi logika Misalnya, di pasar nyata, strategi MACD, strategi moving average, strategi grid, dll. dirancang pada saat yang sama (tentu saja, mereka beroperasi pada objek pertukaran yang berbeda. Jika Anda mengoperasikan objek pertukaran yang sama, Anda perlu melihat apakah strategi spesifik memiliki konflik logis)

  • Antarmuka API pertukaran Bagaimana skrip perdagangan terprogram mengoperasikan akun bursa? Jawabannya adalah melalui antarmuka API yang dibuka oleh bursa. Jadi jenis antarmuka apa yang terbuka untuk pertukaran? Pada artikel sebelumnya, kita membahas bagian “Exchange”, yang menyebutkan bahwa exchange umumnya memiliki antarmuka REST dan Websocket. Di sini kami menambahkan beberapa konsep dari tingkat program strategis. Antarmuka pertukaran dibagi menjadi dua jenis: terverifikasi dan tidak terverifikasi, tergantung pada apakah terverifikasi atau tidak (baik REST maupun Websocket).

    • Antarmuka yang tidak memerlukan otentikasi Umumnya disebut “antarmuka publik”, jenis antarmuka ini tidak memerlukan verifikasiAPI KEY(Jika Anda lupa apa itu API KEY, Anda dapat merujuk ke artikel sebelumnya). Jenis antarmuka ini umumnya merupakan antarmuka pasar, seperti menanyakan informasi pasar mendalam, menanyakan data K-line, menanyakan tingkat pendanaan, menanyakan informasi terkait produk transaksi, menanyakan stempel waktu server bursa, dan lain-lain. Sederhananya, antarmuka yang tidak ada hubungannya dengan akun Anda dapat secara kasar ditentukan sebagai antarmuka publik (tidak memerlukan verifikasi)
      Pada Platform Perdagangan Kuantitatif Inventor, saat memanggil fungsi API yang tidak terverifikasi (merangkum antarmuka bursa yang tidak terverifikasi, antarmuka publik), bahkan jika KUNCI API dikonfigurasi secara tidak benar, data yang dikembalikan oleh antarmuka dapat diperoleh secara normal. (Karena belum terverifikasi)

    • Antarmuka yang perlu diverifikasi Sederhananya, ini adalah antarmuka yang perlu diverifikasi (diverifikasi oleh API KEY). Jenis antarmuka ini disebut antarmuka privat. Jenis antarmuka ini biasanya terkait dengan beberapa operasi atau informasi akun Anda, seperti menanyakan aset akun, menanyakan posisi akun, menanyakan order yang tertunda, menanyakan transfer, mentransfer koin, menyesuaikan leverage, mengatur mode posisi, dan lain-lain. Operasi ini harus diverifikasi. Pada Platform Perdagangan Kuantitatif Inventor, saat memanggil fungsi API yang memerlukan verifikasi (antarmuka yang perlu diverifikasi oleh pertukaran yang dienkapsulasi, antarmuka pribadi), jika KUNCI API dikonfigurasi secara tidak benar, kesalahan akan dilaporkan saat memanggil antarmuka dan nilai null akan dikembalikan.

Jadi bagaimana antarmuka ini digunakan pada Platform Perdagangan Kuantitatif Inventor?

Platform Perdagangan Kuantitatif Inventor merangkum perilaku pertukaran dan mendefinisikan antarmuka yang konsisten (seperti antarmuka K-line, antarmuka pasar dalam, antarmuka aset lancar kueri, antarmuka pesanan, antarmuka penarikan pesanan, dll.). Antarmuka ini disebut Fungsi API dari Platform Perdagangan Kuantitatif Inventor dapat dilihat dengan memeriksa dokumentasi API (https://www.fmz.com/api).

Jadi bagaimana cara menggunakan beberapa antarmuka pertukaran dengan perilaku dan definisi yang tidak konsisten pada Platform Perdagangan Kuantitatif Inventor?

Antarmuka pertukaran ini meliputi: transfer aset, kepercayaan bersyarat, penempatan pesanan batch, pembatalan pesanan batch, modifikasi pesanan, dll. Beberapa bursa memiliki antarmuka ini, sementara yang lain tidak. Fungsi dan detail penggunaannya dapat sangat bervariasi. Oleh karena itu, antarmuka ini tersedia di Inventor Quantitative Trading Platform.exchange.IOFungsi ini digunakan untuk mengakses (untuk detailnya, silakan lihat dokumen API Inventor Quantitative Trading Platform: https://www.fmz.com/api#exchange.io…). Ada juga beberapa contoh strategi IO praktis pada Inventor Quantitative Trading Platform Strategy Square.

Apakah semua fungsi API dalam dokumentasi API Inventor Quantitative Trading Platform menghasilkan permintaan jaringan?

Pertama-tama, katakanlah bahwa antarmuka API bursa memiliki batas frekuensi untuk akses (misalnya, 5 kali per detik). Akses tidak boleh terlalu sering, jika tidak, akan muncul galat http 429 dan akses akan ditolak (sebagian besar bursa melaporkan galat 429). ). Batasan yang sama juga berlaku untuk memanggil antarmuka pertukaran paket pada Inventor Quantitative Trading Platform. Tidak ada batasan seperti itu untuk fungsi API pada Inventor Quantitative Trading Platform yang tidak menghasilkan permintaan jaringan. Tidak semua fungsi API dari Inventor Quantitative Trading Platform akan menghasilkan permintaan jaringan. Beberapa fungsi API Inventor hanya mengubah beberapa pengaturan lokal, seperti pengaturan pasangan perdagangan saat ini, pengaturan kode kontrak, fungsi perhitungan indikator, memperoleh nama objek pertukaran, dll. Pada dasarnya, Anda dapat menilai apakah permintaan jaringan terjadi dari tujuan fungsinya. Selama itu untuk mendapatkan data pertukaran, beroperasi pada akun pertukaran, dll., permintaan jaringan akan dibuat. Anda perlu memperhatikan pemanggilan frekuensi antarmuka ini.

  • Mari kita bahas beberapa masalah dan pengalaman umum saat menggunakan fungsi API di Platform Perdagangan Kuantitatif Inventor.

    • Toleransi Kesalahan Ini adalah kesalahan paling umum, yang mengganggu banyak pemula. Sering kali, pengujian ulang strategi adalah hal yang normal, tetapi mengapa pasar yang sebenarnya anjlok setelah berjalan beberapa saat (yang dapat dipicu kapan saja)?

    Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

    Saat menulis strategi, kita perlu menilai dan memverifikasi data yang dikembalikan oleh antarmuka. Misalnya, baris kode ini digunakan untuk mendapatkan informasi pasar pada Platform Perdagangan Kuantitatif Inventor (hal yang sama berlaku saat menulis program untuk mengakses bursa secara langsung antarmuka):var ticker = exchange.GetTicker()Jika kita perlu menggunakan initickerVariabel (lihat struktur yang dikembalikan oleh fungsi GetTicker)Last(harga terbaru) data, kita perlu menggunakanvar newPrice = ticker.LastDapatkan data seperti ini (apa yang newPrice? new: latest, Price: price, yes! Gabungkan!) Saat ini, jikaGetTicker()Tidak apa-apa jika fungsi mengembalikan data normal, tetapi jika permintaan habis waktu, terjadi kesalahan jaringan, pertukaran mencabut kabel jaringan, kabel terputus, anak nakal menarik sakelar daya, dll., itu akan menyebabkanGetTicker()Fungsi Pengembaliannull. pada saat initickerNilai dari adalahnullSaya akan mengunjunginya lagi.LastPengecualian program akan terjadi, menyebabkan program kebijakan terhenti. Tampaknya kegagalan panggilan antarmuka (panggilan GetTicker gagal dan mengembalikan null) bukanlah penyebab langsung dari penghentian perdagangan nyata strategi (penyebab langsungnya adalah mengaksesnullProperti variabel), kegagalan panggilan antarmuka dan kesalahan tidak akan menyebabkan perdagangan sesungguhnya terhenti (penekanan ditambahkan). Jadi apa yang dapat kita lakukan untuk menghindari penangguhan perdagangan riil yang tidak normal? Jawabannya adalah melakukan pemrosesan toleransi kesalahan pada data yang dikembalikan oleh antarmuka. Sangat mudah untuk menentukan apakah data yang dikembalikannull(JavaScript digunakan sebagai contoh, bahasa lain pada dasarnya sama) Tulis potongan kode kecil untuk menjelaskannya (ini hanya penjelasan, tidak akan berfungsi jika Anda menjalankannya secara langsung!)

      var ticker = exchange.GetTicker()
      if (ticker) {
          var newPrice = ticker.Last
          Log("打印最新价格:", newPrice)
      } else {
          // 数据为null,不做操作就不会出问题
      }
    

    Tidak hanyaGetTickerAntarmuka harus toleran terhadap kesalahan. Semua antarmuka dengan permintaan jaringan harus toleran terhadap kesalahan untuk nilai pengembalian (jika Anda menggunakan nilai pengembalian fungsi) Ada banyak cara untuk menoleransi kesalahan, Anda dapat menggunakan_C()Fungsi (lihat dokumentasi API FMZ), tulis fungsi toleransi kesalahan Anda sendiri, dan rancang mekanisme dan logika toleransi kesalahan Anda sendiri. tentang_C()Saat menggunakan fungsi, banyak mahasiswa baru cenderung menggunakannya secara tidak benar._C()Parameter fungsi adalah referensi fungsi, bukan pemanggilan fungsi. Secara sederhana: _C(funcName, param1, param2), panggilannya benar, funcName tidak memiliki tanda kurung, param1 dan param2 adalah parameter yang akan diteruskan ke fungsi funcName. _C(funcName(param1, param2)), kesalahan panggilan, biasanya pemula yang tidak membaca dokumentasi API FMZ dengan cermat akan menuliskannya seperti ini.

    • Jumlah pesanan pembelian pasar spot Jumlah pesanan beli pasar spot juga sering disalahartikan oleh banyak trader baru. Pada artikel sebelumnya, kami telah menyebutkan bahwa jumlah pesanan beli pasar spot biasanya adalah jumlah (beberapa bursa mungkin memiliki pengaturan lain, umumnya FMZ, Pengaturan pertukaran khusus ini dijelaskan dalam dokumentasi API FMZ). Misalnya, saya menggunakan disk simulasi OKEX V5 untuk pengujian: Pengaturan pasangan perdagangan adalah:LTC_USDT
      function main() {
          exchange.IO("simulate", true)   // 切换为OKEX交易所的模拟盘
          exchange.Buy(-1, 1)             // 价格是-1,表示下的订单为市价单,数量为1表示下单量是1USDT
      }
    

    Karena bursa pada umumnya memiliki batasan jumlah pesanan, pesanan yang kurang dari batas tersebut tidak akan dikirimkan (misalnya, Binance spot mengharuskan setiap pesanan lebih besar dari 5 USDT agar berhasil dikirimkan). Jadi, jika Anda melakukan pemesanan seperti ini, akan terjadi kesalahan:

      错误	Buy(-1, 1): map[code:1 data:[map[clOrdId: ordId: sCode:51020 sMsg:Order amount should be greater than the min available amount. tag:]] msg:]
    
    • Arah saat menempatkan pesanan berjangka Saat mengembangkan strategi berjangka, pemula sering membuat kesalahan dalam arah pesanan, yang menyebabkan masalah. Ambil contoh strategi penulisan pada Inventor Quantitative Trading Platform. Pertama mari kita lihat deskripsi dalam dokumentasi API: https://www.fmz.com/api#exchange.setdirection...

    Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

    Karena fungsi order hanya memilikiBuy,Sell. Namun, futures (tentu saja, tidak ada masalah dengan spot, spot hanya memiliki pembelian dan penjualan) memiliki arah seperti pembukaan long, penutupan long, pembukaan short, dan penutupan short. Jelas, Buy/Sell tidak dapat mewakili operasi dalam banyak arah. Pada saat ini, perlu diperkenalkan pengaturan arah perdagangan berjangka. Fungsi iniexchange.SetDirection()。 Di FMZ exchange.SetDirection("buy")(atur arahnya terlebih dahulu) danexchange.BuyBila digunakan bersama-sama, artinya perintah yang ditempatkan adalah perintah untuk membuka posisi panjang. Dan sebagainya: exchange.SetDirection("sell")Danexchange.SellBila digunakan bersama-sama, artinya perintah yang ditempatkan adalah perintah untuk membuka posisi short. exchange.SetDirection("closebuy")Danexchange.SellBila digunakan bersama-sama, artinya perintah yang ditempatkan adalah perintah untuk menutup posisi panjang. exchange.SetDirection("closesell")Danexchange.BuyBila digunakan bersama-sama, artinya perintah yang ditempatkan adalah perintah untuk menutup posisi short. Biasanya pemula akanexchange.SetDirection("sell")Danexchange.BuyDigunakan bersama-sama dengan kata lain, atau kombinasi lain yang salah. Kemudian dilaporkan suatu kesalahan (pengujian ulang mungkin tidak melaporkan kesalahan, tetapi ini jelas merupakan kesalahan logika, dan orang-orang dengan gangguan obsesif kompulsif tidak dapat mentolerirnya…). Kesalahan umum lainnya yang dilakukan oleh pemula

      function main() {
          exchange.SetContractType("quarter")   // 设置当前合约为季度合约
          exchange.SetDirection("sell")
          var id = exchange.Sell(-1, 1)    
          Log("看我市价单下单了,成交了,就有持仓了", exchange.GetPosition())    
          exchange.SetDirection("closebuy")   // closebuy 和Sell 搭配使用,嗯没错~
          exchange.Sell(-1, 1)
      }
    

    Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)
    Melihat hal ini, Anda mungkin bertanya: “Mengapa saya memiliki posisi dan menggunakan closebuy dan sell secara bersamaan, tetapi muncul error dan saya tidak dapat menutup posisi?” Saya akan menjawab: “Saya menutup arah yang salah! Saya menutup posisi long.” Situasi lain yang mungkin untuk kesalahan di atas adalah: arah penutupan ditetapkan dengan benar, fungsi order digunakan dengan benar, dan posisi dipertahankan dalam arah ini, tetapi kesalahan ini masih dilaporkan. Alasannya adalah program Anda mungkin telah menempatkan beberapa order, tetapi order awal tidak dieksekusi, dan order penutupan masih tergantung di pasar menunggu untuk dieksekusi. Pada saat ini, program terus menutup posisi, dan akan meminta kesalahan melebihi posisi penutupan.

    • Tampilan keluaran log dan informasi transaksi Perancangan dan penulisan strategi perdagangan terprogram dan kuantitatif tidak dapat dipisahkan dari perancangan interaksi manusia-komputer seperti “tampilan data” dan “keluaran log operasi”. Skrip waktu nyata dan program strategi biasanya ditulis dalam bahasa pemrograman asli. Langsung menggunakan fungsi keluaran bahasa saat ini. Misalnya: Ular pitonprint。 Bahasa Indonesia: JavaScriptconsole.log。 Bahasa Inggris Golangfmt.Println()。 Bahasa Inggris C++cout

    Mari kita bahas informasi yang ditampilkan di platform FMZ. Di Platform Perdagangan Kuantitatif Inventor, ada dua lokasi utama tempat informasi ditampilkan.

     - Bilah Status
    Setelah disk nyata berjalan, halaman disk nyata seperti yang ditunjukkan pada gambar
    
    
    ![Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)](/upload/asset/16bafc3d4df6dfa18102.png)
    
    
    Bagian tampilan adalah informasi bilah status. Bilah status terutama digunakan untuk menampilkan beberapa data yang berubah secara real-time (karena perubahan real-time perlu diamati secara real-time, dan tidak dapat dicetak sebagai log setiap saat, jadi jenis ini data dapat ditampilkan di bilah status. Jika setiap data dicetak, log akan berisi banyak data yang berulang dan tidak berarti, yang akan memengaruhi kueri).
    Menampilkan penggunaan data pada bilah status`LogStatus`Fungsi, silakan lihat dokumentasi API FMZ untuk detailnya.
    
     - Kolom log
    Juga di halaman pasar nyata, seperti yang ditunjukkan pada gambar:
    
    
    ![Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)](/upload/asset/16cf9d61e66384022a76.png)
    
    
    Bagian tampilan adalah batang log, yang terutama digunakan untuk merekam data tertentu secara permanen pada saat tertentu, atau untuk merekam operasi strategi tertentu pada waktu tertentu.
    Ada beberapa jenis log:
    1. Log biasa: Strategi FMZ menggunakan fungsi Log untuk mengeluarkan dan mencetak dalam log strategi.
    
    
    ![Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)](/upload/asset/16ddc72e1f7d07dcfa5a.png)
    
    
    2. Log pesanan, digunakan dalam strategi FMZ`exchange.Sell`/`exchange.Buy`Ini akan otomatis tercatat dalam keluaran log.
    
    
    ![Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)](/upload/asset/172aac2089e93865e3c2.png)
    
    
    3. Log pembatalan pesanan, digunakan dalam strategi FMZ`exchange.CancelOrder`, log pembatalan pesanan akan secara otomatis ditampilkan dalam log.
    
    
    ![Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)](/upload/asset/15e90c7be742743c7421.png)
    
    
    4. Catatan kesalahan. Saat strategi FMZ berjalan, jika terjadi kesalahan panggilan di antarmuka untuk permintaan jaringan atau pengecualian dilemparkan (seperti pernyataan seperti throw), catatan kesalahan akan secara otomatis dikeluarkan di log.
    
    
    ![Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)](/upload/asset/166196451439434a800f.png)
    

    Fungsi API FMZ yang dapat menghasilkan keluaran log, seperti Log(…), exchange.Buy(Price, Amount), exchange.CancelOrder(Id), dll., dapat diikuti oleh beberapa parameter keluaran tambahan setelah parameter yang diperlukan, seperti: tukar. CancelOrder(pesanan[j].Id, orders[j]) Ini adalah pembatalan pesanan[j] Saat melakukan pemesanan ini, informasi pesanan akan ditampilkan.

      function main() {
          Log("数据1", "数据2", "数据3", "...")
          var data2 = 200
          var id = exchange.Sell(100000, 0.1, "附带数据1", data2, "...")
          exchange.CancelOrder(id, "附带数据1", data2, "...")
          LogProfit(100, "附带数据1", data2, "...")
      }
    
    • Penggunaan fungsi indikator Sebelum membahas fungsi indikator, mari kita pahami dulu apa itu indikator. Sederhananya, indikator adalah garis-garis seperti moving average, MACD, dan ATR. T: Dari mana indikator ini berasal? Jawabannya: Tentu saja diperhitungkan. T: Apa dasar perhitungannya? Jawaban: Dihitung berdasarkan data garis K. T: Bisakah Anda memberi contoh? Jawaban: Mengambil indikator yang paling sederhana, indikator rata-rata bergerak, sebagai contoh, jika kita menggunakan data garis K harian (garis positif atau negatif mewakili hari) sebagai sumber data untuk perhitungan indikator. Jika parameter indikator rata-rata bergerak adalah 10, maka indikator rata-rata bergerak yang dihitung adalah rata-rata bergerak 10 hari. Pertanyaan: Jika jumlah BAR K-line kurang dari 10, dapatkah indikator rata-rata bergerak dihitung? Jawaban: Tidak hanya indikator moving average yang tidak dapat dihitung, tetapi indikator apa pun tidak dapat menghitung nilai indikator yang valid ketika jumlah BAR data K-line tidak memenuhi parameter siklus indikator. Posisi yang sesuai dari array yang dihitung akan diisi dengan kosong nilai-nilai, misalnyaJavaScriptStrategi bahasa akan ditampilkan saat mencetak data indikator yang dihitungnull

    Ada contoh pengajaran di Strategy Square: https://www.fmz.com/strategy/125770 Dengan menguji ulang strategi contoh tutorial ini, Anda dapat melihat grafik yang dihasilkan oleh sistem pengujian ulang dan rata-rata pergerakan 10 periode:

    Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

    Strategi menggambar kustom, menggambar garis K dan grafik rata-rata bergerak:

    Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)

    T: Bagaimana jika saya menginginkan rata-rata pergerakan 10 jam? Jawaban: Data K-line dapat menggunakan data K-line periode per jam.

    Secara awam, K-line yang kita lihat adalah sebuah array setelah kita digitalkan (kalau belum paham konsep array bisa cari di Baidu), yang mana setiap elemennya adalah kolom K-line yang tersusun secara berurutan. Elemen pertama adalah yang terjauh dari waktu saat ini, dan elemen terakhir dari array adalah yang paling dekat dengan waktu saat ini. Biasanya batang terakhir data garis K adalah batang periode saat ini, yang berubah secara real time dan belum selesai (Anda dapat mengamati perubahannya dengan masuk ke halaman bursa dan mengamati garis K-nya). Indikator yang dihitung juga berkorespondensi satu-satu dengan kolom garis K. Dalam contoh di atas, Anda dapat melihat bahwa satu nilai indikator berkorespondensi dengan satu kolom garis K. Perhatikan bahwa kolom K-line terakhir berubah dalam waktu nyata, dan indikator yang dihitung juga akan berubah seiring dengan perubahan pada kolom K-line.

    Pada Platform Perdagangan Kuantitatif Inventor, Anda dapat menggunakan pustaka TA (pustaka yang diimplementasikan oleh platform FMZ, terintegrasi dalam kustodian, dan dapat digunakan langsung dalam berbagai bahasa) atau pustaka talib (talib adalah pustaka indikator yang mapan, terintegrasi dengan JS dan C++, dan Python perlu ditulis sendiri) Instal). Misalnya, dalam contoh di atas, rata-rata pergerakan dihitung: Menggunakan pustaka TA:

      function main() {
          var records = exchange.GetRecords()
          var ma = TA.MA(records, 10)
          Log(ma)       // 打印均线
      }
    

    Menggunakan pustaka talib:

      function main() {
          var records = exchange.GetRecords()
          var ma = talib.MA(records, 10)
          Log(ma)       // 打印均线
      }      
    

    Data indikator terhitung ma adalah suatu array, yang setiap elemennya sesuai dengan array K-line (catatan), yaitu,ma[ma.length -1]sesuairecords[records.length - 1], dan seterusnya.

    Hal yang sama berlaku untuk indikator kompleks lainnya, dan Anda perlu memperhatikan indikator seperti MACD.

      var macd = TA.MACD(records)   // 这样只传入K线数据,不传入指标参数,指标参数采用的就是默认值,其它指标函数也是同理
    

    Saat ini, variabel macd adalah array dua dimensi (jika Anda tidak memahami konsepnya, Anda dapat mencarinya di Baidu). Sederhananya, array dua dimensi adalah array dan setiap elemennya juga merupakan array. . Pertanyaan: Mengapa data indikator macd berupa array dua dimensi? Jawab: Karena indikator MACD tersusun atas dua garis (garis DIF dan garis DEA) serta sekumpulan batang volume (batang volume MACD, pada hakikatnya data batang volume ini dapat pula dikatakan sebagai satu garis). Jadi variabel macd dapat dibagi menjadi:

      var dif = macd[0]
      var dea = macd[1]
      var macdColumn = macd[2]
    

    Ada juga contoh pengajaran yang sudah jadi di sini, jika Anda tertarik, silakan mempelajarinya: https://www.fmz.com/strategy/151972

    Bagi para pemula dalam Perdagangan Kuantitatif di Dunia Kripto, silakan simak ini - Membawa Anda Lebih Dekat ke Perdagangan Kuantitatif di Dunia Kripto (Bagian 2)