Стратегии и роботы > Постоянная проблема с роботом

Обсуждение, описание стратегий и роботов, идеи для стратегий
ZiZ
Сообщения: 15
Зарегистрирован: 19 ноя 2019, 15:32
Благодарил (а): 1 раз

Постоянная проблема с роботом

Непрочитанное сообщение ZiZ » 14 сен 2020, 12:29

Добрый день!

Примитивный минутный робот переворачивается при отрицательном НПУ на одном фьючерсе нефти.
Заявки выполняются по маркету простыми командами EnterLong() и EnterShort() с инструкцией UseEnterMKT = true.
Указаны лимиты LongLimit = 1 и ShortLimit = -1.
Проверка каждого условия заканчивается командой return, чтобы лишние условия не срабатывали (так нужно).
На балансе средств больше, чем необходимо для двукратного ГО.

Вроде бы всё должно работать как часы, однако при сильном (важно!) движении рынка иногда странно срабатывает заявка и возникает несоответствие позиции робота и счёта: у робота один контракт, на счёте ноль.

На графике видно, что сработала заявка на закрытие позиции (прозрачный значок), но не сработала заявка на открытие.
После редактирования позиции и запуска робота выдаётся сообщение что-то типа "Заявка была исполнена в момент когда робот не работал".
Но это не так, робот всегда работал, сижу и смотрю за ним безотрывно. :)
Интернет соединение тоже не пропадало в этот момент.
Вторая остановка робота, повторное редактирование позиции и запуск приводят всё в нужно соответствие.

Вот сообщения робота с этой с ошибкой.

14.09.2020 11:49:18 Инструмент BRV0 (M1)=ФОРТС. Робот: -1шт (39.5р.) A_NPU_F.1
14.09.2020 11:49:18 100% данных получено A_NPU_F.1
14.09.2020 11:49:18 Робот запущен A_NPU_F.1
14.09.2020 11:49:18 Инструмент BRV0 (M1)=ФОРТС. Робот: -1шт (39.5р.) A_NPU_F.1
14.09.2020 11:49:18 Совершена сделка №185641010 на продажу 1шт A_NPU_F.1 вручную закрыл лишний второй лонг
14.09.2020 11:49:18 Обработка сделок по активной заявке при старте A_NPU_F.1
14.09.2020 11:49:18 Обработка активной заявки при старте A_NPU_F.1
14.09.2020 11:49:09 Инструмент BRV0 (M1)=ФОРТС. Робот: 0шт (0.0р.) A_NPU_F.1
14.09.2020 11:49:09 Изменение текущей позиции: Закрытие длинной позиции на 1шт A_NPU_F.1
14.09.2020 11:48:59 Робот остановлен A_NPU_F.1
14.09.2020 11:48:02 Очередь отложенных сигналов очищена: EnterShort(0) 1шт A_NPU_F.1
14.09.2020 11:47:05 Очередь отложенных сигналов очищена: EnterShort(0) 1шт A_NPU_F.1
14.09.2020 11:46:05 Очередь отложенных сигналов очищена: EnterShort(0) 1шт A_NPU_F.1

14.09.2020 11:44:03 Выставлена заявка №3797025084 на продажу 1шт A_NPU_F.1
14.09.2020 11:44:02 Открытие короткой позиции на 1шт (до минимального количества -1шт). EnterShort 39,45 A_NPU_F.1
14.09.2020 11:44:02 Закрытие длинной позиции A_NPU_F.1

Может быть нужно указывать точное число контрактов в EnterLong() и EnterShort() или выполнять переворот парой команд?
Например, чтобы перевернуть шорт: сперва CloseShort() (или ClosePosition()) потом EnterLong()?

Как решить эту проблему?

Вернуться в «Стратегии и роботы»

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

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