脚本速查表
请参阅下方参考文档,帮助您创建继承自 ScriptStrategy 基类的脚本。
本脚本策略速查表也可在 PDF 版本 中获取。
观看与本页面配套的完整视频:
入门¶
- 按照您环境的 安装 文档进行操作
- 在 /scripts 文件夹内编写您的脚本
- 使用 start --script [脚本名称]运行您的脚本
脚本基础¶
配置¶
脚本是 ScriptStrategy 的子类。
您可以将要用到的变量定义为类变量。默认情况下,脚本没有配置文件。
市场¶
在类变量 markets 中,按以下结构定义连接器和交易对:
执行¶
- 方法 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 客户端发送通知,请使用以下方法:
提示
如果您已启用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 则会根据可用余额调整下单数量。
