Создание универсального торгового робота

MQL4 Asesores Expertos

Trabajo finalizado

Plazo de ejecución 4 días
Comentario del Ejecutor
ТЗ составлено грамотно, было приятно работать над нетривиальной для советника задачей. Удачи в торговле!
Comentario del Cliente
Мои пожелания в части реализации технических характеристик скрипта удовлетворены в полном объёме. Попутно разработчик решил и пару вопросов, не относящихся к mql. Доволен.

Tarea técnica

Здравствуйте, коллеги. 

Есть желание осуществить тестирование ряда стратегий в реальных условиях в режиме автоматической торговли.

Есть одно принципиальное "но": никогда не пытался вникать в язык mql, и принципиально не хочу, - предпочитаю сосредотачиваться на разработке алгоритмов.  

Для того, чтобы не бегать при любом изменении алгоритма за кодерами mql нуждаюсь в универсальном советнике, в котором исполнительная и алгоритмическая части разнесены.

Примечание: не нужно советовать реализацию через dll, и различные другие подходы - я осознаю их возможности, но хочу иметь именно то, что опишу ниже. 

 

Состав и принцип работы необходимого мне робота:

1. Робот содержит две совершенно независимые части: советник на mql, являющийся исполнительской частью, и "алгоритмическое ядро", в виде файла .exe; 

2. Исполнительская часть и алгоритмическое ядро обмениваются данными через обычный текстовый файл; 

3. При необходимости изменить торговую стратегию, я тупо заменяю файл .exe (которые создаю самостоятельно), и всё. 


От разработчика требуется создать только "исполнительскую" часть, которая должна быть устроена следующим образом: 

 

1. Должна быть способной "навеситься" на график любой валютной пары, на любой таймфрейм графика цены.

Примечание 1.1: предполагаю использование в основном на графике М5. 

 

2. Рабочая директория советника должна указываться в его коде. 

Примечание 2.1: из возможных для осуществления файловых операций средствами mql.  

 

3. После указания директории, советник должен создать в ней текстовый файл историю за последние 288 баров.

Примечание 3.1: 288 баров М5 - это сутки, особого смысла тут нет, просто единожды описанная в самом коде советника переменная, которая должна быть известно где, чтобы её можно было менять;

Примечание 3.2: текстовый файл истории должен иметь понятное название, например "EURUSD5.txt";

Примечание 3.3: текстовый файл должен быть устроен аналогично файлам, которые создаёт сам метатрейдер при экспорте котировок в файл, следующим образом:

содержать два столбца: время закрытия бара (выбранного ранее таймфрейма), и значение, то есть выглядеть как обычный файл, экспортированный из мт,

только из всех столбцов <DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL> реально нужны только <DTYYYYMMDD>,<TIME>,<CLOSE>. 

 

4. После создания начального файла котировок советник должен запустить алгоритмическое ядро - исполняемый файл, который так пусть и будет называться kernel.exe;

Примечание 4.1: файл kernel.exe располагается в той же самой, ранее выбранной для работы, директории, для запуска в мт будет разрешено использование библиотеки Kernel32.dll. 

 

5. Далее - магия. Файл .exe сообразно своему устройству обращается к файлу котировок, считывает их, проводит анализ, и выдаёт результат анализа в файл trade.txt (расположенный там же);

Примечание 5.1: Файл trade.txt будет устроен так: одна строка, в которой через запятую, пробел, или как надо будут значения <DTYYYYMMDD>,<TIME>,<Result>,<Volume>  

где  <DTYYYYMMDD>,<TIME> взяты из файла котировок, и соответствуют последнему записанному там значению (последнему сформировавшемуся бару), Result - либо -1, либо 0, либо 1,

а Volume - объём в лотах.

Примечание 5.1: возможно, тут возникнет проблема при использовании на долларовом или центовом счёте? Если нет, замечательно. По умолчанию предполагаем, что счёт не центовый,

(а точнее даже рублёвый), и под лотом понимается стандартный лот в 100 тысяч единиц базовой валюты;

 

6. Советник должен подождать небольшое время, чтобы не мешать работе с файлом алгоритмического ядра. Например, 10 секунд, чтобы уж заведомо с запасом.

