Type/to search
1
Follow
6
Followers
Kami menggunakan fmz untuk melakukan fungsi pengujian ulang perdagangan grid online
FAQ
Created 2020-10-18 23:56:01  
 2
 5117

Kembali ke titik awal

Sebelumnya, saya telah mencari alat yang dapat melakukan pengamatan secara real-time, dan selama beberapa waktu saya telah mempelajari apakah vnpy terasa terlalu rumit untuk diubah menjadi antarmuka.
Akhirnya, saya membaca dokumen di buku panduan pemula FMZ.
Kami menemukan sebuah aplikasi yang bisa melakukan apa yang kami inginkan, kami mengambilnya dan mengulasnya selama 6 bulan.
Saya tidak tahu apa-apa tentang fmz, karena saya tidak tahu apa-apa tentang fmz, saya tidak tahu apa-apa tentang fmz, saya tidak tahu apa-apa tentang fmz, saya tidak tahu apa-apa tentang fmz, saya tidak tahu apa-apa tentang fmz, saya tidak tahu apa-apa tentang fmz.

Pertama, pengguna dapat memilih kapan waktu mulai dan kapan waktu berakhirnya, jadi
img

Hal ini membutuhkan parameterisasi:

img
Saya tidak tahu apakah ada fungsi yang dapat di-inisialisasi.

python
self.grid_setting = { "min_price": min_price, "max_price": max_price, "grid_diff": grid_diff, "re_diff": grid_diff, "total_amount_B": total_amount_B }

Parameter konfigurasi grid: minimum, maksimum harga, interval distribusi grid dan interval re-listing.

Ini adalah parameter yang dikirimkan oleh pengguna.

Fungsi bus utama adalah

python
def bus(self): params = gen_params(self.begin, self.end, self.currency, self.balance, self.stocks) task = VCtx(params) done = self.train() ret = task.Join(True) benefit_cal = self.cal_benefit(ret,done) result = {} result['done'] = done result['ret'] = benefit_cal return result
  • Dapatkan konfigurasi pengembalian dari fmz dengan fungsi gen_params yang baru saja saya gunakan
  • Fungsi pelatihan berjalan
  • Struktur data yang dikembalikan oleh fmz, menghitung tingkat pengembalian dan menampilkan catatan transaksi

Panggilan task.Join() akan mengakhiri tugas pengembalian dan mengembalikan data nilai bersih.

Dengan menggunakan dokumen, saya menebak apa yang akan dikembalikan oleh strategi tersebut.

Kode yang terlampir dari data pendapatan yang dikembalikan oleh fmz

python
def cal_benefit(self,ret,done): #计算相隔多少天 day_begin = datetime.datetime.strptime(self.begin, '%Y-%m-%d %H:%M:%S') day_end = datetime.datetime.strptime(self.end, '%Y-%m-%d %H:%M:%S') days = (day_end - day_begin).days begin = ret.iloc[0].net end = ret.iloc[-1].net fee = ret.iloc[-1].fee #计算一共多少次套利 df = pd.DataFrame(done) #如果没有成交记录 if len(done) == 0: benefit_cal = {} benefit_cal['benefit'] = 0 benefit_cal['count'] = 0 benefit_cal['fee'] = 0 benefit_cal['benefit_p'] = 0 return benefit_cal buy_count = len(df[df['type'] == 'buy']) sell_count = len(df[df['type'] == 'sell']) count = min(buy_count , sell_count) benefit = count * self.grid_diff * float(done[0]['amount']) benefit_cal = {} benefit_cal['benefit']= benefit benefit_cal['count']= count benefit_cal['fee']= fee print(benefit_cal) per = benefit / self.total_amount_B * 360 / days print(per) benefit_cal['benefit_p']= round( per , 4) return benefit_cal

Ya, saya merasa sedikit bingung, tapi saya ingin menjelaskan apa yang saya pikirkan tentang jaringan kami:

Menggunakan metode pemeriksaan daftar isi

  • Pertama, menginisialisasi grid berdasarkan parameter pengguna.
  • Pertama kali mendaftar
  • Memeriksa transaksi yang tercantum secara berkala, dan kemudian menyalin kembali sesuai dengan pesanan
python
while True: Sleep(1000 * 60 * 5) if 'refreash_data_finish!' != mid.refreash_data(): continue # 初始化网格 if not init_flag: cur_price = mid.ticker['Last'] grid_list = grid.cal_grid_list(cur_price) init_flag = True # 开始挂单 if not place_flag: grid.place_orders() place_flag = True # 开始检查订单状态及时挂单 grid.check_order_update() done = grid.done

Mungkin itu saja, mungkin tidak sepantasnya untuk pertama kalinya.

Kali ini saya ingin berbagi dengan Anda bahwa fmz dalam waktu 14 hari dapat melakukan pengembalian data dengan kecepatan yang cukup untuk memenuhi waktu tunggu pengguna di front-end, dan jika Anda menunggu lebih lama, pengembalian data akan menjadi lebih lambat, dan ini adalah pengembalian data kuantitatif yang bagus untuk digunakan sebagai antarmuka.

Ya, kali ini kami kembali untuk mengiklankan sebuah kompetisi perdagangan, kami tim kuantitatif yang menang selamanya mengadakan kompetisi perdagangan, gratis untuk berpartisipasi. Anda dapat mendaftar dengan sukses selama Anda memberikan API permintaan, sebagai kompetisi dua minggu, poin kami juga bagus.

Related Recommendations
Comment
All comments (1)

    你是需要获取实时行情,然后模拟回测的结果。这样会有一些麻烦,如果只是单交易对可以试试自己写个回测引擎,也不复杂

    6 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)