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

Hal ini membutuhkan parameterisasi:
Saya tidak tahu apakah ada fungsi yang dapat di-inisialisasi.
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
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
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
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:
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.