Небольшой пример работы методом GET
#property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ #import "wininet.dll" int InternetAttemptConnect(int x); int InternetOpenW(string sAgent, int lAccessType, string sProxyName, string sProxyBypass, int lFlags); int InternetConnectW(int hInternet, string szServerName, int nServerPort, string lpszUsername, string lpszPassword, int dwService, int dwFlags, int& dwContext[]); int HttpOpenRequestW(int hConnect, string Verb, string _ObjectName, string Version, string Referer, string AcceptTypes, uint dwFlags, int& dwContext[]); int HttpSendRequestW(int hRequest, string lpszHeaders, int dwHeadersLength, uchar &lpOptional[], int dwOptionalLength); int HttpQueryInfoW(int hRequest, int dwInfoLevel, int &lpvBuffer[], int &lpdwBufferLength[], int &lpdwIndex[]); int InternetReadFile(int hFile, uchar &sBuffer[], int lNumBytesToRead, int &lNumberOfBytesRead[]); int InternetCloseHandle(int hInet); #import #import "kernel32.dll" int GetLastError(void); #import //+------------------------------------------------------------------+ #define INTERNET_FLAG_CACHE_IF_NET_FAIL 0x00010000 #define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x00001000 #define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x00002000 #define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x00008000 #define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 #define INTERNET_FLAG_PRAGMA_NOCACHE 0x00000100 #define INTERNET_FLAG_RELOAD 0x80000000 #define INTERNET_FLAG_SECURE 0x00800000 #define INTERNET_SERVICE_HTTP 3 //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ void OnTick() { } //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (lparam == 'T') TestBinanceApi(); } //+------------------------------------------------------------------+ void TestBinanceApi() { //Open session int sessionHandle = 0; string sAgent = "MQL"; string sProxyName = ""; string sProxyBypass = ""; sessionHandle = InternetOpenW(sAgent, 0, sProxyName, sProxyBypass, 0); Print("sessionHandle = ", sessionHandle, " errorKernel = ", kernel32::GetLastError(), " errorMql = ", GetLastError()); //Connect to host int connectionHandle = 0; string szServerName = "api.binance.com"; string lpszUsername = ""; string lpszPassword = ""; int dwContext[1] = {0}; connectionHandle = InternetConnectW(sessionHandle, szServerName, 443, lpszUsername, lpszPassword, INTERNET_SERVICE_HTTP, 0, dwContext); Print("connectionHandle = ", sessionHandle, " errorKernel = ", kernel32::GetLastError(), " errorMql = ", GetLastError()); //Open request int requestHandle = 0; string Verb = "GET"; string _ObjectName = "/api/v1/time"; string Version = "HTTP/1.1"; string Referer = NULL; string AcceptTypes = NULL; requestHandle = HttpOpenRequestW(connectionHandle, Verb, _ObjectName, Version, Referer, AcceptTypes, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_SECURE, dwContext); Print("requestHandle = ", requestHandle, sessionHandle, " errorKernel = ", kernel32::GetLastError(), " errorMql = ", GetLastError()); //Send request bool isSentRequest = false; string lpszHeaders = ""; uchar lpOptional[]; isSentRequest = HttpSendRequestW(requestHandle, lpszHeaders, StringLen(lpszHeaders), lpOptional, ArraySize(lpOptional) - 1); //Read request bool isReadRequest = true; uchar sBuffer[100]; int lNumberOfBytesRead[1] = {0}; string readString = ""; while (true && !IsStopped()) { isReadRequest = InternetReadFile(requestHandle, sBuffer, 100, lNumberOfBytesRead); if (isReadRequest == false || lNumberOfBytesRead[0] <= 0) break; readString += CharArrayToString(sBuffer, 0, lNumberOfBytesRead[0]); } Print("readString = ", readString); //Close handles bool idClosedRequest = false; if(requestHandle > 0) idClosedRequest = InternetCloseHandle(requestHandle); Print("idClosedRequest = ", idClosedRequest, sessionHandle, " errorKernel = ", kernel32::GetLastError(), " errorMql = ", GetLastError()); bool isClosedConnection = false; if(connectionHandle > 0) isClosedConnection = InternetCloseHandle(connectionHandle); Print("isClosedConnection = ", isClosedConnection, sessionHandle, " errorKernel = ", kernel32::GetLastError(), " errorMql = ", GetLastError()); bool isClosedSession = false; if(sessionHandle > 0) isClosedSession = InternetCloseHandle(sessionHandle); Print("isClosedSession = ", isClosedSession, sessionHandle, " errorKernel = ", kernel32::GetLastError(), " errorMql = ", GetLastError()); }
Юра, хочу напомнить что в правилах есть пункт:
3.7. Вы соглашаетесь использовать сайт www.mql5.com только с помощью интерфейса, предоставленного компанией MetaQuotes Ltd на сайте www.mql5.com или посредством интерфейса в програмном обеспечении MetaQuotes Software, кроме случаев, когда отдельным соглашением с компанией MetaQuotes Ltd Вам разрешено иное. Вы, в частности, соглашаетесь не использовать для доступа к сайту www.mql5.com автоматизированные средства, включая сценарии, сканеры и подобные технологии.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть небольшая задачка, читать из CodeBase определенные индикаторы скрипты эксперты, в названии или описании к которым есть некое ключевое слово.
Собственно не обязательно из CodeBase , можно приспособить куда угодно.
Простой перебор с использованием WebRequest наткнулся на блокировку по IP , вывод либо использовать большую задержку ,либо заходить через некоторый список прокси.
работа через WinInet.DLL , которая позволяет работать через прокси.