Popularni Postovi

Izbor Urednika - 2019

MQL4: učenje metode WebRequest

Pozdrav svima!

Ne tako davno, u lekciji o otvorenim pozicijama trgovaca, uzeli smo podatke s web stranice na mreži. Što smo tada napravili u lekciji, možemo učiniti i na drugi način, bez korištenja dll-a, dakle, bez ovisno o operativnom sustavu.

Sve što trebate je editor Metatrader 4 i uređivač mql koda. Kao i poznavanje standardne mql4 WebRequest metode s kojom ćemo se danas susresti.

Metoda webRequesta

Metoda WebRequest može se pozvati na dva načina. Prva je pogodna za slanje jednostavnih zahtjeva na poslužitelj sa standardnim http zaglavljama. To izgleda ovako:

int WebRequest (
const stringnačin, // HTTP metoda
const stringuRL, // url
const stringkolačić, // kolačić
const stringpreporučitelja, // referent
inttajm-aut,    // timeout
const char& podaci, // niz tijela HTTP poruke
intdata_size,       // veličina podatkovnog polja u bajtovima
čađ& rezultat,        // niz s podacima odgovora poslužitelja
niz& rezultata_glavlja// zaglavlja odgovora poslužitelja
);

Druga opcija omogućuje vam da sami popunite niz zaglavlja. Ovo je korisno u raznim teškim situacijama kada, primjerice, datoteke morate slati na poslužitelj.

int WebRequest (
const stringnačin, // HTTP metoda
const stringuRL, // url
const stringzaglavlja, // zaglavlja
inttajm-aut,    // timeout
const char& podaci, // niz tijela HTTP poruke
čađ& rezultat,        // niz s podacima odgovora poslužitelja
niz& rezultata_glavlja// zaglavlja odgovora poslužitelja
);

način može biti bilo koja HTTP metoda. U video vodiču ćemo pogledati pomoću metode GET;

url -Adresa poslužitelja kojem pristupate

kolačić -prema tome, kolačiće, na primjer, za autorizaciju na poslužitelju;

preporučitelja - vrijednost Referer zaglavlja HTTP zahtjeva;

prekid -vremensko ograničenje u milisekundama, odnosno vrijeme čekanja na odgovor poslužitelja;

zaglavlja -svoje prilagođene zaglavlja. Kada se koristi opcija prvog poziva, metoda će se, prema zadanim postavkama, poslati s zaglavljem: Content-Type: application / x-www-form-urlencoded.

U slučaju preglednika, naslov može izgledati ovako, na primjer:

GET / vodiči / HTTP / 1.1
Domaćin: tlap.com
Korisnički 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)
Prihvati: tekst / html, aplikacija / xhtml + xml, aplikacija / xml; q = 0.9, * / *; q = 0.8
Prihvati-Jezik: en-us, en; q = 0,5
Accept-Encoding: gzip, ispuhavanje
Prihvati-Charset: ISO-8859-1, utf-8; q = 0.7, *; q = 0.7
Zadržite: 300
Veza: ostanite živi
Kolačić: PHPSESSID = r2t5uvjq435r4q7ib3vtdjq120
Pragma: nema predmemorije
Predmemorija: nema predmemorije

U našem slučaju za slanje datoteke potrebno vam je sljedeće zaglavlje:

Vrsta sadržaja: podaci o više dijelova / oblika; granica = - WebKitFormBoundaryePkpFF7tjBAqx29L
Sadržaj-dispozicija: podaci o obliku; name = "uploadedfile"; filename = "hello.tlap" Vrsta sadržaja: aplikacija / x-objekt

No slanje datoteka prilično je rijedak zadatak, puno češće trebamo samo dobiti neke podatke iz mql4 programa.

Sama metoda WebRequest vraća int, to jest broj. Ovaj broj je ništa više od koda odgovora s poslužitelja ili -1 u slučaju pogreške u izvršavanju metode. Kôd odgovora je troznamenkasti broj. Trenutno postoji pet klasa koda:

