跳转至内容

DCA 执行器

DCAExecutor: 管理定投(DCA)策略的执行,允许用户在一段时间内通过多个订单分散投资,以减少波动的影响。它设计用于现货和永续市场。

初始化

    def create_dca_order(self, level: int):
        """
        This method is responsible for creating a new DCA order
        """
        price = self.config.prices[level]
        amount = self.config.amounts_quote[level] / price
        order_id = self.place_order(connector_name=self.config.exchange,
                                    trading_pair=self.config.trading_pair, order_type=self.open_order_type,
                                    side=self.config.side, amount=amount, price=price,
                                    position_action=PositionAction.OPEN)
        if order_id:
            self._open_orders.append(TrackedOrder(order_id=order_id))

关键配置:

  • connector_name: 用户当前交易的交易所
  • trading_pair: 指定交易对
  • order_amount: 指定每个 DCA 订单的金额。
  • order_interval_seconds: 设置订单之间的时间间隔。
  • total_orders: 确定要执行的订单总数。
  • order_type: 定义要下的订单类型(默认为 LIMIT)。

DCAExecutor 类实现了一种定投策略,这是一种通过在一段时间内分散购买或销售来缓解波动影响的流行方法。

DCA 策略简单而有效,无论资产价格如何,都会定期执行订单。这种方法可以随着时间的推移降低每份额或单位的平均成本,使其成为长期投资者青睐的策略。

现货与永续行为

DCAExecutor 类功能多样,设计用于现货和永续交易所。这允许在不同市场类型中实施 DCA 策略:

  • 在永续交易所,它定期安排订单以管理头寸。
  • 在现货交易所,它执行一系列买入或卖出订单,以平均化资产的入场或离场价格。

配置

DCAExecutor 通过基于 DCAExecutorConfig 执行订单来参与市场。它按如下方式应用 DCA 策略:

    type = "dca_executor"
    exchange: str
    trading_pair: str
    side: TradeType
    leverage: int = 1
    amounts_quote: List[Decimal]
    prices: List[Decimal]
    take_profit: Optional[Decimal] = None
    stop_loss: Optional[Decimal] = None
    trailing_stop: Optional[TrailingStop] = None
    time_limit: Optional[int] = None
    mode: DCAMode = DCAMode.MAKER
    activation_bounds: Optional[List[Decimal]] = None

执行流程

以下是 DCAExecutor 运行方式的简化流程:

  1. DCAExecutor 根据配置的策略参数发起第一个订单。
  2. 它在执行下一个订单之前等待指定的时间间隔。
  3. 此过程重复直到所有配置的订单都已执行。
  4. 执行器监控每个订单的执行情况,并根据市场状况和策略要求管理任何必要的调整或取消。

结论

DCAExecutor 是 Hummingbot 内的重要组件,供希望通过实施定投策略的交易者和投资者使用。通过自动化 DCA 订单的执行,它简化了随着时间分散投资的过程,这有助于管理与市场波动相关的风险。无论是用于在牛市中积累头寸还是在熊市情况下分配资产,DCAExecutor 都提供了市场买卖的纪律性方法。