From f9dfaedcbdb56434567fdb5bc61b8fdcf57e6c58 Mon Sep 17 00:00:00 2001 From: 27942 <2794236280@qq.com> Date: Thu, 23 Oct 2025 13:48:57 +0800 Subject: [PATCH] dededdew --- logs/app.log | 2 + models/database.db | Bin 31891456 -> 31891456 bytes test.py | 45 ++------ weex交易/30分钟仿盘交易.py | 206 ++++++++++++++++++++++++++++++------- 4 files changed, 177 insertions(+), 76 deletions(-) create mode 100644 logs/app.log diff --git a/logs/app.log b/logs/app.log new file mode 100644 index 0000000..8cf70c6 --- /dev/null +++ b/logs/app.log @@ -0,0 +1,2 @@ +2025-10-22 17:25:17 [INFO] jegferwgrewgerwg | module=__main__ | function= +2025-10-22 17:25:33 [INFO] jegferwgrewgerwg | module=__main__ | function= diff --git a/models/database.db b/models/database.db index ccf1c6db8ed3338cf78dccab80d013eea94842dd..ca88f89165a34a294e9c32365d512e2c7c7d93db 100644 GIT binary patch delta 2533 zcmX}q37n1P0>|<5p5;CJ9BGnllYNV5C_)`u3S|vt=}#yv8d_wj8T7X{#!`ehj3G2L z9DBl160$e889O6sxVO5u=;qe_KW=(IpYQK;&U>EcIp=xald*kXBtxc`bMD+Rqe3fn zEC`Em5-!3`cnF*D5+C=n%E60L~VL>r!|w2=Nl}GVu!WDlwFJ zjYuPg5yOesi8qKhiMNOm#M{J3ViYl&7(={6yi24L8N^s(95J4Fk03FDm`F?_CKFSL zsl@w4CNYi3BBm2Fh?&GJ;sfGCVm2{{_=uQG%p>L#9}^3Rg+z>4L@XwCgL+QX~$N-e1^b)>G`C-tPh+%FBJp*$d|(nuQ1gYu9x zk*4ynG?V7iLLQMvB`PhYm9&;N(pDamcJjD9A?>Aubd)FMDd{AgrHgcxZqi+zmLAem zddV~Ltn`*X(pUP)b7IcFzYLJ)WuOd_!SaHGG&@%$#j_^Gi8>1ARo$X znIj*`T$v~HKzy!hz0fqesgaO)(Cd<5A@IQZ}XP~$_Co{8v6$LvV2>7SNvtX zwl~!aZ>D#%Yn=D8=Vv>mirvv3X)m)2+-E#NPZQ4|&rDCkwZe7G?Q%DW^m6xgPf27S zid#ia+jG@nU)vCyawKlmNu(FVtt2aU=6KwynOLV=LCf|!9QK}BiNsO!k?n8ouy;>O z>_2vEVEt2Zt6IWy!VIkJa5yS2KIgCJ;6Y-0fuCI+^ICC7M~Wk!R!9#KiQ|ach7T3muMIW1ELvy>y7#4(p(m9VzhEv`b<@+sQ`_ToA9d%u$GW?_L$0%~O|Gf2=I7#8h3?+&;f>+q z;4h&np-!POp%tNH-qC@}!Q^1e;Lzaw;BJ3mzz(Da5XcN{_U-lE@K^VD^{4xDz1iM_ z-kZMKzV^OhzJ;Fgo|T@%o*Q){2 zb{)<4w#w=gOD&FDM`N}2EVUwuikITnZp*Essu^=%j$2h1Dh*;QOUyae)9X?0!~wlY zvfMS+#&Tlku4+u8&NV%%((d{`pCgu*w$w_A_3gaWDz~8J8Y{)Ee}Zpg|3!9=H@(K% zMMXdT@b|B{u5YjPYc%hA+LGge7SX&bgUuDqE4g*w3?Bb`^smR2U#f(aHg%2WS6+DQ zvE>z;Im0yh_Ta+VnYUNYFS{#WJJjI+Ps%&rGteR}#~1x;m8>k^8cSJgvd(0^$p({+ zCYww?GudqNxycrjttQ({5+>VCzA*XHWQWODCOb{OHrZve+hmW)Hzs>c_L=NAIbd?o zlW$E5OpcfwH92N-+~kBwp-GX+Nt071r%le7oHaRTa^B>E$wiZ5lS@`2%lDl% HY|j4xDEY$x delta 2452 zcmXxhd7RDl9>?+XJIn9vGqxJcWX~8`MyL^!A!$MOB{97#Bq>`ZvW(@OkOq~B;>QS$ z7!G2>bkvASma+^pW)PDub?=Sq-dnlL`&*Cxc)q^p@%cR--}5`4le2F{Vva1X>)xHV zB&Dl53xq|u2@l~Ve1uK-i2xBKLPVH|5K$t5NF=He)rlHJO`;ZY3vnxvMARng5Os-U zB89k(s7KT%8W0VMMnq$x32{5olt?9-5otto;trw((UNFIv?kJtHpHDoTcRD&p16y+ zo5&zK5cd!riB3c&aWB!C$RfHBU5WdMZp8gWcj5u!LE<6eVWJ1oljub}Li8s35PgY$ zM1NucF_0KU3?_yUj}k+P$B1FXa3Y&{oX~!rAf6xlKl2I2#vfY?ZUNNgfD6NSVUVk;3Nwh`Nj9mGe(PGT2PM0`x_CiW0}iDKdtB2Mfh zJ|#XQN{Ic$=fnZxAn^t9CGiz;i1?Z~OdKJO632*dh;NDG#0lagaf&De*#5v+Tae?@bxJX%>2Z8^k|} ze-ZyCej$D(ej{!Y{~`WM{BJ(2MX`q_6ao{xU!Y z${-mmL*!8zDv!x987|rKxS0JvAy3LvGD1emD0x~&%QG@Yo|UokoIEe%WV}p}i84uE zkQe18nJh2M6qzco$TXQQGi0XZ$Sj#Hb7ZbiUX^+Bn#`94vQS=^Me>H^%3@g}OXW>@ zOWu}ck|*!Ta#R*564WsT&^T6tgA$$Hr!A4q|0ln-T-Y?eaVB3rFu#H=+( zXNKyz`dJ-Zp5BQ)tqzvfXYIBwyKA|-Bu+_OpLjgFI9eRNl8}_pEnz~!s>rlRLF81_ z6HSi}5BCq}gg1xFBK}CLNbgYd(BRPAP|RN*stkvN)qL1{rKYHnQv3-R(*CYH!S2=?nWZd?S5JJ<~h|o>N{=!Xa9S9jWmPCt_CEieEb!vl6VhU1|Un=VMmNfbfRsuIQ!kk??PkW|4uB*^w>&mZ9aL1EK5T2H{@eslkQ8 zqF`01MyPXWY+!m|W1uwX4Ymnpn`Qe8{pJ3ffyRM8zR|v1-%ekJ?X}z3+3`)fdXwA9 zzNp{qZMxmbb22Z*tR!cgy4$v^T=w_>HS()n+-Vj{m2a)i~}^t(tk>eWNm0cG+gt--Vp^oE$#*6fO)i;KS@GP!_tu2G F{{z!Ho!tNc diff --git a/test.py b/test.py index 4fd853b..bee08f6 100644 --- a/test.py +++ b/test.py @@ -1,38 +1,9 @@ -import requests +from logly import * -headers = { - 'Accept': '*/*', - 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', - 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7InVpZCI6IjY0MzNiMDMyNTBmYTQ5YTI1ZWNlYmQzMCIsInZlcnNpb24iOjAsImJyYW5jaCI6InpoIiwicGhvbmUiOiIxNzE2ODM2MDQwOCJ9LCJpYXQiOjE3NjExMDMyNzcsImV4cCI6MTc2MTI3NjA3N30.k_R1gSUW9XpE6uRiCdHrEA8MXGjGpGoWVTrhSGz-0Cc', - 'Cache-Control': 'no-cache', - 'Connection': 'keep-alive', - 'DNT': '1', - 'Pragma': 'no-cache', - 'Sec-Fetch-Dest': 'empty', - 'Sec-Fetch-Mode': 'cors', - 'Sec-Fetch-Site': 'none', - 'Sec-Fetch-Storage-Access': 'active', - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0', - 'i-app': 'hitab', - 'i-branch': 'zh', - 'i-lang': 'zh-CN', - 'i-platform': 'edge', - 'i-version': '2.2.16', - 'sec-ch-ua': '"Microsoft Edge";v="141", "Not?A_Brand";v="8", "Chromium";v="141"', - 'sec-ch-ua-mobile': '?0', - 'sec-ch-ua-platform': '"Windows"', -} - -response = requests.get('https://api.wetab.link/api/chat-v3/chat/history', headers=headers) - -for i in response.json()["data"]['list']: - print(i) - - json_data = { - 'clId': i["id"], - 'source': 'chat', - } - - response = requests.post('https://api.wetab.link/api/chat-v3/conversation/delete', headers=headers, json=json_data) - - print(response.json()) +logger.add( + "logs/app.log", + rotation="daily", # 或 "hourly", "10MB" + retention=7, + async_write=True # 启用异步写入,不阻塞主线程 +) +logger.success("jegferwgrewgerwg") diff --git a/weex交易/30分钟仿盘交易.py b/weex交易/30分钟仿盘交易.py index 27ab08d..d61fd2f 100644 --- a/weex交易/30分钟仿盘交易.py +++ b/weex交易/30分钟仿盘交易.py @@ -1,45 +1,173 @@ -from DrissionPage import ChromiumPage, ChromiumOptions +import json + +import requests + +from loguru import * +from DrissionPage import * + +from models.weex import * + + +def is_bullish(c): # 阳线 + return float(c['close']) > float(c['open']) + + +def is_bearish(c): # 阴线 + return float(c['close']) < float(c['open']) + + +class WeexTransaction: + def __init__(self, bit_id): + self.bit_port = None # 比特浏览器使用端口 + self.bit_id = bit_id # 比特id + self.bit_url = "http://127.0.0.1:54345" # 比特本地服务url + self.bit_headers = { + 'Content-Type': 'application/json' + } + + self.page = None # 浏览器对象 + + self.start = None # 持仓状态 + + def openBrowser(self, ): # 直接指定ID打开窗口,也可以使用 createBrowser 方法返回的ID + + json_data = { + "id": f'{self.bit_id}', + } + + try: + + res = requests.post( + url=f"{self.bit_url}/browser/open", + data=json.dumps(json_data), + headers=self.bit_headers + ).json() + + self.bit_port = res["data"]["http"].split(":")[1] + + return True + except: + return False + + def take_over_browser(self): + try: + co = ChromiumOptions() + co.set_local_port(self.bit_port) + + self.page = ChromiumPage(addr_or_opts=co) + + self.page.set.window.max() + + self.page.get(url="https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT") + + return True + except: + return False + + def is_bullish(self, c): # 阳线 + return float(c['close']) > float(c['open']) + + def is_bearish(self, c): # 阴线 + return float(c['close']) < float(c['open']) + + def get_price(self): + + for i in range(3): + try: + logger.info(f"获取最新数据:{i + 1}次。。。") + self.page.refresh() + res = self.page.listen.wait(timeout=15) # 等待并获取一个数据包 + + datas = [] + if res: + for data in res.response.body['data']["dataList"]: + insert_data = { + 'id': int(data[4]), + 'open': float(data[3]), + 'high': float(data[1]), + 'low': float(data[2]), + 'close': float(data[0]) + } + + datas.append(insert_data) + + return datas + except: + pass + + return False + + def action(self): + + # 获取比特端口 + if self.openBrowser(): + logger.info("获取打开比特成功,成功获取端口!!!") + else: + logger.error("打开比特失败!!!") + return + + # 接管浏览器 + if self.take_over_browser(): + logger.info("接管比特浏览器成功!!!") + else: + logger.error("接管浏览器失败!!!") + return + + self.page.listen.start("public/quote/v1/getKlineV2") + logger.success("浏览器开启抓包模式。。。") + + new_price_datas = self.get_price() + if new_price_datas: + logger.success("获取最新交易价格成功!!!") + else: + logger.info("获取最新价格有问题!!!") + + new_price_datas1 = sorted(new_price_datas, key=lambda x: x["id"]) + prev, curr, next_bar = new_price_datas1[-3:] + + pass -from bit_tools import openBrowser -from models.weex import Weex30Copy if __name__ == '__main__': + WeexTransaction( + bit_id="8dcb4f744cf64ab190e465e153088515" + ).action() - bit_port = openBrowser(id="8dcb4f744cf64ab190e465e153088515") + # bit_port = openBrowser(id="8dcb4f744cf64ab190e465e153088515") - co = ChromiumOptions() - co.set_local_port(port=bit_port) + # co = ChromiumOptions() + # co.set_local_port(port=bit_port) + # + # co = ChromiumOptions() + # co.set_local_port(bit_port) + # + # page = ChromiumPage(addr_or_opts=co) + # + # page.set.window.max() - co = ChromiumOptions() - co.set_local_port(bit_port) - - page = ChromiumPage(addr_or_opts=co) - - page.set.window.max() - - page.listen.start("public/quote/v1/getKlineV2") - - page.get(url="https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT") - - for _ in range(10000): - res = page.listen.wait() # 等待并获取一个数据包 - - print(_) - print(res.response.url) - - for data in res.response.body['data']["dataList"]: - # 构建插入数据的字典 - insert_data = { - 'id': int(data[4]), - 'open': float(data[3]), - 'high': float(data[1]), - 'low': float(data[2]), - 'close': float(data[0]) - } - - # 使用 INSERT OR REPLACE 插入或更新数据 - query = Weex30Copy.insert(**insert_data).on_conflict( - conflict_target=[Weex30Copy.id], - update=insert_data - ) - query.execute() + # page.listen.start("public/quote/v1/getKlineV2") + # + # page.get(url="https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT") + # + # for _ in range(10000): + # res = page.listen.wait() # 等待并获取一个数据包 + # + # print(_) + # print(res.response.url) + # + # for data in res.response.body['data']["dataList"]: + # # 构建插入数据的字典 + # insert_data = { + # 'id': int(data[4]), + # 'open': float(data[3]), + # 'high': float(data[1]), + # 'low': float(data[2]), + # 'close': float(data[0]) + # } + # + # # 使用 INSERT OR REPLACE 插入或更新数据 + # query = Weex30Copy.insert(**insert_data).on_conflict( + # conflict_target=[Weex30Copy.id], + # update=insert_data + # ) + # query.execute()