Type/to search
1
Follow
6
Followers
Мы использовали fmz для выполнения функции бэктестинга онлайн-сетки
FAQ
Created 2020-10-18 23:56:01  
 2
 5117

Возвращение к истокам

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

Во-первых, пользователь может самостоятельно выбрать время начала и окончания, так что
img

Это требует параметризации:

img
Я не знаю, есть ли какие-то функции, которые можно инициализировать.

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 }

Параметры конфигурации решетки: минимальная, максимальная цена, интервал распределения решетки и интервал переоформления.

Все эти параметры были введены пользователями.

Основная функция bus

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
  • Получить обратную конфигурацию fmz через функцию gen_params, которую мы только что использовали
  • Функция тренировки
  • Структура данных, рассчитанная на основе возвращенных fmz, доходность и отображение записей сделок

Вызов task.Join() завершает задачу обратной измерения и возвращает данные о чистой стоимости.

По документам, я имею в виду то, что возвращается в результате тактики угадывания.

Приложенный код для данных о доходах, возвращаемых 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

Я думаю, что это было бы неплохо, если бы мы не были в таком положении, но я думаю, что это было бы неплохо, если бы мы были в таком положении.

Проверка с использованием метода скрепления

  • Начнем с инициализации сетки на основе параметров пользователя
  • Первая заявка
  • Временно проверять состояние сделок по продажам и покупке, а затем переоформлять их в соответствии с ними.
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

Наверное, так оно и есть, может быть, в первый раз это кажется странным.

На этот раз мы хотим поделиться, прежде всего, тем, что FMZ в течение 14 дней отслеживает скорость, которая в основном удовлетворяет ожидания пользователей на переднем конце, а затем немного медленнее, это хороший инструмент для количественного отслеживания в качестве интерфейса, спасибо!

Да, на этот раз мы снова вернулись, чтобы объявить о торговом соревновании, и команда Everwin Quantity устроила торговое соревнование, бесплатное участие. Если вы предоставляете API для запросов, вы можете зарегистрироваться.

Related Recommendations
Comment
All comments (1)

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

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