Skip to content

Commit 89c9934

Browse files
committed
Merge branch 'feature_analytics_asset' into 'dev'
Feature analytics asset See merge request server/openapi/openapi-python-sdk!120
2 parents bfb52b3 + cafb4b9 commit 89c9934

File tree

6 files changed

+178
-2
lines changed

6 files changed

+178
-2
lines changed

tigeropen/common/consts/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ class SecurityType(Enum):
4949
CASH = 'CASH' # 外汇
5050

5151

52+
@unique
53+
class SegmentType(Enum):
54+
SEC = 'SEC'
55+
FUT = 'FUT'
56+
57+
5258
@unique
5359
class Currency(Enum):
5460
"""Enum for currency """

tigeropen/common/consts/service_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
INACTIVE_ORDERS = "inactive_orders" # 已撤销订单
2424
FILLED_ORDERS = "filled_orders" # 已成交订单
2525
ORDER_TRANSACTIONS = "order_transactions" # 订单成交记录
26+
ANALYTICS_ASSET = "analytics_asset"
2627

2728
"""
2829
合约

tigeropen/examples/trade_client_demo.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def get_account_apis():
6363
# 综合/模拟账户获取资产
6464
openapi_client.get_prime_assets()
6565

66+
# get asset history
67+
openapi_client.get_analytics_asset(start_date='2021-12-01', end_date='2021-12-07')
68+
6669

6770
def trade_apis():
6871
account = client_config.account

tigeropen/trade/request/model.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,3 +895,107 @@ def to_openapi_dict(self):
895895
params['id'] = self.id
896896

897897
return params
898+
899+
900+
class AnalyticsAssetParams(BaseParams):
901+
def __init__(self):
902+
super().__init__()
903+
self._account = None
904+
self._sub_account = None
905+
self._secret_key = None
906+
self._seg_type = None
907+
self._currency = None
908+
self._sub_accounts = None
909+
self._start_date = None
910+
self._end_date = None
911+
912+
@property
913+
def account(self):
914+
return self._account
915+
916+
@account.setter
917+
def account(self, value):
918+
self._account = value
919+
920+
@property
921+
def sub_account(self):
922+
return self._sub_account
923+
924+
@sub_account.setter
925+
def sub_account(self, value):
926+
self._sub_account = value
927+
928+
@property
929+
def secret_key(self):
930+
return self._secret_key
931+
932+
@secret_key.setter
933+
def secret_key(self, value):
934+
self._secret_key = value
935+
936+
@property
937+
def seg_type(self):
938+
return self._seg_type
939+
940+
@seg_type.setter
941+
def seg_type(self, value):
942+
self._seg_type = value
943+
944+
@property
945+
def currency(self):
946+
return self._currency
947+
948+
@currency.setter
949+
def currency(self, value):
950+
self._currency = value
951+
952+
@property
953+
def sub_accounts(self):
954+
return self._sub_accounts
955+
956+
@sub_accounts.setter
957+
def sub_accounts(self, value):
958+
self._sub_accounts = value
959+
960+
@property
961+
def start_date(self):
962+
return self._start_date
963+
964+
@start_date.setter
965+
def start_date(self, value):
966+
self._start_date = value
967+
968+
@property
969+
def end_date(self):
970+
return self._end_date
971+
972+
@end_date.setter
973+
def end_date(self, value):
974+
self._end_date = value
975+
976+
def to_openapi_dict(self):
977+
params = dict()
978+
if self.account:
979+
params['account'] = self.account
980+
981+
if self.sub_account:
982+
params['sub_account'] = self.sub_account
983+
984+
if self.secret_key:
985+
params['secret_key'] = self.secret_key
986+
987+
if self.seg_type:
988+
params['seg_type'] = self.seg_type
989+
990+
if self.currency:
991+
params['currency'] = self.currency
992+
993+
if self.sub_accounts:
994+
params['sub_accounts'] = self.sub_accounts
995+
996+
if self.start_date:
997+
params['start_date'] = self.start_date
998+
999+
if self.end_date:
1000+
params['end_date'] = self.end_date
1001+
return params
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# -*- coding: utf-8 -*-
2+
#
3+
# @Date : 2022/7/8
4+
# @Author : sukai
5+
import json
6+
from datetime import datetime
7+
8+
from tigeropen.common.response import TigerResponse
9+
from tigeropen.common.util.string_utils import camel_to_underline_obj
10+
11+
12+
class AnalyticsAssetResponse(TigerResponse):
13+
def __init__(self):
14+
super().__init__()
15+
self.result = None
16+
self._is_success = None
17+
18+
def parse_response_content(self, response_content):
19+
response = super().parse_response_content(response_content)
20+
if 'is_success' in response:
21+
self._is_success = response['is_success']
22+
23+
if self.data:
24+
result = camel_to_underline_obj(self.data)
25+
history = result.get('history')
26+
if history:
27+
for item in history:
28+
item['dt'] = datetime.fromtimestamp(item['date'] // 1000).strftime('%Y-%m-%d')
29+
result['history'] = history
30+
self.result = result

tigeropen/trade/trade_client.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@
99
from tigeropen.common.consts import THREAD_LOCAL, SecurityType, Market, Currency
1010
from tigeropen.common.consts.service_types import CONTRACTS, ACCOUNTS, POSITIONS, ASSETS, ORDERS, ORDER_NO, \
1111
CANCEL_ORDER, MODIFY_ORDER, PLACE_ORDER, ACTIVE_ORDERS, INACTIVE_ORDERS, FILLED_ORDERS, CONTRACT, PREVIEW_ORDER, \
12-
PRIME_ASSETS, ORDER_TRANSACTIONS, QUOTE_CONTRACT
12+
PRIME_ASSETS, ORDER_TRANSACTIONS, QUOTE_CONTRACT, ANALYTICS_ASSET
1313
from tigeropen.common.exceptions import ApiException
1414
from tigeropen.common.util.common_utils import get_enum_value
1515
from tigeropen.common.request import OpenApiRequest
1616
from tigeropen.tiger_open_client import TigerOpenClient
1717
from tigeropen.trade.domain.order import Order
1818
from tigeropen.trade.request.model import ContractParams, AccountsParams, AssetParams, PositionParams, OrdersParams, \
19-
OrderParams, PlaceModifyOrderParams, CancelOrderParams, TransactionsParams
19+
OrderParams, PlaceModifyOrderParams, CancelOrderParams, TransactionsParams, AnalyticsAssetParams
2020
from tigeropen.trade.response.account_profile_response import ProfilesResponse
21+
from tigeropen.trade.response.analytics_asset_response import AnalyticsAssetResponse
2122
from tigeropen.trade.response.assets_response import AssetsResponse
2223
from tigeropen.trade.response.contracts_response import ContractsResponse
2324
from tigeropen.trade.response.order_id_response import OrderIdResponse
@@ -662,6 +663,37 @@ def get_transactions(self, account=None, order_id=None, symbol=None, sec_type=No
662663
raise ApiException(response.code, response.message)
663664
return None
664665

666+
def get_analytics_asset(self, account=None, start_date=None, end_date=None, seg_type=None, currency=None,
667+
sub_account=None):
668+
"""
669+
get analytics of history asset
670+
:param account:
671+
:param start_date:
672+
:param end_date:
673+
:param seg_type: tigeropen.common.consts.SegmentType, like SegmentType.SEC
674+
:param currency: tigeropen.common.consts.Currency, like Currency.USD
675+
:param sub_account: sub account of institution account
676+
:return:
677+
"""
678+
params = AnalyticsAssetParams()
679+
params.account = account if account else self._account
680+
params.secret_key = self._secret_key
681+
params.seg_type = get_enum_value(seg_type)
682+
params.start_date = start_date
683+
params.end_date = end_date
684+
params.currency = get_enum_value(currency)
685+
params.sub_account = sub_account
686+
request = OpenApiRequest(ANALYTICS_ASSET, biz_model=params)
687+
response_content = self.__fetch_data(request)
688+
if response_content:
689+
response = AnalyticsAssetResponse()
690+
response.parse_response_content(response_content)
691+
if response.is_success():
692+
return response.result
693+
else:
694+
raise ApiException(response.code, response.message)
695+
return None
696+
665697
def __fetch_data(self, request):
666698
try:
667699
response = super(TradeClient, self).execute(request)

0 commit comments

Comments
 (0)