[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 459

 
Дорогие эксперты помогите.
Не могу побороть проблему автоматического сохранения шаблона.
Не вставляет имя файла в окно сохранить.
Вот код.
// Функция выгрузки файл шаблона с текущего графика
     string slash=StringSubstr("\a",0,1);
     string path="experts\files";
     if(IsTesting()) path="tester\files";
     SaveTemplate(StringConcatenate(TerminalPath(),slash,path,slash,Symbol(),"-",TimeCurrent(),".tpl")); //загрузка шаблона с именем 
 
void SaveTemplate(string lpTemplateName)
{
    int hParent, hDlg, hEdit,hButtonSave ;
    hParent = GetAncestor(WindowHandle(Symbol(),Period()),2);
    PostMessageA(hParent,WM_COMMAND,33220,0); //вызываем окно сохранения шаблона
    Sleep(100);
    hDlg = GetLastActivePopup(hParent);//основное окно
    hEdit = GetDlgItem(hDlg,0x3E9);//поле имени файла
    SetWindowTextA(hEdit,lpTemplateName); //вводим имя шаблона
    // 0x45A
    hButtonSave = GetDlgItem(hDlg,1);             //определяем дескриптор кнопки "Сохранить"
    Print(lpTemplateName," ",hEdit," ",hDlg," ",hParent," ", hButtonSave);
    PostMessageA(hDlg,WM_COMMAND,1,hButtonSave);  //нажимаем на кнопку

}
Заранее благодарен.
 
vasili:
Дорогие эксперты помогите.
Не могу побороть проблему автоматического сохранения шаблона.
Не вставляет имя файла в окно сохранить.
Вот код.

Библиотека с готовыми функциями управления МТ4. 

//===========================================================================================
// 4.4. Функции для установки шаблона графика.
//===========================================================================================
// 4.4.1. Функция устанавливает на указанный график указанный шаблон по его имени в списке шаблонов.
void ServiceSetTemplateByName(int hwndChart, // Системный дескриптор окна графика, куда загружается шаблон.
string sNameTemplate); // Имя шаблона в списке шаблонов.
//===========================================================================================
// 4.4.2. Функция устанавливает на указанный график указанный шаблон по его номеру в списке шаблонов. В случае успеха функция возвращает TRUE, иначе - FALSE.
bool ServiceSetTemplateByNumber(int hwndChart, // Системный дескриптор окна графика, куда загружается шаблон.
int nTemplate); // Номер шаблона в списке шаблонов. Шаблоны сортируются в списке по имени. Количество шаблонов ограниченно 64.

 Недавно проверял. Работает.

 
7777877:
Щелчок правой кнопкой мыши на улыбающейся роже (в правом верхнем углу окна клиентского терминала) -> Советники -> Удалить

А как это сделать программно, при помощь кода. Выполнил советник свою функцию и вырубился?
 
Elektronik:

А как это сделать программно, при помощь кода. Выполнил советник свою функцию и вырубился?
https://www.mql5.com/ru/forum/110207 
   
PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);
 
Elektronik:

А как это сделать программно, при помощь кода. Выполнил советник свою функцию и вырубился?

