Fișierele de istoric al cotațiilor Metatrader 4 au extensia .hst și sunt localizate în dosarul de date al terminalului de tranzacționare din directorul istoric. Acestea sunt grupate în subdirectoare ale căror nume coincid cu numele serverului, de exemplu: ForexClub-MT4 Demo Server sau Alpari-ECN-Live. Numele fișierelor încep cu numele instrumentului de tranzacționare, apoi este indicat intervalul de timp (numărul de minute), de exemplu, pentru intervalul de timp: EURUSD60.hst. pentru ziua: GBPUSD1440.hst.
Înregistrarea cotelor la aceste fișiere se efectuează în modul amânat, ultima dată va fi garantată că va fi descărcată din RAM în fișier numai atunci când terminalul Metatrader va fi închis. Cu alte cuvinte, aici vom lua în considerare numai lucrul cu datele istorice, iar cotațiile în timp real vor trebui să fie primite într-un mod diferit.
Numărul de bare / lumânări stocate în fișierele .hst. este setat de Max. baruri din istoria fereastra de setări terminale, care este cauzată de comanda a principalelor meniul Instrumente ‣ (fila Grafice).
Catalogul datelor de tranzacționare Metatrader 4 se deschide cu ajutorul comenzii din meniul principal: Fișier ‣ Open Catalog de date. Pentru comoditate, copiem un fișier .hst în folderul Temp pe unitatea D.
Pentru a lucra cu acest fișier, deschideți-l pentru a citi în modul binar:
Formatul fișierului .hst este descris în secțiunea Format din fișierul istoric HST din Metatrader 4. La începutul fișierului .hst este stocat un antet cu o lungime de 148 de octeți pentru datele de serviciu. Primele 4 octeți din antet conțin numărul versiunii formatului de date. În clădirile vechi (până la 509) a fost utilizat formatul 400. În noile clădiri - format 401. Trebuie să găsim numărul formatului, deoarece numărul și dimensiunea câmpurilor din fișier depind de acesta.
Pentru a citi datele dintr-un fișier, vom folosi metoda citită (n). unde n este numărul de octeți pe care vrem să le citim. Pentru a despacheta datele, vom folosi funcția de despachetare a modulului struct. primul său parametru este un șir de formate ("i" pentru numere întregi de 4 octeți, "L" pentru numere nesemnate de 4 octeți, "Q" pentru numere nesemnate de 8 octeți, "d" pentru numere reale de 8 octeți, simbol "<" в начале строки формата указывает, что первым хранится младший байт многобайтного целого числа), второй параметр – исходные данные. Функция unpack всегда возвращает в качестве результата кортеж (tuple), поэтому надо явно указать, что мы хотим записать в переменную не весь кортеж, а его первый элемент (приходится ставить запятую после имени переменной перед знаком присваивания или явно обращаться к нулевому элементу кортежа):
În continuare, citiți din antetul fișierului .hst un șir de drepturi de autor (64 de octeți); numele instrumentului de tranzacționare (bilet, 12 octeți); numărul de interval (4 octeți); numărul de zecimale în cotații (4 octeți); timpul de creare a fișierelor (4 octeți); datele ultima sincronizare (4 bytes) și 52 de octeți de date neutilizate (rezervate pentru utilizare ulterioară).
Pentru noul format, lungimea de înregistrare este de 60 de octeți (răspândirea 4 octeți și volumul real de 8 octeți adăugați, data și ora acum ocupă și 8 octeți).
Un fragment al programului Python pentru citirea citatelor din fișierul .hst al formatelor vechi și noi:
Aici ne-am limitat la citirea a 5 înregistrări și a întrerupt ciclul.
Rămâne aranjarea citirii datelor din fișierul .hst ca o funcție separată, astfel încât să poată fi utilizată în viitor. Lăsăm acest lucru cititorului ca un exercițiu.