From de6953c0d7cda036a5ffc183111f1dade41675cf Mon Sep 17 00:00:00 2001 From: binz <123@123.com> Date: Sun, 26 May 2024 22:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9D=A0=E6=9D=86=E4=B8=8B?= =?UTF-8?q?=E6=B6=A8=E5=81=9C=E5=A4=84=E7=90=86=E5=92=8C=E6=8D=A2=E4=BB=93?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- trader.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/trader.py b/trader.py index 784bba4..f2cfcd6 100644 --- a/trader.py +++ b/trader.py @@ -368,7 +368,7 @@ class Trader(Account): continue else: sell_list.append(stock) - if len(sell_list) >= int(max_trade_num * margin_ratio) + 1: + if len(sell_list) >= int(max_sell_num * margin_ratio) + 1: break next_margin_list = list(set(last_margin_list) - set(sell_list)) # 更新非融资融券池 @@ -384,27 +384,31 @@ class Trader(Account): continue else: sell_list.append(stock) - if len(sell_list) >= max_trade_num: + if len(sell_list) >= max_sell_num: break next_normal_list = list(set(last_normal_list) - set(sell_list)) # ----- 买入 ----- # 卖出后持仓列表 after_sell_list = set(last_position.index) - set(sell_list) - max_trade_num = min(max_trade_num, self.num-len(last_position)+len(sell_list)) + cant_buy_list = [] # 涨停股记录 # 融资融券池的和非融资融券池的分开更新 # 更新融资融券池 for stock in margin_list: if stock in after_sell_list: continue else: + if stock_status.loc[stock] in [4,6]: + cant_buy_list.append(stock) next_margin_list.append(stock) - if len(next_margin_list) == margin_needed: + if len(next_margin_list) >= margin_needed: break # 更新非融资融券池 for stock in normal_list: if stock in after_sell_list: continue else: + if stock_status.loc[stock] in [4,6]: + cant_buy_list.append(stock) next_normal_list.append(stock) if len(next_normal_list) >= self.num - margin_needed: break @@ -417,6 +421,8 @@ class Trader(Account): next_position = next_position.set_index(['stock_code']) next_position.loc[next_margin_list, 'margin_trade'] = 1 next_position = next_position.reset_index() + # 剔除无法买入的涨停股,这部分仓位空出 + next_position = next_position[~next_position['stock_code'].isin(cant_buy_list)] # 检测当前持仓是否可以交易 frozen_list = [] if len(self.position) > 0: