Если зацикливаете эксперта, то про тестер стратегий надо забыть.
Не нужно зацикливать эксперта - это неправильный подход, приносящий только проблемы.
Не нужно зацикливать эксперта - это неправильный подход, приносящий только проблемы.
Да точно зацикливание надо бы убрать можно просто сразу в длл
передать инфы много через структуру и с недостающими котировками,
если например был разрыв связи или др непредвиденое событие
и стратегия должна снать квоты пропущенные.
Если бы в эксперте были функции, которые можно было сразу вызывать из DLL то был бы этому очень рад.
Например возможность передать в функцию длл указатель на функцию эксперта. Тогда например отрисовку на чарте я мог бы далать срузу из DLL и прочее.
Сделаю тогда так:
Если бы в эксперте были функции, которые можно было сразу вызывать из DLL то был бы этому очень рад.
Например возможность передать в функцию длл указатель на функцию эксперта. Тогда например отрисовку на чарте я мог бы далать срузу из DLL и прочее.
Сделаю тогда так:
start() { if(processQuote(inputStruct, outputStruct)) { drawDataOnChart(outputStruct); makeOrder(outputStruct); } }
elritmo, почитай вот про зацикливание 'Синхронизация работы экспертов, скриптов и индикаторов' Очень классная статья. Хотя на мой взгляд великоватая и сложноватая.
По поводу взаимодействия dll с экспертом - самый на мой взгляд
лучший способ это приказы. Приказ dll кидает в виде текстовой
строки например в какой-то буфер. Эксперт его от туда достает,
анализирует и исполняет. Так что работать все будет примерно
так:
start()
{
котировка=ПолучитьКотировку();
ОтправитьКотировкуВdll(котировка);
ВыполнитьПриказ();
}
Как видишь, всё работает потиково. Никакого зацикливания в эксперте нет.
start()
{
котировка=ПолучитьКотировку();
ОтправитьКотировкуВdll(котировка);
ВыполнитьПриказ();
}
Как видишь, всё работает потиково. Никакого зацикливания в эксперте нет.
Да я подумал что надо вотадвать в длл буфер и дурие исходные
данные через структуру ну и оптом получать струкутрыу с информацией
что отрисовать вывести в лог и какие приказы исполнить.
а моё зацикливанеи то оно не так страшно впринципе если корескно
написать там же етсь break.
поудмал сначала о зацикливании чтобы длл запрашивала какие
то дополнительные данные если потребуется. Нео сейчас и сам
думаю это такое узкое место потом замучаешься отлаживать и
почему подвисает. Спасибо за ответы. будем рабоать но оператора
while
статью прочту спасибо что указали на неё
Извиняюсь за оффтопик... elritmo, Вы случайно не брат Merabiko ?
:)
elritmo, а зачем Вам вообще связываться с длл, чего Вам не хватило в MQL4
если не секрет?
Jhonny писал (а):
elritmo, а зачем Вам вообще связываться с длл, чего Вам не хватило в MQL4 если не секрет?
elritmo, а зачем Вам вообще связываться с длл, чего Вам не хватило в MQL4 если не секрет?
Ну Ренат приводил сравнительное тестирование скорости и код написанный на си в 17 раз быстрее чем на MQL4 так почему же не вызвать просто функцию из DLL (она один раз загрузится и будет сидеть в памяти и скорость вызова функции из длл будет большая ну и её выполнение быстрее елс исоветник станет со временем сложный с кучей проверок и сравнений). А когда будет проводиться оптимизация, то эта разница между кодом на MQL4 и С++ в миллисекундах будет накапливаться.
Во вторых, есть отладчик в вижуал си а в MQL4 редакторе нет.
Потом в MSVC или Delphi можно свободно создавать различные модули с разным namespace. В MQL4 я помнится хотел написать библиотеку, но одна включалась в основной модуль - то есть названия функций и переменный в разных модулях одинаковые мне не удавалось написать.
Ну и редактор в вижуал студии мне больше нравится.
elritmo, главное правило использования dll - делай на них то, что иначе
сделать либо вовсе не получится, либо получится очень плохо.
Я сам например сейчас пишу dll для работы с сокетами TCPIP. Средствами mql4 этого сделать нельзя. Имеет это смысл делать, если в твоем роботе используются какие-то очень громоздкие вычисления. Можно использовать dll, как гнусный и корявый, но все-таки способ, подключиться к отладчику. Наконец, если ты работаешь в каком-то крупном инвестиционном фонде, и твое начальство вдруг решило развлечься форексом, есть смысл писать всю торговую систему на С или Java, просто чтобы не зависить от продуктов Metaquotes. Например на случай, если вы выберете буржуйского брокера, не использующего МТ4. Во всех остальных случаях особого смысла в использовании dll я не вижу. Кстати зря ты редактор ругаешь. На мой взгляд он исключительно удобен. Ни чуть не хуже, чем в студии.
Я сам например сейчас пишу dll для работы с сокетами TCPIP. Средствами mql4 этого сделать нельзя. Имеет это смысл делать, если в твоем роботе используются какие-то очень громоздкие вычисления. Можно использовать dll, как гнусный и корявый, но все-таки способ, подключиться к отладчику. Наконец, если ты работаешь в каком-то крупном инвестиционном фонде, и твое начальство вдруг решило развлечься форексом, есть смысл писать всю торговую систему на С или Java, просто чтобы не зависить от продуктов Metaquotes. Например на случай, если вы выберете буржуйского брокера, не использующего МТ4. Во всех остальных случаях особого смысла в использовании dll я не вижу. Кстати зря ты редактор ругаешь. На мой взгляд он исключительно удобен. Ни чуть не хуже, чем в студии.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Например в общих чертах так
Может быть кто то предложить другой подход для взаимодействия советника и длл?
И думаю было бы не плохо предоставить советникописателям также возможность написать свои пользовательские оптимизаторы
и прикрутить их через DLL к MT Хотя это можно и сейчас сделать но не через кнопочку в тестере.
Вообще, опасаюсь того что MT может запретить внешние DLL в будущем как она это сделала уже с API. Хотя с апи понятно зачем они это сделали чтобы защитить своего клиента но внешние DLL не стоит :) Наоборот добавить возможности расширения через plugins