2015-04-05 1 views
1

Utilisation des informations de Reading data from Dukascopy tick binary file J'ai implémenté ma propre bibliothèque de téléchargement de flux de données de ticks Dukas en C#.Dukas Tick Data - Problème d'ordre de grandeur sur devis

Le lien ci-dessus confirme que les données sont stockées au format big endian et doivent être converties. La réponse finale sur le lien ci-dessus indique également le format du fichier est la suivante:

INT1 est seconde dans cette heure (cela devrait effectivement être millisecondes)

int2 est Ask * 10000

INT3 est l'offre * 10000

flottant1 est Demandez Volume

float2 est Volume Bid

J'utilise l'extrait de code suivant pour lire les valeurs à partir des données binaires téléchargées et non compressé:

int hourMs = IPAddress.HostToNetworkOrder(br.ReadInt32()); 
double ask = IPAddress.HostToNetworkOrder(br.ReadInt32())/10000.0; 
double bid = IPAddress.HostToNetworkOrder(br.ReadInt32())/10000.0; 
br.ReadSingle(); // ask vol - don't need 
br.ReadSingle(); // bid vol - don't need 

Utilisation TickStory, je l'ai téléchargé les données de tiques pour les symboles équivalents et dates, et confirmé que les valeurs de milliseconde sont correctes.

Cependant, les prix acheteur/vendeur sont erronés d'un ordre de grandeur. À partir de quelques vérifications rapides, tout prix de paires croisées de JPY (et également d'or) est un ordre de grandeur trop bas, et toutes les autres paires sont d'un ordre de grandeur trop élevé. Corrigés manuellement, ils correspondent parfaitement aux prix que j'ai téléchargés depuis TickStory.

Maintenant, je pourrais simplement changer le diviseur ci-dessus à 100 000 et utiliser 1000 à la place comme un cas spécial pour JPY croix/or - mais c'est juste un bodge, et je suis sûr que ce n'est pas nécessaire.

Y a-t-il quelque chose que je me trompe, que ce soit dans le format ou la conversion endian?

Merci

Répondre

1

Si vos données sont seulement hors de 10,0 alors Endianness est correcte. Vérifiez leurs documents (documents originaux Dukas) encore et encore. Je suppose qu'ils utilisent différents facteurs d'échelle pour différents tickers.

+0

Merci pour le commentaire - Je tire un total vide malheureusement en localisant leur documentation après des heures de recherche jusqu'à présent, je suis chanceux, j'ai trouvé l'autre réponse StackOverflow. Je continuerai à chercher. – Hoodlum