Добрый вечер .Помогите пожалуйста нужен пример советника ,в котором заложено получение set параметров через DLL .
Советник на компьютере у одного человека .а данные параметров у другого человека на другом компе .Как сделать так чтобы советник получал эти данные ?
Я бы это делал через связь с фтп, без каких либо dll
Webrequest в помощь
- www.mql5.com
Я бы это делал через связь с фтп, без каких либо dll
Webrequest в помощь
Спасибо за столь оперативный ответ ,но меня интересует MT4 и с примером советника с такими возможностями ..
Спасибо за столь оперативный ответ ,но меня интересует MT4 и с примером советника с такими возможностями ..
Вот мт4
Примеры найдёте, их много. Если коротко, то на фтп заливаете set-файл, хоть каждый час, ну а советник идёт на фтп и оттуда забирает файл, далее его раскладывает построчно, и применяет данные.
- docs.mql4.com
Вот мт4
Примеры найдёте, их много. Если коротко, то на фтп заливаете set-файл, хоть каждый час, ну а советник идёт на фтп и оттуда забирает файл, далее его раскладывает построчно, и применяет данные.
Уже неделю копаюсь нет примеров я не нашел с открытми кодами ..Пожалуйста если у вас есть что-то предоставьте пожалуйста
Уже неделю копаюсь нет примеров я не нашел с открытми кодами ..Пожалуйста если у вас есть что-то предоставьте пожалуйста
Наверное колёсико у крыски сломалось. Никак не прокрутить страничку...
Пример использования 1-го варианта функции WebRequest():
void OnStart() { string cookie=NULL,headers; char post[],result[]; int res; //--- для работы с сервером необходимо добавить URL "https://www.google.com/finance" //--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"): string google_url="https://www.google.com/finance"; //--- обнуляем код последней ошибки ResetLastError(); //--- загрузка html-страницы с Google Finance int timeout=5000; //--- timeout менее 1000 (1 сек.) недостаточен при низкой скорости Интернета res=WebRequest("GET",google_url,cookie,NULL,timeout,post,0,result,headers); //--- проверка ошибок if(res==-1) { Print("Ошибка в WebRequest. Код ошибки =",GetLastError()); //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления MessageBox("Необходимо добавить адрес '"+google_url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION); } else { //--- успешная загрузка PrintFormat("Файл успешно загружен, Размер файла =%d байт.",ArraySize(result)); //--- сохраняем данные в файл int filehandle=FileOpen("GoogleFinance.htm",FILE_WRITE|FILE_BIN); //--- проверка ошибки if(filehandle!=INVALID_HANDLE) { //--- сохраняем содержимое массива result[] в файл FileWriteArray(filehandle,result,0,ArraySize(result)); //--- закрываем файл FileClose(filehandle); } else Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); } }
Пример использования 2-го варианта функции WebRequest():
#property link "https://www.mql5.com" #property version "1.00" #property strict #property script_show_inputs #property description "Пример скрипта, который публикует сообщение " #property description "пользователя в ленте на mql5.com" input string InpLogin =""; //Ваш аккаунт в MQL5.com input string InpPassword=""; //Пароль для вашего аккаунта input string InpFileName="EURUSDM5.png"; //Картинка в папке MQL5/Files/ input string InpFileType="image/png"; //Правильный mime type картинки //+------------------------------------------------------------------+ //| Публикация сообщения с картинкой в ленте mql5.com | //+------------------------------------------------------------------+ bool PostToNewsFeed(string login,string password,string text,string filename,string filetype) { int res; // для помещения результата выполнения операций char data[]; // массив с данными для отправки POST-запросов char file[]; // сюда прочитаем картинку string str="Login="+login+"&Password="+password; string auth,sep="-------Jyecslin9mp8RdKV"; // разделитель данных формата multipart //--- имеется файл - пробуем прочитать его if(filename!=NULL && filename!="") { res=FileOpen(filename,FILE_READ|FILE_BIN); if(res<0) { Print("Ошибка открытия файла \""+filename+"\""); return(false); } //--- читаем данные файла if(FileReadArray(res,file)!=FileSize(res)) { FileClose(res); Print("Ошибка чтения файла \""+filename+"\""); return(false); } //--- FileClose(res); } //--- сформируем тело POST запроса на авторизацию ArrayResize(data,StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8)-1); //--- сбросим код ошибки ResetLastError(); //--- выполняем запрос на авторизацию res=WebRequest("POST","https://www.mql5.com/ru/auth_login",NULL,0,data,data,str); //--- если авторизация не удалась if(res!=200) { Print("Ошибка авторизации #"+(string)res+", LastError="+(string)GetLastError()); return(false); } //--- вычитаем из заголовка ответа сервера cookie авторизации res=StringFind(str,"Set-Cookie: auth="); //--- если cookie не найден, сообщим об ошибке if(res<0) { Print("Ошибка, данные авторизации не найдены в ответе сервера (проверте логин/пароль)"); return(false); } //--- запомним авторизационные данные и сформируем заголовок для последующих запросов auth=StringSubstr(str,res+12); auth="Cookie: "+StringSubstr(auth,0,StringFind(auth,";")+1)+"\r\n"; //--- если имеется файл данных, отправляем его на сервер if(ArraySize(file)!=0) { //--- сформируем тело запроса str="--"+sep+"\r\n"; str+="Content-Disposition: form-data; name=\"attachedFile_imagesLoader\"; filename=\""+filename+"\"\r\n"; str+="Content-Type: "+filetype+"\r\n\r\n"; res =StringToCharArray(str,data); res+=ArrayCopy(data,file,res-1,0); res+=StringToCharArray("\r\n--"+sep+"--\r\n",data,res-1); ArrayResize(data,ArraySize(data)-1); //--- сформируем заголовок запроса str=auth+"Content-Type: multipart/form-data; boundary="+sep+"\r\n"; //--- сбросим код ошибки ResetLastError(); //--- выполняем запрос на передачу файла изображения на сервер res=WebRequest("POST","https://mql5.com/upload_file",str,0,data,data,str); //--- проверим результат запроса if(res!=200) { Print("Ошибка передачи файла на сервер #"+(string)res+", LastError="+(string)GetLastError()); return(false); } //--- получим ссылку на картинку, которую загрузили на сервер str=CharArrayToString(data); if(StringFind(str,"{\"Url\":\"")==0) { res =StringFind(str,"\"",8); filename=StringSubstr(str,8,res-8); //--- при ошибке закачки файла, вернётся пустая ссылка if(filename=="") { Print("Передача файла на сервер не удалась"); return(false); } } } //--- сформируем тело запроса публикации сообщения на сервере str ="--"+sep+"\r\n"; str+="Content-Disposition: form-data; name=\"content\"\r\n\r\n"; str+=text+"\r\n"; //--- на каких языках сайта mql5.com будет доступна публикация str+="--"+sep+"\r\n"; str+="Content-Disposition: form-data; name=\"AllLanguages\"\r\n\r\n"; str+="on\r\n"; //--- если картинка была загружена на сервер - передадим ссылку на неё if(ArraySize(file)!=0) { str+="--"+sep+"\r\n"; str+="Content-Disposition: form-data; name=\"attachedImage_0\"\r\n\r\n"; str+=filename+"\r\n"; } //--- завершающая строка multipart-запроса str+="--"+sep+"--\r\n"; //--- собираем тело POST-запроса в одну строку StringToCharArray(str,data,0,WHOLE_ARRAY,CP_UTF8); ArrayResize(data,ArraySize(data)-1); //--- подготовим заголовок запроса str=auth+"Content-Type: multipart/form-data; boundary="+sep+"\r\n"; //--- выполняем запрос на публикацию сообщение в ленте пользователя mql5.com res=WebRequest("POST","https://www.mql5.com/ru/users/"+login+"/wall",str,0,data,data,str); //--- в случае успешной публикации вернем true return(res==200); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- опубликуем пост на mql5.com c картинкой, путь к которой возьмем из параметра InpFileName PostToNewsFeed(InpLogin,InpPassword,"Проверка расширенной версии функции WebRequest\r\n" "(Данное сообщение размещено скриптом WebRequest.mq5)",InpFileName,InpFileType); } //+------------------------------------------------------------------+
Наверное колёсико у крыски сломалось. Никак не прокрутить страничку...
Пример использования 1-го варианта функции WebRequest():
Пример использования 2-го варианта функции WebRequest():
Это же не советник ..Это просто пример кода ..Я спрашивал о советнике с встроенным WebRequest()
Пример использования 2-го варианта функции WebRequest():
Данный пример, в том виде как он написан не работает. https://www.mql5.com/ru/forum/95688
Ну вот .Сказал я это взяли бы в штыки((Спасибо за поддержку ..
Данный пример, в том виде как он написан не работает. https://www.mql5.com/ru/forum/95688
Данный пример уже не авторизует на сайте, но это и незачем. Достаточно подставить адрес своего сайта, или любой другой, и всё заработает.
Не вводите народ в заблуждение, там вполне самодостаточный пример!
Это же не советник ..Это просто пример кода ..Я спрашивал о советнике с встроенным WebRequest()
Вы правы - это просто пример (первый вариант использования WebRequest() ) , но он вполне рабочий. Готового решения под Вашу задачу вы вряд ли найдёте т.к. она нестандартна...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый вечер .Помогите пожалуйста нужен пример советника ,в котором заложено получение set параметров через DLL .
Советник на компьютере у одного человека .а данные параметров у другого человека на другом компе .Как сделать так чтобы советник получал эти данные ?