Formatul de fișier Metastock

Cum își stochează datele Metastock 7.0.

Există un astfel de program dezvoltat de Equis Metastock numit. Ideea de bază a programului este că primește date de la ghilimelele internet orice instrument (monedă, stoc sau index) și le afișează într-o formă specială (program de schimb). Mai mult decât atât, trebuie remarcat faptul că însăși MetaStock cu serverul bazat pe Internet nu se leagă (nu încorporată în ea), pentru că face alt program (downloader 's, vânzător e), iar acest lucru se datorează faptului că oamenii lucrează cu diferite brokerii și fiecare broker „da“ informația de pe citate în felul său.







Ei bine, și ca metastok la toate, toți cei mai tari ar trebui să salveze aceste informații, deoarece este necesar metastoku.

Aceste date sunt stocate, de regulă, într-un director separat (c: \ date metastop în mod implicit).

Dacă ceva este stocat în el, apoi deschiderea acestui dosar, vom vedea trei tipuri de fișiere:

  1. fișier principal
  2. fișierul emaster
  3. fișierele formularului F? .dat

Fișierul master conține informații despre câte unelte sunt stocate, ce instrumente sunt stocate, numele lor, simbolurile, datele.

Când în metastok este deschis un nou grafic (securitate). atunci metastopul afișează o listă de instrumente din caseta de dialog din acel fișier. Și dacă acest fișier nu există, metastok nu va vedea nimic.

Fișierul Emaster este creat de metastock de fiecare dată când accesați folderul. Prezența sau absența acestui fișier nu afectează performanța programului. Prin urmare, nu o voi lua în considerare în această descriere. Nu are nevoie de nafig!

Fișierele formularului F? .dat conțin date despre graficele unui instrument particular. Prin numărul acestor fișiere, puteți stabili imediat câte unelte stochează MetaStock. Trebuie notat că fără fișierul master nu puteți afla ce instrument este conținut în fișierul F? .dat.

Personal, lucrez pe piața valutară, prin urmare, să iau în considerare aceste metadate din pozițiile forex.

Descrierea fișierelor F? .dat

Fișierul F? .dat din directorul meta date conține date despre unul dintre instrumente. Cu ce ​​anume este indicat în fișierul principal din același dosar. Semnul de întrebare este înlocuit cu un număr (de obicei de la 1 la ultimul instrument). Ie dacă descărcați doar EUR (10 min.) și EUR (1 oră). atunci veți avea doar două fișiere în folderul: F1.dat și F2.dat.

Pentru claritate, în mod condiționat, divizăm fișierul în înregistrări, adică pe linii de 28 octeți lungime dacă este de exemplu în timpul zilei și dacă intraday este de 32 octeți. în el există un câmp suplimentar "timp" - 4 octeți. Mai mult, voi scrie aceste diferențe ca 28 (32), ceea ce înseamnă 28 - pentru instrumente de zi (săptămânal, lunar), respectiv 32 - pentru intraday, respectiv.

Acum, pentru a vă permite să înțelegeți, imaginați-vă o dată în formă de tabel în care fiecare linie (înregistrare) conține 28 (32) octeți, iar în fiecare rând 4 (5) coloane de câte 4 octeți fiecare. Va arata cam asa:

Prima înregistrare scos de sus din întâmplare, este faptul că acesta nu conține date despre lumânări. Și cuprinde toate zerouri, cu excepția 3 și 4 octeți, care conține numărul de înregistrări (28 (32) bytes) în cadrul fișierului. În cazul nostru, este în valoare de un număr hexazecimal 2 în al treilea octet - acest lucru înseamnă că numai două înregistrări din fișier (primul și, dacă este necesar, o egalitate de puncte și un al doilea în cazul în care datele privind lumânarea). În cazul în care numărul de intrări 256 este FF, iar dacă 257 este în al treilea octet va fi 01, iar al patrulea 01. Acest lucru înseamnă că intrările din fișierul = 256 * numărul de octeți 4 + numărul celui de al treilea octet. Decapitați? astfel este posibil, în aceste două octeți pot indica 256 * 256 = 65536 intrări. Am încercat să adaug mai mult, și a început să înjure Downloader (acest metastokovskaya programm astfel). Dacă specificați numărul de înregistrări este mai mică decât este de fapt într-un fișier, atunci MetaStock citit doar ceea ce este declarat. Ie Dacă scrieți 2 (ca în exemplu), apoi a treia linie poate începe să scrie o scrisoare de la bunica mea.







Acum, luați în considerare a doua intrare din tabelul 2. Aici sunt indicate datele sfeșnicului (în fiecare înregistrare este marcată doar o lumanare). În primii patru octeți, după cum înțelegeți, data este indicată, în data următoare, etc. Deoarece lucrez la Forex, domeniul de interes deschis este întotdeauna zero (toți octeții câmpului = 0). Dacă ar fi existat două lumanari în fișier, oa treia linie va fi adăugată în imaginea și asemănarea celui de-al doilea și așa mai departe.

Aici începe distracția. Ie este ceva ce a trebuit să muncesc din greu timp de două zile. Faptul este că, în scopul de a înțelege un anumit număr, de exemplu, în câmp deschis (prețul de deschidere), destul de mult pentru a traduce din hex. format în zecimal. MetaStock numărul de înregistrare în formatul creat, mi se pare, în scopul de a traduce rapid valorile în formă fracționată (probabil văzut în piața de valori de tip 1/8, 2/3, etc.). Dar eu sunt ca o persoană numai patriotic să înțeleagă zecimale și toate descriere suplimentară este îndreptată spre ei.

Pentru claritate, scriem câmpul Open din Tabelul 2.

Setul de octeți prezentat în Tabelul 3 corespunde unei unități zecimale. Dacă octetul înalt este lăsat necompletat (zero), nu contează ce va fi scris în restul de trei, încă în zecimal este zero.

De ce este o unitate? Da, de aceea:

81 în zecimal este 129

unde d1 este valoarea zecimală a primului octet (de ordin înalt), adică 129

D este valoarea zecimală finală a întregului câmp, adică în acest caz, prețul descoperirii, ca atare.

Prin urmare, 2 la puterea lui (129-129) este egală cu 1.

Dacă nu erau 81 și 83, atunci:

83 în zecimal este 131.

2 la puterea (131-129) este egal cu 8

Etc. dar acest calcul este corect dacă cei trei octeți inferiori sunt goi.

Dacă valorile din câmp sunt scrise ca în Tabelul 5.

Apoi, această expresie este de 1.5000.

Dacă ar exista zerouri în loc de 40, atunci D ar fi 1.

Rețineți că 40 în zecimal este 64 sau 128/2 și

1-0,5 = 1/2. astfel numărul patruzeci înseamnă că la 1 este necesar să adăugăm 64/128 (șaizeci și patru de sute treizeci și opt) de la 1. Răcoros, da?

a) Dacă primul octet 82, D = 2

