工作已完成
指定
Здравствуйте! Хочу заказать создание автоматической торговой системы, которая будет сама выставлять отложенные ордера с заданными параметрами и с заданным шагом. Торговый робот при запуске будет выставлять отложенные ордера сверху и снижу от текущей цены и при смещении котировки, он будет смещать сетку ордеров. Более подробная информация в прикреплённом файле. Если можете это реализовать, то напишите пожалуйста свою цену и срок...
Обновляю... Вот тех задание:
Автоматический торговый робот (техническое задание)
Используемые параметры и опции:
1. Шаг – шаг сетки ордеров.
2. Контрольная котировка.
3. Ордер 1
А) Тейк профит ордера 1
Б) Стоп лос ордера 1
В) Трейлинг стоп ордера 1
Г) Опция отключения ордера 1
4. Ордер 2
А) Тейк профит ордера 2
Б) Стоп лос ордера 2
В) Трейлинг стоп ордера 2
Г) Опция отключения ордера 2
5. Ордер 3
А) Тейк профит ордера 3
Б) Стоп лос ордера 3
В) Трейлинг стоп ордера 3
Г) Опция отключения ордера 3
6. Ордер 4
А) Тейк профит ордера 4
Б) Стоп лос ордера 4
В) Трейлинг стоп ордера 4
Г) Опция отключения ордера 4
7. Спред
8. Манименеджмент
9. Максимальный лот
10. Кнопка старт
11. Кнопка стоп
Общие положения и описание алгоритма:
Советником управляют две кнопки, все параметры задаются в свойствах советника.
Кнопка 1 - это кнопка СТАРТ - запускает советника.
Кнопка 2 - это кнопка СТОП - останавливает работу советника, удаляет все отложенные ордера и закрывает все открытые позиции.
После ввода всех параметров и при нажатии кнопки СТАРТ, робот формирует линейку цен открытия с заданным шагом отталкиваясь от заданной контрольной котировки. Далее робот выставляет отложенные ордера в обе стороны от текущей цены используя полученную линейку цен открытия на расстояние 1000 пунктов для валютных пар 5 знаков после запятой. Например, текущая цена пары евро-доллар 1,08556 (параметры ШАГ=100, КОНТРОЛЬНАЯ КОТИРОВКА=1,13000) – запускаем робота и робот выставляет ордера выше цены на отметках:
1,08600
1,08700
1,08800
1,08900
1,09000
1,09100
1,09200
1,09300
1,09400
1,09500
1,09600
Всего выше текущей цены будет выставлено 44 ордера, по 4 ордера на каждую цену открытия
В обратную сторону (вниз от текущей цены) робот будет выставлять ордера начиная с
1,08500
1,08400
1,08300
1,08200
1,08100
1,08000
1,07900
1,07800
1,07700
1,07600
1,07500
Итого при запуске системы, будет выставлено 88 ордеров.
Далее робот будет следить, чтоб от текущей цены ордера были выставлены в обоих направлениях на расстоянии 800 пунктов (для 80 пунктов, если у брокера 4 цифры после запятой). Для реализации данного алгоритма нужно будет закрывать ордера, которые будут располагаться более чем на 1300 пунктов (130 для 4-х знаков после запятой) от текущей цены и соблюдать условие, чтоб максимальное количество открытых и выставленных ордеров не превышало 88 штук. Например, запустили робота при цене евро-доллар 1,09050 и он проставил отложенные ордера сверху и снизу от этой цены и котировка пошла вниз, открыла 4-ре ордера на 1,09000, далее 4-ре 1,08900, далее 4-ре 1,08800 и как только перевалила за 1,08800, в ту же секунду, робот удаляет 4-ре ордера на цене открытия 1,10100, т.к. они стали дальше от текущей цены более чем на 1300 пунктов и открывает четыре ордера на 1,07900, т.к. на этой цене робот ордера не поставил. Подобный механизм перемещения отложенных ордеров нужен для счетов, где максимальное количество ордеров равно 100, а котировка в течение одного дня может проделать путь в 2000-3000 пунктов. (с учётом минимального возможного шага 100 пунктов)
Недельная цикличность.
В случае если за пару дней котировка прошла 1000-1500 пунктов и вернулась обратно, и робот исправно открывал ордера у неё на пути, и на пройденных отрезках все 4-ре ордера закрыты в каких-то местах (это зависит от параметров), то робот, проходя пустые значения (без отложенных ордеров) не ставит там отложенные ордера – это если не достигнута контрольная дата. В случае, если наступил контрольный день недели, а это среда 00,00 по серверному времени (по сути со вторника на среду), то робот проставляет ордера по всем ближайшим значениям с заданным шагом в радиусе 1000 пунктов, КРОМЕ ТЕХ ЗНАЧЕНИЙ, ГДЕ ИМЕЮТСЯ СРАБОТАВШИЕ ОТКРЫТЫЕ ОРДЕРА! Это очень важно, если есть один сработавший ордер у которого не сработал стоп лос или тейк профит, например, ордер на значении 1,09000 и даже если он сработал с проскальзыванием и фактически открыт на значении 1,08886, то робот не ставит ордера (НИ ОДНОГО ОРДЕРА) именно на значении 1,09000
Вот графический пример работы системы с 16-го марта 2015 года по 25 марта 2015 года.
http://screencast.com/t/wRo9LNsANxN
Синими линиями обозначены цены где робот расставляет ордера с шагом 100 пунктов (там указан шаг 10 пунктов, т.к. на графике программа использует четыре знака после запятой, нам требуется создать советника для 5-ти знаков после запятой). В среду 18 марта в 00,00 часов, робот везде расставляет ордера в радиусе 1000 пунктов (на графике будет 100 пунктов) от текущей цены, если на каких-то значениях котировки есть хоть один не закрытый ордер, и он ещё торгуется, то на этом значении робот ордера НЕ СТАВИТ! Далее в среду котировка проделывает путь 4000 пунктов (400 на графике) и всё это время робот подтягивает отложенные ордера за ней. Потом в четверг и пятницу 19 и 20 марта, котировка проходит ещё 3000 (300 на графике) пунктов в обратном направлении и проходит значения где уже были открыты ордера в течении недели, ВОТ В ЭТОМ МЕСТЕ ОРДЕРА РАССТАВЛЯТЬ НЕ НУЖНО (показано фиолетовыми стрелками), т.к., во-первых, там уже были выставлены ордера, во-вторых ещё не достигнута следующая контрольная дата. При достижении контрольной даты, робот расставляет ордера везде в радиусе 1000 пунктов и так же подтягивает их за меняющейся ценой, кроме тех значений котировки, где ЕСТЬ ОТКРЫТЫЕ ПОЗИЦИИ (хоть один ордер). Ещё момент, если по каким-то причинам есть значения на линейке цены открытия где сработали всего два ордера, а два остальных не сработали, но сработавшие ордера закрыты, то робот выставляет недостающие ордера на эту цену открытия.
Типы ордеров
Для ордеров выставляемых выше текущей цены будет следующая закономерность:
Ордер 1 – это будет Buy Stop
Ордер 2 – это будет Sell Limit
Ордер 3 – это будет Buy Stop
Ордер 4 – это будет Sell Limit
Для ордеров выставляемых ниже текущей цены будет так:
Ордер 1 – это будет Buy Limit
Ордер 2 – это будет Sell Stop
Ордер 3 – это будет Buy Limit
Ордер 4 – это будет Sell Stop
Параметры ордеров
Расчёт для ордера 1:
Тейк профит ордера = цена выставления ордера + заданное значение тейк профит
Стоп лос ордера = цена выставления ордера – заданное значение стоп лос
Например: Если робот будет выставлять ордер на цене открытия 1,10000, а заданное значение ТП 800 и СЛ 100, то фактически ордер будет выставляться с ТП 1,10800 и СЛ 1,09900
Расчёт для ордера 2:
Тейк профит ордера = цена выставления ордера – заданное значение тейк профит
Стоп лос ордера = цена выставления ордера + заданное значение стоп лос
Например: Если работ будет выставлять ордер на цене открытия 1,10000, а заданное значение ТП 800 и СЛ 100, то фактически ордер будет выставляться с ТП 1,09200 и СЛ 1,10100
Расчёт для ордера 3 (тож самое, что для ордера 1, т.к. это ордер бай):
Тейк профит ордера = цена выставления ордера + заданное значение тейк профит
Стоп лос ордера = цена выставления ордера – заданное значение стоп лос
Расчёт для ордера 4 (тож самое, что для ордера 2, т.к. это ордер селл):
Тейк профит ордера = цена выставления ордера + заданное значение тейк профит
Стоп лос ордера = цена выставления ордера – заданное значение стоп лос
Спред и цена открытия ордеров
Спред нужен для того, чтоб ордера 95% всего времени торгов срабатывали одновременно. Этот параметр будет применяться только к ордерам селл, т.е. ко 2-му и 4-му ордеру.
Расчёт цены открытия ордеров:
1 ордер, цена открытия = цене открытия (без изменений)
2 ордер, цена открытия = цена открытия – спред
3 ордер, цена открытия = цене открытия (без изменений)
4 ордер, цена открытия = цена открытия – спред
Например, робот раскинул линейку цен открытия с шагом 100 и принимает решение выставить 4-ре ордера на цене открытия 1,10000. Для ордеров 1 и 3 (это ордера бай) это значение будет без изменений, а для ордеров 2 и 4 (это ордера селл) цена открытия уже будет 1,09985 (при условии, что МЫ укажем, что спред = 15)
Манименеджмент
При запуске робота, робот проводит проверку валютной пары и если вторая валюта в заданной валютной паре отличная от USD, то робот не использует формулу расчёта манименеджмента и торгует заданным размером лота, который указывается в значении МАКСИМАЛЬНЫЙ РАЗМЕР ЛОТА (например, задана валютная пара EUR/USD – вторая валюта доллар США, значит действует автоматическое повышение размера лота, если торгуемая валюта USD/RUB – то робот торгует заданным размером лота и не повышает его)
Робот сам определяет размер лота по указанным нижу формулам.
Используемые параметры:
1000 – стандартное количество валюты за 0,01 лота
КУРС КОТИРОВКИ – курс заданной котировки, которой торгует робот (Например 1,05630 для EUR/USD)
0,00010 – один пункт для котировки, которая имеет пять знаков после запятой
КУРС USD/RUB – текущий курс рубля по отношению к доллару, т.к. торговый счёт в рублях
СРЕДСТВА СЧЁТА – это ИМЕННО вот это значение http://screencast.com/t/ws9nEOgVi
ПУНКТОВ НА СЧЕТУ – пересчёт всех средств на торговом счёте в пункты торгуемой валюты по текущему курсу
СТОИМОСТЬ ПУНКТА в рублях – стоимость пункта в рублях заданной торгуемой валютной пары
Первая итерация
((1000*(КУРС КОТИРОВКИ+0,00010))-(1000*КУРС КОТИРОВКИ))*КУРС USD/RUB = СТОИМОСТЬ ПУНКТА в рублях
Вторая итерация
СРЕДСТВА СЧЁТА / СТОИМОСТЬ ПУНКТА в рублях = ПУНКТОВ НА СЧЕТУ
Третья итерация
(ПУНКТОВ НА СЧЕТУ / ЗАДАННОЕ ЗНАЧЕНИЕ МАНИМЕНЕДЖМЕНТ*0,01) = РАЗМЕР ЛОТА, КОТОРЫМ ТОРГУЕТ РОБОТ
Можно одной формулой))
((СРЕДСТВА СЧЁТА / ((1000*(КУРС КОТИРОВКИ+0,00010))-(1000*КУРС КОТИРОВКИ))*КУРС USD/RUB)/ ЗАДАННОЕ ЗНАЧЕНИЕ МАНИМЕНЕДЖМЕНТ*0,01) = РАЗМЕР ЛОТА, КОТОРЫМ ТОРГУЕТ РОБОТ
Полученное значение, которым торгует робот, может иметь 5-6 знаков после запятой, его нужно округлить до сотых (0,06 например)
Робот должен вычислять одинаковый размер лота для всех четырёх ордеров! Чтоб не было такого, что ордер 1 открыт с лотом 0,01, а ордер 2 открыт с лотом 0,02 из-за резкого скачка котировки
Кнопки управления советником:
КНОПКА СТАРТ – запускает торгового робота
КНОПКА СТОП – останавливает торгового робота
Комментарии к ордерам
Все выставляемые ордера должны иметь комментарии.
Для ордера 1 комментарий в формате (символ “/” считать как пробел) – (цена открытия/наверх/Trailing - либо если трейлинга нет, то: цена открытия/наверх) – Например: если цена открытия 1,06100 и задано значение трейлинг стопа, то комментарий должен быть такой: “1.06100 наверх Trailing”, а если трейлинга нет, то: “1,06100 наверх”)
Для ордера 2 комментарий в формате (символ “/” считать как пробел) – (цена открытия/наверх/Trailing - либо если трейлинга нет, то: цена открытия/наверх) – Например: если цена открытия 1,06100 и задано значение трейлинг стопа, то комментарий должен быть такой: “1.06100 наверх Trailing”, а если трейлинга нет, то: “1,06100 наверх”)
Для ордера 3 комментарий в формате (символ “/” считать как пробел) – (цена открытия/вниз/Trailing - либо если трейлинга нет, то: цена открытия/вниз) – Например: если цена открытия 1,06100 и задано значение трейлинг стопа, то комментарий должен быть такой: “1.06100 вниз Trailing”, а если трейлинга нет, то: “1,06100 вниз”)
Для ордера 4 комментарий в формате (символ “/” считать как пробел) – (цена открытия/вниз/Trailing - либо если трейлинга нет, то: цена открытия/вниз) – Например: если цена открытия 1,06100 и задано значение трейлинг стопа, то комментарий должен быть такой: “1.06100 вниз Trailing”, а если трейлинга нет, то: “1,06100 вниз”)
Вместо слова Trailing - Можно указывать одну букву "Т"
Лог файл
Робот каждый свой шаг должен записывать в файл stat.csv по формату:
Дата и время/что сделал
Например:
Робот закрыл ордер 1.06100
12.04.15 11.11/close 1.06100
Робот открыл ордер 1,06200
12.04.15 11.11/open 1.06200
Начало работы (запуск робота)
12.04.15 11.11/Starting
Обновлён параметр манименеджмент с 450 до 550
12.04.15 11.11/МoneyManager 450 modification to 550
Изменён параметр Стоп лос у ордера 1 c 50 до 100
12.04.15 11.11/Stop los order 1 50 modification to 100