优化杠杆下涨停处理和换仓逻辑 (#1)
This commit is contained in:
parent
767ee1c503
commit
de6953c0d7
14
trader.py
14
trader.py
|
@ -368,7 +368,7 @@ class Trader(Account):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
sell_list.append(stock)
|
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
|
break
|
||||||
next_margin_list = list(set(last_margin_list) - set(sell_list))
|
next_margin_list = list(set(last_margin_list) - set(sell_list))
|
||||||
# 更新非融资融券池
|
# 更新非融资融券池
|
||||||
|
@ -384,27 +384,31 @@ class Trader(Account):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
sell_list.append(stock)
|
sell_list.append(stock)
|
||||||
if len(sell_list) >= max_trade_num:
|
if len(sell_list) >= max_sell_num:
|
||||||
break
|
break
|
||||||
next_normal_list = list(set(last_normal_list) - set(sell_list))
|
next_normal_list = list(set(last_normal_list) - set(sell_list))
|
||||||
# ----- 买入 -----
|
# ----- 买入 -----
|
||||||
# 卖出后持仓列表
|
# 卖出后持仓列表
|
||||||
after_sell_list = set(last_position.index) - 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:
|
for stock in margin_list:
|
||||||
if stock in after_sell_list:
|
if stock in after_sell_list:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
if stock_status.loc[stock] in [4,6]:
|
||||||
|
cant_buy_list.append(stock)
|
||||||
next_margin_list.append(stock)
|
next_margin_list.append(stock)
|
||||||
if len(next_margin_list) == margin_needed:
|
if len(next_margin_list) >= margin_needed:
|
||||||
break
|
break
|
||||||
# 更新非融资融券池
|
# 更新非融资融券池
|
||||||
for stock in normal_list:
|
for stock in normal_list:
|
||||||
if stock in after_sell_list:
|
if stock in after_sell_list:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
|
if stock_status.loc[stock] in [4,6]:
|
||||||
|
cant_buy_list.append(stock)
|
||||||
next_normal_list.append(stock)
|
next_normal_list.append(stock)
|
||||||
if len(next_normal_list) >= self.num - margin_needed:
|
if len(next_normal_list) >= self.num - margin_needed:
|
||||||
break
|
break
|
||||||
|
@ -417,6 +421,8 @@ class Trader(Account):
|
||||||
next_position = next_position.set_index(['stock_code'])
|
next_position = next_position.set_index(['stock_code'])
|
||||||
next_position.loc[next_margin_list, 'margin_trade'] = 1
|
next_position.loc[next_margin_list, 'margin_trade'] = 1
|
||||||
next_position = next_position.reset_index()
|
next_position = next_position.reset_index()
|
||||||
|
# 剔除无法买入的涨停股,这部分仓位空出
|
||||||
|
next_position = next_position[~next_position['stock_code'].isin(cant_buy_list)]
|
||||||
# 检测当前持仓是否可以交易
|
# 检测当前持仓是否可以交易
|
||||||
frozen_list = []
|
frozen_list = []
|
||||||
if len(self.position) > 0:
|
if len(self.position) > 0:
|
||||||
|
|
Loading…
Reference in New Issue