这部分的代码是这样的:
# 这部分的代码是这样的:
s = [股票池]有N只股票
for i in range(len(s)):
#### 若当前有持仓,但是持仓数量小于最大持仓;
if 0 < len(position_codes) < max_pos_n:
for j in range(len(pos_dicts)):
stock_codes = pos_dicts[j]["股票代码"]
holdings_v = pos_dicts[j]["持仓量"]
holdings_p = pos_dicts[j]["成本价"]
last_price = pos_dicts[j]["最新价"]
holdings_u = pos_dicts[j]['可用数量']
#### 设置跌停价
down_stop_price = C.get_instrumentdetail(pos_dicts[j]["股票代码"])["DownStopPrice"]
###########print(stock_codes)
if pos_dicts[j]["股票代码"] in s: ###### 当前持仓代码在当前股票池中;判断是否平仓
### 判断止损
if pos_dicts[j]["成本价"] * (1 - C.stop_loss_ratio) >= pos_dicts[j]["最新价"]:
if mp[pos_dicts[j]["股票代码"]] == 1:
if pos_dicts[j]['可用数量'] > 0:
passorder(24, 1101, C.accID, pos_dicts[j]["股票代码"], 5, -1, pos_dicts[j]['可用数量'], 2, C)
mp[pos_dicts[j]["股票代码"]] = 0
total_value = sum(mp.values())
##### print("mp字典对应股票代码值:",mp[stock_codes],"卖出股票代码:",stock_codes)
print("持仓未满,止损时间", timetag_to_datetime(a[-1]["Time"], '%Y%m%d %H:%M:%S'), "标的:",
pos_dicts[j]["股票代码"], total_value)
##### print(mp)
C.draw_text(1, 1, '止损')
# 这是获取pos_dicts的函数
######### 获取持仓函数
def get_position(C):
position_info = get_trade_detail_data(C.accID, "stock", 'position')
def position_to_dict(pos):
pos_dict = {'股票代码': pos.m_strInstrumentID + '.' + pos.m_strExchangeID,
'持仓量': pos.m_nVolume, '可用数量': pos.m_nCanUseVolume,
'持仓市值': pos.m_dMarketValue, '持仓成本': pos.m_dPositionCost,
'持仓盈亏': pos.m_dPositionProfit, '浮动盈亏': pos.m_dFloatProfit,
'成本价': pos.m_dOpenPrice, "最新价": pos.m_dLastPrice}
return pos_dict
pos_dicts = [position_to_dict(pos) for pos in position_info]
return pos_dicts
望不吝赐教 |