MCPcopy Create free account

hub / github.com/HourglassDevTeam/HourglassExchange / functions

Functions645 in github.com/HourglassDevTeam/HourglassExchange

↓ 232 callersMethodclone
(&self)
src/hourglass/account/mod.rs:78
↓ 71 callersMethodwrite
(self, filters: &Vec<Directive>, appenders: &mut HashMap<&'static str, Box<dyn Write
src/hourglass_log/mod.rs:136
↓ 46 callersFunctioncreate_test_account
()
src/test_utils.rs:119
↓ 28 callersFunctionnow
()
src/hourglass_log/mod.rs:37
↓ 24 callersMethodget_balance
返回指定[`Token`]的[`Balance`]的引用。
src/hourglass/account/account_handlers/balance_handler.rs:58
↓ 22 callersMethodcreate_perpetual_position
根据传入的 `ClientTrade` 和 之前判断的`PositionHandling` 来创建 `PerpetualPosition` 的方法 该方法根据给定的交易信息和处理类型创建一个新的 `PerpetualPosition`。 在创建过程中,会计算清算价格,清算价格是基于当前保证金和清算
src/hourglass/account/account_handlers/position_handler.rs:458
↓ 15 callersMethodfilter
(mut self, module_path: &'static str, appender: A, level: L)
src/hourglass_log/mod.rs:529
↓ 15 callersMethodupdate_position_from_client_trade
(&mut self, trade: ClientTrade)
src/hourglass/account/account_handlers/position_handler.rs:651
↓ 12 callersMethodbuild
构建最终的查询
src/hourglass/clickhouse_api/query_builder/mod.rs:95
↓ 12 callersMethodfrom
设置FROM子句
src/hourglass/clickhouse_api/query_builder/mod.rs:44
↓ 12 callersFunctiongenerate_machine_id
()
src/common/order/identification/machine_id.rs:16
↓ 12 callersMethodselect
设置SELECT子句
src/hourglass/clickhouse_api/query_builder/mod.rs:37
↓ 10 callersMethodas_ref
(&self)
src/common/token.rs:21
↓ 10 callersFunctionextract_date
(table_name: &str)
src/hourglass/utils/chrono_operations.rs:10
↓ 9 callersMethodconstruct_database_name
(&self, exchange: &str, instrument: &str, channel: &str)
src/hourglass/clickhouse_api/queries_operations.rs:112
↓ 9 callersMethodformat
(mut self, format: F)
src/hourglass_log/mod.rs:465
↓ 8 callersFunctionbuilder
()
src/hourglass_log/mod.rs:417
↓ 7 callersMethodapply_balance_delta
将 [`BalanceDelta`] 应用于指定 [`Token`] 的 [`Balance`],并返回更新后的 [`Balance`] 。
src/hourglass/account/account_handlers/balance_handler.rs:224
↓ 7 callersMethodget_ins_orders_mut
返回指定 [`Instrument`] 的 [`OpenOrdersBook`] 的可变引用。
src/hourglass/account/account_orders.rs:90
↓ 7 callersMethodget_table_names
(&self, database: &str)
src/hourglass/clickhouse_api/queries_operations.rs:117
↓ 7 callersFunctioninit
()
examples/backtest_example.rs:127
↓ 7 callersFunctionrespond
(response_tx: Sender<Response>, response: Response)
src/hourglass/account/mod.rs:747
↓ 6 callersMethodadd_order
(&mut self, order: Order<Open>)
src/hourglass/hourglass_orderbook/mod.rs:53
↓ 6 callersMethodas_str
(&self)
src/lib.rs:73
↓ 6 callersFunctionfluctuate_latency
(latency: &mut AccountLatency, seed: i64)
src/hourglass/account/account_latency.rs:37
↓ 6 callersMethodorder
添加ORDER BY子句 Add ORDER BY clause
src/hourglass/clickhouse_api/query_builder/mod.rs:75
↓ 5 callersMethodfetch_balances
(&self)
src/hourglass/hourglass_client_local_mode.rs:91
↓ 5 callersMethodget_balance_mut
返回指定[`Token`]的[`Balance`]的可变引用。
src/hourglass/account/account_handlers/balance_handler.rs:66
↓ 5 callersMethodget_position_long
获取指定 `Instrument` 的多头仓位
src/hourglass/account/account_handlers/position_handler.rs:248
↓ 5 callersFunctionlocal_datetime_from_unix
定义一个函数,接受UNIX时间戳并返回东八区精确时间
src/hourglass/utils/chrono_operations.rs:28
↓ 5 callersMethodupdate_from_trade
NOTE 这里要做一个特殊的机制。为了不让价格未零。当第一条trade进来以后,除了更新本side以外,要把另外一个side的价格也更新成同样的价格。之后再正常更新。
src/hourglass/clickhouse_api/datatype/single_level_order_book.rs:25
↓ 4 callersMethodaccount
(self, value: Arc<Mutex<HourglassAccount>>)
src/hourglass/mod.rs:262
↓ 4 callersMethodatomic_open
(&mut self, order: Order<RequestOpen>)
src/hourglass/account/mod.rs:436
↓ 4 callersMethodconstruct_table_name
(&self, exchange: &str, instrument: &str, channel: &str, date: &str, base: &str, quote: &str)
src/hourglass/clickhouse_api/queries_operations.rs:87
↓ 4 callersFunctioncreate_test_trade
Helper function to create a ClientTrade for testing
src/common/account_positions/position_meta.rs:313
↓ 4 callersMethodevent_hourglass_rx
(self, value: UnboundedReceiver<HourglassClientEvent>)
src/hourglass/mod.rs:246
↓ 4 callersMethodfetch_all
为每个 [`Instrument`] 获取出价和要价 [`Order<Open>`]。 该函数在以下情况下会被使用: 1. **查询订单状态**: 用户或系统需要查询当前账户的所有挂单,例如在界面上显示当前的挂单状态,或在数据分析时,了解有哪些订单还未成交。 2. **取消所有挂单**: 在需要
src/hourglass/account/account_orders.rs:110
↓ 4 callersMethodfetch_orders_open
(&self)
src/hourglass/hourglass_client_local_mode.rs:80
↓ 4 callersMethodgenerate_client_trade_event
(&self, timestamp: i64, order: &Order<Open>, trade_quantity: f64, fees_percent: f64, counter: &AtomicI64)
src/hourglass/open_orders_book.rs:216
↓ 4 callersMethodget_position_short
获取指定 `Instrument` 的空头仓位
src/hourglass/account/account_handlers/position_handler.rs:285
↓ 4 callersMethodhas_sufficient_available_balance
判断client是否有足够的可用[`Balance`]来执行[`Order<RequestOpen>`]。
src/hourglass/account/account_handlers/balance_handler.rs:353
↓ 4 callersMethodinitiate
(self)
src/hourglass/mod.rs:267
↓ 4 callersMethodinitiate
结束构建,并尝试生成Instrument。如果任何字段未设置,将返回错误。
src/common/instrument/mod.rs:100
↓ 4 callersMethodmatch_orders
处理市场交易事件并尝试匹配订单。 该函数根据市场交易事件尝试匹配账户中的订单,并生成相应的交易。它会根据市场事件的方向(买或卖) 查找最佳报价,并使用预先计算的 `OrderRole` 来确定订单的费用比例。匹配成功的订单会生成相应的交易记录。 # 参数 - `market_trade`: 一
src/hourglass/account/account_handlers/trade_handler.rs:130
↓ 4 callersMethodnext
(now: &OffsetDateTime, period: Period)
src/hourglass_log/appender/file.rs:153
↓ 4 callersMethodoffset
(mut self, offset: usize)
src/hourglass/clickhouse_api/query_builder/mod.rs:88
↓ 4 callersMethodparse_instrument
(&self)
src/hourglass/clickhouse_api/datatype/clickhouse_trade_data.rs:53
↓ 4 callersMethodremaining_quantity
计算订单的剩余数量。 # 返回值 返回订单的剩余数量(`size - filled_quantity`)。
src/common/order/states/open.rs:22
↓ 4 callersMethodremove_position
(&self, instrument: Instrument, side: Side)
src/hourglass/account/account_handlers/position_handler.rs:683
↓ 4 callersMethodrow
返回表格的一行数据。 # 返回 返回包含统计量值的 `Row` 对象。
src/dashboard/summary/data.rs:78
↓ 4 callersMethodsend_account_event
发送账户事件给客户端。
src/hourglass/account/mod.rs:741
↓ 4 callersFunctionupdate_mean
Welford's 在线算法是一种用于逐次计算均值和方差的数值稳定方法,尤其适合于处理大数据集或流数据。 该算法的主要优点在于它能够在单次遍历数据的过程中,以在线方式高效地计算均值和方差,且避免了在处理较大数据集时可能出现的数值不稳定问题。 ### 算法简介 Welford's 在线算法的基本思
src/dashboard/welford_online.rs:47
↓ 4 callersMethodvalue
返回 `OrderId` 的内部 `u64` 值。 # 返回值 - 返回内部存储的 `u64` 类型的ID值。
src/common/order/identification/mod.rs:82
↓ 3 callersMethodapply_open_order_changes
当client创建[`Order<Open>`]时,更新相关的[`Token`] [`Balance`]。 [`Balance`]的变化取决于[`Order<Open>`]是[`Side::Buy`]还是[`Side::Sell`]。
src/hourglass/account/account_handlers/balance_handler.rs:88
↓ 3 callersMethodbase
设置基础货币。
src/common/instrument/mod.rs:77
↓ 3 callersMethodbuild
(self)
src/hourglass_log/appender/file.rs:58
↓ 3 callersMethodcancel_orders
(&mut self, cancel_requests: Vec<Order<RequestCancel>>, response_tx: Sender<Vec<Result<Order<Cancelled>, Excha
src/hourglass/account/mod.rs:558
↓ 3 callersMethodcheck_and_handle_liquidation
(&mut self, trade: &MarketTrade)
src/hourglass/account/account_handlers/position_handler.rs:921
↓ 3 callersMethodconstruct_union_table_name
(&self, exchange: &str, instrument: &str, channel: &str, date: &str)
src/hourglass/clickhouse_api/queries_operations.rs:103
↓ 3 callersMethodcursor_unioned_public_trades
(&self, exchange: &str, instrument: &str, date: &str)
src/hourglass/clickhouse_api/queries_operations.rs:268
↓ 3 callersMethoddeposit_coin
为指定的 `Token` 充值指定数量的稳定币。 如果该 `Token` 已经存在于 `balances` 中,则更新其余额;如果不存在,则创建一个新的 `Balance` 条目。 # 参数 `token` - 需要充值的 `Token`。 `amount` - 充值的数额。 # 返回值
src/hourglass/account/mod.rs:209
↓ 3 callersMethoddeposit_usdt
为账户充值 `u本位` 稳定币(USDT)。 # 参数 `amount` - 充值的数额。 # 返回值 返回更新后的 `TokenBalance`。
src/hourglass/account/mod.rs:263
↓ 3 callersMethoddetermine_post_only_order_role
FIXME 这个逻辑提前到了 open_orders 中。所以可能产生重复。 判断 PostOnly 订单是否符合条件,并确定其是 Maker 还是被拒绝。 如果订单不符合 PostOnly 的条件(即买单价格低于当前市场价格,或卖单价格高于当前市场价格), 则会拒绝该订单,并将其从待处理订单中删
src/hourglass/account/account_orders.rs:306
↓ 3 callersMethodfees_percent
根据金融工具类型和订单角色返回相应的手续费百分比。 NOTE 需要扩展并支持现货和期货。 # 参数 `kind` - 表示金融工具的种类,如 `Spot` 或 `Perpetual`。 `role` - 表示订单的角色,如 `Maker` 或 `Taker`。 # 返回值 `Option<f
src/hourglass/account/account_handlers/trade_handler.rs:202
↓ 3 callersMethodincrement_order_counter
增加请求计数器的值。 该函数使用 [`Ordering::Relaxed`] 来递增请求计数器 `request_counter` 的值, 不保证线程同步的顺序一致性。这意味着多个线程可以并发调用此函数, 但不保证对其他线程的立即可见性或顺序一致性。 # 注意 - 此函数的主要用途是在每次接收
src/hourglass/account/account_orders.rs:151
↓ 3 callersMethodkind
设置金融工具类型。
src/common/instrument/mod.rs:93
↓ 3 callersMethodlike_clause
添加LIKE条件
src/hourglass/clickhouse_api/query_builder/mod.rs:58
↓ 3 callersMethodlimit
添加LIMIT子句
src/hourglass/clickhouse_api/query_builder/mod.rs:82
↓ 3 callersFunctionopen_order
创建开放订单
tests/util/mod.rs:154
↓ 3 callersMethodopen_orders
处理多个开仓订单请求,并执行相应操作。 对于每个开仓请求,该函数根据配置的 `PositionDirectionMode` 来判断是否允许方向冲突。如果是 `NetMode`,则会检查订单方向与当前持仓的方向是否冲突。 如果订单标记为 `reduce only`,则不会进行方向冲突检查,但仍需判断
src/hourglass/account/mod.rs:348
↓ 3 callersMethodorder_id
生成一个新的 [OrderId]。 该函数根据当前的系统时间戳和订单计数器生成一个唯一的 [OrderId]。 系统时间戳以毫秒为单位计算,并结合机器 ID 和计数器来确保生成的 ID 唯一。 由于计数器使用 [Ordering::SeqCst] 进行递增,确保了在多线程环境下的顺序一致性和原子性
src/hourglass/account/account_orders.rs:169
↓ 3 callersMethodparse_payload
(&self)
src/network/event.rs:100
↓ 3 callersMethodprocess_trade
处理客户端交易列表并更新账户余额及交易事件。 该方法接收多个 `ClientTrade` 实例,并依次处理每笔交易: 1. 更新账户的相关余额信息。 2. 发送交易事件 `AccountEventKind::Trade`。 3. 发送余额更新事件 `AccountEventKind::Balan
src/hourglass/account/account_handlers/trade_handler.rs:237
↓ 3 callersMethodquote
设置报价货币。
src/common/instrument/mod.rs:85
↓ 3 callersFunctionread_config_file
读取配置文件,并返回`AccountConfig`结构体实例。 如果配置文件不存在或无法解析,将返回相应的`ExecutionError`。 # 错误 - `ExecutionError::ConfigMissing`: 如果配置文件 `config.toml` 不存在。 - `Executio
src/hourglass/utils/config_parser.rs:12
↓ 3 callersMethodrequired_available_balance
NOTE 此处计算required_available_balance要分离出maker的处理规则
src/hourglass/account/account_handlers/balance_handler.rs:234
↓ 3 callersMethodtitles
返回表格的标题行。 # 返回 返回包含统计量名称的 `Row` 对象。
src/dashboard/summary/data.rs:69
↓ 3 callersMethodto_token
根据 `StableToken` 的变种生成对应的 `Token`
src/common/stable_token.rs:23
↓ 3 callersMethodwhere_clause
添加WHERE条件
src/hourglass/clickhouse_api/query_builder/mod.rs:51
↓ 2 callersMethodadd_order_open
(&mut self, new_open_order: Order<Open>)
src/hourglass/open_orders_book.rs:63
↓ 2 callersMethodapply
对这个[`Balance`]应用一个[`BalanceDelta`]。
src/common/balance.rs:46
↓ 2 callersMethodapply_cancel_order_changes
当client取消[`Order<Open>`]时,更新相关的[`Token`] [`Balance`]。 [`Balance`]的变化取决于[`Order<Open>`]是[`Side::Buy`]还是[`Side::Sell`]。
src/hourglass/account/account_handlers/balance_handler.rs:117
↓ 2 callersFunctionassert_balance_equal_ignore_time
自定义比较函数,忽略 time 字段
tests/test_set.rs:142
↓ 2 callersMethodatomic_cancel
原子性取消订单并更新相关的账户状态。 该方法尝试以原子操作的方式取消一个指定的订单,确保在取消订单后更新账户余额,并发送取消事件和余额更新事件。 # 参数 `request` - 一个 `Order<RequestCancel>` 实例,表示客户端发送的订单取消请求。 # 逻辑 1. 验证
src/hourglass/account/mod.rs:600
↓ 2 callersMethodbuild_order_open
从提供的 [`Order<RequestOpen>`] 构建一个 [`Order<Open>`]。请求计数器递增, 在 increment_request_counter 方法中,使用 Ordering::Relaxed 进行递增。
src/hourglass/account/account_orders.rs:123
↓ 2 callersMethodcalculate
计算特定时期内的 [`Drawdown`] 值。公式为:[`Drawdown`] = (range_low - range_high) / range_high # 返回 返回计算得到的 drawdown 值。
src/dashboard/metrics/drawdown.rs:122
↓ 2 callersFunctioncalculate_daily
计算日内比率。 # 参数 - `ratio_per_trade`: 每笔交易的比率。 - `trades_per_day`: 每日交易次数。 # 返回 返回计算得到的日内比率。
src/dashboard/metrics/ratio.rs:179
↓ 2 callersMethodclose_position
FIXME 支持的金融工具太少了。 关闭仓位
src/hourglass/account/account_handlers/position_handler.rs:866
↓ 2 callersMethodcmp
(&self, other: &Self)
src/hourglass/clickhouse_api/queries_operations.rs:79
↓ 2 callersMethodcmp
实现 `Ord` trait 以便按订单的价格进行排序。 # 注意 如果价格包含 `NaN`,将会引发 panic。 # 参数 - `other`: 要比较的另一个 `Order<Open>` 实例。 # 返回值 返回 `Ordering`,指示当前实例相对于 `other` 是小于、等于还是
src/common/order/states/open.rs:40
↓ 2 callersFunctioncompute_population_variance
使用 Welford 在线递推关系 M 计算下一个有偏的“总体”方差。
src/dashboard/welford_online.rs:70
↓ 2 callersMethodcursor_unioned_public_trades_for_test
(&self, exchange: &str, instrument: &str, date: &str)
src/hourglass/clickhouse_api/queries_operations.rs:289
↓ 2 callersMethoddata_source
(self, value: DataSource)
src/hourglass/mod.rs:252
↓ 2 callersMethoddeposit_bitcoin
NOTE : BETA功能,待测试。 为账户充值 `b本位` 稳定币(BTC)。 # 参数 `amount` - 充值的数额。 # 返回值 返回更新后的 `TokenBalance`。
src/hourglass/account/mod.rs:278
↓ 2 callersMethoddeposit_tokens
实现 DepositTokens 的处理逻辑
src/hourglass/hourglass_client_local_mode.rs:167
↓ 2 callersMethoddetermine_limit_order_role
根据限价订单的价格和当前市场价格,确定订单是 Maker 还是 Taker。 # 参数 - `order`: 待处理的限价订单 (`Order<RequestOpen>`)。 - `current_price`: 当前市场价格。 # 返回值 - `Ok(OrderRole::Maker)`:
src/hourglass/account/account_orders.rs:257
↓ 2 callersMethoddetermine_maker_taker
根据订单类型和当前市场价格,确定订单是 Maker 还是 Taker。 # 参数 - `order`: 待处理的订单 (`Order<RequestOpen>`)。 - `current_price`: 当前市场价格。 # 返回值 - 返回 `Ok(OrderRole::Maker)` 或
src/hourglass/account/account_orders.rs:198
↓ 2 callersMethodfile
(path: T, period: Period, timezone: &LogTimezone)
src/hourglass_log/appender/file.rs:114
↓ 2 callersMethodflush
刷新函数 该函数用于刷新日志队列。它向日志队列发送一个刷新命令,并等待通知, 以确保所有待处理的日志消息都已被正确处理。
src/hourglass_log/mod.rs:383
↓ 2 callersMethodget_balances
(&self)
src/hourglass/account/account_handlers/balance_handler.rs:52
next →1–100 of 645, ranked by callers