This commit is contained in:
27942
2025-11-06 14:42:20 +08:00
parent 54771bc2aa
commit 237c067e5a
2 changed files with 103 additions and 22 deletions

62
1.json Normal file
View File

@@ -0,0 +1,62 @@
{
'id': '681146715025178980',
'accountId': '667375883530535268',
'coinId': '64',
'contractId': '20000002',
'marginMode': 'SHARED',
'separatedMode': 'COMBINED',
'separatedOpenOrderId': '0',
'positionSide': 'LONG',
'orderSide': 'BUY',
'price': '0.00',
'size': '2.680',
'clientOrderId': 'f57f5877-5af4-42d6-adad-5d88457b65ca',
'type': 'MARKET',
'timeInForce': 'IMMEDIATE_OR_CANCEL',
'reduceOnly': False,
'triggerPrice': '0',
'triggerPriceType': 'UNKNOWN_PRICE_TYPE',
'orderSource': 'WEB',
'openTpslParentOrderId': '0',
'openTpParam': None,
'openSlParam': None,
'extraType': '',
'extraDataJson': '{"appVersion":"2.0.1","terminalType":"1"}',
'leverage': '100',
'takerFeeRate': '0.0008',
'makerFeeRate': '0.0002',
'feeDiscount': '1',
'liquidateFeeRate': '0.01',
'liquidateType': 'UNKNOWN_LIQUIDATE_TYPE',
'legacyOrderDirection': 'OPEN_LONG',
'legacyOrderDirectionDesc': '',
'withoutMatchFillSize': '0',
'withoutMatchFillValue': '0',
'withoutMatchPeerAccountId': '0',
'withoutMatchPeerOrderId': '0',
'status': 'FILLED',
'matchSequenceId': '2944106434',
'triggerTime': '0',
'triggerPriceTime': '0',
'triggerPriceValue': '0',
'cancelReason': 'UNKNOWN_ORDER_CANCEL_REASON',
'latestFillPrice': '3420.63',
'maxFillPrice': '3420.63',
'minFillPrice': '3420.63',
'cumFillSize': '2.680',
'cumFillValue': '9167.28840',
'cumFillFee': '7.33383072',
'cumLiquidateFee': '0',
'cumRealizePnl': '0',
'createdTime': '1762398031956',
'updatedTime': '1762398031962',
'fallback': False,
'positionTpsl': False,
'setOpenTp': False,
'setOpenSl': False,
'liquidate': False,
'deleverage': False,
'withoutMatch': False,
'closeAllPosition': False,
'closeFullPositionTpSl': False
}

View File

