public event Action<Position> PositionNetVolumeChangeEvent;
Данное событие срабатывает каждый раз, когда в позиции изменяется открытый объем, в качестве аргумента передает в обработчик изменившуюся позицию.
Представим ситуацию, когда робот торгует двуногий арбитраж, у нас уже есть логика открытия позиции по одной ноге при наличии расхождения, и теперь нужно при помощи события PositionNetVolumeChangeEvent реализовать логику выравнивания позиции по второй ноге.
- Создаем вкладку для первого инструмента.
- Подписываемся на событие изменения открытого объема первой ноги.
- Подписываемся на событие открытия позиции в первой вкладке.
- Создаем вкладку для второго инструмента.
- В обработчике события открытия позиции для первой ноги определяем направление позиции и во второй вкладке открываем позицию в противоположном направлении с таким же объемом.
- В обработчике события PositionNetVolumeChangeEvent для первой вкладки рассчитываем разницу в открытом объеме между позициями вкладок.
- Если разница равна нулю, выходим из метода.
- Если позиция первой вкладки лонг, значит вторая шорт, доливаемся.
- Иначе докупаем объем для второй вкладки.
Комментарии