Автоматический торговый робот

MQL4 전문가 스크립트

작업 종료됨

실행 시간 10 일

명시

Здравствуйте! Хочу заказать создание автоматической торговой системы, которая будет сама выставлять отложенные ордера с заданными параметрами и с заданным шагом. Торговый робот при запуске будет выставлять отложенные ордера сверху и снижу от текущей цены и при смещении котировки, он будет смещать сетку ордеров. Более подробная информация в прикреплённом файле. Если можете это реализовать, то напишите пожалуйста свою цену и срок...

 

Обновляю... Вот тех задание:

Автоматический торговый робот (техническое задание)

 

Используемые параметры и опции:

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

 

 

  

응답함

1
개발자 1
등급
(617)
프로젝트
1427
59%
중재
31
81% / 0%
기한 초과
10
1%
무료
2
개발자 2
등급
(270)
프로젝트
552
49%
중재
58
40% / 36%
기한 초과
228
41%
작업중
3
개발자 3
등급
(69)
프로젝트
146
34%
중재
13
8% / 62%
기한 초과
26
18%
무료
게재됨: 6 코드
4
개발자 4
등급
(264)
프로젝트
593
35%
중재
64
20% / 58%
기한 초과
147
25%
무료
게재됨: 1 기고글, 22 코드
5
개발자 5
등급
(621)
프로젝트
972
47%
중재
32
38% / 34%
기한 초과
96
10%
로드됨
게재됨: 6 코드
6
개발자 6
등급
(44)
프로젝트
100
39%
중재
17
29% / 47%
기한 초과
32
32%
무료
7
개발자 7
등급
(281)
프로젝트
650
28%
중재
112
19% / 62%
기한 초과
319
49%
무료
8
개발자 8
등급
(43)
프로젝트
96
44%
중재
8
13% / 38%
기한 초과
22
23%
무료
9
개발자 9
등급
(473)
프로젝트
1139
44%
중재
51
31% / 33%
기한 초과
501
44%
무료
10
개발자 10
등급
(23)
프로젝트
31
71%
중재
0
기한 초과
1
3%
무료
게재됨: 188 코드
11
개발자 11
등급
(574)
프로젝트
945
47%
중재
309
58% / 27%
기한 초과
125
13%
무료
12
개발자 12
등급
(1)
프로젝트
4
25%
중재
1
0% / 100%
기한 초과
1
25%
무료
게재됨: 6 코드
13
개발자 13
등급
(34)
프로젝트
55
31%
중재
8
0% / 63%
기한 초과
13
24%
무료
게재됨: 22 기고글, 1 코드
14
개발자 14
등급
(45)
프로젝트
105
30%
중재
8
25% / 50%
기한 초과
40
38%
무료
15
개발자 15
등급
(169)
프로젝트
227
60%
중재
3
33% / 33%
기한 초과
6
3%
무료
게재됨: 1 코드
16
개발자 16
등급
(351)
프로젝트
679
56%
중재
33
15% / 39%
기한 초과
63
9%
무료

프로젝트 정보

예산
140 USD
기한
6 일