Общие вопросы по разработке > Как правильно выставить тейк-профит на часть позиции через BreakingStop?

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
геннадий66
Сообщения: 1
Зарегистрирован: 06 мар 2026, 19:34

Как правильно выставить тейк-профит на часть позиции через BreakingStop?

Непрочитанное сообщение геннадий66 » 01 апр 2026, 19:17

Добрый день.

Разрабатываю робота для фонда CASH в Альфа-Директ 4.0. Особенность инструмента: 1 лот = 10 паёв. Цена в стакане указана за 1 пай.

Логика:

Рассчитываю количество лотов для покупки:
lotsToBuy = Math.Floor(сумма / (цена_пая * 10))

После покупки выставляю тейк-профит на 90% купленных лотов через BreakingStop:

csharp
double stopPrice = цена_пая * 0.97;
double targetPrice = цена_пая * 1.01;
BreakingStop(stopPrice, targetPrice, lotsForSale, SignalPriceType.Price);
Проблема:

Для фондов, где 1 лот = 1 пай, этот код работает — заявки появляются в терминале.

Для CASH (1 лот = 10 паёв) заявки не создаются, хотя в логе стратегии пишет ✅ ТЕЙК-ПРОФИТ (BreakingStop).

Вопросы:

Как правильно передать количество лотов в BreakingStop для инструментов с лотностью 10?

Нужно ли передавать количество в паях, а не в лотах?

Если BreakingStop не поддерживает частичное закрытие при такой лотности, как правильно выставить тейк-профит на часть позиции?

Нужен рабочий пример кода.

Спасибо.

Maks
Сообщения: 60
Зарегистрирован: 15 июн 2020, 15:29
Благодарил (а): 8 раз
Поблагодарили: 30 раз

Re: Как правильно выставить тейк-профит на часть позиции через BreakingStop?

Непрочитанное сообщение Maks » Сегодня, 13:33

геннадий66 писал(а):Если BreakingStop не поддерживает частичное закрытие при такой лотности

BreakingStop (и другие стопы в АИ) не поддерживает частичное закрытие ни при какой лотности. Нет там параметра lotsForSale.

Можно поставить отдельную тейк-профит заявку на нужное количество и пока она не исполнилась еще проверять условие цены для стоп-лосса. Выполнилось условие - снять тейк-профит и выставить закрытие нужного кол-ва по рынку, например (имитация стоплосса).
Если заявка тейкпрофит исполнилась полностью - условие стоплосса больше не проверять.

геннадий66 писал(а):BreakingStop(stopPrice, targetPrice, lotsForSale, SignalPriceType.Price);
Для фондов, где 1 лот = 1 пай, этот код работает

Сомнительно, что работает) оно даже не компилируется (нет варианта метода BreakingStop с 4 аргументами, lotsForSale явно лишний))

геннадий66 писал(а):Нужен рабочий пример кода.

Согласен!


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 32 гостя