---
id: spread-strategy-and-its-parameters
title: "Стратегия \"Spread\" и её параметры"
section: documentation
category: "Стратегии / Специальные параметры стратегий"
url: https://moonbot.pro/ru/documentation/advanced-strategy-parameters/spread-strategy-and-its-parameters
locale: ru
status: published
updated_at: 2026-08-31T19:38:53+00:00
---

# Стратегия "Spread" и её параметры

Чтобы в списке стратегий терминала Moonbot появилась стратегия Spread нужно активировать платный пакет расширений для Автоторговли.

⚠️ Внимание! Стратегия Spread связана с очень высокими рисками. Используйте её без автопокупки, как детект, чтобы понять как она работает. Только после полного понимания настраивайте на реальную торговлю.

![Пример работы стратегии Spread на листинге монеты DODO](https://moonbot.pro/storage/editor-images/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D1%8F%20Spread.png)

![Пример работы стратегии Spread на листинге монеты DODO (dark)](https://moonbot.pro/storage/editor-images/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D1%8F%20Spread.png)

Пример работы стратегии Spread на листинге монеты DODO.

Под спредом понимаем активные торги в зоне между границами ASK и BID, определяемой временем и размахом цены.

### Общие параметры

- TimeInterval: поле для указания интервала времени в дробных секундах, на котором производится расчёт (от 0.5 до 30 сек., по умолчанию 5);
- TradesDensity: поле для указания плотности трейдов по времени, в целых процентах от 10 до 100, по умолчанию 80. Для вычисления плотности трейдов интервал TimeInterval делится на маленькие кусочки (корзины) по 100мс и считается отношение кусочков, где есть хотя бы 2 трейда с разной ценой, и “пустых” кусочков (без трейдов). Например, плотность трейдов TradesDensity = 100 (%) означает, что трейды с разными ценами есть как минимум каждые 100мс;
- TradesDensityPrev: поле для указания значения плотности трейдов перед детектом, которая вычисляется перед детектом за предыдущий интервал времени, так же равному значению TimeInterval. Целое положительное число от 0 до 100, по умолчанию 20, если 0, то параметр не используется. Позволяет отсечь монеты, которые изначально лежали. Для пампов следует в этом параметре устанавливать 0, так как нужны как раз лежачие монеты (с малой волатильностью перед возникновением спреда цены);
- TradesCountMin: поле для указания минимального значения трейдов каждые 100мс на всем интервале детекта. Целое положительное число от 0 и без верхнего предела, по умолчанию 0. Если 0, то не применяется. При большом значении этот параметр может сильно зажать детекты, так как будет брать только среды с высокой плотностью трейдов;
- PriceIntervals: поле для указания количества равных интервалов, на которые поделится TimeInterval для вычисления размаха цены. Целое положительное число от 1 до 100, по умолчанию 10. TimeInterval делится на PriceIntervals частей, на каждой части считается максимальная и минимальная цена и дельта (разница) между ними;
- PriceIntervalShift: поле для указания целого положительного числа от 0 до 5. Данная настройка отсекает детекты от одиночной стрелы, попавшей на границу измеряемого куска. Принцип расчёта: интервал анализа сдвигается влево на 100мс PricelntervalShift раз. Каждый раз на полученном сдвигом интервале идёт пересчёт условий детекта. Итоговый детект сработает, если условия выполнены на всех сдвинутых интервалах. Если 0, пересчёт не производится;
- PriceSpread: поле для указания минимальной величины спреда в процентах для детекта. Дробное положительное число от 0.01 и без верхнего предела, по умолчанию 0.3. Детект происходит, если на каждой части PriceIntervals размах цены был больше, чем PriceSpread. Если у стратегии Spread включены модификаторы, то порог динамически подрастает по волатильности. Общий размах должен быть шире трёх шагов цены биржи - на монетах с грубым шагом детекта не будет;
- PriceSpreadMax: поле для указания максимального общего размаха за всё окно вычислений. Целое положительное число от 0 и без верхнего предела, по умолчанию 0. Если 0, то не применяется.
- IntervalsForBuySpread: поле для указания количества последних отрезков из PriceIntervals для расчёта минимальных и максимальных границ цен коридора спреда, от которых считаются цены входа и выхода. Целое положительное число от 0 до 10, по умолчанию 3. Если 0, то считается на всем TimeInterval. Отрезки, где цена вообще не двигалась, в расчёт границ не идут;
- BuyPriceInSpread: поле для указания значения в процентах, на которое следует выставить Buy ордер в спреде. Целое положительное или отрицательное число без ограничений, по умолчанию 20. Если лонг, то этот процент отсчитывается от минимальной цены вверх, если шорт, то от максимальной цены вниз.Примеры:
  - Если BuyPriceInSpread = 0 (%), то Buy ордер в лонг установится на минимальную цену в спреде
  - Если BuyPriceInSpread = 50 (%), то Buy ордер в лонг установится посредине спреда
  - Если BuyPriceInSpread = -100 (%), то Buy ордер в шорт установится выше на удвоенное расстояние спреда.Обратите внимание! Параметр buyPrice из вкладки Buy conditions так же влияет на цену покупки. BuyPriceInSpread в этом случае определяет “базовую цену”, от которой уже отсчитывается buyPrice. И каждый повторный ордер уменьшает значение на 4 (не ниже 0), то есть повтор заходит глубже в коридор.
- SellPriceInSpread: поле для указания значения в процентах, на которое следует выставить Sell ордер в спреде. Целое положительное или отрицательное число без ограничений, по умолчанию 80. Аналогично параметру BuyPriceInSpread, но только уже предопределенная цена продажи в зависимости от спреда. В отличие от BuyPriceInSpread, цена продажи берётся как одна максимальная или из SellPrice, или из цены продажи по спреду. Иначе говоря, если SellPrice меньше спреда, например SellPrice=0, то продажа ставится по спреду. Если больше, то продажа ставится по SellPrice. Также на цену продажи влияют модификаторы;
- BuyOrderReduce: поле для указания интервала в миллисекундах, на котором считать средний объем торгов. Стратегия выставит ордер размером не больше, чем средний объём. Целое положительное число от 0 до значения TimeInterval×1000, например, если TimeInterval=5 мс, то максимальное значение будет BuyOrderReduce = 5х1000 = 5000 мс, по умолчанию 100 мс. Если 0, то не применяется.Объём считается так: суммируется объём всех сделок покупки + продажи (BV + SV) на интервале TimeInterval и делится на BuyOrderReduce. Например, если TimeInterval = 5 (сек.), то есть 5000 мс, BuyOrderReduce = 100 (мс), объём всех сделок за 5 сек. был 10 000$, то средний объем за 100 мс будет равен 10000 / 5000мс * 100мс = 200$. В этом случае стратегия выставит Buy ордер не более 200$.Иначе говоря, смотрим какой же был средний объем за 100 мс / 10мс / 5мс, это и есть наш максимальный ордер, который выставит стратегия.Работу механизма уменьшения ордера можно увидеть в логе по такой записи:IOTA: [1] (40) Buy order reduced: 1000.00$ => 23$ (Vol: 23$)В этом логе OrderSize в стратегии стоял 1000$, но средний объем торгов за 100 мс составил всего 23$, поэтому стратегия выставила Buy ордер размером 23$. Механизм уменьшения ордера не допускает его уменьшения ниже минимального размера ордера на бирже.
- MinReducedSize: поле для указания минимального значения размера Buy ордера в USDT, после применения параметра BuyOrderReduce, ниже которого Buy ордер не выставляется. Дробное положительное число, от 0 и без верхнего предела, по умолчанию 0. Если 0, то не применяется.Параметр работает только при BuyOrderReduce больше нуля, и это самая ранняя отсечка - раньше проверок плотности и размаха спреда. Например, MinReducedSize = 50 (USDT), после применения параметра BuyOrderReduce посчитано, что можно выставить Buy ордер только на 23$, но это меньше 50$ и Buy ордер на 23$ выставлен не будет, а в логе будет запись "Reduced order would be too small".Параметр работает только при BuyOrderReduce больше нуля, и это самая ранняя отсечка - раньше проверок плотности и размаха спреда.
- SpreadRepeatIfProfit: поле для указания относительного процента от цены покупки до цены продажи, когда стратегии разрешается повторное выставление Buy ордера в первые ~2 секунды после детекта (не позже). То есть повторный Buy ордер может быть выставлен, если текущая цена выросла и стала больше продажи больше цены покупки на SpreadRepeatIfProfit процентов и в течение ~2 секунд после детекта. Если 0, то повторные ордера не ставятся.Например, если SpreadRepeatIfProfit = 100 (%), то текущая цена должна достичь цены Sell ордера и позиция была продана, тогда стратегии разрешено выставить повторный Buy ордер.Если SpreadRepeatIfProfit = 50 (%), то текущая цена должна достичь половины расстояния между ценой покупки и ценой Sell ордера и тогда стратегии будет разрешено выставить повторный Buy ордер.Повторных Buy ордеров в стратегии Spread разрешено выставлять не более 5 из-за внутреннего ограничения в коде.
- SpreadFlat: галочка YES/NO. Если YES (по умолчанию), то стратегия будет пытаться определять спред в горизонтальном канале: свежая средняя цена внутри границ самого старого куска, и каждый кусок перекрывается со старым не меньше чем на 75% ширины коридора, та же проверка идёт и относительно предпоследнего куска. Это и есть защита от работы в наклонном канале, который формально даёт нужный размах;
- Spread_BV_SV_Time: поле для указания интервала в миллисекундах для замера объёма покупок (BV: BuyVolume) и объёма продаж (SV: SellVolume). Целое положительное число от 0 до 30000 мс, по умолчанию 3000. Если 0, то не применяется и выключает всю связку параметров BV_SV в этой стратегии;
- Spread_BV_SV_Max: поле для указания максимального отношения объёма покупок (BV: BuyVolume) к объему продаж (SV: SellVolume). Дробное положительное число от 0 до 100 (можно ввести и большее число, но это фактическое максимальное значение), по умолчанию 0. Если 0, то не применяется;
- Spread_BV_SV_Min: поле для указания минимального отношения объема покупок (BV: BuyVolume) к объёму продаж (SV: SellVolume). Дробное положительное число от 0 до 100 (можно ввести и большее число, но это фактическое максимальное значение), по умолчанию 0. Если 0, то не применяется.Если в стратегии стоит шорт, то отношение переворачивается автоматически, то есть для шорта считается отношение объёма продаж (SV) к объёму покупок (BV).Пример: Spread_BV_SV_Time = 1500 мс. За последние 1500 мс было Buy трейдов на 500$ и Sell трейдов на 1000$.Отношение BV/SV будет 500/1000 = 0.5 для лонга или 1000/500 = 2 для шорта соответственно.
- SpreadPolarityMin: поле для указания минимальной границы коридора полярности спреда. Целое число от -100 до 100, по умолчанию -100.
- SpreadPolarityMax: поле для указания максимальной границы коридора полярности спреда. Целое число от -100 до 100, по умолчанию 100.Полярность спреда показывает, к какому краю коридора жмётся цена относительно скользящей средней: если "-100", то прострелы только вниз, если "100", то прострелы только вверх, свежие маленькие кусочки (корзины) по 100мс весят больше.Внимание! Максимум считается по последним 5 секундам, даже если окно шире.

#### Пример стратегии Spread

TimeInterval = 5 (сек.) TradesDensity = 100PriceIntervals = 5 PriceSpread = 0.3 (%)IntervalsForBuySpread = 2BuyPriceInSpread = 5 (%)SellPriceInSpread =100 (%)BuyOrderReduce = 100 (мс)

Для этих параметров нужно, чтобы за последние 5 секунд каждую секунду имело место колебание цены выше 0.3%. Для расчёта Buy и Sell ордера будут выбираться последние 2 интервала (IntervalsForBuySpread=2), Buy ордер будет выставляться на относительные +5% от минимального значения спреда, а Sell ордер на относительные +100%, то есть на максимум спреда.

При этом, если приведённый объём за 100мс будет меньше, чем размер Buy ордера, указанный в параметре OrderSize стратегии, то будет выставлен Buy ордер, равный этому приведённому объёму за 100мс.

1. ОЧЕНЬ важно использовать фильтры по Latency в стратегии Spread, поскольку значения цен для детекта спреда берутся по трейдам (крестикам на графике). Если цены поступают с задержкой, то детект может сработать, когда цена уже резко выросла!

2. При частичном заполнении Buy ордера стратегия снимает его, и весь исполненный объём выставляет на продажу, аналогично как и в стратегии MoonShot.

3. Пересчёт условий детекта производится раз в полсекунды.

4. Стратегия учитывает модификаторы детекта (модификатор влияет на PriceSpread).

5. Рекомендуется эту стратегию использовать с коротким EMA фильтром, например EMA(30,2) для определения роста или падения цены и выставления высокого Sell ордера на шорт или лонг соответственно.

6. Если в терминале Moonbot включено несколько стратегий Spread, то детекты и выставление ордеров будут по каждой из них, так как у стратегии Spread на вкладке Main всегда включён параметр IndependentSignals = YES. При этом над графиком после детекта от стратегии Spread будет отображаться информационная строка со значениями в момент детекта.

7. Также значения параметров стратегии Spread можно наблюдать в верхней части графика монеты, на которой она сработала. Для этого нужно на вкладке Настройки → Специальные → System включить галочку Extended Debug Mode.

![Spread Strategy1 W](https://moonbot.pro/storage/editor-images/Spread_Strategy1_W.jpg)

![Spread Strategy1 W (dark)](https://moonbot.pro/storage/editor-images/Spread_Strategy1_B.jpg)

Так же эти значения есть в строке с детектом в отчёте:

![Стратегия Spread](https://moonbot.pro/storage/editor-images/Spread_Strategy2_W-rus.jpg)

![Стратегия Spread (dark)](https://moonbot.pro/storage/editor-images/Spread_Strategy2_B-rus.jpg)

8. Дополнительно можно настроить отправку сообщений о стратегии Spread в Телеграм и получать там сообщения такого вида:

Signal (strategy ) coin: #KNTQ SpreadDetection: Spread: TD: 10% TD2: 2% dP: 1.9% Vol: 1.7 k Trades: 2 Spread: 1.9% N: 2 (K2: +64.1) bv/sv: 4.19

TD: плотность трейдов в процентах (TradesDensity)

TD2: плотность трейдов перед детектом в процентах (TradesDensityPrev)

dP: размах цены на всем интервале TimeInterval в процентах

Vol: средний объем, рассчитанный по параметру BuyOrderReduce в USDT

Trades: количество трейдов (TradesCountMin)

Spread: минимальный размах по кускам спреда, в процентах (PriceSpread)

N: число кусков, на которых выявлен спред, последние два на графике появляются только в момент детекта (PriceIntervals)

K2: полярность (направление) спреда, лежит в диапазоне от +100 до -100 (SpreadPolarity)

bv/sv: отношение объема покупок BuyVolume к объему продаж SellVolume (Spread_BV_SV)
