Я искал инструменты для реального времени отслеживания, но мне казалось, что это слишком сложно, чтобы перейти от vnpy к интерфейсу. В конце концов, я перешел к документам из руководства для начинающих в FMZ. Мы обнаружили в ней то, что нам нужно, и использовали ее в течение полугода, чтобы обсудить это с другими. Кстати говоря, в статьях FMZ написано очень мало, так что полезно, что они были в руководстве для начинающих, а потом я спросил в комментариях, чтобы понять.
Во-первых, пользователь может самостоятельно выбрать время начала и окончания, так что

Это требует параметризации:
Я не знаю, есть ли какие-то функции, которые можно инициализировать.
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
}
Параметры конфигурации решетки: минимальная, максимальная цена, интервал распределения решетки и интервал переоформления.
Все эти параметры были введены пользователями.
Основная функция bus
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
Вызов task.Join() завершает задачу обратной измерения и возвращает данные о чистой стоимости.
По документам, я имею в виду то, что возвращается в результате тактики угадывания.
Приложенный код для данных о доходах, возвращаемых 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
Я думаю, что это было бы неплохо, если бы мы не были в таком положении, но я думаю, что это было бы неплохо, если бы мы были в таком положении.
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
Наверное, так оно и есть, может быть, в первый раз это кажется странным.
На этот раз мы хотим поделиться, прежде всего, тем, что FMZ в течение 14 дней отслеживает скорость, которая в основном удовлетворяет ожидания пользователей на переднем конце, а затем немного медленнее, это хороший инструмент для количественного отслеживания в качестве интерфейса, спасибо!
Да, на этот раз мы снова вернулись, чтобы объявить о торговом соревновании, и команда Everwin Quantity устроила торговое соревнование, бесплатное участие. Если вы предоставляете API для запросов, вы можете зарегистрироваться.