跳至内容

脚本速查表

请参阅下方参考文档,帮助您创建继承自 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)