持仓管理器
More...
#include <position_manager.hpp>
|
| | PositionManager () |
| | 默认构造函数
|
| |
| | PositionManager (IStore *store) |
| | 带存储接口的构造函数
|
| |
| | ~PositionManager ()=default |
| | 析构函数
|
| |
| | PositionManager (const PositionManager &)=delete |
| |
| PositionManager & | operator= (const PositionManager &)=delete |
| |
| std::optional< Position > | getPosition (const std::string &accountId, const std::string &instrumentId) const |
| | 获取持仓
|
| |
| std::vector< Position > | getPositionsByAccount (const std::string &accountId) const |
| | 获取账户所有持仓
|
| |
| std::vector< Position > | getAllPositions () const |
| | 获取所有持仓
|
| |
| bool | hasPosition (const std::string &accountId, const std::string &instrumentId) const |
| | 检查是否有持仓
|
| |
| size_t | size () const |
| | 获取持仓数量
|
| |
| void | openPosition (const std::string &accountId, const std::string &instrumentId, OrderSide side, int64_t volume, double price, double margin) |
| | 开仓
|
| |
| double | closePosition (const std::string &accountId, const std::string &instrumentId, OrderSide side, int64_t volume, double price, int volumeMultiple) |
| | 平仓
|
| |
| void | updateAllProfits (const MarketDataSnapshot &snapshot, int volumeMultiple) |
| | 更新指定合约所有持仓的浮动盈亏
|
| |
| double | updateProfit (const std::string &accountId, const std::string &instrumentId, double lastPrice, int volumeMultiple) |
| | 更新指定持仓的浮动盈亏
|
| |
| double | getTotalProfit (const std::string &accountId) const |
| | 获取账户总浮动盈亏
|
| |
| void | clear () |
| | 清空所有持仓
|
| |
持仓管理器
负责持仓的开仓、平仓、盈亏计算等操作。 支持与IStore接口集成进行数据持久化。
- 线程安全
- 所有公共方法都是线程安全的,使用互斥锁保护内部数据。
- 持仓计算
- 开仓:增加持仓量,计算新的持仓均价
- 平仓:减少持仓量,计算平仓盈亏
- 浮动盈亏:根据最新价实时计算
- 使用示例
持仓管理器
Definition position_manager.hpp:56
double closePosition(const std::string &accountId, const std::string &instrumentId, OrderSide side, int64_t volume, double price, int volumeMultiple)
平仓
Definition position_manager.cpp:143
void updateAllProfits(const MarketDataSnapshot &snapshot, int volumeMultiple)
更新指定合约所有持仓的浮动盈亏
Definition position_manager.cpp:219
void openPosition(const std::string &accountId, const std::string &instrumentId, OrderSide side, int64_t volume, double price, double margin)
开仓
Definition position_manager.cpp:94
合约行情快照
Definition market_data_snapshot.hpp:47
double lastPrice
最新价
Definition market_data_snapshot.hpp:56
◆ PositionManager() [1/3]
| fix40::PositionManager::PositionManager |
( |
| ) |
|
◆ PositionManager() [2/3]
| fix40::PositionManager::PositionManager |
( |
IStore * |
store | ) |
|
|
explicit |
带存储接口的构造函数
- Parameters
-
- Note
- 当 store 不为空时,会在构造阶段从存储中加载已存在的持仓, 用于服务端重启后的持仓状态恢复。
◆ ~PositionManager()
| fix40::PositionManager::~PositionManager |
( |
| ) |
|
|
default |
◆ PositionManager() [3/3]
◆ clear()
| void fix40::PositionManager::clear |
( |
| ) |
|
◆ closePosition()
| double fix40::PositionManager::closePosition |
( |
const std::string & |
accountId, |
|
|
const std::string & |
instrumentId, |
|
|
OrderSide |
side, |
|
|
int64_t |
volume, |
|
|
double |
price, |
|
|
int |
volumeMultiple |
|
) |
| |
平仓
减少持仓量,计算平仓盈亏。
- Parameters
-
| accountId | 账户ID |
| instrumentId | 合约代码 |
| side | 平仓方向(BUY=平空头,SELL=平多头) |
| volume | 平仓数量 |
| price | 平仓价格 |
| volumeMultiple | 合约乘数 |
- Returns
- 平仓盈亏
- 盈亏计算
- 平多头:(平仓价 - 持仓均价) × 平仓量 × 合约乘数
- 平空头:(持仓均价 - 平仓价) × 平仓量 × 合约乘数
◆ getAllPositions()
| std::vector< Position > fix40::PositionManager::getAllPositions |
( |
| ) |
const |
◆ getPosition()
| std::optional< Position > fix40::PositionManager::getPosition |
( |
const std::string & |
accountId, |
|
|
const std::string & |
instrumentId |
|
) |
| const |
获取持仓
- Parameters
-
| accountId | 账户ID |
| instrumentId | 合约代码 |
- Returns
- 持仓信息,不存在时返回 std::nullopt
◆ getPositionsByAccount()
| std::vector< Position > fix40::PositionManager::getPositionsByAccount |
( |
const std::string & |
accountId | ) |
const |
获取账户所有持仓
- Parameters
-
- Returns
- 持仓列表
◆ getTotalProfit()
| double fix40::PositionManager::getTotalProfit |
( |
const std::string & |
accountId | ) |
const |
获取账户总浮动盈亏
- Parameters
-
- Returns
- 总浮动盈亏
◆ hasPosition()
| bool fix40::PositionManager::hasPosition |
( |
const std::string & |
accountId, |
|
|
const std::string & |
instrumentId |
|
) |
| const |
检查是否有持仓
- Parameters
-
| accountId | 账户ID |
| instrumentId | 合约代码 |
- Returns
- 有持仓返回 true
◆ openPosition()
| void fix40::PositionManager::openPosition |
( |
const std::string & |
accountId, |
|
|
const std::string & |
instrumentId, |
|
|
OrderSide |
side, |
|
|
int64_t |
volume, |
|
|
double |
price, |
|
|
double |
margin |
|
) |
| |
开仓
增加持仓量,计算新的持仓均价。
- Parameters
-
| accountId | 账户ID |
| instrumentId | 合约代码 |
| side | 买卖方向(BUY=多头,SELL=空头) |
| volume | 开仓数量 |
| price | 开仓价格 |
| margin | 占用保证金 |
- 均价计算
- 新均价 = (原均价 × 原持仓 + 开仓价 × 开仓量) / (原持仓 + 开仓量)
◆ operator=()
◆ size()
| size_t fix40::PositionManager::size |
( |
| ) |
const |
◆ updateAllProfits()
| void fix40::PositionManager::updateAllProfits |
( |
const MarketDataSnapshot & |
snapshot, |
|
|
int |
volumeMultiple |
|
) |
| |
更新指定合约所有持仓的浮动盈亏
- Parameters
-
| snapshot | 行情快照 |
| volumeMultiple | 合约乘数 |
◆ updateProfit()
| double fix40::PositionManager::updateProfit |
( |
const std::string & |
accountId, |
|
|
const std::string & |
instrumentId, |
|
|
double |
lastPrice, |
|
|
int |
volumeMultiple |
|
) |
| |
更新指定持仓的浮动盈亏
- Parameters
-
| accountId | 账户ID |
| instrumentId | 合约代码 |
| lastPrice | 最新价 |
| volumeMultiple | 合约乘数 |
- Returns
- 更新后的总浮动盈亏
The documentation for this class was generated from the following files: