---
id: document_item.moonhook-strategy-and-its-parameters
page_type: documentation_article
title: "MoonHook 策略及其参数"
description: "MoonHook 如何对价格快速下跌作出反应，并在价格通道内移动 Buy 订单，等待再次插针；该策略属于 MoonBonus 功能。"
section: documentation
category: "策略 / 策略的专用参数"
url: https://moonbot.eu/zh/documentation/advanced-strategy-parameters/moonhook-strategy-and-its-parameters?format=md
locale: zh
alternate_ru: https://moonbot.eu/documentation/advanced-strategy-parameters/moonhook-strategy-and-its-parameters?format=md
alternate_en: https://moonbot.eu/en/documentation/advanced-strategy-parameters/moonhook-strategy-and-its-parameters?format=md
parent: https://moonbot.eu/zh/documentation/advanced-strategy-parameters?format=md
previous: https://moonbot.eu/zh/documentation/advanced-strategy-parameters/spread-strategy-and-its-parameters?format=md
next: https://moonbot.eu/zh/documentation/advanced-strategy-parameters/activity-strategy-and-Its-parameters?format=md
status: published
updated_at: 2026-11-11T23:07:25+03:00
---

# MoonHook 策略及其参数

**该策略包含在 MoonBonus 套餐中，仅向通过我们的推荐链接在交易所注册账户的 PRO 版用户开放。各交易所的推荐链接列表可在页面** [MoonBonus](https://moonbot.eu/zh/moonbot-pro/modules/moonbonus?format=md) **查看。**

该策略检测价格的快速下跌并挂出 Buy 订单，此后该订单像 MoonShot 策略中那样在自己的价格通道内移动，等待再次出现插针。

通道和订单的初始位置都与实际检测值呈线性关系。下跌速度由参数 **HookTimeFrame**（用于分析的时间区间）决定。该策略是为捕捉插针而开发的（HookTimeFrame = 2 秒），不过也可以尝试更大的区间（最长 40 秒）。

### 注意事项

1. 由于 MoonHook 策略的内部机制，再次检测最早要在 HookTimeFrame 秒之后才可能发生；如果没有这一内部惩罚（penalty），可能会出现大量重复检测。
2. 策略每半秒重新计算一次检测条件。
3. 与其他策略不同，BuyModifier 在本策略中影响的是通道的宽度和深度。其工作方式：在检测时刻记录各项 Delta（价格变动幅度）。此后，如果 Delta 开始增长，当前 Delta 与检测时刻所记录的 Delta 之差乘以各自的系数，会影响通道的下边界和上边界。

**例如**：\
**✓** BuyModifier=-3（必须为负值！）\
**✓** 系数 Add3hDelta=0.05\
**✓** 检测时刻的 3hDelta = 10\
**✓** 之后 3hDelta 开始迅速增长，达到 50\
**✓** 差值 = 40\
如果检测时刻的价格通道为 -2%、-3%，那么当 Delta = 50（差值 = 40）时，通道将变为：\
\- 上边界 = -2 + (40\*0.05 \* (-3)/2) = -5%\
\- 下边界 = -3 + (40\*0.05 \* (-3)) = -9%\
⚠️ **重要**！上边界也会增大，但增幅正好是下边界增幅的一半！通道正是由此得以扩宽。

### 通用参数

- **BuyOrderReduce**：用于指定计算平均成交量所用的时间区间，单位为毫秒。策略挂出的订单大小不会超过该平均成交量。默认 BuyOrderReduce = 100（ms）。值为 0 时不应用。

  成交量的计算方式：将 **TimeInterval** 区间内所有买入 + 卖出成交的成交量（BV + SV）相加，再按 **BuyOrderReduce** 的时长折算。

  例如，TimeInterval = 5（秒），即 5000 ms，BuyOrderReduce = 100（ms），5 秒内全部成交的成交量为 10 000$，则 100 ms 的平均成交量为 10000 / 5000 ms \* 100 ms = 200$。此时策略挂出的 Buy 订单不会超过 200$。\
  换句话说，就是看 100 ms（或 10 ms / 5 ms，取决于参数 BuyOrderReduce 的值）内的平均成交量是多少——这就是策略会挂出的最大订单。

  订单缩减功能的工作情况可以通过日志中的如下记录看到：\
  **IOTA: \[1\] (40) Buy order reduced: 1000.00$ => 23$ (Vol: 23$)**\
  在这条日志中，策略里的 **OrderSize** 为 1000$，但 100 ms 的平均成交量只有 23$，因此策略挂出了 23$ 的 Buy 订单；
- **MinReducedSize**：用于指定应用参数 **BuyOrderReduce** 之后 Buy 订单的最小金额（USDT），低于该金额时不挂 Buy 订单。值为 0 时不应用。

  例如，MinReducedSize = 50（USDT），应用参数 **BuyOrderReduce** 后算出只能挂 23$ 的 Buy 订单，但这小于 50$，因此不会挂出 23$ 的 Buy 订单。
- **HookTimeFrame**：用于指定分析所用的时间区间，单位为秒，可填小数（0.4 至 10 秒）；
- **HookDetectDepth**：用于指定检测的最小深度，单位为百分比；
- **HookDetectDepthMax**：用于指定检测的最大深度，单位为百分比。值为 0 时不应用；
- **HookAntiPump**：复选框 **YES/NO**。\
  值为 **YES** 时，计算检测深度使用的是检测前的平均价格，这样可以排除紧跟在快速上涨之后出现的插针；
- **HookPriceRollBack**：用于指定价格回调的最小百分比，以总深度的百分比表示。\
  例如，HookPriceRollBack = 33（%）表示回调幅度为整段价格走势的三分之一；
- **HookPriceRollBackMax**：用于指定价格回调的最大百分比，以总深度的百分比表示。值为 0 时不应用；
- **HookRollBackWait**：用于指定价格保持在 **HookPriceRollBack** 之上的时间，单位为毫秒。建议值为 100 ms——这样可以排除插针之后价差内随即出现 1 笔偶然成交标记的情况。也可以设得更大，但插针、回调以及等待回调的整个过程必须在 **HookTimeFrame** 秒之内完成；
- **HookDropMin**：用于指定检测之前价格下跌的最小百分比，以最近 2 分钟内所记录的插针深度为基准计算。值为 0 时不应用；
- **HookDropMax**：用于指定检测之前价格下跌的最大百分比，以最近 2 分钟内所记录的插针深度为基准计算。值为 0 时不应用；\
  例如，出现了一次 10% 的插针。而此前该币种已经下跌了 2 分钟，在插针之前已下跌 20%。则 HookDrop = 20 / 10 \* 100 = 200%，即此前的跌幅是插针本身的 200%；
- HookDirection：用于选择朝哪个方向寻找检测的菜单：
  - **Both** – 两个方向；
  - **OnlyShort** – 向上的插针；
  - **OnlyLong** – 向下的插针。
- **HookOppositeOrder**：复选框 **YES/NO**。\
  值为 **YES** 时，终端会朝与检测相反的方向挂出 Buy 订单。\
  例如：
  - 当 HookDirection = OnlyShort（向上的插针）且 HookOppositeOrder = YES 时，将挂出做多的 Buy 订单；
  - 当 HookDirection = OnlyShort（向上的插针）且 HookOppositeOrder = NO 时，将挂出做空的 Buy 订单；
  - 当 HookDirection = OnlyLong（向下的插针）且 HookOppositeOrder = YES 时，将挂出做空的 Buy 订单；
  - 当 HookDirection = OnlyLong（向下的插针）且 HookOppositeOrder = NO 时，将挂出做多的 Buy 订单。
- **HookInterpolate**：用于指定数字 0、1、2、3、4：
  - 值为 0 时，策略以插针之前的高点价格为基准挂出 Buy 订单；
  - 值为 1 时，策略以插针之后的回调位置（即 **RollBack** 价格）为基准挂出 Buy 订单；
  - 值为 2 时，优先采用参数 **HookInitialPrice**；
  - 值为 3 时，订单和通道以当前价格为基准、相对于插针深度计算；
  - 值为 4 时，相对于回调深度计算。\
    如果它与价格通道相矛盾，通道的上边界会上移，移动距离为您的订单与当前价格之间距离的一半。\
    如果这在客观上无法实现，则检测不会触发。\
    在这一逻辑下，下边界被缩小。\
    做空和做多时逻辑相同。 \
    如果 **HookInterpolate** 设为 0，则不应用修正系数 **BuyModifier**。
- **HookInitialPrice**：用于指定 Buy 订单挂单位置的相对百分比，以价格下跌的总深度为基准。\
  例如，价格下跌了 10%，从 110 跌到 100。若 HookInitialPrice = 25（%），则 Buy 订单将挂在价格绝对跌幅 10% 的相对 25% 处，即比最低点高 2.5%：100 + 2.5% = 102.5。此参数可以设为负值，这时 Buy 订单会挂在下跌最低点之下；
- **HookPriceDistance**：用于指定价格通道的宽度，以检测总深度的百分比表示。\
  例如，检测到 5% 的下跌。HookPriceDistance = 10（%）表示 Buy 订单可以在以下范围内移动：\
  \- 上边界 5-5/100\*10=4.5%\
  \- 下边界 5+5/100\*10=5.5%（相对于当前价格）。\
  通道会随价格的变动上下移动，而 Buy 订单一旦落到通道之外，就会被重新挂回通道内。这样就实现了像 MoonShot 策略那样的跟随价格。值为 0 时，Buy 订单没有通道，也不跟随价格，只是停留在最初的位置，直到成交或被撤销；
- **HookPartFilledDelay**：用于指定 Buy 订单部分成交后到被撤销之前的延迟时间，单位为毫秒。为 0 时没有延迟，部分成交的订单会立即被撤销（与 MoonShot 策略相同）；
- **HookSellLevel**：用于指定 **SellPrice** 的值，以检测深度的百分比表示。\
  例如，**HookSellLevel** = 75（%）表示需要把 Sell 订单挂在插针的上四分之一处。**HookSellLevel** = 100% 表示需要把 Sell 订单挂在插针起始的最高点；
- **HookSellFixed**：复选框 YES/NO。若为 **YES**，则始终按（HookSellLevel \* 深度）百分比计算 Sell，与买入价无关；
- **HookReplaceDelay**：用于指定延迟时间，单位为秒，可填小数。当价格下跌（做多）或上涨（做空）、Buy 订单落到“MoonHook 通道”之外后，订单会被向下（做多）或向上（做空）重新挂回通道内（远离当前价格），但要先经过这段延迟；
- **HookRaiseWait**：用于指定延迟时间，单位为秒，可填小数。当价格上涨（做多）或下跌（做空），即 Buy 订单落到“MoonHook 通道”之外后，订单会被向上（做多）或向下（做空）重新挂回通道内（靠近当前价格），但要先经过这段延迟；
- **HookRepeatAfterSell**：复选框 **YES/NO。**\
  值为 **YES** 时，在 Sell 订单成交后再次挂出 Buy 订单；
- **HookRepeatIfProfit**：用于指定当前价格相对于买入价的百分比，高于该值时可以挂出重复的 Buy 订单。如果最初挂出的是 Buy 订单网格，则重复时只会挂出一笔 Buy 订单，而不是同样的 Buy 订单网格；
- **HookDetectMinVolume**：用于指定插针的最小成交量，单位为 USD。如果检测窗口（**HookTimeFrame**）内的总成交量小于该值，则忽略该检测。可用来过滤成交量很小的插针——它们虽然达到了检测所需的百分比，但并没有真实的流动性。值为 0 时不应用；
- **FastShotAlgo**：复选框 **YES/NO**。\
  值为 **YES** 时，将启用 MoonHook 策略中更快的 Buy 订单处理算法；建议勾选此复选框，并通过参数 **MoonReplaceDelay** 来控制重新挂单的减速。参数 **FastShotAlgo** 在所有交易所都可使用，但实际的加速效果取决于具体交易所。启用此参数会使 CPU 负载略有上升（约 10%）。

  FastShotAlgo = YES 时算法的工作特点：
  - 当 HookRaiseWait = 0 时使用算法 1；
  - 否则使用算法 2。

    例如可以设置 HookRaiseWait = 0.01，这不会影响交易，但会启用算法 2。

    算法 1：此时 MoonHook 策略 Buy 订单的价格按最近几笔成交计算。

    算法 2：此时 MoonHook 策略 Buy 订单的价格按 100 ms 内的最低成交价计算。副作用是，这种算法相当于“内置了 100 ms 的 raisewait”，即订单最早要在 100 ms 之后才会回到原位，因为计算时用的不是当前价格，而是 100 ms 内的最低价。因此“价格”在这 100 ms 内保持等于最低价，但这样的 Buy 订单远离价格的速度应当更快。

## 导航

路径: [首页](https://moonbot.eu/zh?format=md) / [文档](https://moonbot.eu/zh/documentation?format=md) / [策略](https://moonbot.eu/zh/documentation/strategies?format=md) / [策略的专用参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters?format=md) / MoonHook 策略及其参数

上级栏目: [策略的专用参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters?format=md)

上一页: [Spread 策略及其参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters/spread-strategy-and-its-parameters?format=md)

下一页: [Activity 策略及其参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters/activity-strategy-and-Its-parameters?format=md)

## 相关内容

- [Activity 策略及其参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters/activity-strategy-and-Its-parameters?format=md)
- [Alerts 策略及其参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters/alerts-strategy-and-its-parameters?format=md)
- [Watcher 策略及其参数](https://moonbot.eu/zh/documentation/advanced-strategy-parameters/watcher-strategy-and-its-parameters?format=md)
