1
This commit is contained in:
@@ -562,7 +562,7 @@ class mt5(Exchange, ImplicitAPI):
|
||||
|
||||
return tickers
|
||||
|
||||
async def fetch_positions(self, symbol=None, since=None, limit=None, params={}):
|
||||
async def fetch_positions(self, symbol: Strings = None, params={}):
|
||||
"""异步获取持仓信息"""
|
||||
if not hasattr(self, 'token') or not self.token:
|
||||
await self.get_token()
|
||||
@@ -570,37 +570,36 @@ class mt5(Exchange, ImplicitAPI):
|
||||
request = {
|
||||
'id': self.token,
|
||||
}
|
||||
await self.load_markets()
|
||||
|
||||
symbol = self.market_symbols(symbol)
|
||||
# print(symbol)
|
||||
response = await self.private_get_openedorders(self.extend(request, params))
|
||||
|
||||
data = []
|
||||
for item in response:
|
||||
state = self.safe_string(item, 'state', "")
|
||||
lots = self.safe_number(item, 'lots', 0)
|
||||
close_lots = self.safe_number(item, 'closeLots', 0)
|
||||
if state == "Filled" or lots <= close_lots:
|
||||
data.append(item)
|
||||
# 使用基类的 parse_positions 方法,让 parse_position 自己判断是否为有效持仓
|
||||
result = self.parse_positions(response, [symbol] if symbol else None, params)
|
||||
result = self.parse_positions(data, symbol)
|
||||
|
||||
# 过滤掉 None 值(无效持仓)
|
||||
result = [position for position in result if position is not None]
|
||||
|
||||
# 应用限制
|
||||
if limit is not None:
|
||||
result = result[:limit]
|
||||
|
||||
return result
|
||||
|
||||
def parse_position(self, position, market: Market = None):
|
||||
"""解析持仓信息 - 根据真实数据调整"""
|
||||
# 获取市场信息
|
||||
id = self.safe_string(position, 'ticket')
|
||||
market_id = self.safe_string(position, 'symbol')
|
||||
# 获取市场信息
|
||||
symbol = self.safe_symbol(market_id, market, '/')
|
||||
|
||||
# 检查是否为有效持仓
|
||||
state = self.safe_string(position, 'state')
|
||||
lots = self.safe_number(position, 'lots', 0)
|
||||
close_lots = self.safe_number(position, 'closeLots', 0)
|
||||
|
||||
# 只有状态为已成交且有未平仓数量的才是有效持仓
|
||||
# 根据你的业务逻辑调整这个判断条件
|
||||
if state != 'Filled' or lots <= close_lots:
|
||||
return None
|
||||
|
||||
# 解析时间戳
|
||||
timestamp = self.parse8601(self.safe_string(position, 'openTime'))
|
||||
open_timestamp_utc = self.safe_integer(position, 'openTimestampUTC')
|
||||
|
||||
Reference in New Issue
Block a user