![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Конечно возможно, но не так, что бы самого советника в терминале перезапускать, а так, чтобы сам советник когда надо работал, когда не надо не работал. Исходник нужен, или сам его создатель должен сделать. Только, что там за создатель - непонятно, если вы не к нему сразу обращаетесь. Переезжает... они все всегда и вечно переезжают.
Наверняка дел понабрал и увиливает.А пока исходника нет, можно ли "подковырять" к советнику? Ну, к примеру отключение советника по времени, я сделал с помощью наложения на другой график. А тут совсем никак?
Кучу литературы прочитал и не могу понять, как советнику сообразить, что он "не дергается" и начать всё заново. Опять же склоняюсь к этим переключениям таймфрейма, туда-обратно, для перезагрузки. Но можно ли это сделать без исходника?
Много вопросов, а гугл не всегда прав
Есть функция ChartApplyTemplate() - можно программно открыть шаблон, в шаблоне может быть советник. Прикрепил один шаблон - снял эксперта, прикрепил другой - запустил.
Но как узнать, что советник завершил цикл - не знаю. Может историю как-то анализировать.
Есть функция ChartApplyTemplate() - можно программно открыть шаблон, в шаблоне может быть советник. Прикрепил один шаблон - снял эксперта, прикрепил другой - запустил.
Но как узнать, что советник завершил цикл - не знаю. Может историю как-то анализировать.
По-идее из старой версии вытянул вот это -
if (Profit>0 && AccountEquity() - StartBalance >= Profit)
{
Print("Закрываем все позиции, т.к. эквити превысило " + DoubleToStr(Profit,2) + "$");
CloseAllOrders();
StartPrice = 0;
Stopped = 7;
return;
}
Происходит общий профит и он завершает ордера. Стоппед 7-мь, как я понял - это вывод сообщения о том.
Понимаю, что это не форум добрых домохозяек, вы подкинули идею - я не понял. Но как прикрепить один шаблон, снять его, затем другой и запустить?
По-идее из старой версии вытянул вот это -
if (Profit>0 && AccountEquity() - StartBalance >= Profit)
{
Print("Закрываем все позиции, т.к. эквити превысило " + DoubleToStr(Profit,2) + "$");
CloseAllOrders();
StartPrice = 0;
Stopped = 7;
return;
}
Происходит общий профит и он завершает ордера. Стоппед 7-мь, как я понял - это вывод сообщения о том.
Понимаю, что это не форум добрых домохозяек, вы подкинули идею - я не понял. Но как прикрепить один шаблон, снять его, затем другой и запустить?
Может быть Stopped = 7 и есть то, из-за чего советник перестает работать.
Прикрепление шаблона. У функции ChartApplyTemplate() первый параметр - id графика. Нужен еще один советник на любом другом графике, он вызывает функцию ChartApplyTemplate(), в параметрах функции указывается id графика и имя шаблона.
Основная проблема - как узнать, что пора перезапускать?
Может быть Stopped = 7 и есть то, из-за чего советник перестает работать.
Прикрепление шаблона. У функции ChartApplyTemplate() первый параметр - id графика. Нужен еще один советник на любом другом графике, он вызывает функцию ChartApplyTemplate(), в параметрах функции указывается id графика и имя шаблона.
Основная проблема - как узнать, что пора перезапускать?
Я думаю о нескольких вариантах.
Первое - это то, что нет сделок, потому-что все закрылось.
Второе - он же делает профит и выключается, т.е при получении профита. Оно же работает так, если профит такой-то > оно закрывает сделки > А пока закрывается - спит, чтобы не сразу > потом делает с чартом.
Есть же команда "TotalOrders" - можно ли ее вставить? Если их к примеру - 0, то он включает другой советник и так до бесконечности, чтобы полностью автоматизировать
Пока это теория, ведь код еще "не приехал".Если получится, с первой зарплаты от советника - поделюсь :D
А по поводу стоппеда, в начальных версиях по-крайней мере так с ним.Можно также, если стоппед=7, то как вы говорите сменить чарты, можно ли так?
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if (Stopped==7)
{
Comment("Было событие ПРОФИТ, советник остановил работу, ждем действий хозяина...");
return;
}
if (IsTesting()==false)
{
if (IsExpertEnabled()==false)
{
Comment("EA is not available, make sure that experts are anabled (AutoTrading button and EA properties)");
return;
}
}
Если вы можете узнать чему равно Stopped, то никакие чарты менять не надо. Достаточно просто не присваивать Stopped=7. Но ведь у вас же нет исходников.
Если нет исходников, то можно следить за ордерами, но не совсем так просто есть/нету. Посложнее, если просто нет, то ничего не делать, а вот если был, но исчез - вот тогда перезапускать.
Наверняка дел понабрал и увиливает.А пока исходника нет, можно ли "подковырять" к советнику? Ну, к примеру отключение советника по времени, я сделал с помощью наложения на другой график. А тут совсем никак?
Кучу литературы прочитал и не могу понять, как советнику сообразить, что он "не дергается" и начать всё заново. Опять же склоняюсь к этим переключениям таймфрейма, туда-обратно, для перезагрузки. Но можно ли это сделать без исходника?
Много вопросов, а гугл не всегда прав
Если вы хоть как-то можете написать код, очень советую бесплатную библиотеку AutoIT, там можно легко нажимать программно в любое место экрана. Вот примерчик, недавно делал
Если вы хоть как-то можете написать код, очень советую бесплатную библиотеку AutoIT, там можно легко нажимать программно в любое место экрана. Вот примерчик, недавно делал
А этой "пушкой" можно понять, что сделок нет и нужно переключить фреймы туда обратно? Или каким-то другим способом?
Советник выдает же, что закончил работу и закрыл все ордера (во вкладке Эксперты) - реакция от Autoit - может последовать? Если - да, то я займусь именно им
Спасибо за пример.
Если вы хоть как-то можете написать код, очень советую бесплатную библиотеку AutoIT, там можно легко нажимать программно в любое место экрана. Вот примерчик, недавно делал
Нашел кучу видео, грызу автоит.Хорошая штука, спасибо