Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если файл подключать через include, то можно объявлять переменные extern и не нужно никакой передачи параметров. Чтобы не было путанцы с именами переменных и функций надо для каждой стратегии использовать свои префиксы в именах.
Извините, что встреваю, но такие длительные мучения над таким простым вопросом не оставляют равнодушным:)
Если файл подключать через include, то можно объявлять переменные extern и не нужно никакой передачи параметров. Чтобы не было путанцы с именами переменных и функций надо для каждой стратегии использовать свои префиксы в именах.
Извините, что встреваю, но такие длительные мучения над таким простым вопросом не оставляют равнодушным:)
Спасибо. Сейчас попробуем.
Если файл подключать через include, то можно объявлять переменные extern и не нужно никакой передачи параметров. Чтобы не было путанцы с именами переменных и функций надо для каждой стратегии использовать свои префиксы в именах.
Извините, что встреваю, но такие длительные мучения над таким простым вопросом не оставляют равнодушным:)
Речь идёт об импорте функций в компилированный эксперт (ex4).
Ну извините, я как обычно не о том... Может об импорте из компилированной библиотеки?
-
Если основной модуль откомпилирован, то не проблема использовать инкулдник со стратегией, все будеть откомпилировано. Если основной модуль с открытым кодом, а стратегия откомпилированная, то можно сделать переходник в виде инклудника с открытым кодом.
Уважаемые!
Я рассматриваю следующую схему цепочки подключения:
Функция AG_AT является переключателем выбора присоединяемых стратегий.
Уважаемые!
Ответьте пожалуйста на вопрос.
Если функция АТ не является переключателем, а содержит код стратегии то (хотя, как я понимаю, это без разницы), каким образом приложение различает что функция АТ отдает указание (например, обращение к терминалу) ему, а не ведет торговлю сама?
Из описания к применению:
Исполнение функции АТ связано с двумя основными возможностями.
Первая из них заключается в том, что функция АТ может самостоятельно вести торговлю - формировать торговые приказы и отправлять их на сервер. При этом функция может не обрабатывать никакие данные полученные из приложения (или обрабатывать часть этих данных), а выполнять собственные вычисления, используя для этого все возможности языка MQL 4, в т.ч. обращение к терминалу для обработки ордеров, получение текущих котировок, вычисление торговых критериев, управление графическими объектами и т.д.
Вторая возможность непосредственно связана с приложением AutoGraf 4. Функция АТ может отдавать указания приложению AutoGraf 4 на установку любых необходимых инструментов с заданными настройками на определённые ордера или на ценовой график, изменение общих настроечных параметров приложения, удаление инструментов, может выводить сообщения пользователю и пр. (выходные параметры).
Если в функции АТ сформирован приказ на заключение сделки и нет строки кода для учета в приложении, то торгует сама. Приложение, в этом случае, просто транслирует приказ на терминал без всякого учета и обработки.
Если есть, то приказ проходит через приложение в передаваемых по ссылке параметрах функции АТ.
Правильно я понимаю?
Ну извините, я как обычно не о том... Может об импорте из компилированной библиотеки?
-
Если основной модуль откомпилирован, то не проблема использовать инкулдник со стратегией, все будеть откомпилировано. Если основной модуль с открытым кодом, а стратегия откомпилированная, то можно сделать переходник в виде инклудника с открытым кодом.
Извиняться не за что, обсуждение по делу.
--
Немного терминологии. Есть два зеркальных понятия - экспорт и импорт. Они используются применительно к собственной территории.
Экспорт - это от нас за наши пределы. Например, экспорт газа из России в Европу.
Импорт - это из-за границы в наши пределы. Например, импорт песка в Сибирь из Африки.
В данном случае речь идёт об импорте. Наша территория здесь - эксперт AG_exp.ex4. Это - основа приложения AutoGraf 4, поставляемая пользователю в виде компилированного файла. Исходный код эксперта не поставляется (естественно, т.к. приложение распространяется на коммерческой основе, хотя и бесплатно), поэтому присоединение в эксперт каких-либо модулей через inclide (пользователем-программистом) невозможно.
--
Задача заключалась в том, чтобы предоставить пользователю возможность присоединять к приложению AutoGraf 4 свои торговые алгоритмы, написанные на MQL4 и оформленные в виде .ех4 файлов стратегий. Для решения этой задачи в эксперте AG_exp.ex4 прописан код, в соответствии с которым в эксперт импортируется функция автоматической торговли AG_AT, поставляемая как в виде .ех4, так и в виде mq4. Далее пользователь может сам решать как ему обустроить свои коды. Наиболее удобно использовать один из двух вариантов:
1. Написать собственный код непосредственно в функции AG_AT() и скомпилировать одноимённый файл AG_AT.mq4, получив AG_AT.ех4.
Пример: http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm, примеры 1-15: http://autograf.dp.ua/Pages/2/26/267/2679/2679_1.htm
2. Написать собственный код новой функции в отдельном файле стратегии, например, My_Strategy() в файле My_Strategy.mq4. Прописать в функции AG_AT() импорт функции My_Strategy() из файла My_Strategy.ех4 (современный вариант). Примеры http://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm, http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm
.
Ни в одном из этих вариантов не представляется возможным прописать внешние переменные так, чтобы они были доступны пользователю. Единственная возможность указать внешние переменные - прописать их в эксперте AG_exp.ex4 на этапе проектирования, что и сделано. Значения переменных передаются транзитом через AG_AT() в пользовательскую стартегию My_Strategy() в массиве Instrument. Такая технология принята в AutoGraf 4 последней весии и она исправно работает.
--
Что всё это значит для пользователя? Это значит, что любой пользователь может написать свою стратегию и запускать её в среде AutoGraf 4. При этом и своя стратегия будет работать и все возможности AutoGraf 4 будут доступны пользователю. В частности, из стратегии можно управлять любыми инструментами AutoGraf 4 (!) - подтяжками, переворотами, звуками и пр.
Для проф. программистов технология предусматривает возможность передавать в файл стратегии настраиваемую переменную-пароль. Это значит, что программисты могут писать стратегии под AutoGraf 4 и распространять их на коммерческой основе (например, только для оговоренного счёта).
Уважаемые!
Я рассматриваю следующую схему цепочки подключения:
Функция AG_AT является переключателем выбора присоединяемых стратегий.
Да. Правильно.
Уважаемые!
Ответьте пожалуйста на вопрос.
Если функция АТ не является переключателем, а содержит код стратегии то (хотя, как я понимаю, это без разницы), каким образом приложение различает что функция АТ отдает указание (например, обращение к терминалу) ему, а не ведет торговлю сама?
Стратегия может передавать в приложение:
- значения общих настраиваемых параметров (SL, TP, Lots и пр)
- параметры устанавливаемых и удаляемых инструментов
Стратегия не передаёт в приложение приказы на открытие и закрытие ордеров (это планируется в AG 5 на основе возможностей MQL 5), а пока (в AG 4) в этом нет жёсткой необходимости. Стратегия может и должна сама открывать/закрывать ордера по собственному алгоритму пользователя.
Если в функции АТ сформирован приказ на заключение сделки и нет строки кода для учета в приложении, то торгует сама. Приложение, в этом случае, просто транслирует приказ на терминал без всякого учета и обработки.
Если есть, то приказ проходит через приложение в передаваемых по ссылке параметрах функции АТ.
Правильно я понимаю?
Не очень понятно что Вы называете "строка кода для учёта в приложении".
Приложение учитывает ордера всякий раз, когда ему возвращают управление. На каждой итерации большого цикла пересчитанный массив учёта ордеров Orders передаётся в AG_AT и далее в стратегию. На основании учёта ордеров в стратегии могут вычисляться те или иные управляющие воздействия. Отдавать управление в приложение из стратегии необходимо почаще, чтоб в стратегии всегда был свежий массив учёта ордеров.
Торговый приказ из любой части программы (приложения, или AG_AT, или стратегии) уходит сразу в терминал МТ4 и сразу на сервер. После исполнения приказа на сервере управление возвращается тем же путём в точку отправления торгового приказа. Пока приказ обрабатывается на сервере все молчат и ждут ответа - ничего не происходит (если я не ошибаюсь, в МТ 5 эта технология будет изменена - ждать не будем, будем работать:)