脚本速查表
以下为参考文档,帮助您创建继承自 ScriptStrategy
基类的脚本。
此脚本策略速查表也以 PDF 格式 提供。
观看与本页面配套的完整视频:
开始使用¶
脚本基础¶
配置¶
脚本是 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
将根据可用余额调整订单规模。