Примечание 6.1: переменная, задающая эту задержку должна быть показана, где она написана и как называется, чтобы можно было её менять при необходимости.

 

7. Подождав согласно п.6, советник должен обратиться к файлу trade.txt и прочитать его. Если указанные в нём значения <DTYYYYMMDD>,<TIME> актуальны (соответствуют последнему

сформировавшемуся бару, и новее бара нет), то смотрится значение Result: если оно 0 - ничего не делать, если -1 или 1 - продать или купить соответственно, лотом,

указанным в следующем элементе строки (Volume);

 

8. При формировании очередного бара советник должен дописать строчку в файл котировок;

Примечание 8.1. Советник должен отслеживать количество строк в файле котировок. При достижении величины в 2-3 раза больше начального количества строк,

файл должен не дополняться, а переписываться заново, как на шаге п. 3;

 

9. Далее всё то же: запускает алгоритмическое ядро, и прочее по п.п. 4 - 8;

Примечание 9.1: код советника должен быть открытым - я должен понимать (кодер должен мне пояснить) что там написано, чтобы при необходимости поменять его немного.

 

10. Советник должен отслеживать количество сделок по "своему" инструменту. При достижении задаваемого в коде советника количества (например, 10),

он должен автоматически закрывать ордера;

Примечание 10.1: Поскольку будут возможны и наверное нередки ситуации, когда будут открыты ордера в разных направлениях, закрытие должно происходить как закрытие

перекрытых ордеров (то есть спред в конечном итоге с одной из сделок не берется, а возвращается на счёт).


11. При отсутствии в файле команд указаний что делать, то есть в ситуации, когда очередной бар сформировался, советник залез в файл trade.txt, а там строка 

соответствует устаревшему значению <DTYYYYMMDD>,<TIME>, от прошлого, или более старого бара - советник должен закрыть все сделки по своей паре. 

 

P.S. Возможны незначительные уточнения технического задания в процессе обсуждения.  

P.P.S. Предполагается, что при указании различных директорий (например, папок EURUSD, GBPUSD, и т.д.) могут одновременно и независимо работать несколько экземпляров советника.  

Han respondido

1
Desarrollador 1
Evaluación
(635)
Proyectos
1005
47%
Arbitraje
33
36% / 36%
Caducado
99
10%
Trabaja
Ha publicado: 6 ejemplos
2
Desarrollador 2
Evaluación
(885)
Proyectos
1410
67%
Arbitraje
123
32% / 41%
Caducado
217
15%
Libre
Ha publicado: 1 ejemplo
3
Desarrollador 3
Evaluación
(1)
Proyectos
16
81%
Arbitraje
1
100% / 0%
Caducado
2
13%
Libre
Ha publicado: 1 artículo
4
Desarrollador 4
Evaluación
(2)
Proyectos
5
60%
Arbitraje
1
0% / 100%
Caducado
2
40%
Libre
5
Desarrollador 5
Evaluación
(252)
Proyectos
462
26%
Arbitraje
139
20% / 60%
Caducado
100
22%
Libre
6
Desarrollador 6
Evaluación
(40)
Proyectos
106
52%
Arbitraje
17
12% / 65%
Caducado
25
24%
Libre
7
Desarrollador 7
Evaluación
(80)
Proyectos
117
67%
Arbitraje
16
25% / 13%
Caducado
12
10%
Libre
Ha publicado: 2 ejemplos
8
Desarrollador 8
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
9
Desarrollador 9
Evaluación
(45)
Proyectos
76
20%
Arbitraje
7
0% / 86%
Caducado
14
18%
Libre
10
Desarrollador 10
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
11
Desarrollador 11
Evaluación
(57)
Proyectos
150
47%
Arbitraje
9
11% / 78%
Caducado
17
11%
Libre
Ha publicado: 2 ejemplos
12
Desarrollador 12
Evaluación
Proyectos
1
0%
Arbitraje
0
Caducado
0
Libre
13
Desarrollador 13
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre

Información sobre el proyecto

Presupuesto
20 - 60 USD
Plazo límite de ejecución
de 1 a 5 día(s)