Și a doua 20 zecimale 32, apoi la 2 este necesar să se adauge 32/128 de la 2.

T. D (final) = 2+ (2 * 32/128) = 2,5.

b) Dacă primul octet 85 (D = 16), al doilea 40, atunci

D (final) = 16+ (16 * 64/128) = 24.

Exact aceeași situație cu al treilea și al patrulea octet.

Adevărat, divizorul nu este 128, ci 256.

astfel cel de-al treilea octet arată câte două sute cincizeci de piese din primul octet douăzeci și opt trebuie să fie adăugate la rezultatul final.

Și cel de-al patrulea octet arată câte este necesar să se adauge două sute cincizeci de părți din o sută douăzeci și cinci sute douăzeci și opt de la primul octet.

Pentru o înțelegere completă a ultimului paragraf, vă recomand să citiți de mai multe ori cu un creion în mână.

Și puteți utiliza, de asemenea, fișierul e, unde am scris deja toate aceste formule, doar să pot conduce în datele originale. Există două variante de conversie:

  1. De la metastock la format zecimal
  2. Dimpotrivă.

Algoritmii prezentați în dosar nu pretind a fi perfecți și lucrează numai cu numere pozitive (deoarece nu există prețuri și date negative) și cu scaderi de precizie crescătoare, adică schimbarea numărului redus de octeți pe unitate cu un prim octet mare poate schimba rezultatul final cu zeci sau chiar cu unul. Dar, pentru valori mici, de exemplu, până la o mie, schimbarea minimă în octetul de ordin scăzut va determina modificarea maximului celei de a șasea cifre după virgulă, adică este foarte posibil să lucrăm. Vreau să observ că acest dezavantaj nu se aplică algoritmului meu, ci formatului metastoc.

Acum ne-am dat seama cum să scrieți numere în câmpuri (Open, High, Low, Close, Volume, Open int).

O situație puțin mai dificilă cu data și ora.

Dacă octeții din câmpul date sunt traduși (prin metoda de mai sus) într-o formă zecimală, atunci se obține un întreg. Rangurile sale vor fi în format 1 YYMMDD. Unitatea de la început înseamnă un secol de 1 mol 20, 0 -19).

Pentru a obține data metastokovskaya, trebuie să traduceți (conform metodei de mai sus) numărul de cifre care corespund HHMMSS. De exemplu, numărul zecimal de 235900 înregistrat în câmpul de timp înseamnă 23 ore 59 minute 00 secunde, ca în exemplul de mai sus (Tabelul 1).

Cei care doresc să înțeleagă formatul metastok trebuie să lucreze cu fișierul atașat. FILE

Aceștia sunt tovarășii de plăceri moldoveni.

Descrierea fișierului Master.

Având în vedere capitolul anterior, să trecem la fișierul principal. Aici voi fi mai scurt.

Acest fișier conține intrări de lungime de 54 octeți. Fiecare înregistrare conține informații despre un fișier grafic, adică F? .dat. Toate intrările conțin, dar nu și prima. Prima înregistrare constă în zerouri, cu excepția primilor patru și a ultimilor patru octeți ai înregistrării. Primul este ceva de genul numărului de înregistrări (dar nu sunt sigur), dar nu au ultimele valori, schimbă metastockul de fiecare dată când accesezi fișierul, ca să-i poți scrie oricum.

Acum, să aruncăm o privire la un exemplu de înregistrare secundară (semnificativă). Toate înregistrările ulterioare sunt similare cu acestea.

Exemplu de octeți dintr-o înregistrare







Articole similare

Trimiteți-le prietenilor: