Noi scriem robotul "în pași" pasul 1

[Evgeny Eroshkin, investitor privat]

Puteți scrie o mașină automată pentru tranzacționare în aproape orice limbaj de programare modern, cel mai important lucru fiind stabilirea schimbului de date între terminalul (sau gateway-ul schimbului) și un sistem de tranzacționare automatizat. Și asta necesită abilități destul de grave de programare. Cea mai accesibilă cale este de a scrie un robot în Qpile.







Plusul acestei limbi este că este simplu și integrat direct în terminalul Quik [1], ceea ce sporește fiabilitatea pachetului "Terminal-Robot". Din minusuri, puteți identifica lipsa de interfață cu utilizatorul (adică programul poate fi pornit și oprit, dar nu poate fi controlat în timpul funcționării). De asemenea, este dificil pentru Qpile să proceseze seturi de date mari, ceea ce impune o restricție privind crearea de sisteme mecanice pentru a lucra cu un număr mare de parametri de intrare. Dar pentru punerea în aplicare a unor strategii simple, funcționarea acestei limbi este suficientă.

Strategie și instrumente

Orice robot funcționează conform unui algoritm predeterminat, care este o întruchipare logică a strategiei de tranzacționare. Strategia este cea mai importantă parte a oricărei mașini (deși poate ocupa o mică parte a codului din punct de vedere al volumului). Alegerea sa este etapa fundamentală pentru construirea oricărui sistem de tranzacționare, face ca un sistem să fie profitabil, iar celălalt să aibă pierderi, toate celelalte lucruri fiind egale. O mulțime de cărți sunt dedicate alegerii strategiei [2,3]. Scopul acestei serii de articole este un proces de scriere robot care ia decizii în mod independent de cumpărare / vânzare, expune cerere și verifică executarea lor (dar nu este garantat, că el este obligat să fie profitabil). Ce algoritm să alegeți pentru sistemul de tranzacționare, fiecare comerciant decide individual. Vom lua în considerare una dintre cele mai simple strategii - tranzacționarea pe canal. Algoritmul său este simplu: dacă prețul este sub un anumit nivel, cumpărăm și, dacă este mai mare, vindem. Dacă citatele depășesc limitele canalului într-o direcție nefavorabilă pentru noi, vom stabili pierderile.

Trebuie remarcat faptul că o strategie cu niveluri fixe se justifică pe termen scurt, deoarece nivelul mediu se poate schimba în timp, iar obiectivele selectate vor deveni irelevante. Pentru a rezolva această problemă, puteți face dinamica cumpărăturilor / vânzărilor, adică le obligați la valoarea medie pentru o anumită perioadă. Puteți implementa acest lucru, de exemplu, utilizând indicatorul tehnic "media mobilă". Așa că vom acționa mai târziu. Cu toate acestea, acum ne vom opri la niveluri fixe, urmând principiul de la simplu la complex.

Puteți implementa o strategie de tranzacționare în canal în două moduri. Primul implică urmărirea nivelului prețului și efectuarea unei comenzi atunci când obiectivul este atins. De asemenea, puteți plasa imediat comenzile la niveluri, indiferent de prețul curent, și apoi să monitorizați performanța. Prima metodă se aplică numai instrumentelor ale căror prețuri nu se modifică prea repede, altfel, dacă nu aveți mișcări ascuțite, pur și simplu nu puteți reuși. A doua metodă este adecvată pentru toate activele, dar este necesar în orice moment pentru a monitoriza performanța aplicațiilor, dacă este necesar, pentru a le rearanja sau pentru a trage toate VO (de exemplu, schimbarea dinamic nivelurile de cumpărare / vânzare). Prima abordare este mai ușor de pus în aplicare, deci deocamdată, să ne ocupăm de ea. Și pentru a combate schimbarea rapidă a prețurilor și neîndeplinirea ordinelor, vom fi în mod evident mai profitabili pentru prețurile de pe piață, adică vor fi inițial alunecări.







Odată ce codul este scris, salvați fișierul cu extensia * .qpl, atunci terminalul quik deschide elementul de meniu „table-> Portfeli-> Definire portofoliu“ (program de Quik numit portofolii), sau apăsați pe Ctrl + F10 tastele. Selectăm fișierul nostru, faceți clic pe butonul "Deschidere", "Descărcați local" și apoi "Ieșire" (a se vedea Figura 2).

Fig. 2 Elemente de meniu pentru descărcarea și rularea programelor Qpile

Fig. 3 Programul care afișează ora curentă a serverului

Acum, când primul program funcționează, vom începe să îl îmbunătățim: vom primi prețuri curente pentru cererea / oferta pentru instrumentul ales, valorile nivelelor noastre, numele instrumentului și timpul până la execuție în zile. Toate aceste date sunt de asemenea afișate în tabel (vezi codul "Instrument"). Descărcați programul în Quik și rulați-l. Dacă totul este implementat fără erori, obținem următorul tabel (vezi Figura 4).

Fig. 4Introduceți parametrii unui instrument într-un tabel

Avem toate datele necesare, astfel încât să putem compara doar prețurile curente cu nivelele noastre. Dacă prețul cererii este mai mare decât nivelul superior, este un semnal pentru a continua, dacă oferta este sub nivelul nostru inferior, este necesar să efectuați o achiziție. Să proiectăm această logică în cod (a se vedea codul "Comparație", numai corpul programului principal este dat).

Acum, programul nostru va afișa mesaje dacă prețurile depășesc limitele canalului. Cu toate acestea, acestea vor apărea de fiecare dată când programul rulează, adică o dată pe secundă, cu care este incomod să lucrați. Modificați declarațiile noastre de mesaje la liniile de mai jos.

IF PretBid> = HiLevel SERVER_TIME = "VINDE"

"În cazul în care prețul cererii este sub nivelul de LOW, este necesar să cumpere

În cazul în care PriceOffer <= LowLevel SERVER_TIME = "BUY"

În acest caz, semnalele de cumpărare / vânzare vor fi emise, dar în coloana "TIME" a tabelului.

Programul scris nu poate fi atribuit roboților, dar poate fi numit în mod sigur un consilier, deoarece urmărește nivelurile prețurilor și emite recomandări pentru acțiune. Rămâne să-i furnizeze o funcție de depunere a cererilor, iar robotul își va începe activitatea. Cu toate acestea, pot apărea dificultăți neașteptate, de exemplu, pierderea conexiunii la server, oprirea tranzacționării, lipsa fondurilor din cont. Acestea vor duce la erori și întreruperi la locul de muncă. În articolul următor vom învăța robotul nostru să iasă din situații neprevăzute.

Nu este recomandat imediat încercați să comerțului cu un robot pe un cont live (în special în primele modalități de obținere software experiență de scriere), deoarece chiar și cu un potențial profitabile strategii posibile erori în cod, care, la rândul său, poate duce la pierderi grave (de exemplu, a pus aplicația cu preț greșit și / sau volum) până când contul este șters. Este recomandabil să folosiți contul demo pentru depanarea codului.

Qpile (ProgrammableInterfaceandLogicEnvironment) - Limba beysikopodobny care are operatori svoemarsenale pentru dannyhiz aplicații Quik și expediere terminale.

Trading Robot -kompyuternayaprogramma, birzhevuyuinformatsiyu de fabricație la tranzacții resheniyao gazdă zaraneezadannomualgoritmusamostoyatelno otpravlyayuschayazayavki nabirzhu controlul ihispolnenie isledyaschaya zapozitsiyami.

Sesiunea de tranzacționare este perioada în care tranzacțiile sunt deținute la bursă.







Articole similare

Trimiteți-le prietenilor: