Sumber daya yang dimuat... Pemuatan...

Analisis data deret waktu dan retrospeksi data Tick

Penulis:Kebaikan, Dibuat: 2019-08-08 10:05:45, Diperbarui: 2023-10-20 20:11:54

img

Data urutan waktu

Serangkaian waktu adalah serangkaian data yang diperoleh pada interval waktu yang sama berturut-turut. Dalam investasi kuantitatif, data ini terutama menunjukkan pergerakan harga dan titik data yang dilacak oleh indikator investasi. Misalnya, harga saham, data serangkaian waktu yang dicatat secara berkala dalam jangka waktu tertentu dapat dilihat pada gambar berikut ini, pembaca akan mendapatkan pemahaman yang lebih jelas:

img

Seperti yang dapat dilihat, tanggal berada di sumbu x dan harga ditampilkan di sumbu y. Dalam hal ini, sumbu interval waktu berturut-turut berarti jumlah hari yang terpisah pada sumbu x adalah 14 hari: perhatikan perbedaan antara 7 Maret 2005 dan titik berikutnya, 31 Maret 2005, 5 April 2005 dan 19 April 2005.

Namun, ketika Anda menggunakan data urutan waktu, Anda akan sering melihat lebih dari hanya data yang hanya berisi dua kolom tanggal dan harga. Dalam kebanyakan kasus, Anda akan menggunakan data yang berisi lima kolom: siklus data, harga buka, harga tertinggi, harga terendah, dan harga tutup. Ini berarti bahwa jika Anda mengatur siklus data Anda ke tingkat sinar matahari, perubahan harga tinggi, terbuka, rendah, dan tutup hari itu akan ditanggapi dalam data urutan waktu ini.

Apa itu Tick Data?

Tick data adalah struktur data transaksi yang paling komprehensif di bursa. Tick data juga merupakan bentuk ekstensi dari data urutan waktu yang disebutkan di atas, termasuk: harga buka, harga tertinggi, harga terendah, harga terbaru, volume transaksi, jumlah transaksi. Jika data transaksi disamakan dengan sungai, Tick data adalah data yang sungai ini di suatu sisi lintas.

img

Seperti yang ditunjukkan pada gambar di atas, setiap gerakan di bursa asing akan didorong ke pasar secara real-time. Sementara bursa domestik, dua kali per detik diperiksa, jika ada gerakan dalam jangka waktu itu, akan menghasilkan snapshot dan didorong keluar. Sebagai perbandingan, jumlah data yang didorong hanya akan dihitung sebagai OnTime, bukan disebut OnTick.

Semua kode dan data urutan waktu dalam tutorial ini diperoleh di platform kuantifikasi penemu.

Tick data yang diukur oleh penemu

Meskipun data Tick dalam negeri bukanlah Tick dalam arti sebenarnya, tetapi menggunakan data ini untuk melakukan retesting, setidaknya dapat mendekati dan mereduksi realitas secara tak terbatas. Setiap Tick menunjukkan parameter utama komoditas pada saat itu di pasar, dan di piringan nyata, kode kami, yaitu mengikuti teori Tick 2 kali per detik yang sedang dihitung.

img

Tidak hanya itu, dalam kuantitas penemu, bahkan jika data dimuat dalam siklus satu jam, masih dapat menyesuaikan granularitas data, seperti menyesuaikan granularitas data menjadi satu menit. Pada saat ini, garis K satu jam terdiri dari data satu menit. Tentu saja, semakin kecil granularitasnya, semakin tinggi presisi. Lebih kuat lagi, jika data diubah menjadi Tick tingkat piringan nyata, dapat dengan lancar mengembalikan lingkungan piringan nyata.

img

Sekarang, Anda telah memahami konsep dasar yang perlu Anda ketahui untuk menyelesaikan tutorial ini. Konsep-konsep ini akan segera kembali, dan Anda akan mempelajari konsep-konsep yang lebih terkait di bagian selanjutnya dari tutorial ini.

Untuk informasi lebih lanjut tentang bagian ini, silakan hubungi:https://www.fmz.com/bbs-topic/1651Lihat informasi lebih lanjut

Mengatur Lingkungan Kerja

Untuk melakukan hal-hal yang baik, yang penting, kita perlu terlebih dahulu mendistribusikan administrator di platform kuantitatif penemu, tentang konsep administrator, pembaca yang berpengalaman dalam pemrograman dapat membayangkan itu sebagai sistem Docker yang dikemas secara resmi, yang telah dikemas dengan baik antarmuka API publik dari berbagai bursa utama dan rincian teknis untuk bagian akhir dari strategi yang ditulis dan ditinjau kembali.

  • Penemuan sistem pengelola platform kuantitatif

Ada dua cara penyebaran administrator

Metode A: Pengguna menyewa atau membeli server sendiri, dan menyebarkannya ke berbagai platform komputasi awan seperti AWS, Ali Cloud, Digital Ocean, dan Google Cloud. Keuntungan adalah keamanan baik secara strategis maupun sistem yang aman dijamin, untuk penemu platform kuantitatif, mendorong pengguna untuk menggunakan metode ini, penyebaran terdistribusi seperti ini menghindari server yang diserang (baik klien maupun platform itu sendiri).

