def futures_risk_reserve_histroy(symbol, page_number="1", page_size="10"): # 6564-获取合约风险准备金余额历史数据 url = "%s/api/v1/futures/market/risk_reserve_history" % B3_url body = { "symbol": symbol, "page_number": page_number, "page_size": page_size } run = RunMain(url=url, params=body, data=None, headers=get_signture(Android_apikey, Android_apisecret, body), method='GET') out_log(url, response_msg=json.loads(run.response)) print(json.loads(run.response))
def get_close_orders(token, page_number="1", page_size="10", symbol=""): #获取历史订单 url = "%s/api/v1/transaction/get_close_orders" % B4_url body = { "token": token, "symbol": symbol, "page_number": page_number, "page_size": page_size, } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))
def futures_market_depth_merged(contract_code, precision): # 获取聚合价格精度的市场深度数据 url = "%s/api/v1/futures/market/depth/merged" % B3_url body = { "contract_code": contract_code, # 合约代码 "precision": precision # 价格聚合精度, -2=2位小数,-1=1位小数,0=1位整数,1=2位整数... 以此类推 } run = RunMain(url=url, params=body, data=None, headers=get_signture(Android_apikey, Android_apisecret, body), method='GET') out_log(url, response_msg=json.loads(run.response)) print(json.loads(run.response)) return json.loads(run.response)
def futures_settlement_history(symbol, page_number="1", page_size="10"): # 获取平台交割结算记录 url = "%s/api/v1/futures/market/settlement_history" % B3_url body = { "symbol": symbol, "page_number": page_number, "page_size": page_size } run = RunMain(url=url, params=body, data=None, headers=get_signture(Android_apikey, Android_apisecret, body), method='GET') out_log(url, response_msg=json.loads(run.response)) print(json.loads(run.response))
def futures_order_trigger_place(token, contract_code, direction, price, quantity, lever, trigger_type, trigger_price, source="app"): # 6726-计划委托下单 url = "%s/api/v1/futures/order/trigger/place" % B3_url body = { "token": token, "contract_code": contract_code, # 合约代号 "direction": direction, # 交易方向,取值范围:buy_open=买入开多 buy_close=买入平空 sell_open=卖出开空 sell_close=卖出平多 "price": price, # 下单价格,0=按市价下单 "quantity": quantity, # 下单数量 "source": source, # 订单来源,取值范围:app | web "lever": lever, # 杠杆倍数 "trigger_type": trigger_type, # 触发类型,取值范围:ge=大于等于(最新价比触发价大) le=小于等于(最新价比触发价小) "trigger_price": trigger_price # 触发价格 } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: order_id = json.loads(run.response)["data"]["order_id"] print( "计划委托单号:" + order_id, "合约代号:" + contract_code, # 合约代号 "交易方向:" + direction, # 交易方向,取值范围:buy=买入 sell=卖出 "下单价格:" + price, # 下单价格,0=按市价下单 "下单数量:" + quantity, # 下单数量 "杠杆倍数:" + lever, # 杠杆倍数 "触发类型:" + trigger_type, # 触发类型,取值范围:ge=大于等于(最新价比触发价大) le=小于等于(最新价比触发价小) "触发价格:" + trigger_price # 触发价格 ) else: print(json.loads(run.response))
def futures_get_position_limit(token, symbol, contract_type): # 3486-获取用户下单量限制 url = "%s/api/v1/futures/contract/position_limit" % B3_url body = { "token": token, "symbol": symbol, "contract_type": contract_type # 合约类型,取值范围:this_week=当周 next_week=次周 quarter=季度 next_quarter=次季度 不传或传空字符串则为全部 默认全部 } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))
def apply(token, symbol, amount): #提交商户认证 url = "%s/api/v1/business/apply" % B4_url body = { "token": token, "certificate_front": "e6ec529ba185279aa0adcf93e645c7cd.jpg", "certificate_back": "469bba0a564235dfceede42db14f17b0.jpg", "certificate_handheld": "509e1a7dd584d7de15b20fc52e0e2e8d.jpg", "symbol": symbol, "amount": amount #USDT:1500,BTC:0.2 } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') print(json.loads(run.response))
def futures_user_liquidation_orders(token, page_number, page_size, start_date="", contract_code="", direction="", symbol=""): # 6537-获取用户强平订单 url = "%s/api/v1/futures/order/liquidation_orders" % B4_url body = { "token": token, "symbol": symbol, "contract_code": contract_code, "direction": direction, # 交易方向,取值范围:buy_close=买入强平 sell_close=卖出强平,不传或传空字符创则默认为以上全部 "page_number": page_number, "page_size": page_size, "start_date": start_date # 查询起始天数,取值范围:[1, 90] } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, response_msg=json.loads(run.response)) print(demjson.decode(run.response))
def add_order(token, price, quantity, side, min_trx_cash, pay_way, symbol): # 商户发布广告 url = '%s/api/v1/otc/add_order' % B4_url payway_detail = [] if side == "1": payway_detail = json.dumps(buy_payway_detail(token)) elif side == "0": payway_detail = json.dumps(sell_payway_detail(token), ensure_ascii=False) else: return print("side参数不合法") # print((buy_pay_detail)) print(payway_detail) # 发布广告的收付款详情 body = { "token": token, # 文,商户 "price": str(price), #发布广告价格 "quantity": truncateDecimal(num=quantity, digits=8), #发布广告数量 "side": side, #买卖方向 0=卖出,1=买入 "source": "app", #来源,取值web/app "min_trx_cash": min_trx_cash, #最低交易金额,最多支持两位小数 "max_trx_cash": truncateDecimal(num=int(price * quantity), digits=2), #最高交易金额,最多支持两位小数 "symbol": symbol, #交易对 "pay_way": pay_way, #支持的收付款方式,1=银行卡,2=微信,4=支付宝,可组合使用(数字相加) "pay_detail": payway_detail, #银行卡收付款信息详情(JSON数组格式字符串),具体格式定义见 备注 "nationality": "156" #所属国家或地区(三位数字代码), 默认值:156 } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: order_id = json.loads(run.response)["data"]["order_id"] #将返回值转换成字典 # print(parmas_add_order['pay_detail']) print("广告ID:%s" % order_id) if side == '0': way = "卖" else: way = "买" print("发布%s币广告成功" % way) return order_id else: print(json.loads(run.response))
def commission_records(token, page_number="1", page_size="20", symbol=""): # 6852-获取代理商佣金记录 url = "%s/api/v1/futures/agent/commission_records" % B3_url body = { "token": token, "page_number": page_number, "page_size": page_size, "symbol": symbol } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))
def funding_activity_participated_activities(token, symbol, page_number, page_size): # 8445-获取我参与的活动 url = "%s/api/v1/funding/activity/participated_activities" % B4_url body = { "token": token, "symbol": symbol, "page_number": page_number, "page_size": page_size } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))
def get_transaction_detail(token_junxin, trx_id): # 获取订单详情 url = "%s/api/v1/otc/get_transaction_detail" % B4_url body = {"token": token_junxin, "trx_id": trx_id} # print(parmas_get_transaction_detail) run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: side = json.loads(run.response)["data"]["side"] # print(type(side)) # print(side) return side else: print(json.loads(run.response))
def get_transaction_state(token_wen, trx_id): # 订单详情 url = "%s/api/v1/otc/get_transaction_detail" % B4_url body = {"token": token_wen, "trx_id": trx_id} # print(parmas_get_transaction_detail) run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: state = json.loads(run.response)['data']['state'] # 获取状态 # print(type(state)) print("state=", state) return state else: print(json.loads(run.response))
def add_orders(token, price, quantity, side, source, symbol): #下单 url = "%s/api/v1/transaction/add_order" % B4_url body = { "token": token, "price": str(price), "quantity": str(quantity), "side": side, #交易方向 0=卖出 1=买入 "source": source, "symbol": symbol } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))
def user_customer_confirm_transaction(token_junxin,trx_id): # 客户下买单确认付款 url = "%s/api/v1/otc/customer_confirm_transaction"%B3_url user_sell_pay_detail = json.dumps(sell_payway_detail(token_wen)[0]) body = { "token": token_junxin, "trx_id": trx_id, "pay_way": sell_payway_detail(token_wen)[0]["pay_way"], "pay_detail": user_sell_pay_detail } # print(parmas_customer_confirm_transaction) run = RunMain(url= url, params=None, data= body, headers=get_signture(H5_apikey,H5_apisecret,body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: print("客户下买单确认付款") return run.response else: print(json.loads(run.response))
def authentication_kyc(token,name,certificate_type,certificate_no,face_photo="",nationality="156"): #提交KYC实名认证 url = "%s/api/v1/authentication/kyc"% B1_url body = { "token":token, "name":name, "certificate_type":certificate_type, #证件类型,0=其他 1=护照 2=身份证 "certificate_front":"ff4e9cac40a2d5e8e4538e36df2b5b35.png", "certificate_back":"ff4e9cac40a2d5e8e4538e36df2b5b35.png", "certificate_handheld":"ff4e9cac40a2d5e8e4538e36df2b5b35.png", "certificate_no":certificate_no, #证件号码 "nationality":nationality, "face_photo":face_photo #人脸识别照片 } run = RunMain(url=url, params=None, data=body, headers=get_signture(PC_apikey, PC_apisecret, body), method='POST') out_log(url,send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))
def futures_trigger_close_orders(token, symbol, contract_code, state, direction, start_date="90", page_number="1", page_size="10"): # 6780-获取历史计划委托 url = "%s/api/v1/futures/order/trigger/close_orders" % B4_url body = { "token": token, "symbol": symbol, "contract_code": contract_code, "state": state, # 委托状态,取值范围:succeed=执行成功 failed=执行失败 canceled=已撤销 不传或传空字符串则默认为以上全部 "direction": direction, # 交易方向,取值范围:buy_open=买入开多 buy_close=买入平空 sell_open=卖出开空 sell_close=卖出平多,不传或传空字符串则默认为以上全部 "start_date": start_date, # 起始天数,取值范围:[1, 90],默认值:90 "page_number": page_number, "page_size": page_size } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, response_msg=json.loads(run.response)) print(demjson.decode(run.response))
def get_orders(token_wen,state="7",pay_way="0",nationality="0",base_currency="",quote_currency=""): #获取商户发布的广告 url = "%s/api/v1/otc/get_orders"%B3_url body = { "token":token_wen, "page_number":"2", "page_size":"10", "state":state, #广告状态,取值:1=可交易;2=完全成交;4=已下架 可组合使用 "pay_way":pay_way, #【2020.1.13新增】支持的收付款方式,1=银行卡,2=微信,4=支付宝,可组合使用,0=全部,默认值:0 "nationality":nationality, #【2020.1.13新增】所属国家或地区(3位数字代码),0=全部,默认值:0 "base_currency":base_currency, #【2020.1.13新增】基础币种,""=全部,默认值:"" "quote_currency":quote_currency #【2020.1.13新增】报价币种,""=全部,默认值:"" } run = RunMain(url= url, params=None, data=body, headers=get_signture(H5_apikey,H5_apisecret,body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: print("获取商户发布的广告") else: print(json.loads(run.response))
def futures_market_history_kline(kline_symbol, period, size): # 获取市场K线数据 url = "%s/api/v1/futures/market/history/kline" % B3_url body = { "kline_symbol": kline_symbol, # 【更新】合约K线名称,基本格式:合约品种_合约类型,其中合约类型取值范围如下:1=当周 2=次周 3=季度 4=次季度 "period": period, # 【更新】时间粒度,取值范围:0= 1分钟;1= 5分钟;2= 15分钟;3= 30分钟;4= 60分钟;5=1天;6=1周;7=1月 "size": size # 要获取的数据条数,最大值:1500 } run = RunMain(url=url, params=body, data=None, headers=get_signture(Android_apikey, Android_apisecret, body), method='GET') out_log(url, response_msg=json.loads(run.response)) print(json.loads(run.response)) return json.loads(run.response)
def sell_payway_detail(token_wen): # 获取收付款列表 url = "%s/api/v1/payway/get_list" % B3_url body = { "token": token_wen } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey,H5_apisecret,body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: # 发布广告的收付款详情 pay = json.loads(run.response)["data"] sell_pay_detail = [] for i in pay: a = i["pay_detail"] sell_pay_detail.append(a) # print(sell_pay_detail) # print("获取发布卖广告需要的payway_detail") return sell_pay_detail else: print(json.loads(run.response))
def user_buy_transaction(token_junxin,order_id,amount,price): #客户下买单 url = "%s/api/v1/otc/add_transaction"%B3_url body = { "token": token_junxin, "order_id": order_id, "amount":str(format(amount,".8f")), # "pay_way": user_pay_way, #客户买币不需要pay_way # "pay_detail": {'account_no': '4646464545454788787', 'bank_branch': '中国银行天河支行', 'bank_name': '中国银行', 'pay_way': '1', 'realname': '甄俊文'}, #买币不需要pay_detail "trx_cash":str(format(price*amount,".2f")) } # print(parmas_add_transaction) run = RunMain(url= url, params=None, data= body, headers= get_signture(H5_apikey,H5_apisecret,body), method='POST') out_log(url, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: trx_id = json.loads(run.response)["data"]["trx_id"] print("客户下买单trx_id:%s"%trx_id) return trx_id else: print(json.loads(run.response))
def futures_lighting_close_position(token, contract_code, direction, quantity, source="app"): # 6708-闪电平仓下单 url = "%s/api/v1/futures/order/lighting_close_position" % B4_url body = { "token": token, "contract_code": contract_code, # 合约代号 "direction": direction, # 交易方向,取值范围:buy=买入 sell=卖出 "quantity": quantity, # 下单数量 "source": source # 订单来源,取值范围:app | web } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: order_id = json.loads(run.response)["data"]["order_id"] print("单号:" + order_id, "下单数量:" + quantity, "交易方向:" + direction ) else: print(json.loads(run.response))
def user_sell_transaction(token_junxin,order_id,amount,price): # 客户下卖单 url = "%s/api/v1/otc/add_transaction"%B3_url user_sell_pay_detail = json.dumps(sell_payway_detail(token_wen)[0]) body = { "token": token_junxin, "order_id": order_id, "amount":str(format(amount,".8f")), "pay_way": sell_payway_detail(token_wen)[0]["pay_way"], "pay_detail": user_sell_pay_detail, "trx_cash":str(format(price*amount,".2f")) } # print(parmas_sell_transaction) run = RunMain(url= url, params=None, data= body, headers=get_signture(H5_apikey,H5_apisecret,body), method='POST') out_log(url, send_msg=body,response_msg=json.loads(run.response)) if json.loads(run.response)["code"] == 1000: trx_id = json.loads(run.response)["data"]["trx_id"] print("客户下卖单trx_id:%s"%trx_id) return trx_id else: print(json.loads(run.response))
def register_kyc(account, password, dialing_code="86", invitation_code=""): # 实名认证注册 url = "%s/api/v1/user/register_kyc" % B4_url kyc = authentication_get_kyc_info(token=B1token_wen) if kyc["code"] == 1000: if kyc["data"]["state"] == 3: certificates_name = kyc["data"]["certificates_name"] # print(certificates_name) certificates_no = kyc["data"]["certificates_no"] # print(certificates_no) else: print(kyc) certificates_name = input() # print(kyc) verification_id = send_sms(sms_type="1", account=account, dialing_code=dialing_code) db = DB('mysql.b4dev.xyz', 3306, 'b4_api', 'eYKRj3Vp@zM0SGWj', 'b4') # B4devDB verification_code = db.query( "SELECT verification_code FROM user_verification_code WHERE user_account = '%s' ORDER BY code_over_time DESC LIMIT 1" % (dialing_code + account))[0][0] password = str(hashlib.sha256(password.encode('utf-8')).hexdigest()) body = { "account": account, "password": password, "verification_id": verification_id, "verification_code": verification_code, "invitation_code": invitation_code, "name": str(certificates_name), "certificate_no": str(certificates_no) } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, body, json.loads(run.response)) print(json.loads(run.response))
def futures_trigger_open_orders(token, symbol, contract_code, page_number="1", page_size="10"): # 6771-获取当前计划委托 url = "%s/api/v1/futures/order/trigger/open_orders" % B3_url body = { "token": token, "symbol": symbol, "contract_code": contract_code, "page_number": page_number, "page_size": page_size } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, response_msg=json.loads(run.response)) print(demjson.decode(run.response))
def futures_liquidation_orders(symbol, direction, start_date="", page_number="", page_size=""): # 获取平台强平订单 url = "%s/api/v1/futures/market/liquidation_orders" % B3_url body = { "symbol": symbol, "direction": direction, # 交易方向,取值范围:sell_close=卖出强平 buy_close=买入强平 "start_date": start_date, # 日期 1-90(默认90天) "page_number": page_number, "page_size": page_size } run = RunMain(url=url, params=body, data=None, headers=get_signture(Android_apikey, Android_apisecret, body), method='GET') out_log(url, response_msg=json.loads(run.response)) print(json.loads(run.response))
def withdraw(token,symbol,amount,address,password,account,chain_id): #提交提币申请 url = "%s/api/v1/wallet/withdraw" % B4_url password = str(hashlib.sha256(password.encode('utf-8')).hexdigest()).upper() db = DB('mysql.b4dev.xyz', 3306, 'b4_api', 'eYKRj3Vp@zM0SGWj', 'b4') # B4devDB verification_id = send_sms(sms_type="7", account=account,token=token) verification_code = db.query( "SELECT verification_code FROM `user_verification_code` WHERE user_account = 86%s ORDER BY code_over_time DESC LIMIT 1" % account)[0][0] body={ "token":token, "symbol":symbol, "amount":amount, "address":address, "verification_id":verification_id, "verification_code":verification_code, "password":password, "account":"86%s"%account, "chain_id":chain_id } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url,send_msg=body,response_msg=json.loads(run.response)) print(json.loads(run.response))
def login_step1(account, password, type, dialing_code=""): url = "%s/api/v1/user/login/step1" % B4_url password = str(hashlib.sha256(password.encode('utf-8')).hexdigest()) body = { "type": type, #账号类型,1=手机号码 2=邮箱地址 "dialing_code": dialing_code, #国际电话区号,仅当type=1 时有效 "account": account, "password": password #SHA256加密后的登录密码 } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, body, json.loads(run.response)) # print(password) code = json.loads(run.response)["code"] if code == 1000: verification_token = json.loads( run.response)["data"]["verification_token"] # print(verification_token) return verification_token else: print(json.loads(run.response))
def register(account, password, verification_id, verification_code, type, dialing_code="", invitation_code="", platform="2"): #注册 url = "%s/api/v1/user/register" % B1_url password = str( hashlib.sha256((password + "YDEXSS").encode('utf-8')).hexdigest()) body = { "account": account, "password": password, "verification_id": verification_id, # 验证码发送成功后服务器返回的验证码ID "type": type, # 账号类型,1=手机号码 2=邮箱地址 "dialing_code": dialing_code, # 国际电话区号,仅当type=1 时有效 "verification_code": verification_code, # 验证码 "invitation_code": invitation_code, # 邀请码 (非必填) "platform": platform # 终端类型,1=移动端 2=PC端 } run = RunMain(url=url, params=None, data=body, headers=get_signture(Android_apikey, Android_apisecret, body), method='POST') out_log(url, body, json.loads(run.response)) # print(password) code = json.loads(run.response)["code"] if code == 1000: token = json.loads(run.response)["data"]["token"] return token else: print(json.loads(run.response))
def online_apikey_create(account, token, permission, bind_ip, remark): #申请ApiKey url = "%s/api/v1/merchant/apikey/create" % B4_url verification_id = send_email_sms(sms_type="8", account=account, token=token, language="zh") # verification_id = send_sms(sms_type="8",account=account,token=token,language="zh") verification_code = input("验证码:") body = { "token": token, "permission": permission, #权限类型,取值范围:1=读取 2=交易 4=划转,可组合使用 "verification_code": verification_code, "verification_id": verification_id, "bind_ip": bind_ip, "remark": remark } run = RunMain(url=url, params=None, data=body, headers=get_signture(H5_apikey, H5_apisecret, body), method='POST') out_log(url, send_msg=body, response_msg=json.loads(run.response)) print(json.loads(run.response))