twap
¶
📁 策略信息¶
- 文件夹: /hummingbot/strategy/twap
- 配置: twap_config_map.py
- 维护者: None
📝 摘要¶
这个策略是一个简单的机器人,在交易所下一系列限价订单,同时允许用户控制订单大小、价格和持续时间。
我们推荐这个策略作为希望构建自己策略的开发人员的起点,它被用作开发者参考:策略中文章的参考。
🏦 支持的交易所¶
- SPOT CLOB CEX
🛠️ 策略配置¶
参数 | 类型 | 默认 | 提示新配置? | 提示 |
---|---|---|---|---|
connector |
string | True | 输入现货连接器的名称 | |
trading_pair |
string | True | 请输入您想在[connector] 上交易的代币交易对 |
|
trade_side |
string | buy | True | 将执行什么操作?(buy/sell) |
target_asset_amount |
decimal | 1 | True | [base_token]的总交易量是多少? |
order_step_size |
decimal | 1 | True | 每个单独订单的金额是多少(以基础资产计价,默认为 1) |
order_price |
decimal | True | 限价订单的价格是多少? | |
order_delay_time |
decimal | 10 | True | 每个单独订单之间您想等待多少秒? |
cancel_order_wait_time |
decimal | 60 | True | 在取消您的限价订单之前您想等待多长时间(以秒为单位)。 |
is_time_span_execution |
bool | False | False | 您想为执行指定开始时间和结束时间吗? |
start_datetime |
decimal | False | 请输入开始日期和时间 | |
end_datetime |
decimal | False | 请输入结束日期和时间 |
📓 描述¶
仅近似
以下是对该策略的总体近似描述。请检查上面的交易逻辑中的策略代码以确切了解其工作原理。
TWAP 策略是一种常用的算法执行策略,用于在一段时间内拆分大订单。具体而言,TWAP 策略帮助交易者在买卖大订单时最小化滑点。这些功能使该策略对交易者更有用,并将在创建未来更复杂的策略时有所帮助:
- 在时钟刻度中递增/维护状态
- 量化(向下舍入到最近可交易值)订单大小
- 将订单分成片段
- 在分段订单之间合并时间延迟
概述¶
TWAP 策略根据以下用户配置将大用户订单分成块:
- 总订单大小
- 单独订单数量
- 订单之间的延迟时间
然后将订单拆分成可交易(量化)金额,并在订单之间按指示的延迟时间顺序执行。在第一个订单之前没有延迟时间。由于在时钟刻度中只下了一个订单,需要一个状态机来在不同时钟刻度中发出多个订单。要查看已执行的订单,请在命令提示符中输入 history。
配置¶
以下是 TWAP 策略的其他用户可配置参数(字段被添加到config_map
文件中):
time_delay
:更改问题以询问每个单独订单的延迟秒数。(例如:每个单独订单之间您想等待多少秒?)num_individual_orders
:添加到配置映射中的新字段。它应该询问订单应拆分成的单独订单数量。(例如:您想将此订单拆分成多少个单独订单?)
策略¶
TWAP 策略逻辑试图将大订单拆分成多个小订单,通过在处理订单时添加状态变量来维护关于状态的重要信息。
可以通过在__init__
函数中设置变量来为策略添加自定义状态变量。
self._quantity_remaining
:表示剩余需要作为单独订单下达的数量。该状态变量在每次下单后更新,并持续到订单处理完成。self._first_order
:表示当前的单独订单是否是第一笔订单。
当剩余订单数量大于 0 且指定的 time_delay 已过时,TWAP 将处理订单。具体来说,使用剩余订单数量和 time_delay 的一些关键要素如下所示:
- 如果 self._quantity_remaining 大于 0,则下单
- 如果
self._first_order
为真,我们希望在self._current_timestamp > self._previous_timestamp
时立即下单,在第一笔订单之前我们没有时间延迟 - 如果不是第一笔订单,则检查
self._current_timestamp > self._previous_timestamp + self._time_delay
- 下单后,通过减去刚刚下单的数量
curr_order_amount
来更新 self._quantity_remaining:(总订单金额)/(订单数量)或self._quantity_remaining
,取较小值
📺 演示¶
警告
本演示仅供教学和教育目的。所使用的任何参数均仅用于演示目的。我们不提供任何法律、税务、财务或投资建议。每个用户都应对其使用和配置 Hummingbot 负责。
ℹ️ 更多资源¶
傻瓜式策略编码:这是来自我们用户的一篇博客文章投稿。它与 TWAP 策略没有直接关系,但它演示了如何为跨交易所做市策略编写自定义脚本
查看Hummingbot 学院以获取与此策略及其他策略相关的更多资源!