rgfewfger
This commit is contained in:
76
test2.py
76
test2.py
@@ -1,72 +1,6 @@
|
||||
import requests
|
||||
import time
|
||||
|
||||
cookies = {
|
||||
'AF_SYNC': '1765258261595',
|
||||
'_ym_d': '1765261165',
|
||||
'_ym_uid': '1765261165802134230',
|
||||
'tradeType': 'pro',
|
||||
'__adroll_fpc': '23875168b001e1ea5b3c338cadd7fe49-1762510277666',
|
||||
'afUserId': '1ac8dae1-3f99-4800-b10c-6a2f5b9128a2-p',
|
||||
'golang': 'cn',
|
||||
'accessKey': 'eyJoZWFkZXIiOnsidHlwIjoiQml0TWFydCIsImFsZyI6IkJNQVBJU0lYIn0sInBheWxvYWQiOnsiamlkIjoiMjU4MDk0NmY0MzE1NDk2NWJjNmUxMmEyMjdmMGQ3ZjciLCJ2ZXJzaW9uIjoiMjAyNTEyMTEiLCJleHBpcmVzQXQiOjE3NjU1MTUxMzE2MjUsImJtIjoia1NkYzJOY0JuQnVTdEsvTk1OamFlQ0R6NVRIeS9wZXIxNmdYeDZPRFBWLytxaVh0UW5WcWoyNjNobHQwSWNaQk4vOWJkOXN1VlZpV2kxQm1Mc2JnTUNsTU1ZTE4wTExCTnN6WUJYSFZURWp4NXV4WmZvbnhoeDMwU1hkN3VPbHpDcFlKSVE2ZVE1YlM2ak5RemJMbU1jb1hxeERMYS9pTWJ2S2JRVCtSKzJFalhwdEZ3WDIxaEZCNDl3OUNPTnVQTG01T0ZibTEyKzZrMVFIeklxN1d3cTV4MUlzdW9Yam5kYWZXOVkzbVYxQ1B0U3dDNmxYcFFCRHBpUTVweGlYNGdybkx4MzBYUXZOMWRsQWVxR1NaeGJEN3ZodzNMRk9RTThFZU5aK3BpcFlTd3JCK08xOFh6Y0FzZE14U0h2RzRxbVp4MGxZN1pqUjlyaVhvVXRqYy9penZGTFROR0FhZ3NWRzRwOEp4TlhMakROcE0yMnM0dWxxQ0FjYUlET2tvIn0sInNpZ25hdHVyZSI6InhZK1lLTUJ1Q2ZROExDc3NlY21NcDdtZGVUL1YycGloL0I5MFdRU1B3MkQyMUVlbEJtRlZWeWhBYWhXUXFOOGpsek0wdEExeDJ4ZzdaUzZDZk1YUE1RPT0ifQ==',
|
||||
'accessSalt': 'ybBIkojJPAgx3B57DxWp9tDqZBQGF14g92U',
|
||||
'tokenAt': '1765515131625',
|
||||
'tokenSt': '1765428734351',
|
||||
'_gcl_au': '1.1.1161787028.1762510265',
|
||||
'_gid': 'GA1.2.727267646.1765355541',
|
||||
'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2214768493%22%2C%22first_id%22%3A%2219a5dcc471d134b-052dcac363853b8-26011051-14540800-19a5dcc471ef33%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTlhNWRjYzQ3MWQxMzRiLTA1MmRjYWMzNjM4NTNiOC0yNjAxMTA1MS0xNDU0MDgwMC0xOWE1ZGNjNDcxZWYzMyIsIiRpZGVudGl0eV9sb2dpbl9pZCI6IjE0NzY4NDkzIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2214768493%22%7D%2C%22%24device_id%22%3A%2219a5dcc471d134b-052dcac363853b8-26011051-14540800-19a5dcc471ef33%22%7D',
|
||||
'currentCurrency': 'USD',
|
||||
'__cf_bm': 'd5utJxL3iD_YzZrYsaVGToGq1ho5vNoUBQxBcj84wAE-1765429537-1.0.1.1-ohkjT5elYCmZy_AhBKOEnWhpNuX1KtA9IGDTR9klXqLjlX75vLD.8NaSNgDPXHls422F6I7DDhP9TiLBeAGzmdeNLxlqCtkSfbEZW6cf.T4',
|
||||
'_cfuvid': 'oINzbJqq18DXD3nYfw8WDzYlLQW_Emc2JoTaA9G_T3A-1765429537429-0.0.1.1-604800000',
|
||||
'_ga_R8QWWJS24Y': 'GS2.1.s1765428734$o6$g1$t1765429603$j59$l0$h0',
|
||||
'hasDelegation': 'false',
|
||||
'delegationType': '0',
|
||||
'delegationTypeList': '[]',
|
||||
'_ga_7BWH3BJ925': 'GS2.1.s1765428735$o7$g1$t1765429604$j58$l0$h0',
|
||||
'_ga_PJBF32MZ6E': 'GS2.1.s1765428735$o7$g1$t1765429604$j58$l0$h0',
|
||||
'_gat_gtag_UA_116271308_6': '1',
|
||||
'_ga_0V649X1YZB': 'GS2.1.s1765428735$o6$g1$t1765429604$j58$l0$h0',
|
||||
'_ga': 'GA1.2.1461651029.1762510272',
|
||||
'_gat': '1',
|
||||
}
|
||||
|
||||
headers = {
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'accept-language': 'zh-TW,zh;q=0.9',
|
||||
'baggage': 'sentry-environment=production,sentry-release=e9b215a,sentry-public_key=42eada5febd1737fdcb9413516bdb44f,sentry-trace_id=ffb2aa1c055c49aabc90f69344e7c98f,sentry-sampled=false,sentry-sample_rand=0.8176968250645713,sentry-sample_rate=0.2',
|
||||
'cache-control': 'no-cache',
|
||||
'content-type': 'application/json;charset=UTF-8',
|
||||
'pragma': 'no-cache',
|
||||
'priority': 'u=1, i',
|
||||
'referer': 'https://derivatives.bitmart.com/zh-CN/futures/ETHUSDT?theme=dark',
|
||||
'sec-ch-ua': '"Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'sentry-trace': 'ffb2aa1c055c49aabc90f69344e7c98f-a1ba2fca190697ae-0',
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36',
|
||||
'x-bm-client': 'WEB',
|
||||
'x-bm-contract': '2',
|
||||
'x-bm-device': '790af181784031fde5b40950055c7a72',
|
||||
'x-bm-tag': '',
|
||||
'x-bm-timezone': 'Asia/Taipei',
|
||||
'x-bm-timezone-offset': '-480',
|
||||
'x-bm-ua': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36',
|
||||
'x-bm-version': 'e9b215a',
|
||||
# 'cookie': 'AF_SYNC=1765258261595; _ym_d=1765261165; _ym_uid=1765261165802134230; tradeType=pro; __adroll_fpc=23875168b001e1ea5b3c338cadd7fe49-1762510277666; afUserId=1ac8dae1-3f99-4800-b10c-6a2f5b9128a2-p; golang=cn; accessKey=eyJoZWFkZXIiOnsidHlwIjoiQml0TWFydCIsImFsZyI6IkJNQVBJU0lYIn0sInBheWxvYWQiOnsiamlkIjoiMjU4MDk0NmY0MzE1NDk2NWJjNmUxMmEyMjdmMGQ3ZjciLCJ2ZXJzaW9uIjoiMjAyNTEyMTEiLCJleHBpcmVzQXQiOjE3NjU1MTUxMzE2MjUsImJtIjoia1NkYzJOY0JuQnVTdEsvTk1OamFlQ0R6NVRIeS9wZXIxNmdYeDZPRFBWLytxaVh0UW5WcWoyNjNobHQwSWNaQk4vOWJkOXN1VlZpV2kxQm1Mc2JnTUNsTU1ZTE4wTExCTnN6WUJYSFZURWp4NXV4WmZvbnhoeDMwU1hkN3VPbHpDcFlKSVE2ZVE1YlM2ak5RemJMbU1jb1hxeERMYS9pTWJ2S2JRVCtSKzJFalhwdEZ3WDIxaEZCNDl3OUNPTnVQTG01T0ZibTEyKzZrMVFIeklxN1d3cTV4MUlzdW9Yam5kYWZXOVkzbVYxQ1B0U3dDNmxYcFFCRHBpUTVweGlYNGdybkx4MzBYUXZOMWRsQWVxR1NaeGJEN3ZodzNMRk9RTThFZU5aK3BpcFlTd3JCK08xOFh6Y0FzZE14U0h2RzRxbVp4MGxZN1pqUjlyaVhvVXRqYy9penZGTFROR0FhZ3NWRzRwOEp4TlhMakROcE0yMnM0dWxxQ0FjYUlET2tvIn0sInNpZ25hdHVyZSI6InhZK1lLTUJ1Q2ZROExDc3NlY21NcDdtZGVUL1YycGloL0I5MFdRU1B3MkQyMUVlbEJtRlZWeWhBYWhXUXFOOGpsek0wdEExeDJ4ZzdaUzZDZk1YUE1RPT0ifQ==; accessSalt=ybBIkojJPAgx3B57DxWp9tDqZBQGF14g92U; tokenAt=1765515131625; tokenSt=1765428734351; _gcl_au=1.1.1161787028.1762510265; _gid=GA1.2.727267646.1765355541; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2214768493%22%2C%22first_id%22%3A%2219a5dcc471d134b-052dcac363853b8-26011051-14540800-19a5dcc471ef33%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTlhNWRjYzQ3MWQxMzRiLTA1MmRjYWMzNjM4NTNiOC0yNjAxMTA1MS0xNDU0MDgwMC0xOWE1ZGNjNDcxZWYzMyIsIiRpZGVudGl0eV9sb2dpbl9pZCI6IjE0NzY4NDkzIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2214768493%22%7D%2C%22%24device_id%22%3A%2219a5dcc471d134b-052dcac363853b8-26011051-14540800-19a5dcc471ef33%22%7D; currentCurrency=USD; __cf_bm=d5utJxL3iD_YzZrYsaVGToGq1ho5vNoUBQxBcj84wAE-1765429537-1.0.1.1-ohkjT5elYCmZy_AhBKOEnWhpNuX1KtA9IGDTR9klXqLjlX75vLD.8NaSNgDPXHls422F6I7DDhP9TiLBeAGzmdeNLxlqCtkSfbEZW6cf.T4; _cfuvid=oINzbJqq18DXD3nYfw8WDzYlLQW_Emc2JoTaA9G_T3A-1765429537429-0.0.1.1-604800000; _ga_R8QWWJS24Y=GS2.1.s1765428734$o6$g1$t1765429603$j59$l0$h0; hasDelegation=false; delegationType=0; delegationTypeList=[]; _ga_7BWH3BJ925=GS2.1.s1765428735$o7$g1$t1765429604$j58$l0$h0; _ga_PJBF32MZ6E=GS2.1.s1765428735$o7$g1$t1765429604$j58$l0$h0; _gat_gtag_UA_116271308_6=1; _ga_0V649X1YZB=GS2.1.s1765428735$o6$g1$t1765429604$j58$l0$h0; _ga=GA1.2.1461651029.1762510272; _gat=1',
|
||||
}
|
||||
|
||||
params = {
|
||||
'status': '1',
|
||||
}
|
||||
|
||||
response = requests.get(
|
||||
'https://derivatives.bitmart.com/gw-api/contract-tiger/forward/v1/ifcontract/userPositions',
|
||||
params=params,
|
||||
cookies=cookies,
|
||||
headers=headers,
|
||||
)
|
||||
|
||||
print(response.json())
|
||||
timestamp = time.time()
|
||||
local_time = time.localtime(timestamp)
|
||||
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
|
||||
print(formatted_time)
|
||||
|
||||
129
交易/bitmart_交易.py
129
交易/bitmart_交易.py
@@ -1,5 +1,4 @@
|
||||
import time
|
||||
import asyncio
|
||||
import datetime
|
||||
|
||||
from tqdm import *
|
||||
@@ -7,7 +6,6 @@ from loguru import *
|
||||
from DrissionPage import *
|
||||
|
||||
from curl_cffi import requests
|
||||
from telethon import TelegramClient
|
||||
|
||||
from 交易.tools import send_dingtalk_message
|
||||
|
||||
@@ -42,34 +40,6 @@ class WeexTransaction:
|
||||
|
||||
self.session = requests.Session() # 接口请求对象
|
||||
|
||||
async def to_do_tg(self, message_content):
|
||||
# ========== 配置区 ==========
|
||||
API_ID = 2040 # 替换成你的 API ID
|
||||
API_HASH = "b18441a1ff607e10a989891a5462e627" # 替换成你的 API HASH
|
||||
SESSION_FILE = "../telegram/8619211027341" # 登录会话保存文件
|
||||
# ============================
|
||||
|
||||
PROXY = {
|
||||
'proxy_type': "socks5",
|
||||
'addr': "202.155.144.102",
|
||||
'port': 31102,
|
||||
'username': "SyNuejCtrQ",
|
||||
'password': "MH8ioL7EXf"
|
||||
}
|
||||
|
||||
try:
|
||||
client = TelegramClient(SESSION_FILE, API_ID, API_HASH, proxy=PROXY)
|
||||
await client.start() # 登录,如果第一次会要求输入手机号和验证码
|
||||
bot = await client.get_entity("ergggreef")
|
||||
await client.send_message(bot, message_content)
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
def send_dingtalk_message(self, message_content):
|
||||
result = asyncio.run(self.to_do_tg(message_content))
|
||||
return result
|
||||
|
||||
def openBrowser(self, ): # 直接指定ID打开窗口,也可以使用 createBrowser 方法返回的ID
|
||||
|
||||
try:
|
||||
@@ -179,7 +149,7 @@ class WeexTransaction:
|
||||
return datas
|
||||
|
||||
def to_do_page(self):
|
||||
self.mn_tab.ele('x:(//button[normalize-space(text()) = "市价"])').click()
|
||||
self.page.ele('x:(//button[normalize-space(text()) = "市价"])').click()
|
||||
time.sleep(1)
|
||||
|
||||
num = self.get_num()
|
||||
@@ -189,36 +159,44 @@ class WeexTransaction:
|
||||
logger.error("获取可用余额失败!!!")
|
||||
return
|
||||
|
||||
self.mn_tab.ele('x://*[@id="size_0"]').input(float(num) / 100)
|
||||
self.page.ele('x://*[@id="size_0"]').input(float(num) / 100)
|
||||
time.sleep(1)
|
||||
|
||||
if self.direction == "long" and not self.start:
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},开多")
|
||||
|
||||
self.mn_tab.ele('x://span[normalize-space(text()) = "买入/做多"]').click()
|
||||
self.send_dingtalk_message(f"信号:{self.direction},开多")
|
||||
|
||||
self.page.ele('x://span[normalize-space(text()) = "买入/做多"]').click()
|
||||
self.start = 1
|
||||
elif self.direction == "short" and not self.start:
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},开空")
|
||||
|
||||
self.mn_tab.ele('x://span[normalize-space(text()) = "卖出/做空"]').click()
|
||||
self.send_dingtalk_message(f"信号:{self.direction},开空")
|
||||
|
||||
self.page.ele('x://span[normalize-space(text()) = "卖出/做空"]').click()
|
||||
self.start = -1
|
||||
elif self.direction == "long" and self.start == -1:
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},反手平空做多")
|
||||
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
self.send_dingtalk_message(f"信号:{self.direction},反手平空做多")
|
||||
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
time.sleep(1)
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
time.sleep(3)
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "买入/做多"])').click()
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "买入/做多"])').click()
|
||||
self.start = 1
|
||||
elif self.direction == "short" and self.start == 1:
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},反手平多做空")
|
||||
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
self.send_dingtalk_message(f"信号:{self.direction},反手平多做空")
|
||||
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
time.sleep(1)
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
time.sleep(3)
|
||||
self.mn_tab.ele('x://span[normalize-space(text()) = "卖出/做空"]').click()
|
||||
self.page.ele('x://span[normalize-space(text()) = "卖出/做空"]').click()
|
||||
self.start = -1
|
||||
|
||||
def get_now_time(self):
|
||||
@@ -343,6 +321,19 @@ class WeexTransaction:
|
||||
|
||||
return False
|
||||
|
||||
def send_dingtalk_message(self, message_content, type=1):
|
||||
|
||||
if type:
|
||||
send_dingtalk_message(
|
||||
message_content=f"🔔bitmart:{self.get_now_time1()}" + message_content
|
||||
)
|
||||
|
||||
else:
|
||||
for i in range(15):
|
||||
send_dingtalk_message(
|
||||
message_content=f"❌🔔bitmart:{self.get_now_time1()}" + message_content
|
||||
)
|
||||
|
||||
def action(self):
|
||||
# 获取比特端口
|
||||
if self.openBrowser():
|
||||
@@ -363,10 +354,11 @@ class WeexTransaction:
|
||||
else:
|
||||
logger.info('关闭多余标签页失败!!!')
|
||||
|
||||
self.mn_tab = self.page.new_tab(url="https://derivatives.bitmart.com/zh-CN/futures/ETHUSDT") # 打开网页
|
||||
self.page.get(url="https://derivatives.bitmart.com/zh-CN/futures/ETHUSDT") # 打开网页
|
||||
|
||||
self.pbar = tqdm(total=30, desc="等待时间中", ncols=80) # desc:进度条说明,ncols:长度
|
||||
|
||||
self.time_start = None # 时间状态 避免同一个时段,发生太多消息
|
||||
while True:
|
||||
# 获取当前时间
|
||||
current_time = time.localtime()
|
||||
@@ -380,7 +372,7 @@ class WeexTransaction:
|
||||
self.pbar.refresh()
|
||||
|
||||
if current_minute not in [0, 1, 2, 3, 4, 5, 30, 31, 32, 33, 34]: # 判断是否是 新的30分钟了
|
||||
# if current_minute not in range(60): # 判断是否是 新的30分钟了
|
||||
# if current_minute not in range(60): # 判断是否是 新的30分钟了
|
||||
time.sleep(10)
|
||||
continue
|
||||
|
||||
@@ -388,7 +380,7 @@ class WeexTransaction:
|
||||
if not new_price_datas:
|
||||
logger.info("获取最新价格有问题!!!")
|
||||
|
||||
send_dingtalk_message(message_content=f"bitmart:{self.get_now_time()},获取最新价格有问题!!!")
|
||||
self.send_dingtalk_message(message_content=f"获取价格有问题!!!", type=0)
|
||||
continue
|
||||
|
||||
# 解析价格
|
||||
@@ -398,15 +390,19 @@ class WeexTransaction:
|
||||
# 判断抓取的数据是否正确
|
||||
if self.get_now_time() == int(self.kline_3["id"]):
|
||||
logger.success("获取最新交易价格成功!!!")
|
||||
send_dingtalk_message("获取最新交易价格成功!!!")
|
||||
else:
|
||||
continue
|
||||
|
||||
if self.time_start == self.get_now_time():
|
||||
continue
|
||||
|
||||
self.time_start = self.get_now_time()
|
||||
|
||||
if self.get_token(): # 获取token
|
||||
logger.info("获取token成功!!!")
|
||||
else:
|
||||
logger.info("获取token失败!!!")
|
||||
send_dingtalk_message(message_content=f"bitmart:{self.get_now_time()},获取token失败!!!")
|
||||
self.send_dingtalk_message(message_content=f"获取token失败!!!", type=0)
|
||||
continue
|
||||
|
||||
if self.get_position_status():
|
||||
@@ -414,25 +410,30 @@ class WeexTransaction:
|
||||
else:
|
||||
logger.info("获取仓位信息失败!!!")
|
||||
|
||||
send_dingtalk_message(message_content=f"bitmart:{self.get_now_time()},获取仓位信息失败!!!")
|
||||
self.send_dingtalk_message(message_content=f"获取仓位信息失败!!!", type=0)
|
||||
continue
|
||||
|
||||
if self.start == 1:
|
||||
if is_bearish(self.kline_1) and is_bearish(self.kline_2):
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},平多")
|
||||
try:
|
||||
if self.start == 1:
|
||||
if is_bearish(self.kline_1) and is_bearish(self.kline_2):
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},平多")
|
||||
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
time.sleep(1)
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
self.start = 0
|
||||
elif self.start == -1:
|
||||
if is_bullish(self.kline_1) and is_bullish(self.kline_2):
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},平空")
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
time.sleep(1)
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
self.start = 0
|
||||
elif self.start == -1:
|
||||
if is_bullish(self.kline_1) and is_bullish(self.kline_2):
|
||||
logger.success(f"{datetime.datetime.now()},第一根信号:{self.kline_1},{self.kline_2},平空")
|
||||
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
time.sleep(1)
|
||||
self.mn_tab.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
self.start = 0
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').scroll.to_see(center=True)
|
||||
time.sleep(1)
|
||||
self.page.ele('x:(//span[normalize-space(text()) = "市价"])').click()
|
||||
self.start = 0
|
||||
|
||||
except:
|
||||
self.send_dingtalk_message(message_content=f"止损平仓出错!!!", type=0)
|
||||
continue
|
||||
|
||||
self.direction, signal_key = self.check_signal(prev=self.kline_1, curr=self.kline_2) # 根据策略生成信号判断信号
|
||||
|
||||
@@ -440,13 +441,13 @@ class WeexTransaction:
|
||||
try:
|
||||
self.to_do_page()
|
||||
except Exception as e:
|
||||
send_dingtalk_message(
|
||||
message_content=f"bitmart:{self.get_now_time()},购买操作失败,{e}")
|
||||
self.send_dingtalk_message(message_content=f"购买操作失败,{e}", type=0)
|
||||
continue
|
||||
|
||||
self.pbar.reset() # 重置进度条
|
||||
send_dingtalk_message(
|
||||
self.send_dingtalk_message(
|
||||
message_content=
|
||||
f"bitmart:{datetime.datetime.now()},"
|
||||
f"{datetime.datetime.now()},"
|
||||
f"目前有持仓:{"无" if self.start == 0 else ("多" if self.start == 1 else "空")},"
|
||||
f"当前信号:{"无" if not self.direction else ("多" if self.direction == "long" else "空")}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user