freqtrade智能挂单策略,让你的资金利用率提升 50%+

📘 freqtrade智能挂单策略,让你的资金利用率提升 50%+

在量化交易中,挂单价格和挂单超时是决定交易效率和风险管理的关键因素。

Freqtrade 机器人提供了多种自定义挂单控制的钩子函数,帮助你精细化控制买卖价格和挂单生命周期,避免因挂单吃亏或资金被无效占用导致的机会损失。

🚀 想学量化交易?

👉 点击访问:www.itrade.icu 这里有 Freqtrade 基础教程策略源码指标解析 等丰富内容,助你轻松掌握量化交易技巧!

本文将围绕三个函数详细展开:

  • custom_entry_price:自定义买入挂单价格,避免挂单被瞬间吃掉或成本过高。
  • check_entry_timeout:判断买入挂单是否超时,及时取消未成交挂单,释放资金。
  • check_exit_timeout:判断卖出挂单是否超时,防止卖单长时间无效挂单。

1. 自定义买入挂单价格 ------ custom_entry_price

在 Freqtrade 中,默认买入价格由交易所市价或策略默认限价决定,但在实际交易中,精准控制挂单价格非常重要。

如果挂单价格设置过于保守,可能导致买单无法快速成交,错失良机;价格过高,则会增加买入成本。

custom_entry_price 函数允许你在限价买入时,自定义挂单价格,实现策略更灵活的买入逻辑。

使用场景举例

  • 激进策略:使用市价或接近市价价格,保证挂单迅速成交。
  • 保守策略:挂单价格稍微低于当前价格,追求更优买入成本。
  • 混合策略:根据市场波动或其他信号动态调整挂单价格。

完整代码示例

python 复制代码
def custom_entry_price(self, pair, current_time, proposed_rate, entry_tag, **kwargs) -> float:
    """
    自定义买入挂单价格

    参数:
    - pair: 交易对名称,如 'BTC/USDT'
    - current_time: 当前时间戳
    - proposed_rate: 系统推荐买入价格
    - entry_tag: 交易标签,方便多策略区分
    - kwargs: 其他参数

    返回:
    - float: 自定义买入挂单价格
    """

    if entry_tag == "aggressive":
        # 激进策略,使用推荐价格,尽快成交
        return proposed_rate
    elif entry_tag == "conservative":
        # 保守策略,价格下调0.5%
        return proposed_rate * 0.995
    else:
        # 默认轻微下调0.2%
        return proposed_rate * 0.998

小结

通过该方法,策略可以根据不同市场环境和资金管理需求灵活调整买入价格,有效避免挂单被瞬间吃掉或成交成本偏高。


2. 挂单超时处理:check_entry_timeoutcheck_exit_timeout

限价单挂单过程中,最怕出现挂单"卡死"导致资金被占用,但订单却长时间无法成交。

这种情况不仅影响资金周转,还会错失更好交易机会。

Freqtrade 通过 check_entry_timeoutcheck_exit_timeout 两个函数,允许策略开发者自定义超时取消挂单的规则。

设计思路

  • 高价币种(如 BTC/USDT),对资金占用敏感,挂单超过短时间未成交应及时取消。
  • 中价币种(如 BNB、LTC),适度缩短挂单等待时间。
  • 低价币种(如 SHIB、DOGE),价格低波动大,可允许更长时间挂单。

具体代码示例

python 复制代码
from datetime import timedelta

def check_entry_timeout(self, pair: str, trade: Trade, order: Order,
                        current_time: datetime, **kwargs) -> bool:
    """
    判断买入挂单是否超时,决定是否取消。

    超时逻辑:
    - 价格 > 100 USDT,挂单超5分钟取消
    - 价格介于10~100 USDT,挂单超3分钟取消
    - 价格 < 1 USDT,挂单超24小时取消

    返回:
    - True 表示取消挂单
    - False 表示继续等待成交
    """

    if trade.open_rate > 100 and trade.open_date_utc < current_time - timedelta(minutes=5):
        return True
    elif trade.open_rate > 10 and trade.open_date_utc < current_time - timedelta(minutes=3):
        return True
    elif trade.open_rate < 1 and trade.open_date_utc < current_time - timedelta(hours=24):
        return True
    return False


def check_exit_timeout(self, pair: str, trade: Trade, order: Order,
                       current_time: datetime, **kwargs) -> bool:
    """
    判断卖出挂单是否超时,决定是否取消。

    逻辑同买入挂单超时判断,分价位设定不同超时阈值。
    """
    if trade.open_rate > 100 and trade.open_date_utc < current_time - timedelta(minutes=5):
        return True
    elif trade.open_rate > 10 and trade.open_date_utc < current_time - timedelta(minutes=3):
        return True
    elif trade.open_rate < 1 and trade.open_date_utc < current_time - timedelta(hours=24):
        return True
    return False

进一步优化建议

  • 可根据市场波动动态调整超时阈值
  • 结合订单薄深度、成交量等指标,智能判断是否取消挂单
  • 对不同策略或品种设定不同的超时规则

3. 注意事项:限价单配置与执行

需要注意的是,custom_entry_price 和挂单超时判断函数只有在你使用限价单时才会被调用。

如果你使用市价单或其他类型订单,这些函数不会生效。

如何启用限价单

config.json 配置文件中设置:

json 复制代码
"order_types": {
  "entry": "limit",
  "exit": "limit"
}

这样,Freqtrade 会在买卖时使用限价单,确保上述自定义逻辑生效。

总结

挂单价格和挂单时效管理是提高交易执行质量的关键。

  • 通过 custom_entry_price,你可以根据市场状况和策略风格,自定义买入挂单价格,实现更合理的买入成本控制。
  • 利用 check_entry_timeoutcheck_exit_timeout,能够防止挂单长时间不成交,避免资金被无效占用,提高资金使用效率。
  • 结合限价单配置,这三者形成一个完整的挂单管理体系,为你的策略保驾护航。

实现精细的挂单管理,能有效避免挂单被瞬间吃掉、挂单长时间未成交或错失更优价格的尴尬,让交易更稳健、更高效!

相关推荐
江城开朗的豌豆3 小时前
从“any”战士到类型高手:我的TypeScript进阶心得
前端·javascript·前端框架
小猪绝不放弃.3 小时前
Spring Boot项目的核心依赖
java·spring boot·后端
l0sgAi3 小时前
SpringBoot 整合SpringAI实现简单的RAG (检索增强生成)
java·后端
红尘散仙3 小时前
TRNovel王者归来:让小说阅读"声"临其境的终端神器
前端·rust·ui kit
知花实央l3 小时前
【Web应用安全】SQLmap实战DVWA SQL注入(从环境搭建到爆库,完整步骤+命令解读)
前端·经验分享·sql·学习·安全·1024程序员节
烛阴3 小时前
为你的Lua代码穿上盔甲:精通错误处理的艺术
前端·lua
合作小小程序员小小店3 小时前
web网页开发,旧版在线%考试,判题%系统demo,基于python+flask+随机分配考试题目,基于开发语言python,数据库mysql
开发语言·后端·python·mysql·flask·html5
深蓝电商API3 小时前
反反爬虫实战:手撕某知名网站Webpack加密的JavaScript
javascript·爬虫·webpack