完善买卖功能

This commit is contained in:
gyz 2025-05-08 19:28:36 +08:00
parent 1994e91d72
commit aa7d0b5e00
2 changed files with 81 additions and 26 deletions

View File

@ -105,8 +105,18 @@ def get_latest_email_body(to_email):
# search_criteria = f'FROM "{encoded_email.decode("utf-8")}"'
# 执行搜索操作
try:
messages = mail.search(search_criteria)
if messages:
print(f"Matching Emails: {messages}")
else:
print("No matching emails found.")
return False, None, None, None
except imaplib.IMAP4.error as e:
print(f"Error searching emails: {e}")
return False, None, None, None
for msgid, data in mail.fetch(messages, ['ENVELOPE', 'BODY[]']).items():
envelope = data[b'ENVELOPE']
raw_email = data[b'BODY[]']
@ -136,11 +146,17 @@ def get_latest_email_body(to_email):
)
# 根据“实际买入价格-买入份额-手续费”格式解析body中的内容
parse_states = True
body.split("-")
price = body.split("-")[0]
share = body.split("-")[1]
fee = body.split("-")[2]
return price, share, fee
return parse_states, price, share, fee
def check_email(to_email, send_email_time):
"""检查回信邮件是否已经收到
"""
mail = IMAPClient("imap.126.com")
if __name__ == "__main__":

View File

@ -353,10 +353,19 @@ class TurtleTrading_OnTime(object):
send_email(subject, body, self.user_email)
send_email_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
#todo 每隔1分钟检测回信解析邮件。
#每隔1分钟检测回信解析邮件。
buy_price, buy_share, fee = parse_return_email(self.user_email, send_email_time)
parsed_email_flag = False
datetime.time.sleep(60)
while parsed_email_flag:
parse_states, buy_price, buy_share, fee = parse_return_email(self.user_email, send_email_time)
if parse_states == True:
parsed_email_flag = True
break
else:
datetime.time.sleep(60)
# 成功买入
self.turtle.TrigerTime += 1
# 记录self.turtle.BuyStates
@ -396,9 +405,19 @@ class TurtleTrading_OnTime(object):
send_email(subject, body, self.user_email)
send_email_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
#todo 每隔1分钟检测回信解析邮件。
#每隔1分钟检测回信解析邮件。
buy_price, buy_share, fee = parse_return_email(self.user_email, send_email_time)
parsed_email_flag = False
datetime.time.sleep(60)
while parsed_email_flag:
parse_states, buy_price, buy_share, fee = parse_return_email(self.user_email, send_email_time)
if parse_states == True:
parsed_email_flag = True
break
else:
datetime.time.sleep(60)
# 成功买入
self.turtle.TrigerTime += 1
@ -450,9 +469,19 @@ class TurtleTrading_OnTime(object):
send_email(subject, body, self.user_email)
send_email_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# todo 每隔1分钟检测回信解析邮件。
# 每隔1分钟检测回信解析邮件。
parsed_email_flag = False
datetime.time.sleep(60)
while parsed_email_flag:
parse_states, sale_price, sale_share, fee = parse_return_email(self.user_email, send_email_time)
if parse_states == True:
parsed_email_flag = True
break
else:
datetime.time.sleep(60)
sale_price, sale_share, fee = parse_return_email(self.user_email, send_email_time)
# 成功卖出
self.turtle.TrigerTime = 0
@ -487,9 +516,19 @@ class TurtleTrading_OnTime(object):
send_email(subject, body, self.user_email)
send_email_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# todo 每隔1分钟检测回信解析邮件。
# 每隔1分钟检测回信解析邮件。
sale_price, sale_share, fee = parse_return_email(self.user_email, send_email_time)
parsed_email_flag = False
datetime.time.sleep(60)
while parsed_email_flag:
parse_states, sale_price, sale_share, fee = parse_return_email(self.user_email, send_email_time)
if parse_states == True:
parsed_email_flag = True
break
else:
datetime.time.sleep(60)
# 成功卖出
self.turtle.TrigerTime = 0
@ -542,11 +581,11 @@ class TurtleTrading_OnTime(object):
if self.turtle.system1EnterNormal(self.turtle.PriceNow, self.turtle.Donchian_20_up, self.turtle.BreakOutLog):
# 发出买入指令
self.Buy_stock(self.turtle.PriceNow)
pass
elif self.turtle.system1EnterSafe(self.turtle.PriceNow, self.turtle.Donchian_50_up):
# 发出买入指令
pass
self.Buy_stock(self.turtle.PriceNow)
# 已有仓位,加仓 / 止损 / 退出
elif 1<=self.turtle.TrigerTime <= 3:
@ -555,26 +594,26 @@ class TurtleTrading_OnTime(object):
# 继续突破
if self.turtle.system1EnterNormal(self.turtle.PriceNow, self.turtle.Donchian_20_up, self.turtle.BreakOutLog):
# 发出买入指令
pass
self.Buy_stock(self.turtle.PriceNow)
#
elif self.turtle.system1EnterSafe(self.turtle.PriceNow, self.turtle.Donchian_50_up):
# 发出买入指令
pass
self.Buy_stock(self.turtle.PriceNow)
# 触发加仓价格
elif self.turtle.add(self.turtle.PriceNow):
# 发出买入指令
pass
self.Buy_stock(self.turtle.PriceNow)
# ---------------------止损-------------------
elif self.turtle.system_1_stop(self.turtle.PriceNow):
# 发出卖出指令
pass
self.stop_sale_stock(self.turtle.PriceNow)
# ---------------------止盈退出---------------------
elif self.turtle.system_1_Out(self.turtle.PriceNow, self.turtle.Donchian_10_down):
# 发出卖出指令
pass
self.out_sale_stock(self.turtle.PriceNow)
# 满仓 止损 / 退出
elif self.turtle.TrigerTime == 4:
@ -582,12 +621,12 @@ class TurtleTrading_OnTime(object):
# ---------------------止损-------------------
if self.turtle.system_1_stop(self.turtle.PriceNow):
# 发出卖出指令
pass
self.stop_sale_stock(self.turtle.PriceNow)
# ---------------------止盈退出---------------------
elif self.turtle.system_1_Out(self.turtle.PriceNow, self.turtle.Donchian_10_down):
# 发出卖出指令
pass
self.out_sale_stock(self.turtle.PriceNow)
# ------------------结束阶段--------------------
# 数据库更新当天数据增加ATR、donchian数据