This commit is contained in:
lz_db
2025-11-29 23:45:55 +08:00
parent efd59755d8
commit 0795f47168
4 changed files with 33 additions and 35 deletions

View File

@@ -1,4 +1,4 @@
Metadata-Version: 2.4
Metadata-Version: 2.1
Name: ccxt
Version: 4.5.18
Summary: A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go
@@ -32,34 +32,9 @@ Classifier: Programming Language :: PHP
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: setuptools>=60.9.0
Requires-Dist: certifi>=2018.1.18
Requires-Dist: requests>=2.18.4
Requires-Dist: cryptography>=2.6.1
Requires-Dist: typing_extensions>=4.4.0
Requires-Dist: aiohttp>=3.10.11; python_version >= "3.5.2"
Requires-Dist: aiodns>=1.1.1; python_version >= "3.5.2"
Requires-Dist: yarl>=1.7.2; python_version >= "3.5.2"
Requires-Dist: coincurve==21.0.0; python_version >= "3.9" and python_version <= "3.13"
Provides-Extra: qa
Requires-Dist: ruff==0.0.292; extra == "qa"
Requires-Dist: tox>=4.8.0; extra == "qa"
Provides-Extra: type
Requires-Dist: mypy==1.6.1; extra == "type"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary
License-File: LICENSE.txt
# CCXT CryptoCurrency eXchange Trading Library

View File

@@ -19,6 +19,7 @@ from ccxt.base.errors import ExchangeNotAvailable
from ccxt.base.errors import InvalidNonce
from ccxt.base.decimal_to_precision import TICK_SIZE
from ccxt.base.precise import Precise
from datetime import datetime, timedelta
class mt5(Exchange, ImplicitAPI):
@@ -713,23 +714,31 @@ class mt5(Exchange, ImplicitAPI):
"""异步获取已平仓订单 - 修复版本"""
if not hasattr(self, 'token') or not self.token:
await self.get_token()
yesterday = datetime.now() - timedelta(days=3)
from_day = yesterday.strftime('%Y-%m-%d') + 'T00:00:00'
tomorrow = datetime.now() + timedelta(days=1)
to_day = tomorrow.strftime('%Y-%m-%d') + 'T00:00:00'
request = {
'id': self.token,
'from': from_day,
'to': to_day,
'sort': 'OpenTime',
'ascending': 'true',
}
response = await self.private_get_closedorders(self.extend(request, params))
response = await self.private_get_orderhistory(self.extend(request, params))
data = self.safe_list(response, 'orders')
# 如果指定了特定交易对,进行过滤
if symbol is not None:
market = self.market(symbol)
filtered_orders = []
for order in response:
for order in data:
if isinstance(order, dict) and order.get('symbol') == market['id']:
filtered_orders.append(order)
return self.parse_orders(filtered_orders, market, since, limit)
else:
return self.parse_orders(response, None, since, limit)
return self.parse_orders(data, None, since, limit)
def parse_order(self, order, market=None):
"""解析订单信息 - 修复市场符号问题"""

View File

@@ -24,6 +24,7 @@ from ccxt.base.errors import InvalidNonce
from ccxt.base.errors import RequestTimeout
from ccxt.base.decimal_to_precision import TICK_SIZE
from ccxt.base.precise import Precise
from datetime import datetime, timedelta
class mt5(Exchange, ImplicitAPI):
@@ -730,11 +731,20 @@ class mt5(Exchange, ImplicitAPI):
def fetch_closed_orders(self, symbol=None, since=None, limit=None, params={}):
"""获取已平仓订单"""
self.load_token()
yesterday = datetime.now() - timedelta(days=3)
from_day = yesterday.strftime('%Y-%m-%d') + 'T00:00:00'
tomorrow = datetime.now() + timedelta(days=1)
to_day = tomorrow.strftime('%Y-%m-%d') + 'T00:00:00'
request = {
'id': self.token,
'from': from_day,
'to': to_day,
'sort': 'OpenTime',
'ascending': 'true',
}
response = self.private_get_closedorders(self.extend(request, params))
response = self.private_get_orderhistory(self.extend(request, params))
data = self.safe_list(response, 'orders')
if symbol is not None:
market = self.market(symbol)

View File

@@ -79,8 +79,8 @@ async def quick_order_test():
# balance = await exchange.fetch_balance()
# logger.info(f"✅ 连接成功,余额: {balance}")
positions = await exchange.fetch_positions()
logger.info(f"✅ 连接成功,信息: {positions}")
# positions = await exchange.fetch_positions()
# logger.info(f"✅ 连接成功,信息: {positions}")
# 获取市场信息
# markets = await exchange.fetch_markets()
@@ -98,6 +98,10 @@ async def quick_order_test():
# open_orders = await exchange.fetch_open_orders()
# logger.info(f"✅ 当前开单数量: {len(open_orders)}")
# 获取订单
closed_orders = await exchange.fetch_closed_orders()
logger.info(f"✅ 当前订单: {closed_orders}")
# for order in open_orders:
# logger.info(f" 订单 {order['id']}: {order['symbol']} {order['side']} {order['type']} {order['status']}")