FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
fix40::InstrumentManager Class Reference

合约信息管理器 More...

#include <instrument_manager.hpp>

Collaboration diagram for fix40::InstrumentManager:
Collaboration graph

Public Member Functions

 InstrumentManager ()=default
 默认构造函数
 
 ~InstrumentManager ()=default
 析构函数
 
 InstrumentManager (const InstrumentManager &)=delete
 
InstrumentManageroperator= (const InstrumentManager &)=delete
 
bool loadFromConfig (const std::string &configPath)
 从配置文件加载合约信息
 
void addInstrument (const Instrument &instrument)
 添加单个合约
 
void addInstruments (const std::vector< Instrument > &instruments)
 批量添加合约
 
const InstrumentgetInstrument (const std::string &instrumentId) const
 获取合约信息
 
std::optional< InstrumentgetInstrumentCopy (const std::string &instrumentId) const
 获取合约信息(可选类型)
 
bool hasInstrument (const std::string &instrumentId) const
 检查合约是否存在
 
std::vector< std::string > getAllInstrumentIds () const
 获取所有合约代码
 
size_t size () const
 获取合约数量
 
std::vector< std::string > searchByPrefix (const std::string &prefix, size_t limit=10) const
 按前缀搜索合约
 
std::vector< std::string > getInstrumentsByProduct (const std::string &productId) const
 按品种获取所有合约
 
std::vector< std::string > getInstrumentsByExchange (const std::string &exchangeId) const
 按交易所获取所有合约
 
bool updateLimitPrices (const std::string &instrumentId, double upperLimit, double lowerLimit)
 更新涨跌停价格
 
bool updatePreSettlementPrice (const std::string &instrumentId, double preSettlementPrice)
 更新昨结算价
 
void clear ()
 清空所有合约
 

Detailed Description

合约信息管理器

负责合约信息的加载、查询和更新操作。 系统启动时从配置文件加载合约静态信息,运行时从行情更新涨跌停价格。

线程安全
所有公共方法都是线程安全的,使用互斥锁保护内部数据。
使用示例
// 从配置文件加载合约
mgr.loadFromConfig("config/instruments.json");
// 查询合约信息
const Instrument* inst = mgr.getInstrument("IF2601");
if (inst) {
double margin = inst->calculateMargin(4000.0, 2);
}
// 从行情更新涨跌停价格
mgr.updateLimitPrices("IF2601", 4400.0, 3600.0);
合约信息管理器
Definition instrument_manager.hpp:47
bool updateLimitPrices(const std::string &instrumentId, double upperLimit, double lowerLimit)
更新涨跌停价格
Definition instrument_manager.cpp:303
const Instrument * getInstrument(const std::string &instrumentId) const
获取合约信息
Definition instrument_manager.cpp:265
bool loadFromConfig(const std::string &configPath)
从配置文件加载合约信息
Definition instrument_manager.cpp:176
合约静态信息
Definition instrument.hpp:48
double calculateMargin(double price, int64_t volume) const
计算开仓保证金
Definition instrument.hpp:127

Constructor & Destructor Documentation

◆ InstrumentManager() [1/2]

fix40::InstrumentManager::InstrumentManager ( )
default

默认构造函数

◆ ~InstrumentManager()

fix40::InstrumentManager::~InstrumentManager ( )
default

析构函数

◆ InstrumentManager() [2/2]

fix40::InstrumentManager::InstrumentManager ( const InstrumentManager )
delete

Member Function Documentation

◆ addInstrument()

void fix40::InstrumentManager::addInstrument ( const Instrument instrument)

添加单个合约

手动添加合约信息,主要用于测试。

Parameters
instrument合约信息
Note
如果合约ID已存在,将覆盖原有合约信息,不会发出警告。 这是设计意图,允许更新合约参数(如保证金率变化)。
Here is the caller graph for this function:

◆ addInstruments()

void fix40::InstrumentManager::addInstruments ( const std::vector< Instrument > &  instruments)

