Универсальный советник

 
Универсальный советник

Возникла идея написания универсального советника. Смысл универсальности заключается в том, что один советник будет торговать сигналы, которые получены другими методами (например, другими советниками, рассчитанные вручную, полученные из других программ и т.п.) Все эти сигналы попадаю в один файл, который и предстоит разобрать советнику и выполнить определенные действия.

Это дает возможность использовать советника, в котором нет определенной стратегии, то есть это просто инструмент, а сама стратегия или несколько стратегий остаются собственностью автора. А если хорошо подумать, то можно и другие бенефиты найти.

И так у нас есть сигнал/ы

Инструмент EURUSD
Дата 2009-11-24
Время 12:43
Тип ордера OP_BUYLIMIT
Размер позиции 0.1
По цене 1.2610
Цель 1.3290
Стоп 1.2420
Истечение через несколько часов, допустим через 24

в файле это может иметь вид
….
200811241243;EURUSD;2;0.1;1.2610;1.3290;1.2420;24;1
200902170230;GBPJPY;3;0.1;131.35;130.35;131.75;24;1

… здесь еще пример для лимитного села по паре GBPJPY

Единица в конце строки означает, что ордер активный, так как после установки, хотелось бы сохранить историю, то есть сбросить признак например в 0.
Советник читает файл, и если :
1. Ордер активный (1)
2. Дата и время больше даты исполнения и меньше даты истечения
3. Ограничения ДЦ позволяют выставить такой ордер
- ордер выставляется
3а. Если ограничения имеют место быть (слишком близко к текущей цене или др.), либо цена прошла эту границу
- открывается рыночный ордер по текущей цене, в данном случае для EURUSD типа OP_BUY

Если все получилось, признак в файле меняется на 0. В качестве альтернативного варианта, после выполнения данные можно записать в другой файл «истории» а из основного удалить.

Если отложенный ордер не срабатывает, а за это время приходит другой ордер по этому же инструменту, тогда предварительно нужно старый ордер убрать, даже если параметры будут теми же самыми.
Торговать можно не только отложенными ордерами, но и рыночными. В таком случае, цена открытия будет игнорироваться, а вот стоп и профит можно реализовать по-разному – либо подставить значения из файла либо пересчитать на разницу цен из взятой из файла и текущей цены. Период истечения придется ставить в минутах, а то и секундах, и как следствие, перечитывать сигнальный файл нужно довольно часто.

Я сам программирую на MQL, и одно время увлекался автоматической торговлей, но потом ушел на брокера, у которого нет МТ, и слегка подзабыл, как и что в языке MQL, к тому же, это может быть интересно не только мне. И потом, я не совсем уверен, что смогу правильно организовать работу с файловой системой, так как делал это пару раз и то только чтение или прямая запись в конец файла.

Здесь мне видится несколько проблем:
1. Если советник откроет файл, то файл будет занят и не понятно, как другие советники смогут в него что-то записать. Следовательно, нужно открыть, прочитать, выполнить действия и файл закрыть. Делать это придется с какой-то периодичностью и принципиально проблему не снимает, так как все равно можно попасть на запрет совместного использования.
2. То же самое, при внесении данных в файл в ручном режиме и другим программным средством.
3. Каким образом позиционироваться в файле для смены признаков Активный-НеАктивный.
4. Как заставить советника, торговать по любому инструменту, а не только по тому, к которому он прикреплен. Либо, сигнальные файлы вести для каждого инструмента, что не очень удобно. Так как если пользоваться для генерации сигналов неким абстрактным инструментом, нужно будет в нем еще определить имя файла по названию инструмента, а это не всегда возможно.

Если кому-то интересно взяться за такую работу – буду очень признателен. И наверняка не только я.
Можно взяться за реализацию совместно. В таком случае – пишите.
Ну, или хотя бы обсудить вопросы работы с файлами.

Заранее спасибо всем, кто откликнется.

С уважением,
Марк
 

Посмотри, может поможет http://vinin.ucoz.ru/forum/17-45-1

 
Vinin >>:

Посмотри, может поможет http://vinin.ucoz.ru/forum/17-45-1

Посмотрел.

Спасибо.

Но это не совсем то. Там идет открытие файла и прямая запись клозов, а это я и сам запросто напишу.

Но все равно еще раз спасибо.

 

Тогда разумно передавать сигналы через СУБД. И хранится будут. И передать куда угодно можно. И защиту сигналов можно будет делать.

И проблемы исчезнут.

 

Тоже хорошая идея.

Даже пример есть https://www.mql5.com/ru/articles/1533


Но для этого придется установить какой-то сервер баз данных, MySql, MSSQL, Oracle и т.д.

Для себя я может так и сделаю - опыт есть, но хотелось все же сделать нечто доступное, без дополнительных затрат на установку и поддержку СУБД.

 
Piccioli писал(а) >>
Здесь мне видится несколько проблем:
1. Если советник откроет файл, то файл будет занят и не понятно, как другие советники смогут в него что-то записать. Следовательно, нужно открыть, прочитать, выполнить действия и файл закрыть. Делать это придется с какой-то периодичностью и принципиально проблему не снимает, так как все равно можно попасть на запрет совместного использования.
2. То же самое, при внесении данных в файл в ручном режиме и другим программным средством.
3. Каким образом позиционироваться в файле для смены признаков Активный-НеАктивный.
4. Как заставить советника, торговать по любому инструменту, а не только по тому, к которому он прикреплен. Либо, сигнальные файлы вести для каждого инструмента, что не очень удобно.

1-2. В MQL4 файлы открываются без контроля разрешения доступа. То есть можно запустить два советника/индикатора, открыть в них один и тот же файл и пользоваться им одновременно. Разумеется контроль правильности использования, позиции курсора и прочего остается за пользователем. Обнаружил это опытным путем.

4. Неэффективно, если конечно для этого требуется мониторить поток котировок. Одновременно это делать по нескольким инструментом не очень удобно. Но если советник за котировками не следит, то все просто: во всех функциях есть имя инструмента, вместо по умолчанию нужно ставить реальное имя инструмента.

 
Yurixx >>:

1-2. В MQL4 файлы открываются без контроля разрешения доступа. То есть можно запустить два советника/индикатора, открыть в них один и тот же файл и пользоваться им одновременно. Разумеется контроль правильности использования, позиции курсора и прочего остается за пользователем. Обнаружил это опытным путем.

4. Неэффективно, если конечно для этого требуется мониторить поток котировок. Одновременно это делать по нескольким инструментом не очень удобно. Но если советник за котировками не следит, то все просто: во всех функциях есть имя инструмента, вместо по умолчанию нужно ставить реальное имя инструмента.

Спасибо за ответ.

по п.4 - предполагается, что советник не отслеживает котировки. Котировки отслеживают другие советники и другие программы.

Еще раз повторюсь - никакой торговой системы в советник не заложено, что и дает советнику некоторую универсальность.

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

Так как особового интереса вопрос не вызвал, советника написал сам.

Всем спасибо еще раз

Причина обращения: