Добрый день.
Разрабатываю робота для фонда 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 не поддерживает частичное закрытие при такой лотности, как правильно выставить тейк-профит на часть позиции?
Нужен рабочий пример кода.
Спасибо.
Общие вопросы по разработке > Как правильно выставить тейк-профит на часть позиции через BreakingStop?
-
геннадий66
- Сообщения: 1
- Зарегистрирован: 06 мар 2026, 19:34
Re: Как правильно выставить тейк-профит на часть позиции через BreakingStop?
геннадий66 писал(а):Если BreakingStop не поддерживает частичное закрытие при такой лотности
BreakingStop (и другие стопы в АИ) не поддерживает частичное закрытие ни при какой лотности. Нет там параметра lotsForSale.
Можно поставить отдельную тейк-профит заявку на нужное количество и пока она не исполнилась еще проверять условие цены для стоп-лосса. Выполнилось условие - снять тейк-профит и выставить закрытие нужного кол-ва по рынку, например (имитация стоплосса).
Если заявка тейкпрофит исполнилась полностью - условие стоплосса больше не проверять.
геннадий66 писал(а):BreakingStop(stopPrice, targetPrice, lotsForSale, SignalPriceType.Price);
Для фондов, где 1 лот = 1 пай, этот код работает
Сомнительно, что работает) оно даже не компилируется (нет варианта метода BreakingStop с 4 аргументами, lotsForSale явно лишний))
геннадий66 писал(а):Нужен рабочий пример кода.
Согласен!
-
gaponova_vik
- Сообщения: 1
- Зарегистрирован: Сегодня, 12:38
Re: Как правильно выставить тейк-профит на часть позиции через BreakingStop?
Коллеги, добрый день.
Сталкиваюсь с проблемой при попытке частичного закрытия позиции (продажа 90%, удержание 10%) в Альфа-Директ 4.0.
Суть:
Робот открывает позицию (EnterLong).
Нужно выставить лимитную заявку на продажу части лотов.
Метод EnterShortLimit(price, qty) в логах стратегии пишет об успехе, исключений не ловит.
Факт: В терминале (вкладка «Заявки») заявка не появляется, в стакане пусто.
Если использовать BreakingStop, заявка появляется, но закрывает 100% позиции, что ломает логику стратегии (мне нужно оставить 10%).
Минимальный пример кода:
Вопрос к разработчикам и опытным пользователям:
Это баг шлюза для инструментов БПИФ (VTBL, CASH)?
Или есть другой корректный метод для частичного закрытия, который реально отправляет заявку в шлюз?
Версия АД4: [последняя ВЕРСИЯ].
Сталкиваюсь с проблемой при попытке частичного закрытия позиции (продажа 90%, удержание 10%) в Альфа-Директ 4.0.
Суть:
Робот открывает позицию (EnterLong).
Нужно выставить лимитную заявку на продажу части лотов.
Метод EnterShortLimit(price, qty) в логах стратегии пишет об успехе, исключений не ловит.
Факт: В терминале (вкладка «Заявки») заявка не появляется, в стакане пусто.
Если использовать BreakingStop, заявка появляется, но закрывает 100% позиции, что ломает логику стратегии (мне нужно оставить 10%).
Минимальный пример кода:
Код: Выделить всё
// 1. Покупка (отрабатывает корректно)
EnterLong(100);
// 2. Расчет частичного закрытия
int qtyToSell = 90; // 90% от 100
double targetPrice = GetCurrentPrice() * 1.01;
// 3. Попытка продать часть
try
{
// В логе: "Успешно", но в терминале тишина
EnterShortLimit(targetPrice, qtyToSell);
}
catch (Exception e)
{
// Ошибки нет
}Вопрос к разработчикам и опытным пользователям:
Это баг шлюза для инструментов БПИФ (VTBL, CASH)?
Или есть другой корректный метод для частичного закрытия, который реально отправляет заявку в шлюз?
Версия АД4: [последняя ВЕРСИЯ].
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: Majestic-12 [Bot] и 9 гостей