Sebelum ini, saya telah mencari alat yang dapat mengulangi masa nyata, dan untuk beberapa waktu, vnpy berasa terlalu rumit untuk mengubahnya menjadi antara muka. Akhirnya, saya kembali ke dokumen dalam panduan baru FMZ. Kami telah melihat bahawa ia dapat mencapai fungsi yang kami mahukan, dan kami telah mengeluarkan satu gelombang, dan kami telah membincangkannya dengan anda selama enam bulan. Fmz mempunyai sedikit artikel yang sangat berguna untuk panduan pemula, tetapi ketika itu saya hanya bertanya melalui posting dan saya faham.
Pertama, pengguna boleh memilih masa permulaan dan akhir.
Ini adalah satu perkara yang perlu diparameterkan:
Saya rasa ia adalah satu cara yang tidak masuk akal, saya tidak tahu sama ada terdapat fungsi yang boleh dimulakan.
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: harga minimum, maksimum, selang pembahagian grid dan selang penyambungan semula.
Ini adalah parameter yang dikemukakan oleh pengguna.
Fungsi bus utama ialah
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 menamatkan tugas penjumlahan dan mengembalikan data bersih. Parameter Join tidak menyampaikan True yang mengembalikan hasil penjumlahan semula yang tidak dianalisis semula, dan tidak boleh memanggil lagi fungsi berkaitan dagangan atau pasaran selepas selesai.
Dengan dokumen, saya meneka apa yang akan dikembalikan oleh hasil strategi.
Kod yang digabungkan dengan fmz kembali data keuntungan dikira
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 rasa agak keliru, tetapi saya akan memberitahu anda tentang idea grid 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 begitu, mungkin kelihatan agak pelik pada mulanya.
Fmz dalam 14 hari pada dasarnya dapat memenuhi masa tunggu pengguna di bahagian depan, semakin lama, sedikit lebih lambat, adalah alat yang baik untuk mengutip fmz sebagai antara muka, selamat satu!
Ya, kali ini kami kembali untuk mengiklankan perlumbaan perdagangan, pasukan kuantiti kekal kami mengadakan perlumbaan dagangan, bebas untuk mengambil bahagian. Jika anda memberikan API pertanyaan, anda boleh mendaftar untuk berjaya, sebagai perlumbaan dua minggu, hadiah kami juga bagus. Tinggalkan alamat hubungan fengye607.
RumputAnda perlu mendapatkan transaksi secara langsung, dan kemudian meniru hasil penyesuaian. Ini akan menjadi sedikit masalah, jika hanya satu pasangan transaksi, anda boleh cuba menulis enjin penyesuaian sendiri, tidak rumit.