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

MQL4 Esperti Script

Lavoro terminato

Tempo di esecuzione 10 giorni

Specifiche

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

 

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

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

 

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

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

 

 

  

Con risposta

1
Sviluppatore 1
Valutazioni
(549)
Progetti
1331
59%
Arbitraggio
28
82% / 0%
In ritardo
10
1%
Gratuito
2
Sviluppatore 2
Valutazioni
(265)
Progetti
539
50%
Arbitraggio
55
40% / 36%
In ritardo
224
42%
In elaborazione
3
Sviluppatore 3
Valutazioni
(66)
Progetti
143
34%
Arbitraggio
10
10% / 60%
In ritardo
26
18%
Gratuito
4
Sviluppatore 4
Valutazioni
(254)
Progetti
572
36%
Arbitraggio
64
20% / 58%
In ritardo
147
26%
Gratuito
5
Sviluppatore 5
Valutazioni
(589)
Progetti
921
46%
Arbitraggio
31
39% / 29%
In ritardo
93
10%
Gratuito
6
Sviluppatore 6
Valutazioni
(44)
Progetti
100
39%
Arbitraggio
17
29% / 47%
In ritardo
32
32%
Gratuito
7
Sviluppatore 7
Valutazioni
(280)
Progetti
650
28%
Arbitraggio
111
19% / 61%
In ritardo
319
49%
Gratuito
8
Sviluppatore 8
Valutazioni
(43)
Progetti
96
44%
Arbitraggio
8
13% / 38%
In ritardo
22
23%
Gratuito
9
Sviluppatore 9
Valutazioni
(473)
Progetti
1138
44%
Arbitraggio
51
31% / 33%
In ritardo
500
44%
Gratuito
10
Sviluppatore 10
Valutazioni
(23)
Progetti
31
71%
Arbitraggio
0
In ritardo
1
3%
Gratuito
11
Sviluppatore 11
Valutazioni
(563)
Progetti
932
47%
Arbitraggio
301
59% / 25%
In ritardo
124
13%
In elaborazione
12
Sviluppatore 12
Valutazioni
(1)
Progetti
4
25%
Arbitraggio
1
0% / 100%
In ritardo
1
25%
Gratuito
13
Sviluppatore 13
Valutazioni
(32)
Progetti
53
30%
Arbitraggio
8
0% / 63%
In ritardo
13
25%
Gratuito
14
Sviluppatore 14
Valutazioni
(45)
Progetti
105
30%
Arbitraggio
8
25% / 50%
In ritardo
40
38%
Gratuito
15
Sviluppatore 15
Valutazioni
(126)
Progetti
182
54%
Arbitraggio
3
33% / 33%
In ritardo
6
3%
Gratuito
16
Sviluppatore 16
Valutazioni
(351)
Progetti
679
56%
Arbitraggio
33
15% / 39%
In ritardo
63
9%
Gratuito

Informazioni sul progetto

Budget
140 USD
Per lo sviluppatore
126 - 126 USD
Scadenze
6 giorno(i)