ТЗ для разработки ПО для робота- сеточника с моим названием « Сетка МММ» . С передачей продукта заказчику и без права пользоваться третьими лицами. Для примера берем фьючерс Сбера получаем о нем информацию из ТТТ ( таблица текущих торгов ) где нас интересуют данные которые будут роботом применять при настройках и наших дальнейших расчетах : - Кол-во знаков после запятой (Переменная = 0 знаков) - Шаг цены (переменная =1 шаг ) - Стоимость шага цены ( переменная = 1 рубль ) - Стоимость ГО покупки ( Переменная сейчас = 5900 руб ) - Стоимость ГО Продажи ( Переменная сейчас = 6100 руб ) - Текущая цена ( Переменная равна 33650 - Комиссии биржи и брокера ( за лот или сделку ) подставляются руками. Дополнительно от брокера запрашиваем инфу : Начальный размер портфеля на утро ; Текущий размер портфеля ; Свободно и Занято денег ; Текущая позиция лотов по Тикеру Далее нужно взять необходимые библиотеки из МТ5 либо самостоятельно написать весь код робота с ноля. Принцип работы робота и интерфейс настроек ( Переменные изменяемые пользователем ) примерно такой : Создаем раздельные модули торгующие Шортовым направлением и отдельно Лонговым направлением ( для примера здесь рассмотрю лонговое направление а шортовое будет ему идентично , но теоретически робот может и одновременно обоими направлениями торговать ) Это ТЗ и Пример в основном сделан для Лонгового направления , но некоторые ячейки настроек в интерфейсе будут общими с шортовым направлением : 1- В интерфейсе в нужной ячейке выбираем направленность торговли - значение : Лонг ; или шорт ; или Лонг + Шорт ; или не торговать . 2- От какого уровня начнется выставление набирающих позу заявок . ( Текущая фьючерс Сбера 33650 и выбераем например 33500 ( при этом при выборе пользователь сам кратность рассчитает если уровни будут ставиться через несколько шагов а промежуточные не используемые уровни цен роботом будут полностью игнорироваться уже автоматически или же при помощи изменения Переменной « Шаг цены» . ПРИМЕЧАНИЕ За каждым уровнем цены нужно закрепить заготовку заявки и в случае прострела цены и проскальзывании за уровень заявок то пролетевшие заявки выставлять так чтобы они не исполнились « По рынку» , а в случае отката цены после прострела то перемещать их на свои родные уровни. ПРИМЕЧАНИЕ : на случай если во время торгов пользователь поменяет этот настроечный уровень например на 3555 и чтобы на уровне не оказалось потом 2 заявки , то Робот хранит в памяти только вторичные на фиксацию заявки и уровень куда потом восстановить после фиксации прибыли её на обратное её место в Качестве Первичной заявки , поэтому прежде чем восстановить её то скрипт перепроверяет а не установленна ли уже там первичная заявка и если нет то выставляется на этот уровень а если там уже стоит другая тогда отмена и конец цикла. 3- Шаг уровней ( на каждый шаг или через сколько то шагов ставится следующая заявка ) ПРИМЕЧАНИЕ : можно обойтись без этой переменной и по умолчанию ставить на каждый шаг а для пропуска уровней изменять скачанную из ТТТ переменную « Шаг Цены» методом умножение на желаемый размер пропускаемых уровней . 4-Назначаем переменную « При приближении цены на сколько шагов начинать выставлять заявки 5- Назначаем Переменную сколько заявок одновременно будет выставлено на биржу для каждого из направлений Лонг и Шорт 6- Назначаем Переменную при каком удалении цены в шагах снимать сильно удалившиеся заявки отдельно Лонгу и отдельно Шорту 7-Назначаем время для запуска циклов трех предыдущих переменных ( например 10 секунд ) ......... ( Раздельно для Лонг и Шорт Направлений ) 8- Назначаем желаемый профит в шагах ( например 50 шагов а проценты здесь совсем не используем ) Это нужно для того что как только исполнится набирающая позу заявка ( Назовем их Первичными заявками ) , то сразу же через назначенных 50 шагов отправляем на биржу Лимитную ( со сроком действия ) ВТОРИЧНУЮ заявку на закрытие профита . Если же эта Вторичная заявка исполняется тогда отправляем на биржу её как первоначальную Первичную ( тоесть восстанавливаем уровневую наборную (Первичную ) заявку ) 9- Назначаем переменную в шагах для случаев большой удаленности от спреда для снятия Вторичных из биржевого стакана . Бывают моменты когда такие заявки сильно отдалились от спреда и нет смысла их держать на бирже , поэтому снимаем её и перемещаем в Массив хранения.............. ( Раздельно для Лонг и Шорт Направлений ) 10-Назначаем Переменную за сколько шагов при приближении цены эти Вторичные заявки будут восстанавливаться из массива хранения в Биржевой стакан . ( Раздельно для Лонг и Шорт Направлений ) 11- Назначаем время для запуска циклов двух предыдущих переменных ( например 30 секунд ) ............. ( Раздельно для Лонг и Шорт Направлений ) 12- Выбираем используемый тип заявок , за основу берем Лимитки ( чтобы они на вечернем Клиринге не снимались то сразу в них нужно ставить дату срока действия заявки ) 13- Для лонгового направления выбираем Размер лота первичных заявок которые будут все одинакового размера ( но при наличии у разработчика готовых модулей тогда приветствуется возможность при желании пользователя и по мере удаления от спреда прогрессивное математическое или геометрическое увеличение размера заявок для следующего по удаленности уровня ) 14- Для шортового направления Размер лотов будет самостоятельным 15- Для шортового направления будут нужны аналогичные Переменные и собственный модуль , так как действия в основном в нем будут противоположно направленные. 16- Возможно что то забыл или упустил и дополню в процессе создания робота . 17- Образец интерфейса для настроек робота и вывода информации для пользователя ( и что именно будет заполняться или рассчитываться в ячейках интерфейса ) выложу позднее , если нет у разработчика своего отточенного интерфейса пользователя. А также распишу более полную структуру робота и какие таблицы и массивы нужны будут в нем. Дополнительно в дальнейшем нужны будут другие доработки и разработки отдельных Модулей : - Модуль Риск-Менеджер ( функциональность и назначение отдельно распишу ) , - Мартингейл Модуль , и функционал частичной фиксации и дальнейшего восстановления общей позиции в портфеле в желаемых по алгоритмам случаях . - Модуль учета всех своих сделок и расчета по ним общих за все время торгов выбранным тикером и отдельно за текущий день прибыли и убытка с сохранением в файлы хранения - Модуль циклично перезаписывающий в файл текущие настройки и какие заявки сейчас стоят на бирже а какие исполнились ( на случай отключения света или потери интернета ) Из этого модуля при повторном запуске робот будет забирать последнюю сохраненную инфу . - Модуль Сбора по данному тикеру ( в этом случае фьючерс Сбера ) Обезличенных Сделок с дальнейшей статистической аналитикой и на его основе Модуль тестовых прогонов с фиксацией результатов Теста