From c4de17b7ec5246d402c99679d51b5f5b5c89b431 Mon Sep 17 00:00:00 2001 From: guoyz Date: Fri, 9 May 2025 22:42:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E6=9D=9F=E9=98=B6=E6=AE=B5=E5=81=9A?= =?UTF-8?q?=E8=A1=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EmailTest.py | 4 ++-- TurtleOnTime.py | 20 +++++++++++--------- __pycache__/EmailTest.cpython-310.pyc | Bin 0 -> 3864 bytes __pycache__/mysql_database.cpython-310.pyc | Bin 4969 -> 5026 bytes 4 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 __pycache__/EmailTest.cpython-310.pyc diff --git a/EmailTest.py b/EmailTest.py index f20c93c..f0239f4 100755 --- a/EmailTest.py +++ b/EmailTest.py @@ -83,7 +83,7 @@ def get_latest_email_body(to_email): print('ID #%d: "%s" received %s' % (msgid, subject, envelope.date)) print('Body:', body) - def parse_return_email(to_email, send_email_time): +def parse_return_email(to_email, send_email_time): """解析回信邮件body中的内容 根据"实际买入价格-买入份额-手续费" @@ -153,7 +153,7 @@ def get_latest_email_body(to_email): fee = body.split("-")[2] return parse_states, price, share, fee - def check_email(to_email, send_email_time): +def check_email(to_email, send_email_time): """检查回信邮件是否已经收到 """ mail = IMAPClient("imap.126.com") diff --git a/TurtleOnTime.py b/TurtleOnTime.py index bcd4cec..51e93fa 100644 --- a/TurtleOnTime.py +++ b/TurtleOnTime.py @@ -72,7 +72,7 @@ class TurtleTrading(object): self.Capital = Capital self.cash = cash self.TrigerTime = 0 - self.BuyStates = list[BuyState] = [] + self.BuyStates = list[BuyState] self.tradeslog = list[TradeLog] # 交易记录 @@ -638,10 +638,10 @@ class TurtleTrading_OnTime(object): # ------------------准备阶段-------------------- # 获取数据或读取数据 -- 计算ATR Donchian 20 50 up, 20 down self.turtle.get_ready(100) - self.turtle.N = self.turtle.CurrentData['ATR'].iloc[-1] - self.turtle.Donchian_20_up = self.turtle.CurrentData['Donchian_20_upper'].iloc[-1] - self.turtle.Donchian_50_up = self.turtle.CurrentData['Donchian_50_upper'].iloc[-1] - self.turtle.Donchian_10_down = self.turtle.CurrentData['Donchian_10_lower'].iloc[-1] + self.turtle.N = float(self.turtle.CurrentData['ATR'].iloc[-1]) + self.turtle.Donchian_20_up = float(self.turtle.CurrentData['Donchian_20_upper'].iloc[-1]) + self.turtle.Donchian_50_up = float(self.turtle.CurrentData['Donchian_50_upper'].iloc[-1]) + self.turtle.Donchian_10_down = float(self.turtle.CurrentData['Donchian_10_lower'].iloc[-1]) self.turtle.CalPositionSize() # ------------------实时监测阶段-------------------- # 9:00 1、判断是否是新的一周,是则重新计算Position Size @@ -653,16 +653,18 @@ class TurtleTrading_OnTime(object): self.run_short_trading_loop() # ------------------结束阶段-------------------- # 数据库更新当天数据,增加ATR、donchian数据 - pass + # 直接做个新表 + mysql_database.delete_table(f"{self.turtle.TradeCode}") + self.turtle.get_ready(100) time.sleep(16.5*600) if __name__ == '__main__': user_email = "guoyize2209@163.com" - t = TurtleTrading('513300', "etf", 0.25, 100000, 200000) + t = TurtleTrading('513300', "etf", 0.0025, 100000, 200000) # t.get_ready(100) - a = TurtleTrading_OnTime(t) - a.Start_S1_system() + a = TurtleTrading_OnTime(t, user_email) + a.Start_short_system() # # 全是股票 # stock_zh_a_spot_df = ak.stock_zh_a_spot_em() diff --git a/__pycache__/EmailTest.cpython-310.pyc b/__pycache__/EmailTest.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de27ca642fe50bd6f15e4c59569d0db31c0a0845 GIT binary patch literal 3864 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 Bu$%w@ delta 830 zcmZvZ%TE(g6vpS=d2~9RmOemGF+fQvW2Hd@s0$PyK}3T{H3ZSrN{5G*7H=<62_*gj z5>3v=hznt1q6rH_;-8?2dt)*hmnJN9Z-~)*risz$EPnZBzH`1g_nwXPc1O4p4qJ+R zb~2x4>{sE(4EpdndjrRCUTt9q^IH$pEM%|BiX~epH$gC=3Qg!mD6&<3MHyGhjhZ5i zd+ngC04Pf#5x{R+TeDfziu$VjvaCD{t}8jkF-AOXQA{6k0MF_zVBwse#wU9Eu*Zrw zJaBoF{7VhHrSi0?O1Yessv4DG&;${-3(WiMr_D^@Y1ECi@KN%aL_OnOTbssHfb%$P zew`qL_Yjg2o*^pv>g|#jn{h>c;Z|N|R|PN3l?87lKj7YVrxu0F1Ju$c;aGeRX@{_% zkRcqvN5QnwOR@tm)+O{#DUaj(U@vrH$SQ>V(i7x6c*jb{u1HxmBuubD13ri^t(iZn zPGWN?*^s9y+Jq_3X308@@u96;$Obrr*X_Q)8rJP`n8ojQ2F5TIe&?iRpMOj~K+2z9 z;}@j%jD-R(%vX7ejM~8cQZ8e6qz(FUwQe6)BAdN_!T>dx)2^7BEtE=rjGyZ0eipw( z8Gg_xsao2wln-&Pt{sMD+UIjQ`MwS06Py75&v5**v^=%smOWK&;NScX>L10|(N