Та же библиотека с готовыми функциями управления МТ4. 

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 7. ФУНКЦИИ ДЛЯ УПРАВЛЕНИЯ ПРОГРАММАМИ MQL4.
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// 7.1. Функция удаляет эксперт с указанного графика. В случае успеха функция возвращает TRUE, иначе - FALSE.
bool ServiceDeleteExpert(int hwndChart); // Системный дескриптор окна графика, удаляемого эксперта.
//======================================================================================
// 7.2. ФУНКЦИЯ удаляет индикаторы по имени из списка загруженных индикаторов.
void ServiceDeleteIndicatorsByName(int hwndChart, // Системный дескриптор окна, куда прикреплен индикатор.
int nWindow, // Номер подокна для удаления индикаторов. Если -1, то удаляются индикаторы из всех подокон.
string &asIndicatorName[], // Одномерный массив с именами удаляемых индикаторов.
int nNumberName); // Количество имён индикаторов в массиве.
//======================================================================================
// 7.3. Функция удаляет скрипт с указанного графика. В случае успеха функция возвращает TRUE, иначе - FALSE.
bool ServiceDeleteScript(int hwndChart); // Системный дескриптор окна графика, удаляемого скрипта.oo
//======================================================================================
// 7.4. Функция управляет диалоговым окном завершения скрипта и возвращает системный дескриптор диалогового окна завершения скрипта, если окно есть,
// иначе - NULL. Скрипт работает только с русской и английской локализациями.
int ServiceDialogScript(int bInstruction); // Команда для диалогового окна завершения скрипта: TRUE - завершить скрипт, FALSE - не завершать скрипт.
//======================================================================================
// 7.5. Функция получает имена индикаторов из списка загруженных индикаторов.
// В случае успеха функция возвращает количество индикаторов в указанных подокнах параметром "nWindow", иначе ноль.
int ServiceGetNamesIndicators(int hwndChart, // Системный дескриптор окна, куда прикреплен индикатор.
int nWindow, // Номер подграфика. Если -1, то считываются имена индикаторов из всех подокон.
string &asIndicatorName[], // Одномерный строковый массив для приёма имён индикаторов.
// Массив должен быть инициализирован разными значениями в каждой ячейке!
// Это особенность инициализации строковых массивов в MQL4.
int nNumberName); // Размер массива "asIndicatorName[]" для приёма имён индикаторов.
//======================================================================================
// 7.6. Функция вызывает окно списка индикаторов.
bool ServiceListIndicators(int hwndChart); // Системный дескриптор окна графика, на котором вызывается окно списка индикаторов.
//======================================================================================
// 7.7. Функция загружает на указанный график пользовательский индикатор по его имени.
void ServiceLoadCustomIndicator(int hwndChart, // Системный дескриптор окна графика, куда загружается индикатор.void
string szNameIndicator, // Имя загружаемого индикатора.
int bOK); // Подтверждение запуска индикатора, при наличии диалогового окна свойств индикатора.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
//======================================================================================
// 7.8. Функция загружает на указанный график эксперт по его имени.
void ServiceLoadExpert(int hwndChart, // Системный дескриптор окна графика, куда загружается эксперт.
string szNameExpert, // Имя загружаемого эксперта.
int bOK); // Подтверждение запуска эксперта, при наличии диалогового окна свойств эксперта.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
//======================================================================================
// 7.9. Функция загружает на указанный график скрипт по его имени.
void ServiceLoadScript(int hwndChart, // Системный дескриптор окна графика, куда загружается скрипт.
string szNameScript, // Имя загружаемого скрипта.
int bOK); // Подтверждение запуска скрипта, при наличии диалогового окна свойств скрипта. Скрипт может не иметь окна свойств!
// При использовании функции для загрузки скрипта из скрипта на текущем графике параметр не работает из-за
// невозможности одновременной работы двух скриптов на одном графике.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
//======================================================================================
// 7.10. Функция загружает на указанный график стандартный индикатор по его имени.
void ServiceLoadStdIndicator(int hwndChart, // Системный дескриптор окна графика, куда загружается индикатор.
string szNameIndicator, // Имя загружаемого индикатора.
int bOK); // Подтверждение запуска индикатора, при наличии диалогового окна свойств индикатора.
// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.
//======================================================================================
// 7.11. Функция вызывает меню свойств эксперта. В случае успеха функция возвращает TRUE, иначе - FALSE.
bool ServicePropertiesExpert(int hwndChart); // Системный дескриптор окна графика, на котором вызывается меню свойств эксперта.
//=======================================================================================
// 7.12. Функция включает/отключает эксперты, управляя кнопкой "Советники".
void ServiceSetExperts(); 

 
Elektronik:

А как это сделать программно, при помощь кода. Выполнил советник свою функцию и вырубился?

FAQ:
https://www.mql5.com/ru/forum/110207
PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33050, 0);

Не согласен. Незачем выходить за пределы mql, незачем удалять советник с чарта.  Достаточно программно блокировать торговлю, предусмотрев это  в коде советника.

 
granit77:

Не согласен. Незачем выходить за пределы mql, незачем удалять советник с чарта.  Достаточно программно блокировать торговлю, предусмотрев это  в коде советника.


   Позволь с тобой не согласится (смотреть до конца) :

   

 
granit77:

Не согласен. Незачем выходить за пределы mql, незачем удалять советник с чарта.  Достаточно программно блокировать торговлю, предусмотрев это  в коде советника.

Да! Правильно! Исключение только для удалённого управления.
 

Знатоки, подскажите пожалуйста, есть в советнике такой участок кода, надо узнать как закрылась прошлая свеча на двух парах в момент открытия новой свечи, всё прекрасно работает но если в этот момент есть тики на двух парах, советник стоит на основной паре и с ней проблем нет, но если на второй паре с началом новой свечи нет тиков, то значения с неё не обнавляются и получаются данные с неё не с прошлой свечи, а с позапрошлой, можно конечно подождать минуту, это на H1 не очень критично, но может есть более разумное решение ?

{//1
if (iClose(SignalSimbol,PERIOD_H1,1) > iOpen(SignalSimbol,PERIOD_H1,1)) svcolor1 = 1; // бычья свеча
if (iClose(SignalSimbol,PERIOD_H1,1) < iOpen(SignalSimbol,PERIOD_H1,1)) svcolor1 = 2; // медвежья свеча
if (iClose(SignalSimbol,PERIOD_H1,1) == iOpen(SignalSimbol,PERIOD_H1,1)) svcolor1 = 3; // додж
if (iClose(TradeSimbol,PERIOD_H1,1) > iOpen(TradeSimbol,PERIOD_H1,1)) svcolor2 = 1; // бычья свеча
if (iClose(TradeSimbol,PERIOD_H1,1) < iOpen(TradeSimbol,PERIOD_H1,1)) svcolor2 = 2; // медвежья свеча
if (iClose(TradeSimbol,PERIOD_H1,1) == iOpen(TradeSimbol,PERIOD_H1,1)) svcolor2 = 3; // додж
spread =  MarketInfo(TradeSimbol,MODE_SPREAD);
TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи
RefreshRates ();
}//1 
 
Zhunko:

Библиотека с готовыми функциями управления МТ4. 

 Недавно проверял. Работает.

Спасибо.