Стратегии и роботы > вход в сделку разным количеством лотов/контрактов

Обсуждение, описание стратегий и роботов, идеи для стратегий
mig
Сообщения: 3
Зарегистрирован: 10 фев 2021, 18:41
Благодарил (а): 1 раз

вход в сделку разным количеством лотов/контрактов

Непрочитанное сообщение mig » 12 фев 2021, 19:04

Добрый день!
Прошу помочь со следующим вопросом:
по стратегии количество лотов/контрактов на вход в каждую сделку разное, рассчитывается исходя из текущего депозита и допустимого % риска.
Необходимые заявки на вход в сделки описал в тексте робота - на вход использую функции EnterLongStop и EnterShortStop.
При этом при тестировании робот всегда берет те количества, которые заданы в мастере тестирования - все время одни и те же.
Вопрос - как все-таки написать код, чтобы количество лотов на вход в сделки было разным?

Пробовал пользоваться функциями SetLongLimit и SetShortLimit (нашел в одной из соседних тем).
При тестировании на истории дополнительно с этими функциями робот не вошел ни в одну сделку, не дал ни одного сигнала.
Помимо прочего после компиляции текста с этими функциями перестали работать корректно некоторые кнопки в окне написания кода и в следующем окне (перезагрузка терминала не устранила проблему((.


Надеюсь кто-то сталкивался с такой же задачей

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

Re: вход в сделку разным количеством лотов/контрактов

Непрочитанное сообщение evge » 12 фев 2021, 20:55

Приветствую!

Задавайте количество в параметре

EnterLongStop(Price) - вариант без указания кол-ва
EnterLongStop(Price, Q) – закрыть текущий шорт в момент отправки команды по рыночным ценам (если он есть) и выставить стоп-заявку (STP) на открытие позиции лонг на разрешенное стратегией количество (или заданное количество Q) по цене Price.
EnterShortStop(Price) - вариант без указания кол-ва
EnterShortStop(Price, Q) – закрыть текущий лонг в момент отправки команды по рыночным ценам (если он есть) и выставить стоп-заявку (STP) на открытие позиции шорт на разрешенное стратегией количество (или заданное количество Q) по цене Price.

В тестировании и в роботе задается не количество на вход, а максимальное (разрешенное) количество, которое робот не превысит.

Если в заявке не указываете количество, то будет отправлять заданное максимальное (разрешенное).

Смотрите полезный документ Документация по скриптам для индикаторов и роботов в терминале Альфа-Директ 4.0, размещенный на этой странице:

Обучение работе с торговыми роботами
никогда такого не было и вот опять

mig
Сообщения: 3
Зарегистрирован: 10 фев 2021, 18:41
Благодарил (а): 1 раз

Re: вход в сделку разным количеством лотов/контрактов

Непрочитанное сообщение mig » 13 фев 2021, 21:45

Евгений, спасибо за обратную связь!

evge писал(а):EnterLongStop(Price, Q) – закрыть текущий шорт в момент отправки команды по рыночным ценам (если он есть) и выставить стоп-заявку (STP) на открытие позиции лонг на разрешенное стратегией количество (или заданное количество Q) по цене Price.


Именно так и делаю - считаю необходимое количество order и вхожу в сделку EnterLongStop (Price, order), при этом order пробовал и double и int - одинаковый результат - всегда робот входит в лонг одинаковым количеством контрактов, которое при тестировании указал.

evge писал(а):Смотрите полезный документ Документация по скриптам для индикаторов и роботов в терминале Альфа-Директ 4.0


Собственно отсюда все функции и брал, параллельно смотрел курс по созданию роботов на сайте АД )

Полный текст входа в лонг задаю следующим образом - может быть тут в логике проблема у меня?
Предполагаю, что эти 3 команды (2-3-4)ложатся в очередь и исполнятся по очереди:

1 - CancelStopLoss(); ///отменяю предыдущий стоплосс
2 - StopLoss(Input.High, SignalPriceType.Price); ///тут выхожу из предыдущей сделки - шорта, по рынку, если цена достигнет хая свечи. По стратегии нужно именно так, а не выход из шорта по рынку, как при прямом действии EnterLongStop, поэтому сначала эту заявку ставлю
3 - EnterLongStop(Input.High, order); ///Сразу же ставим вход в лонг по той же цене, который исполнится сразу после закрытия шорта (пока не рассматриваю кривые варианты частичного закрытия позиции)
4 - StopLoss(stop_loss, SignalPriceType.Price); ///сразу же выставляю новый стоплосс к новой сделке, если она осуществится

Тут у меня тоже вопрос - правильно ли понимаю, что 3 использованные команды StopLoss, EnterLongStop и StopLoss лягут в очередь и исполнятся по очереди, как мне нужно? или же есть какой-то другой более явный вариант?

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

Re: вход в сделку разным количеством лотов/контрактов

Непрочитанное сообщение evge » 13 фев 2021, 22:31

Я бы убедился что order - точно рассчитан, поставьте тут

EnterLongStop(Input.High, order);

например

EnterLongStop(Input.High, 1);

т.е. конкретное число и проверьте после этого равно ли открытие позиции в тестировании заданному кол-ву максимальной позиции заданной в тестировании
никогда такого не было и вот опять

mig
Сообщения: 3
Зарегистрирован: 10 фев 2021, 18:41
Благодарил (а): 1 раз

Re: вход в сделку разным количеством лотов/контрактов

Непрочитанное сообщение mig » 01 мар 2021, 13:27

evge писал(а):Я бы убедился что order - точно рассчитан, поставьте тут

EnterLongStop(Input.High, order);

например

EnterLongStop(Input.High, 1);

т.е. конкретное число и проверьте после этого равно ли открытие позиции в тестировании заданному кол-ву максимальной позиции заданной в тестировании


Евгений, благодарю! разобрался, действительно неверно подтягивались глобальные переменные и order неправильно рассчитывался.


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

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

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