En la carga de los recursos... Cargando...

Función de cobertura de mercado sencilla

El autor:3 cerdo, Fecha: 2019-12-12 14:32:00
Las etiquetas:Creador de mercado

Las pequeñas plataformas hacen el mercado por sí mismas, reducen el riesgo y se arriesgan a las grandes bolsas. La idea estratégica: Balance de activos de la cuenta de giro de ciclos muertos, que hace que el cambio de moneda sea un arriesgo para los tokens Envío simultáneo de notificaciones de WeChat y de clavijas a los administradores Utiliza sqlite para guardar los saldos de las cuentas históricas, servir para el resto de la estrategia y facilitar la gestión financiera


# -*- coding: UTF-8 -*-
import time
from api import *
from Huobiapi import *
import sqlite3

def wechatmsg(text,desp):
	server = 'https://sc.ftqq.com/xxxxxx.send'
	payload = {'text':text,'desp':desp}
	requests.post(server,params = payload)

def dingmsg(title,msg):
	url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxx'
	data = {
			 "msgtype": "markdown",
			 "markdown": {
				 "title":title+msg,
				 "text": "#### " + title + "\n"
						 "> " + msg						 
			}}		 
	header = {'Content-Type':'application/json'}
	r = requests.post(url = url ,headers=header,data = json.dumps(data)).json()
	return r

def check():
	try:
		pre_balance = {}
		conn = sqlite3.connect("/root/bot/hedge.db")
		cursor = conn.cursor()
		sql = 'select * from balance order by id desc limit 20;'
		result = list(cursor.execute(sql))
		for a in result:
			if a[1] in list(pre_balance.keys()):
				break
			else:
				pre_balance[a[1]] = a[2]   #读取之前balance
		coinname = list(pre_balance.keys())
		print(pre_balance,coinname)

		balance = GetBalance()
		t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
		for x in balance:  
			sql = "insert into balance (coin,balance,time) values(?,?,?);"
			b = x['balance']+x['frozenBalance']
			if b != 0:
				v = (x['coin']['unit'],b,t)
				print(v)
				cursor.execute(sql,v)
			for n in coinname:
				if n == x['coin']['unit']:
					d = round(b - pre_balance[n],5)   #数量差
					if d > 0:
                        Sell(n,d)
						msg = '对冲卖出'+n+'数量:'+str(d)
						print(msg)
						wechatmsg('对冲',msg)
						dingmsg('对冲',msg)
						sql = "insert into hedge (coin,hedge_amount,status,time) values(?,?,?,?);"
						v = (n,d,0,t)
						cursor.execute(sql,v)
					elif d < 0:
                        Buy(n,d)
						msg = '对冲买入:'+n+'数量:'+str(d)
						print(msg)
						wechatmsg('对冲',msg)
						dingmsg('对冲',msg)
						sql = "insert into hedge (coin,hedge_amount,status,time) values(?,?,?,?);"
						v = (n,d,0,t)
						cursor.execute(sql,v)
					else:
						print('no hedge')

		conn.commit()
		conn.close()
	except Exception as e:
		raise e
	
def insert_balance():
	try:
		conn = sqlite3.connect("hedge.db")
		cursor = conn.cursor()
		balance = GetBalance()
		t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
		for x in balance:
			sql = "insert into balance (coin,balance,time) values(?,?,?);"
			b = x['balance']+x['frozenBalance']
			if b != 0:
				v = (x['coin']['unit'],b,t)
				cursor.execute(sql,v)
		conn.commit()
		conn.close()
		print('finish')
	except Exception as e:
		print('err',e)

if __name__ == '__main__':
	while 1:
		try:
			check()
		except Exception as e:
			print(e)
		time.sleep(30)



Relacionados

Más.

El cielo de fuegotiempo de importación from api import *, error en el inicio. No se ha podido encontrar esta API. Traceback (most recent call last): File "", line 1481, in Run File "", line 3, in ModuleNotFoundError: No hay módulo llamado 'api'