批量添加合约

Parameters
instruments合约列表
Note
如果合约ID已存在,将覆盖原有合约信息,不会发出警告。

◆ clear()

void fix40::InstrumentManager::clear ( )

清空所有合约

◆ getAllInstrumentIds()

std::vector< std::string > fix40::InstrumentManager::getAllInstrumentIds ( ) const

获取所有合约代码

Returns
合约代码列表
Here is the caller graph for this function:

◆ getInstrument()

const Instrument * fix40::InstrumentManager::getInstrument ( const std::string &  instrumentId) const

获取合约信息

Parameters
instrumentId合约代码
Returns
合约信息指针,不存在时返回 nullptr
Note
返回的指针在下次修改操作前有效

◆ getInstrumentCopy()

std::optional< Instrument > fix40::InstrumentManager::getInstrumentCopy ( const std::string &  instrumentId) const

获取合约信息(可选类型)

Parameters
instrumentId合约代码
Returns
合约信息的副本,不存在时返回 std::nullopt

◆ getInstrumentsByExchange()

std::vector< std::string > fix40::InstrumentManager::getInstrumentsByExchange ( const std::string &  exchangeId) const

按交易所获取所有合约

Parameters
exchangeId交易所代码(如 "CFFEX")
Returns
该交易所的所有合约代码列表

◆ getInstrumentsByProduct()

std::vector< std::string > fix40::InstrumentManager::getInstrumentsByProduct ( const std::string &  productId) const

按品种获取所有合约

Parameters
productId品种代码(如 "IF")
Returns
该品种的所有合约代码列表

◆ hasInstrument()

bool fix40::InstrumentManager::hasInstrument ( const std::string &  instrumentId) const

检查合约是否存在

Parameters
instrumentId合约代码
Returns
存在返回 true

◆ loadFromConfig()

bool fix40::InstrumentManager::loadFromConfig ( const std::string &  configPath)

从配置文件加载合约信息

解析JSON格式的配置文件,加载合约静态信息。

Parameters
configPath配置文件路径
Returns
加载成功返回 true,失败返回 false
配置文件格式
{
"instruments": [
{
"instrumentId": "IF2601",
"exchangeId": "CFFEX",
"productId": "IF",
"priceTick": 0.2,
"volumeMultiple": 300,
"marginRate": 0.12
}
]
}

◆ operator=()

InstrumentManager & fix40::InstrumentManager::operator= ( const InstrumentManager )
delete

◆ searchByPrefix()

std::vector< std::string > fix40::InstrumentManager::searchByPrefix ( const std::string &  prefix,
size_t  limit = 10 
) const

按前缀搜索合约

用于实现合约代码的自动补全功能。

Parameters
prefix合约代码前缀(如 "IF")
limit返回结果数量上限(默认 10)
Returns
匹配的合约代码列表(按字母排序)
使用示例
auto results = mgr.searchByPrefix("IF", 5);
// 可能返回: ["IF2501", "IF2502", "IF2503", "IF2506", "IF2509"]
Here is the call graph for this function:

◆ size()

size_t fix40::InstrumentManager::size ( ) const

获取合约数量

Returns
已加载的合约数量
Here is the caller graph for this function:

◆ updateLimitPrices()

bool fix40::InstrumentManager::updateLimitPrices ( const std::string &  instrumentId,
double  upperLimit,
double  lowerLimit 
)

更新涨跌停价格

从行情数据更新合约的涨跌停价格。

Parameters
instrumentId合约代码
upperLimit涨停价
lowerLimit跌停价
Returns
更新成功返回 true,合约不存在返回 false

◆ updatePreSettlementPrice()

bool fix40::InstrumentManager::updatePreSettlementPrice ( const std::string &  instrumentId,
double  preSettlementPrice 
)

更新昨结算价

Parameters
instrumentId合约代码
preSettlementPrice昨结算价
Returns
更新成功返回 true,合约不存在返回 false

The documentation for this class was generated from the following files: