Type/to search
1
Follow
6
Followers
Wir haben FMZ verwendet, um eine Online-Grid-Trading-Backtesting-Funktion durchzuführen
FAQ
Created 2020-10-18 23:56:01  
 2
 5117

Zurück zum Anfang

Ich habe schon lange nach Tools gesucht, die in Echtzeit nachvollziehen können, und ich habe eine Zeit lang geforscht, ob es zu mühsam ist, von vnpy zu einer Schnittstelle zu werden.
Schließlich wurde die Dokumentation in FMZs Anfängerhandbuch aufgerufen.
Wir haben herausgefunden, dass es die Funktionen, die wir wollten, umsetzen kann, und wir haben es für ein halbes Jahr ausprobiert.
Ich habe es in der Anleitung für Anfänger gelesen, aber ich habe es erst nach dem Posten erfahren.

Das erste ist, dass der Benutzer die Start- und Endzeit selbst wählen kann.
img

Das muss parametriert werden:

img
Es ist eine sehr schwierige Methode, nicht zu wissen, ob irgendwelche Funktionen initialiert werden können.

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 }

Grid-Konfigurationsparameter: Minimum, Maximum, Distributionsintervalle des Grids und Intervalle für die erneute Auflistung.

Die oben genannten Parameter wurden von Nutzern eingereicht.

Die primäre Busfunktion ist

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
  • Ich habe die Rückverfolgung von fmz durch die gen_params-Funktion erhalten
  • Lauf-Trainingsfunktion
  • Ertragsrate berechnet und Transaktionsrekord angezeigt, basierend auf der Datenstruktur, die von fmz zurückgegeben wird

Ein Aufruf von task.Join() beendet die Rückmessung und gibt die Nettowertdaten zurück. Die Join-Parameter werden nicht übertragen. True gibt die ursprüngliche, nicht analysierte Rückmessung zurück, und nach Beendigung können keine Transaktions- oder Sachbezogenen mehr aufgerufen werden.

Ich meine, durch die Dokumentation, was ich meine, was die Strategie zurückgibt.

Der Code für die fmz-Rendite ist mit den folgenden Daten berechnet:

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

Ich habe mich etwas verwirrt gefühlt, aber ich möchte zuerst über unser Netz sprechen:

Das Projekt wurde in der Folge durchgeführt.

  • Zuerst wird das Gitter nach den Parametern des Benutzers initialisiert.
  • Erste Anmeldung
  • Regelmäßige Überprüfung der Transaktionen auf den Kauf- und Verkaufsscheinen und erneute Anbringung der Listen
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

Das ist wahrscheinlich so, vielleicht ist es zum ersten Mal ein wenig verrückt.

Diesmal möchte ich vor allem sagen, dass die Geschwindigkeit, mit der fmz die Rückmeldung innerhalb von 14 Tagen erstellt hat, im Wesentlichen die Wartezeit der Benutzer am Frontend befriedigt, und wenn sie länger ist, ist sie etwas langsamer, und es ist ein gutes Werkzeug für quantitative Rückmeldungen als Schnittstelle, danke!

Ja, diesmal sind wir wieder zurück, um eine Welle von Handelswettkämpfen zu promoten, und unser Everwin Quantitative Team hat eine Handelswettkämpfe organisiert, an denen wir kostenlos teilnehmen können. Solange Sie die Anfrage-API bereitstellen, können Sie sich erfolgreich anmelden.

Related Recommendations
Comment
All comments (1)

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

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