完善买卖功能
This commit is contained in:
parent
1994e91d72
commit
aa7d0b5e00
20
EmailTest.py
20
EmailTest.py
@ -105,7 +105,17 @@ def get_latest_email_body(to_email):
|
||||
# search_criteria = f'FROM "{encoded_email.decode("utf-8")}"'
|
||||
|
||||
# 执行搜索操作
|
||||
messages = mail.search(search_criteria)
|
||||
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']
|
||||
@ -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__":
|
||||
|
||||
|
@ -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
|
||||
@ -473,12 +502,12 @@ class TurtleTrading_OnTime(object):
|
||||
Net_return=abs(self.turtle.Capital - available_cash))
|
||||
self.turtle.tradeslog.append(sale_this_time)
|
||||
|
||||
def out_sale_stock(self, price_now):
|
||||
"""止盈卖出
|
||||
def out_sale_stock(self, price_now):
|
||||
"""止盈卖出
|
||||
|
||||
Args:
|
||||
price_now (_type_): 现价
|
||||
"""
|
||||
Args:
|
||||
price_now (_type_): 现价
|
||||
"""
|
||||
|
||||
# 发送邮件 代码self.turtle.TradeCode, 建议卖出价格price_now,卖出份额self.turtle.IntPositionSize
|
||||
subject = "止盈卖出"
|
||||
@ -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数据
|
||||
|
Loading…
x
Reference in New Issue
Block a user