Untuk bagian ini, pembaca dapat membaca:https://www.fmz.com/bbs-topic/2848

Metode B: menggunakan penemu kuantitatif platform penyebaran server publik, platform menyediakan Hong Kong, London dan Hangzhou tiga lokasi penyebaran, pengguna dapat sesuai dengan bursa yang Anda inginkan untuk berdagang, berdasarkan prinsip dekat penyebaran. Keuntungan dari hal ini adalah sederhana mudah, satu tombol selesai, terutama cocok untuk pengguna pemula, tidak perlu untuk mengetahui banyak hal ketika membeli server Linux, juga menghemat belajar perintah Linux waktu dan tenaga, harga juga relatif murah, untuk pengguna yang tidak memiliki dana yang besar, platform merekomendasikan menggunakan metode penyebaran ini.

img

Dalam artikel ini, metode B akan digunakan untuk memahami para pemula.

Di sini ada beberapa tips yang bisa Anda gunakan.登陆FMZ.COMSetelah itu, klik Control Center, Trustee, dan klik tombol Rent Trustee di halaman Trustee.

Setelah memasukkan kata sandi, deployment berhasil, seperti yang ditunjukkan di bawah ini:

img

  • Konsep sistem robot dan hubungan antara administrator

Seperti yang disebutkan di atas, host adalah seperti sistem docker, dan sistem docker adalah seperti seperangkat standar, dan setelah kita menerapkannya, kita kemudian perlu menghasilkan sebuah contoh dari standar tersebut, yaitu sebuah robot.

Menciptakan bot sangat sederhana, setelah Anda mengimplementasikan host yang baik, klik tab bot di sebelah kiri, klik membuat bot, isi nama di nama tag, pilih host yang baru saja diimplementasikan. Pilihan parameter di kotak dialog di bawah dan siklus K baris dapat dipilih sesuai dengan situasi tertentu, terutama untuk mendukung pilihan strategi perdagangan.

img

Saat ini, lingkungan kerja kami telah dibangun, dan Anda dapat melihat bahwa itu sangat sederhana dan efektif, dan setiap fungsi memiliki fungsinya.

Penguatan strategi rata-rata sederhana dengan Python

Di atas kita telah membahas konsep data deret waktu dan data Tick, dan selanjutnya kita akan menghubungkan kedua konsep ini dengan strategi rata-rata sederhana.

  • Prinsip-prinsip dasar dari strategi linier

Melalui garis rata-rata siklus lambat, seperti garis rata-rata 7 hari, dan garis rata-rata siklus cepat, seperti garis rata-rata 3 hari; menerapkannya pada grafik K yang sama, ketika garis rata-rata siklus cepat melintasi garis rata-rata siklus lambat, kita menyebutnya garpu emas; ketika garis rata-rata siklus lambat melintasi garis rata-rata siklus cepat, kita menyebutnya garpu mati.

Pada dasarnya, pembukaan saham adalah pembukaan saham dengan banyak mata uang, pembukaan saham dengan banyak mata uang, dan pembukaan saham dengan tidak banyak mata uang.

让我们打开FMZ.COMDi bawah ini adalah kode untuk strategi ini, setiap baris memiliki catatan yang sangat rinci, mohon pembaca untuk perlahan-lahan menyadari. Strategi ini bukan strategi piringan, jangan pernah bereksperimen dengan uang sungguhan, terutama untuk membuat Anda menulis konsep dan pola belajar yang lebih besar dari strategi.

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • Uji Kembali Strategi Uniform

Pada halaman editor strategi, kita selesai menulis strategi, selanjutnya kita akan meninjau kembali strategi ini untuk melihat bagaimana performa dalam industri historis. Tinjauan memainkan peran penting dalam pengembangan strategi kuantitatif apa pun, tetapi juga hanya dapat digunakan sebagai referensi penting.

Klik analogi uji ulang, Anda dapat melihat bahwa ada banyak parameter yang dapat disesuaikan, yang dapat diubah secara langsung di dalamnya, untuk kebijakan selanjutnya yang semakin kompleks, semakin banyak parameter, modifikasi dengan cara ini dapat membantu pengguna menghindari repot-repot untuk mengubah kode secara individual, mudah, cepat, dan tertib yang jelas.

img

Opsi pengoptimalan di belakang dapat mengoptimalkan parameter yang ditetapkan secara otomatis, dan sistem akan mencoba berbagai parameter optimal untuk membantu pengembang kebijakan menemukan pilihan terbaik.

Dari contoh di atas, kita dapat melihat bahwa dasar dari transaksi kuantifikasi adalah melalui analisis data urutan waktu, dan analisis ulang data tik, kemudian logika yang rumit, tidak dapat dipisahkan dari kedua elemen dasar ini. Perbedaan hanya berbeda dalam dimensi, seperti perdagangan frekuensi tinggi, membutuhkan data yang lebih rinci, data urutan waktu yang lebih kaya.


Berkaitan

Lebih banyak