@@ -111,8 +111,6 @@ class WeexTransaction:
self.page.set.window.max() self.page.set.window.max()
self.page.get(url="https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT")
return True return True
except: except:
return False return False
@@ -147,8 +145,8 @@ class WeexTransaction:
for i in range(3): for i in range(3):
try: try:
logger.info(f"获取最新数据:{i + 1}次。。。") logger.info(f"获取最新数据:{i + 1}次。。。")
self.page.refresh() self.mn_tab.refresh()
res = self.page.listen.wait(timeout=15) # 等待并获取一个数据包 res = self.mn_tab.listen.wait(timeout=15) # 等待并获取一个数据包
datas = [] datas = []
if res: if res:
@@ -172,40 +170,40 @@ class WeexTransaction:
def to_do_page(self): def to_do_page(self):
# self.page.get("https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT") # self.page.get("https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT")
self.page.ele('x://*[contains(text(), "市价")]', timeout=15).click() self.mn_tab.ele('x://*[contains(text(), "市价")]', timeout=15).click()
time.sleep(1) time.sleep(1)
self.page.ele('x://input[@placeholder="请输入数量"]').input(100) self.mn_tab.ele('x://input[@placeholder="请输入数量"]').input(100)
time.sleep(1) time.sleep(1)
if self.direction == "long" and not self.start: if self.direction == "long" and not self.start:
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开多") logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开多")
self.send_dingtalk_message( self.send_dingtalk_message(
message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开多") message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开多")
self.page.ele('x://*[contains(text(), "买入开多")]').click() self.mn_tab.ele('x://*[contains(text(), "买入开多")]').click()
self.start = 1 self.start = 1
elif self.direction == "short" and not self.start: elif self.direction == "short" and not self.start:
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开空") logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开空")
self.send_dingtalk_message( self.send_dingtalk_message(
message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开空") message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},开空")
self.page.ele('x://*[contains(text(), "卖出开空")]').click() self.mn_tab.ele('x://*[contains(text(), "卖出开空")]').click()
self.start = -1 self.start = -1
elif self.direction == "long" and self.start == -1: elif self.direction == "long" and self.start == -1:
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平空做多") logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平空做多")
self.send_dingtalk_message( self.send_dingtalk_message(
message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平空做多") message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平空做多")
self.page.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True) self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True)
self.page.ele('x://*[contains(text(), "闪电平仓")]').click() self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').click()
time.sleep(3) time.sleep(3)
self.page.ele('x://*[contains(text(), "买入开多")]').click() self.mn_tab.ele('x://*[contains(text(), "买入开多")]').click()
self.start = 1 self.start = 1
elif self.direction == "short" and self.start == 1: elif self.direction == "short" and self.start == 1:
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平多做空") logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平多做空")
self.send_dingtalk_message( self.send_dingtalk_message(
message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平多做空") message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},反手平多做空")
self.page.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True) self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True)
self.page.ele('x://*[contains(text(), "闪电平仓")]').click() self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').click()
time.sleep(3) time.sleep(3)
self.page.ele('x://*[contains(text(), "卖出开空")]').click() self.mn_tab.ele('x://*[contains(text(), "卖出开空")]').click()
self.start = -1 self.start = -1
def get_text(self, target_text): def get_text(self, target_text):
@@ -213,7 +211,7 @@ class WeexTransaction:
cleaned_target_text = re.sub(r'\s', '', target_text) cleaned_target_text = re.sub(r'\s', '', target_text)
# 创建 BeautifulSoup 对象 # 创建 BeautifulSoup 对象
soup = BeautifulSoup(self.page.html, 'html.parser') soup = BeautifulSoup(self.mn_tab.html, 'html.parser')
# 遍历所有标签的文本内容 # 遍历所有标签的文本内容
for tag in soup.find_all(): for tag in soup.find_all():
@@ -242,8 +240,22 @@ class WeexTransaction:
return int(target_timestamp) * 1000 return int(target_timestamp) * 1000
def action(self): def close_extra_tabs_in_browser(self):
try:
for _, i in enumerate(self.page.get_tabs()):
if _ == 0:
continue
i.close()
return True
except:
pass
return False
def action(self):
# 获取比特端口 # 获取比特端口
if self.openBrowser(): if self.openBrowser():
logger.info("获取打开比特成功,成功获取端口!!!") logger.info("获取打开比特成功,成功获取端口!!!")
@@ -258,13 +270,20 @@ class WeexTransaction:
logger.error("接管浏览器失败!!!") logger.error("接管浏览器失败!!!")
return return
self.page.listen.start("public/quote/v1/getKlineV2") if self.close_extra_tabs_in_browser():
logger.info('关闭多余标签页成功!!!')
else:
logger.info('关闭多余标签页失败!!!')
self.mn_tab = self.page.new_tab()
self.mn_tab.listen.start("public/quote/v1/getKlineV2")
logger.success("浏览器开启抓包模式。。。") logger.success("浏览器开启抓包模式。。。")
self.mn_tab.get(url="https://www.weeaxs.site/zh-CN/futures/demo-trading/ETH-SUSDT") # 打开网页
self.pbar = tqdm(total=30, desc="等待时间中", ncols=80) # desc进度条说明ncols长度 self.pbar = tqdm(total=30, desc="等待时间中", ncols=80) # desc进度条说明ncols长度
while True: while True:
# 获取当前时间 # 获取当前时间
current_time = time.localtime() current_time = time.localtime()
current_minute = current_time.tm_min current_minute = current_time.tm_min
@@ -308,8 +327,8 @@ class WeexTransaction:
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},平多") logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},平多")
self.send_dingtalk_message( self.send_dingtalk_message(
message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},平多") message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},平多")
self.page.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True) self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True)
self.page.ele('x://*[contains(text(), "闪电平仓")]').click() self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').click()
self.start = 0 self.start = 0
elif self.start == -1: elif self.start == -1:
if is_bullish(self.kline_1) and is_bullish(self.kline_2): if is_bullish(self.kline_1) and is_bullish(self.kline_2):
@@ -317,8 +336,8 @@ class WeexTransaction:
self.send_dingtalk_message( self.send_dingtalk_message(
message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},平空") message_content=f"{datetime.datetime.now()},第一根信号:{self.kline_1}{self.kline_2},平空")
self.page.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True) self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').scroll.to_see(center=True)
self.page.ele('x://*[contains(text(), "闪电平仓")]').click() self.mn_tab.ele('x://*[contains(text(), "闪电平仓")]').click()
self.start = 0 self.start = 0
self.direction, signal_key = self.check_signal(prev=self.kline_1, curr=self.kline_2) # 判断信号 self.direction, signal_key = self.check_signal(prev=self.kline_1, curr=self.kline_2) # 判断信号