# 交易查询函数
# get_cash - 查询指定交易账户的资金信息
查询指定交易账户的资金信息, gm SDK 3.0.163 版本新增
原型:
get_cash(account_id=None)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account_id | str | 账户信息,默认返回默认账户, 如多个账户需指定 account_id |
返回值:
类型 | 说明 |
---|---|
dict | Cash 资金对象 |
示例:
cash = get_cash()
print(cash)
输出:
{'account_id': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'account_name': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'nav': 100049705.54665434, 'pnl': 49705.546654343605, 'fpnl': 5296.038990020825, 'frozen': 138363.60003433225, 'available': 99911315.9466925, 'cum_inout': 100000000.0, 'cum_trade': 6749993.987827301, 'cum_pnl': 44620.012207031454, 'cum_commission': 210.5045427023142, 'last_trade': 30450.0, 'last_commission': 1.5, 'last_inout': 100000000.0, 'created_at': datetime.datetime(2023, 12, 20, 15, 58, 22, 641250, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2024, 1, 23, 14, 53, 16, 670507, tzinfo=tzfile('PRC')), 'balance': 100048365.54669249, 'market_value': 1164370.039024353, 'enable_bail': 99911315.9466925, 'fpnl_diluted': 5296.038990020825, 'channel_id': '', 'currency': 0, 'order_frozen': 0.0, 'last_pnl': 0.0, 'change_reason': 0, 'change_event_id': '', 'market_value_long': 0.0, 'market_value_short': 0.0, 'used_bail': 0.0}
注意:
1. account_id不存在时,返回空字典。
2. 当策略关联一个交易账户时,account_id可不用填,当策略关联多个交易账户时,必须指定account_id,否则会报错。
3. get_cash和context.account().cash的区别,get_cash直接查询终端的最新数据,不需要像context.account().cash通过context对象更新。
# get_position - 查询指定交易账户的全部持仓信息
查询指定交易账户的全部持仓信息, gm SDK 3.0.163 版本新增
原型:
get_position(account_id=None)
参数:
参数名 | 类型 | 说明 |
---|---|---|
account_id | str | 账户信息,默认返回默认账户, 如多个账户需指定 account_id |
返回值:
类型 | 说明 |
---|---|
list[position] | Position 持仓对象列表 |
示例:
position = get_position()
print(position)
输出:
[{'account_id': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'symbol': 'DCE.m2405', 'side': 1, 'volume': 2, 'vwap': 3200.5, 'amount': 64010.0, 'price': 3072.0, 'fpnl': -2570.0, 'cost': 4480.700000000001, 'available': 2, 'last_price': 3045.0, 'last_volume': 1, 'created_at': datetime.datetime(2023, 12, 27, 10, 37, 54, 801075, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2024, 1, 23, 20, 0, 9, 133899, tzinfo=tzfile('PRC')), 'vwap_diluted': 3200.5, 'market_value': 61440.0, 'available_now': 2, 'vwap_open': 3200.5, 'fpnl_open': -2570.0, 'fpnl_diluted': -2570.0, 'account_name': '', 'channel_id': '', 'volume_today': 0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0, 'covered_flag': 0, 'properties': {}, 'credit_position_sellable_volume': 0}, {'account_id': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'symbol': 'SHSE.600000', 'side': 1, 'volume': 200, 'vwap': 6.57, 'amount': 1314.0000343322754, 'price': 6.71, 'fpnl': 27.99997329711914, 'cost': 1314.0000343322754, 'available': 200, 'last_price': 6.570000171661377, 'last_volume': 200, 'created_at': datetime.datetime(2023, 12, 27, 13, 38, 30, 195484, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2023, 12, 28, 8, 30, 0, 678, tzinfo=tzfile('PRC')), 'vwap_diluted': 6.57, 'market_value': 1342.0000076293945, 'available_now': 200, 'vwap_open': 6.57, 'fpnl_open': 27.99997329711914, 'fpnl_diluted': 27.99997329711914, 'account_name': '', 'channel_id': '', 'volume_today': 0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0, 'covered_flag': 0, 'properties': {}, 'credit_position_sellable_volume': 0}, {'account_id': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'symbol': 'CZCE.RM405', 'side': 1, 'volume': 1, 'vwap': 2717.0, 'amount': 27170.0, 'price': 2555.0, 'fpnl': -1620.0, 'cost': 2445.2999999999997, 'available': 1, 'last_price': 2717.0, 'last_volume': 1, 'created_at': datetime.datetime(2024, 1, 2, 14, 43, 56, 787534, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2024, 1, 2, 20, 0, 7, 245847, tzinfo=tzfile('PRC')), 'vwap_diluted': 2717.0, 'market_value': 25550.0, 'available_now': 1, 'vwap_open': 2717.0, 'fpnl_open': -1620.0, 'fpnl_diluted': -1620.0, 'account_name': '', 'channel_id': '', 'volume_today': 0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0, 'covered_flag': 0, 'properties': {}, 'credit_position_sellable_volume': 0}, {'account_id': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'symbol': 'GFEX.lc2405', 'side': 1, 'volume': 1, 'vwap': 106700.0, 'amount': 106700.0, 'price': 101600.0, 'fpnl': -5100.0, 'cost': 14938.000000000002, 'available': 1, 'last_price': 106700.0, 'last_volume': 1, 'created_at': datetime.datetime(2024, 1, 3, 9, 26, 18, 868588, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2024, 1, 4, 8, 30, 0, 1110, tzinfo=tzfile('PRC')), 'vwap_diluted': 106700.0, 'market_value': 101600.0, 'available_now': 1, 'vwap_open': 106700.0, 'fpnl_open': -5100.0, 'fpnl_diluted': -5100.0, 'account_name': '', 'channel_id': '', 'volume_today': 0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0, 'covered_flag': 0, 'properties': {}, 'credit_position_sellable_volume': 0}, {'account_id': '8bf2b0cb-9f0d-11ee-bd0b-00163e163353', 'symbol': 'CFFEX.IC2402', 'side': 1, 'volume': 1, 'vwap': 4799.4, 'amount': 959879.9999999999, 'price': 4890.2002, 'fpnl': 18160.039062500073, 'cost': 115185.59999999998, 'available': 1, 'last_price': 4799.4, 'last_volume': 1, 'created_at': datetime.datetime(2024, 1, 23, 14, 52, 55, 800533, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2024, 1, 24, 8, 30, 0, 1825, tzinfo=tzfile('PRC')), 'vwap_diluted': 4799.4, 'market_value': 978040.0390625, 'available_now': 1, 'vwap_open': 4799.4, 'fpnl_open': 18160.039062500073, 'fpnl_diluted': 18160.039062500073, 'account_name': '', 'channel_id': '', 'volume_today': 0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0, 'covered_flag': 0, 'properties': {}, 'credit_position_sellable_volume': 0}]
注意:
1. account_id不存在时,返回空列表。
2. 当策略关联一个交易账户时,account_id可不用填,当策略关联多个交易账户时,必须指定account_id,否则会报错。
3. get_position和context.account().positions()的区别,get_position直接查询终端的最新数据,不需要像context.account().positions()通过context对象更新。
# context.account().cash - 查询当前账户资金
原型:
context.account(account_id=None).cash
参数:
参数名 | 类型 | 说明 |
---|---|---|
account_id | str | 账户信息,默认返回默认账户, 如多个账户需指定 account_id |
返回值:
类型 | 说明 |
---|---|
dict[cash] | Cash 资金对象列表 |
示例-获取当前账户资金:
context.account().cash
输出:
{'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'nav': 1905248.2789094353, 'pnl': -94751.72109056474, 'fpnl': -94555.35135529494, 'frozen': 1963697.3526980684, 'available': 36106.277566661825, 'cum_inout': 2000000.0, 'cum_trade': 1963697.3526980684, 'cum_commission': 196.3697352698069, 'last_trade': 1536.1536610412597, 'last_commission': 0.153615366104126, 'created_at': datetime.datetime(2020, 9, 1, 8, 0, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 30, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'currency': 0, 'order_frozen': 0.0, 'balance': 0.0, 'market_value': 0.0, 'cum_pnl': 0.0, 'last_pnl': 0.0, 'last_inout': 0.0, 'change_reason': 0, 'change_event_id': ''}
# context.account().positions() - 查询当前账户全部持仓
原型:
context.account(account_id=None).positions()
参数:
参数名 | 类型 | 说明 |
---|---|---|
account_id | str | 账户信息,默认返回默认账户, 如多个账户需指定 account_id |
返回值:
类型 | 说明 |
---|---|
list[position] | Position 持仓对象列表 |
注意: 没有持仓时,返回空列表
示例-获取当前持仓:
# 所有持仓
Account_positions = context.account().positions()
输出:
# 所有持仓输出
[{'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'symbol': 'SHSE.600419', 'side': 1, 'volume': 2200, 'volume_today': 100, 'vwap': 16.43391600830338, 'amount': 36154.61521826744, 'fpnl': -2362.6138754940007, 'cost': 36154.61521826744, 'available': 2200, 'available_today': 100, 'created_at': datetime.datetime(2020, 9, 1, 9, 40, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 30, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'vwap_diluted': 0.0, 'price': 0.0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_now': 0, 'market_value': 0.0, 'last_price': 0.0, 'last_volume': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0}, {'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'symbol': 'SHSE.600519', 'side': 1, 'volume': 1100, 'vwap': 1752.575242219682, 'amount': 1927832.7664416502, 'fpnl': -110302.84700805641, 'cost': 1927832.7664416502, 'available': 1100, 'created_at': datetime.datetime(2020, 9, 1, 9, 40, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 15, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'volume_today': 0, 'vwap_diluted': 0.0, 'price': 0.0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'available_now': 0, 'market_value': 0.0, 'last_price': 0.0, 'last_volume': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0}]
# context.account().position(symbol, side) - 查询当前账户指定持仓
参数:
参数名 | 类型 | 说明 |
---|---|---|
symbol | str | 标的代码 |
side | int | 持仓方向,取值参考PositionSide 持仓方向 |
返回值:
类型 | 说明 |
---|---|
dict[position] | Position 持仓对象列表 |
注意: 当指定标的没有持仓时,返回 None 示例-获取当前持仓:
# 指定持仓
Account_position = context.account().position(symbol='SHSE.600519',side = PositionSide_Long)
输出:
# 指定持仓输出
{'account_id': 'd7443a53-f65b-11ea-bb9d-484d7eaefe55', 'symbol': 'SHSE.600519', 'side': 1, 'volume': 1100, 'vwap': 1752.575242219682, 'amount': 1927832.7664416502, 'fpnl': -110302.84700805641, 'cost': 1927832.7664416502, 'available': 1100, 'created_at': datetime.datetime(2020, 9, 1, 9, 40, tzinfo=tzfile('PRC')), 'updated_at': datetime.datetime(2020, 9, 15, 9, 40, tzinfo=tzfile('PRC')), 'account_name': '', 'volume_today': 0, 'vwap_diluted': 0.0, 'price': 0.0, 'order_frozen': 0, 'order_frozen_today': 0, 'available_today': 0, 'available_now': 0, 'market_value': 0.0, 'last_price': 0.0, 'last_volume': 0, 'last_inout': 0, 'change_reason': 0, 'change_event_id': '', 'has_dividend': 0}