You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python交易bot如何计算给定现金可购入的最大加密货币数量

Python 计算最大可购买加密货币数量实现方案

核心逻辑

要满足最小购买单位0.0001、现金不为负的要求,核心是把理论可购买数量向下取整到最小单位的整数倍,同时额外做浮点数精度兼容避免误差导致的超额支出。

实现代码

def calculate_max_buy_amount(available_cash: float, coin_price: float, min_unit: float = 0.0001) -> float:
    """
    计算可购买的最大加密货币数量
    :param available_cash: 可用于买币的现金总金额(已扣除手续费等预留金额)
    :param coin_price: 加密货币当前单价,与现金为同计价币种
    :param min_unit: 加密货币最小购买单位,默认0.0001
    :return: 最大可购买数量,买不起最小单位时返回0
    """
    # 预减极小值避免浮点数精度误差导致计算值偏大
    theoretical_max = available_cash / coin_price - 1e-12
    # 向下取整到最小单位的整数倍
    max_amount = (theoretical_max // min_unit) * min_unit
    # 二次校验避免超支
    if max_amount * coin_price > available_cash:
        max_amount -= min_unit
    # 过滤负数值,买不起最小单位返回0
    return max(max_amount, 0.0)

使用示例

# 示例:持有100 USDT,BTC当前单价30000 USDT/枚,计算最大可买BTC数量
max_buy_btc = calculate_max_buy_amount(available_cash=100, coin_price=30000)
print(max_buy_btc)
# 输出结果:0.0033
# 校验支出:0.0033 * 30000 = 99 USDT < 100 USDT,满足现金不为负要求,资金利用率最大化

兼容说明

  • 如果有交易手续费需求,可提前在available_cash参数中扣除预留手续费,例如手续费率0.1%时,传参为available_cash=总现金 * (1 - 0.001)即可
  • 要修改最小购买单位时直接调整min_unit参数即可,无需修改核心逻辑

内容的提问来源于stack exchange,提问作者Niklas Kampe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 04:39:00