1xx: informativni - zahtjev se prima i razumije, a obrada se nastavlja;
2xx: uspjeh - zahtjev je uspješno primljen, shvaćen i obrađen;
3xx: Preusmjeravanje - moraju se poduzeti daljnji koraci da biste ispunili zahtjev;
4xx: pogreška klijenta - zahtjev ima slabu sintaksu ili se ne može izvršiti;
5xx: Greška poslužitelja - poslužitelj ne može ispuniti valjani zahtjev.

Evo nekoliko najčešćih primjera:

200 OK - Uspješan zahtjev. Ako je klijent zatražio bilo kakve podatke, to se nalazi u zaglavlju ili tijelu poruke. Takav kôd dolazi u slučaju uspjeha;

301 Premješteno trajno. Zatraženi dokument konačno je premješten na novi URL naveden u polju zaglavlja u lokaciji. Ovaj kôd znači da je stranica prebačena i da je sada dostupna na drugoj adresi;

400 Loš zahtjev. Taj zahtjev poslužitelj ne razumije zbog pogreške u sintaksi. Ovaj kôd znači da je došlo do pogreška pri upitu;

401 Neovlašteno. Zahtjev zahtijeva identifikaciju korisnika. Ovaj kôd znači da se prvo trebate prijaviti - unijeti prijavu i lozinku s web mjesta;

403 Zabranjeno. Poslužitelj je razumio zahtjev, ali odbija ga ispuniti zbog određenih ograničenja pristupa;

404 nije pronađen. Poslužitelj je razumio zahtjev, ali nije mogao pronaći odgovarajući resurs na navedenom URL-u. Najčešće ovaj kôd ukazuje da je stranica jednostavno izbrisana;

500 unutarnjih pogrešaka poslužitelja. Svaka unutarnja pogreška poslužitelja koja nije dio ostalih pogrešaka klase 5xx.

Zapravo, naravno, postoji puno više kodova. U svakom razredu obično ima desetak do nekoliko desetaka, ali nema smisla ovdje dati sve, posebno jer se te informacije mogu samostalno pronaći na mreži. Dao sam samo najčešće kode odgovora.

Ne zaboravite dodati korištenu adresu web mjesta na popis dopuštenih URL-a u terminalu, jer u protivnom ništa neće raditi. Da biste to učinili, pritisnite Ctrl + O ili idite na karticu usluge-> postavke-> savjetnici.

Postavke trebaju biti približno kako su prikazane na slici iznad.

U svom radu vrijedi uzeti u obzir da metoda WebRequest čeka odgovor od poslužitelja, a dok ne stigne odgovor, daljnja izvedba skripte nije moguća. Stoga se ovaj indikator ne može upotrijebiti u pokazatelju. Uz to, uzmite u obzir da je potrebno vrijeme da se izvrši metoda, a za to vrijeme skripta ili savjetnik neće učiniti ništa drugo. Osobito je vrijedno razmotriti ovu specifičnost ako šaljete velike zahtjeve ili primate teške odgovore, na primjer, voluminozne datoteke s bilo kojim podacima.

Zaključak

Danas smo analizirali metodu WebRequest koja pruža prilično jednostavan način interakcije vaših savjetnika i skripti s vanjskim svijetom. Pomoću ove metode možete primati web stranice, preuzimati i slati datoteke, obavljati automatske manipulacije na web mjestu i još mnogo toga.

Mogućnosti ove metode su zaista beskrajne, pogotovo ako ne znate druge programske jezike. Pomoću nje možete riješiti potpuno netrgovačke zadatke, na primjer, izvršiti automatsko klikom ili oponašati bilo koji drugi koristan rad na mreži koji donosi novac. Smiješna ideja, ali ako naporno radite, možete napisati svog auto-surfera, koji će zaraditi za vas na klikovima, dok vam glavni botovi isprazne depozit - sitnica, ali lijepo.

Pogledajte video: Robot Building Tutorials #6 - Intro to MQL4 (Listopad 2019).

Ostavite Komentar