Antes había estado buscando herramientas que pudieran analizarlo en tiempo real, y después de investigar un tiempo, vnpy se sintió demasiado molesto para cambiar la interfaz. Por último, volvemos a los documentos de las nuevas guías de FMZ. En la actualidad, la mayoría de los usuarios de Facebook están usando el software de Google para crear sus propias páginas web, y en la actualidad, la mayoría de los usuarios de Twitter están usando el software de Google para crear sus propias páginas web. Por cierto, los artículos de fmz son muy pocos, pero son útiles en una guía para principiantes, y en ese momento solo se les preguntó por correo electrónico para entenderlo.
La primera es que el usuario puede elegir el tiempo de inicio y el tiempo de finalización.
Para esto hay que hacer parámetros:
La forma en que se siente es muy estúpida, no sé si hay alguna función que se puede iniciar.
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
}
Los parámetros de configuración de la rejilla: mínimo, precio máximo, intervalo de distribución de la rejilla y intervalo de reajuste de la lista.
Todos estos parámetros son enviados por el usuario.
La función principal del bus es
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
La llamada de task.Join ((() terminará la tarea de retrospección y devolverá datos de valor neto. El parámetro Join no transmite True, que devuelve los resultados originales de la retrospección sin analizar, y no puede volver a llamar funciones relacionadas con transacciones o mercados después de finalizar.
A través de la documentación, estoy adivinando lo que significa el resultado de la estrategia.
Se calcula el código de ganancia de datos de FMZ de regreso
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
Siento un poco de confusión, pero antes voy a hablar de lo que pensamos de nuestra red:
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
Es más o menos así, puede parecer un poco raro al principio.
Esta vez quiero compartir sobre todo para expresar que la velocidad de repetición de fmz en 14 días básicamente puede satisfacer el tiempo de espera del usuario en el frontend, más largo es un poco más lento, es una buena herramienta de repetición cuantitativa como interfaz, ¡Gran!
Sí, esta vez volvemos a promocionar una ola de competencia de transacciones, nuestro equipo de cuantificación de EverWin organizó una competencia de transacciones, para participar gratis. Siempre que todos proporcionen una API de consulta, pueden inscribirse con éxito, como una competencia de dos semanas, nuestro premio también es bueno. Deja un contacto fengye607.
Las hierbasLo que necesitas es obtener los resultados de las transacciones en tiempo real y luego simularlos. Esto puede ser un poco complicado si solo es un par de transacciones. Puedes intentar escribir tu propio motor de retrospección.