跳转至内容

脚本速查表

以下为参考文档,帮助您创建继承自 ScriptStrategy 基类的脚本。

此脚本策略速查表也以 PDF 格式 提供。

观看与本页面配套的完整视频:

开始使用

  • 请遵循您环境的 安装 文档
  • /scripts 文件夹内编写脚本
  • 使用 start --script [脚本名称] 运行脚本

脚本基础

配置

脚本是 ScriptStrategy 的子类。

您可以将要使用的变量定义为类变量。默认情况下,脚本没有配置文件。

市场

在类变量 markets 中定义连接器和交易对,使用以下结构:

Dict["connector_name", Set(Trading pairs)]

执行

  • 方法 on_tick 每次 tick_size 都会执行
  • tick_size 默认为 1 秒

市场操作

创建和取消订单

self.buy(connector_name, trading_pair, amount, order_type, price, [position_action])
self.sell(connector_name, trading_pair, amount, order_type, price,[position_action])
self.cancel(connector_name, trading_pair, order_id)```
# position_action is only used in perpetual connectors

账户数据

余额

self.get_balance_df()

  • 返回一个包含以下列的 DataFrame:["交易所", "资产", "总余额", "可用余额"]

未平仓订单

self.active_orders_df()

  • 返回一个包含以下列的 DataFrame:["交易所", "市场", "方向", "价格", "数量", "时间"]

事件

您可以通过在脚本中实现以下一个或多个方法来为各种市场事件创建自定义处理程序:

did_create_buy_order(self, event: BuyOrderCreatedEvent)
did_create_sell_order(self, event: SellOrderCreatedEvent)
did_fill_order(self, event: OrderFilledEvent)
did_fail_order(self, event: MarketOrderFailureEvent)
did_cancel_order(self, event: OrderCancelledEvent)
did_expire_order(self, event: OrderExpiredEvent)
did_complete_buy_order(self, event: BuyOrderCompletedEvent)
did_complete_sell_order(self, event: SellOrderCompletedEvent)

其他

汇率预言机

  • 以异步和同步方式提供任何给定代币对符号的转换汇率
  • 同步方法:RateOracle.get_instance().get_pair_rate(trading_pair)
  • 异步方法:RateOracle.get_instance().rate_async(trading_pair)

通知器

要向 Hummingbot 客户端发送通知,请使用以下方法:

self.notify_hb_app(msg)
self.notify_hb_app_with_timestamp(msg)

提示

如果激活了 Telegram 集成,您也会在那里收到通知。

状态

  • 当您在应用中运行 status 命令时,将接收到在 format_status 方法下编码的信息
  • 您可以在脚本中重写此方法以显示任何您想要的信息。查看 快速入门 - 练习 3 了解示例。
  • 默认情况下,格式状态显示余额和活动订单。查看 ScriptStrategy 中的实现。

连接器

访问连接器

连接存储在实例变量 connectors 中,具有以下结构:Dict["connector_name", ConnectorBase]

例如,self.connectors["binance"] 将返回 Binance 交易所类。

连接器方法

  • 最佳卖价:connector.get_price(trading_pair, is_buy=True)
  • 最佳买价:connector.get_price(trading_pair, is_buy=False)
  • 中间价:connector.get_mid_price(trading_pair)
  • 订单簿:connector.get_order_book(trading_pair)。返回一个 CompositeOrderBook 对象,其最常见的方法为:
    • ask_entries()OrderBookRow 的迭代器
    • bid_entries()OrderBookRow 的迭代器
    • snapshot() → 元组(出价为 DataFrame,要价为 DataFrame)

例如,self.connectors["binance"].get_mid_price("ETH-USDT") 将返回 Binance 上 ETH-USDT 交易对的中间价格。

查询订单簿

使用这些方法可以高效计算指标:

connector.get_vwap_for_volume(trading_pair, is_buy, volume)
connector.get_price_for_volume(trading_pair, is_buy, volume)
connector.get_quote_volume_for_base_amount(trading_pair, is_buy, base_amount)
connector.get_volume_for_price(trading_pair, is_buy, price)
connector.get_quote_volume_for_price(trading_pair, is_buy,price)

返回一个包含以下内容的 ClientOrderBookQueryResult 类:

  • query_price
  • query_volume
  • result_price
  • result_volume

会计

订单候选

  • OrderCandidate(trading_pair, is_maker, order_type, order_side, amount, price)
  • 具有为对象填充所需抵押品、费用和潜在收益的方法

预算检查器

这会检查余额是否足够下单,all_or_none=True 在余额不足时将金额设为 0,而 all_or_none=False 将根据可用余额调整订单规模。

connector.budget_checker.adjust_candidate(OrderCandidate, all_or_none=True)
connector.budget_checker.adjust_candidates(List[OrderCandidate], all_or_none=True)