Entradas Populares

La Elección Del Editor - 2020

MQL4: aprendiendo el método WebRequest

Hola a todos!

No hace mucho tiempo, en una lección sobre las posiciones abiertas de los comerciantes, tomamos datos de un sitio web en la red. Lo que hicimos en la lección se puede hacer de otra manera, sin usar dll, por lo tanto, sin depender del sistema operativo.

Todo lo que necesitas es un terminal Metatrader 4 y un editor de código mql. Además del conocimiento del método estándar de solicitud web mql4, que conoceremos hoy.

Método de solicitud web

El método WebRequest se puede llamar de dos maneras. El primero es adecuado para enviar solicitudes simples a un servidor con encabezados http estándar. Se ve así:

int WebRequest (
cadena constantemétodo, // método HTTP
cadena constanteurl, // url
cadena constantegalleta, // cookie
cadena constanteárbitro, // árbitro
inttiempo de espera,    // tiempo de espera
const chary datos, // matriz del cuerpo del mensaje HTTP
inttamaño_datos,       // tamaño de la matriz de datos en bytes
chary resultado,        // matriz con datos de respuesta del servidor
cuerda& result_headers// encabezados de respuesta del servidor
);

La segunda opción le permite completar la matriz de encabezados usted mismo. Esto es útil en varias situaciones difíciles cuando, por ejemplo, necesita enviar archivos al servidor.

int WebRequest (
cadena constantemétodo, // método HTTP
cadena constanteurl, // url
cadena constanteencabezados, // encabezados
inttiempo de espera,    // tiempo de espera
const chary datos, // matriz del cuerpo del mensaje HTTP
chary resultado,        // matriz con datos de respuesta del servidor
cuerda& result_headers// encabezados de respuesta del servidor
);

método puede ser cualquier método HTTP. En el video tutorial, veremos el uso del método GET;

url -La dirección del servidor al que accede

galletaen consecuencia, cookies, por ejemplo, para autorización en el servidor;

árbitro - valor del encabezado Referer de la solicitud HTTP;

tiempo de esperatiempo de espera en milisegundos, es decir, el tiempo de espera de una respuesta del servidor;

encabezadossus encabezados personalizados Cuando se usa la opción de llamada al primer método, de manera predeterminada, la solicitud se enviará con el encabezado: Content-Type: application / x-www-form-urlencoded.

En el caso de un navegador, el título podría verse así, por ejemplo:

GET / tutoriales / HTTP / 1.1
Anfitrión: tlap.com
User-Agent: Mozilla / 5.0 (Windows; U; Windows NT 6.1; en-US; rv: 1.9.1.5) Gecko / 20091102 Firefox / 3.5.5 (.NET CLR 3.5.30729)
Aceptar: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
Aceptar-Lenguaje: en-us, en; q = 0.5
Aceptar-codificación: gzip, desinflar
Aceptar-juego de caracteres: ISO-8859-1, utf-8; q = 0.7, *; q = 0.7
Keep-Alive: 300
Conexión: mantener vivo
Cookie: PHPSESSID = r2t5uvjq435r4q7ib3vtdjq120
Pragma: sin caché
Control de caché: sin caché

En nuestro caso, para enviar un archivo necesita el siguiente encabezado:

Tipo de contenido: multipart / form-data; boundary = - WebKitFormBoundaryePkpFF7tjBAqx29L
Disposición de contenido: datos de formulario; nombre = "archivo cargado"; filename = "hello.tlap" Tipo de contenido: application / x-object

Pero enviar archivos es una tarea bastante rara, mucho más a menudo solo necesitamos obtener algunos datos del programa mql4.

El método WebRequest en sí mismo devuelve int, es decir, un número. Este número no es más que un código de respuesta del servidor, o -1 en caso de un error de ejecución del método. El código de respuesta es un número de tres dígitos. Actualmente hay cinco clases de código:

1xx: Informativo: la solicitud se recibe y se entiende, y el procesamiento continúa;
2xx: Éxito: la solicitud se recibió, entendió y procesó con éxito;
3xx: Redirección: se deben seguir otros pasos para completar la solicitud;
4xx: Error del cliente: la solicitud tiene una sintaxis deficiente o no se puede ejecutar;
5xx: Error del servidor: el servidor no puede completar una solicitud válida.

Estos son algunos de los ejemplos más comunes:

200 OK - Solicitud exitosa. Si el cliente solicitó algún dato, está en el encabezado o cuerpo del mensaje. Tal código viene en caso de éxito;

301 Movido permanentemente. El documento solicitado finalmente se transfirió a la nueva URL especificada en el campo Ubicación del encabezado. Este código significa que la página ha sido transferida y ahora está disponible en una dirección diferente;

400 Solicitud incorrecta. El servidor no comprende la solicitud debido a un error de sintaxis. Este código significa que se produjo un error tipográfico durante la solicitud;

401 No autorizado. La solicitud requiere identificación del usuario. Este código significa que primero debe iniciar sesión: ingrese el nombre de usuario y la contraseña del sitio;

403 Prohibido. El servidor entendió la solicitud, pero se niega a cumplirla debido a algunas restricciones de acceso;

404 no encontrado. El servidor entendió la solicitud, pero no pudo encontrar el recurso correspondiente en la URL especificada. Muy a menudo, este código indica que la página simplemente se eliminó;

500 Error interno del servidor. Cualquier error interno del servidor que no sea parte del resto de los errores de la clase 5xx.

De hecho, por supuesto, hay muchos más códigos. En cada clase generalmente hay de una docena a varias docenas, pero no tiene sentido dar todo aquí, especialmente porque esta información se puede encontrar de forma independiente en la red. Solo he dado los códigos de respuesta más comunes.

No olvide agregar la dirección del sitio utilizada a la lista de URL permitidas en el terminal, de lo contrario, nada funcionará. Para hacer esto, presione Ctrl + O o vaya a servicio-> configuración-> pestaña de asesores.

La configuración debe ser aproximadamente como se muestra en la figura anterior.

En su trabajo, vale la pena considerar que el método WebRequest espera una respuesta del servidor, y hasta que llegue la respuesta, es imposible ejecutar más secuencias de comandos. Por lo tanto, este indicador no se puede usar en el indicador. Además, considere que lleva tiempo ejecutar el método, y durante este tiempo el script o el asesor no harán nada más. Especialmente vale la pena considerar esta especificidad si envía solicitudes pesadas o recibe respuestas pesadas, por ejemplo, archivos voluminosos con cualquier información.

Conclusión

Hoy hemos analizado el método WebRequest, que proporciona una forma bastante simple para que sus asesores y scripts interactúen con el mundo exterior. Con este método, puede recibir páginas web, descargar y enviar archivos, realizar manipulaciones automáticas en el sitio y mucho más.

Las posibilidades de este método son realmente infinitas, especialmente si no conoce otros lenguajes de programación. Al usarlo, puede resolver tareas completamente no comerciales, por ejemplo, hacer un autoclicker o emular cualquier otro trabajo útil en la red que genere dinero. Es una idea divertida, pero si trabajas duro, puedes escribir tu auto-surfista, quien ganará por ti con los clics mientras tus robots principales combinan el depósito, un poco, pero agradable.

Deja Tu Comentario