Auftrag beendet
Spezifikation
Основная задача создать обобщенный класс для торговых операций и вычислений - на базе стандартных классов.
Главное в работе - это качество кода этого класса в классическом стиле Объектно-ориентированного программирования (ООП). Архитектура обобщенного класса должна быть максимально структурирована для дальнейшего масштабирования и развития. Нужно чтобы были максимально соблюдены все проверки при выполнении торговых операций и обработаны ошибки при отказе от сервера или ошибки во входных переменных функций (методов).
Просьба исполнителей которые не имели реального опыта использования нижеуказанных классов и твердых навыков в ООП не предлагать свои услуги, т.к. нужен разработчик с реальным торговым опытом использования данного подхода при открытии торговых операций.
Требуется:
1. Разработать общий класс для открытия, ведения и закрытия торговых позиций и ордеров на базе стандартных классов:
Торговые классы:
- CAccountInfo
- CSymbolInfo
- COrderInfo
- CHistoryOrderInfo
- CPositionInfo
- CDealInfo
- CTrade
- CTerminalInfo
Классы управления капиталом и рисками:
CMoneyFixedLot
CMoneyFixedMargin
CMoneyFixedRisk
CMoneyNone
CMoneySizeOptimized
плюс возможно другие на усмотрение исполнителя.
Для демонстрации работоспособности этого класса нужно написать эксперта на базе простого трендового индикатора. Сам код индикатора приложен.
В классе должны быть реализованы функции (методы):
- Открытие рыночного ордера
- Открытие лимитного ордера
- Закрытие позиции
- Снятие ордера
- Частичное закрытие позиции (три закрытия). Каждое частичное закрытие должно рассчитывать лот закрытия/процент закрытия от текущего лота позиции
- Расчет размера лота по риску (от стопа). Лот должен рассчитываться от депо/эквити/маржи
- Количество открытых позиций (по типам)
- Количество установленных ордеров (по типам)
- Нормализация лота
- Проверка правильности расчета позиции/ордера перед их открытием. Т.е. проверка лота/стопа/тейка с учетом маржи/плеча. А также учет предельного риска на депо.
Описанные выше функции должны учитывать тип рынка и счета (внебиржевого неттинг/хеджинг и биржевой).
Возможность подсчета по текущему меджику и по счету в целом:
- прибыль/убыток в валюте счета
- прибыль/убыток в процентах
- маржу
- комиссию
- своп
- цену безубытка по открытым нескольким позициям
P.S. дополнительный функционал предложенный исполнителем - приветствуется.
Ведение позиций и ордеров должно сохранятся в базе данных (БД) sqllite где должна храниться информация по
- типу позиции (ордере)
- размер первоначального лота
- текущее состояние (выставлен ордер/открыта позиция/частичное закрытие 1(2,3)/закрыта позиция)
- результат открытия/установки позиции/ордера
- цена
- цена частичного закрытия (три закрытия)
- размер лота частичного закрытия (в лотах и процентах для каждого из трех)
- меджик
- тип сигнала (текстовое поле)
- цена сигнала
- цена стоп сигнала
- цена тейка сигнала
- прибыль/убыток по позиции
- комиссия
- своп
2. На базе разработанного класса создать советник по индикатору (индикатор готов)
Индикатор представляет собой трендовый индикатор со значениями состояния тренда (восходящий/нисходящий) уровнями стопа и уровнями лимитного открытия.
Входные параметры советника:
- Меджик <int>
- Вход лимиткой от лимитного уровня <true/false>
- Вход по рынку при смене тренда <true/false>
- Закрывать позицию при смене тренда <true/false>
- Снимать лимитку при смене тренда <true/false> (лимитка передвигается по уровню индикатора)
- Тип расчета лота (лот/риск(%)) <enum>
- Метод расчета лота по риску (депо/эквити/маржа) <enum>
- Размер лота <double>
- Риск на сделку (%) <double>
- Тип тека (пункты/коэф. от стопа RR(%)) <enum>
- Коэф.(RR) для тейка <double>
- Тейк пипсы (0 – не выставлять) <int>
- Стоп отступ от уровня стопа пипсы (0 – не выставлять) <int>
- Ограничение убытков в день по счету, % (0 - не использовать) <double>
- Ограничение загрузки депо по открытым позициям(ордерам) по счету, % (0 - не использовать) <double>
- Максимальное кол. позиций(ордеров) на продажу <int>
- Максимальное кол. позиций(ордеров) на покупку <int>
- Использовать частичное закрытие <true/false>
- - процент закрытия от текущего лота 1 <double>
- - кол. пройденных пипсов для закрытия 1 <int>
- - процент закрытия от текущего лота 2 <double>
- - кол. пройденных пипсов для закрытия 2 <int>
- - процент закрытия от текущего лота 3 <double>
- - кол. пройденных пипсов для закрытия 3 <int>
- Использовать трейллинг <true/false>
- Отступ для трейллинга от уровня стопа (пипсы) <int>
Пояснение к советнику
