J’ai cherché des outils qui permettent de faire des retours en temps réel, et j’ai étudié pendant un certain temps le fait que vnpy ressemble à une interface, mais c’était trop compliqué. Pour terminer, je me suis tourné vers le document du guide pour débutants de fmz. J’ai trouvé des fonctionnalités qui nous permettraient de réaliser ce que nous voulions, et je les ai utilisées pendant six mois pour en discuter avec vous. Par ailleurs, c’est vrai que les articles de fmz sont très peu nombreux, mais c’est tellement utile d’être dans un guide pour débutants que je n’ai pas compris avant d’avoir posé la question.
La première est que l’utilisateur peut choisir son heure de début et de fin.

Il faut paramétrer cette chose:
C’est une méthode qui me paraît assez maladroite, je ne sais pas si je peux initialier une fonction.
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
}
Paramètres de configuration de la grille: prix minimum, prix maximum, intervalle de distribution de la grille et intervalle de réaffichage.
Les paramètres ci-dessus ont été soumis par les utilisateurs.
La fonction bus principale est
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
L’appel task.Join() terminera la tâche de retour et renverra les données de valeur nette. Le paramètre de jointure n’est pas transmis. True renvoie le résultat de retour initialement non analysé.
J’ai vu un article sur le site de l’agence de presse américaine The New York Times, et j’ai vu un article sur le site de l’agence de presse américaine The New York Times.
Le code de calcul de la donnée de rendement renvoyée par 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
C’est vrai. Je suis un peu confus, mais je vais d’abord vous parler de notre réseau:
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
C’est peut-être ça, mais à première vue, c’est un peu bizarre.
Cette fois, je voulais surtout partager le fait que la vitesse à laquelle fmz réalise ses analyses en 14 jours est essentiellement suffisante pour satisfaire le temps d’attente des utilisateurs sur le front-end, et qu’elle est un peu plus lente si elle est plus longue, c’est un bon outil de révision quantitative en tant qu’interface.
C’est vrai, cette fois-ci, nous sommes de retour pour promouvoir une vague de concours de trading, notre équipe de quantification de l’éternelle victoire a organisé un concours de trading, participation gratuite. Tant que vous fournissez une API de requête, vous pouvez vous inscrire avec succès, en tant que concours de deux semaines, notre bonus est également bon.