Добрый день!
Есть советник, который работает с разными настройками на разных инструментах. При каждом обновлении сервера, терминала или новой версии советника мне приходится руками перезапускать все экземпляры, да еще и в нескольких терминалах. Иногда эта рутина ведет к ошибкам. Хочу это автоматизировать, сделать что-то типа мастер-эксперта, который я запускаю, а он уже запускает всех остальных, скармливает им нужные настройки, проверяет правильность версии и прочее. Короче DevOps :)
Буду благодарен за идеи или опыт решения подобных задач.
Самый простой способ - что бы ваш установленный эксперт, после того как он выполнил свою задачу, передал другому эксперту работу .
Функция смена шаблона Графика - перед этим Вам нужно сохранить Эксперта на шаблоне уже с другими настройками.
Самый простой способ - что бы ваш установленный эксперт, после того как он выполнил свою задачу, передал другому эксперту работу .
Функция смена шаблона Графика - перед этим Вам нужно сохранить Эксперта на шаблоне уже с другими настройками.
Спасибо за идею. Я даже не знал, что эксперт на шаблоне сохраняется. Из хорошего: появляется возможность сделать это все заранее, в удобное время, а переход произойдет автоматически в нужный момент времени. Но все же, надо руками подготавливать шаблоны, раскладывать их по терминалам. В плане ручного труда ничего не выигрываем.
Спасибо за идею. Я даже не знал, что эксперт на шаблоне сохраняется. Из хорошего: появляется возможность сделать это все заранее, в удобное время, а переход произойдет автоматически в нужный момент времени. Но все же, надо руками подготавливал заранее шаблоны, раскладывал их по терминалам. В плане ручного труда ничего не выигрываем.
Вот сама Функция - это сработает и сменит только на том, где стоит.
//+------------------------------------------------------------------+ //| tpl.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property script_show_inputs //--- sinput ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Change TimeFrame - Current = dont changed sinput string Template_1 = "Momentum"; // Имя шаблона(without '.tpl') //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- DeleteChart_1(); } //+------------------------------------------------------------------+ //| start function | //+------------------------------------------------------------------+ void DeleteChart_1(void) { long prevChart=0; bool errTemplate; if(TimeFrame!=PERIOD_CURRENT) { ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame); } errTemplate=ChartApplyTemplate(prevChart,Template_1+".tpl"); if(!errTemplate) { Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError()); } } //+------------------------------------------------------------------+
если так, сменит все открытые графики
//+------------------------------------------------------------------+ //| start function | //+------------------------------------------------------------------+ void CSampleExpert::DeleteChart(void) { long currChart,prevChart=ChartFirst(); int i=0,limit=100; bool errTemplate; while(i<limit) { currChart=ChartNext(prevChart); if(TimeFrame!=PERIOD_CURRENT) { ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame); } errTemplate=ChartApplyTemplate(prevChart,Template+".tpl"); if(!errTemplate) { Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError()); } if(currChart<0) break; Print(i,ChartSymbol(currChart)," ID =",currChart); prevChart=currChart; i++; } } //+------------------------------------------------------------------+
Вот сама Функция - это сработает и сменит только на том, где стоит.
Спасибо. С этим вариантом все понятно.
О! Ты натолкнул меня на мысль. Шаблон ведь обычный текстовый файл. Я могу из эксперта сам его сгенерировать для каждого инструмента, прописать туда все что я хочу запустить, все настройки и перейти на этот шаблон. Вот это уже будет полная автоматизация.
Спасибо. С этим вариантом все понятно.
Тут можно выбрать на всех(true) или на текущем (false)
//+------------------------------------------------------------------+ //| tpl.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property script_show_inputs //--- sinput ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Change TimeFrame - Current = dont changed sinput string Template_1 = "Momentum"; // Имя шаблона(without '.tpl') sinput bool fyn = false; // Vse --> true //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- if(fyn) { DeleteChart(); } if(!fyn) { DeleteChart_1(); } } //+------------------------------------------------------------------+ //| start function | //+------------------------------------------------------------------+ void DeleteChart_1(void) { long prevChart=0; bool errTemplate; if(TimeFrame!=PERIOD_CURRENT) { ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame); } errTemplate=ChartApplyTemplate(prevChart,Template_1+".tpl"); if(!errTemplate) { Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError()); } } //+------------------------------------------------------------------+ //| start function | //+------------------------------------------------------------------+ void DeleteChart(void) { long currChart,prevChart=ChartFirst(); int i=0,limit=100; bool errTemplate; while(i<limit) { currChart=ChartNext(prevChart); if(TimeFrame!=PERIOD_CURRENT) { ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame); } errTemplate=ChartApplyTemplate(prevChart,Template_1+".tpl"); if(!errTemplate) { Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError()); } if(currChart<0) break; Print(i,ChartSymbol(currChart)," ID =",currChart); prevChart=currChart; i++; } } //+------------------------------------------------------------------+
О! Ты натолкнул меня на мысль. Шаблон ведь обычный текстовый файл. Я могу из эксперта сам его сгенерировать для каждого инструмента, прописать туда все что я хочу запустить, все настройки и перейти на этот шаблон. Вот это уже будет полная автоматизация.
А положить его туда куда нужно сможете без dll? )
А положить его туда куда нужно сможете без dll? )
Так зачем, всё сохраняется по умолчанию в своих местах. Шаблон с экспертом сохраняете, только нужно перед сохранением, настроить как вам нужно эксперта.
вот настроили эксперта - и сохранили под именем 1. Шаблон и так можно до бесконечности, настроили задали имя 2.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
как я его использую - сохранил эксперта с настройками, у меня к примеру открыто 20 графиков - нажал на кнопку, на всех открытых графиках установится эксперт.
или ещё при достижение общей прибыли - сменит шаблон уже с другой настройкой и другой сумой прибыли.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Есть советник, который работает с разными настройками на разных инструментах. При каждом обновлении сервера, терминала или новой версии советника мне приходится руками перезапускать все экземпляры, да еще и в нескольких терминалах. Иногда эта рутина ведет к ошибкам. Хочу это автоматизировать, сделать что-то типа мастер-эксперта, который я запускаю, а он уже запускает всех остальных, скармливает им нужные настройки, проверяет правильность версии и прочее. Короче DevOps :)
Буду благодарен за идеи или опыт решения подобных задач.