Вверх ↑
Этот топик читают: Гость
Ответов: 176
Рейтинг: 12
#1: 2011-06-02 21:09:16 ЛС | профиль | цитата
Имеются бинарные файлы "истории баров", хранящие в себе структуру вот в таком формате:


#cpp
Формат файлов истории (HST-файлы)
Сначала идет заголовок базы

struct HistoryHeader
{
int version; // версия базы
char copyright[64]; // копирайт
char symbol[12]; // инструмент
int period; // период инструмента
int digits; // число знаков после запятой в инструменте
time_t timesign; // временной отпечаток создания базы
time_t last_sync; // время последней синхронизации
int unused[13]; // для будущего использования
};
затем массив баров (выравнивание однобайтовое)

#pragma pack(push,1)
//---- Стандартное представление котировки в базе
struct RateInfo
{
time_t ctm; // текущее время в секундах
double open;
double low;
double high;
double close;
double vol;
};
#pragma pack(pop)


Эти файлы имеют расширение *.HST и содержат массивы структур, включающих такие параметры, как: Date, Time, High, Open, Low, Close, Volume.
Структура HistoryHeader располагается в самом начале файла и содержит общую информацию о хранимых в нём данных. Далее идёт набор самих данных в виде массива структур QuoteInfo. Заголовок файла (структура HistoryHeader) не содержит информацию о количестве записей в файле.

Можно-ли средствами стандартного виндовс пакета прочитать данные из этой структуры. Файл для эксперементов в аттаче.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1eurcad15.rar [38.4KB] [332]
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 4697
Рейтинг: 426
#2: 2011-06-02 21:21:18 ЛС | профиль | цитата
Пробуем DataToFile
карма: 10
0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2011-06-02 21:29:53 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2017-06-14 22:46:03
карма: 0

0
Ответов: 5227
Рейтинг: 587
#4: 2011-06-02 21:31:14 ЛС | профиль | цитата
вылетел однако
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 4697
Рейтинг: 426
#5: 2011-06-02 22:02:17 ЛС | профиль | цитата
95.167.60.101 писал(а):
а чего пробовать, когда time_t формат неизвестен.

почему же неизвестен? Чаще всего это обычный unsignet long (4 байта)
карма: 10
0
Разработчик
Ответов: 26067
Рейтинг: 2121
#6: 2011-06-02 22:04:45 ЛС | профиль | цитата
Assasin писал(а):
Чаще всего это обычный unsignet long (4 байта)

Скорее всего, Unix формат даты в секундах
карма: 22

0
Ответов: 176
Рейтинг: 12
#7: 2011-06-03 06:21:11 ЛС | профиль | цитата
Assasin писал(а):
Пробуем DataToFile

Как использовать этот компонент я знаю. А дальше как не понятно. Или массивы структур вообще не поддерживаются в delphi?
code_24260.txt

------------ Дoбавленo в 06.21:
Вот, что нашёл. Можно прочитать этот файл на Delphi
http://www.metatrader4.com/ru/forum/12452
Но как это в HiAsm сделать не знаю.
Кусочек кода:

#pas
begin
hstfile:=tfilestream.Create('EURUSD1.hst',fmShareDenyNone);// можно сказать что открываем файл
hstfile.Read(header,sizeof(header));// читаем заголовок
hstfile.Read(Close1,sizeof(Close1));// читаем 256 элементов масисвва котировок

/// а это цил который рисует то что прочитали на форме, причем
//рисует по клосам, если напишешь так close1[i].open будет рисовать по опенам
// это вобщем и ответ на твой вопрос
for i:=1 to 255 do
begin
y1:= round(10000*close1[i-1].close)-14600;
y2:= round(10000*close1[i].close)-14600 ;
form1.Canvas.MoveTo(i-1,y1);
form1.Canvas.lineTo(i,y2);
end;
hstfile.Free; // можно сказать что закрываем файл
end;
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_24260.txt [582B] [148]
Разработчик
Ответов: 26067
Рейтинг: 2121
#8: 2011-06-03 08:53:00 ЛС | профиль | цитата
toropchin писал(а):
Или массивы структур вообще не поддерживаются в delphi?

Почему же, поддерживаются, но в HiAsm-e не реализованы. Да и реализация такого компонента представляется как-то туманно.

toropchin писал(а):
Но как это в HiAsm сделать не знаю

Берешь IC и делаешь
карма: 22

0
Ответов: 5446
Рейтинг: 323
#9: 2011-06-03 08:54:04 ЛС | профиль | цитата
nesco, вай, зачэм IC? Можно же отдельными полями читать.
карма: 1

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#10: 2011-06-03 08:56:26 ЛС | профиль | цитата
iarspider писал(а):
Можно же отдельными полями читать

Да можно, конечно. SizeOf структуры-то известен, читай и распарсивай
карма: 22

0
Ответов: 176
Рейтинг: 12
#11: 2011-06-03 09:00:50 ЛС | профиль | цитата
А примерчик можно?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26067
Рейтинг: 2121
#12: 2011-06-03 10:46:38 ЛС | профиль | цитата
toropchin писал(а):
А примерчик можно?

Примерчик чего, как по кускам читать внутренности файла
Тысячу раз уже разжевывалось на форуме
------------ Дoбавленo в 10.46:
toropchin, ну что, нашел, как читать файл Если не нашел, то выкладывай сам файл his. Желательно, не очень большой, попробуем позкспериментировать
карма: 22

0
Ответов: 176
Рейтинг: 12
#13: 2011-06-03 13:21:10 ЛС | профиль | цитата
nesco писал(а):
toropchin, ну что, нашел, как читать файл Если не нашел, то выкладывай сам файл his. Желательно, не очень большой, попробуем позкспериментировать


Да пока не получается. Схемку чуть позже скину. А сам файл, который надо открыть в первом сообщении. http://forum.hiasm.com//getfile/24260
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26067
Рейтинг: 2121
#14: 2011-06-03 17:32:32 ЛС | профиль | цитата
toropchin, на, жуй -- read_his_001.sha

Ничего там сложного нет, а то
toropchin писал(а):
массивы структур

тебе понадобились. Нафиг они там не нужны. Мозги включенные нужны и немного времени
------------ Дoбавленo в 16.51:
Выравнивание по количеству знаков после запятой сам доделаешь
------------ Дoбавленo в 17.32:
Для выравнивани можно использовать компонент Tad-a -- RlToStr
Или можно восплльзоваться вот этой схемой -- read_his_003.sha
гдя я попытался переложить код этого компонента на схемный алгоритм HiAsm-a
карма: 22

0
файлы: 2read_his_001.sha [10.7KB] [388], read_his_003.sha [13.4KB] [444]
Ответов: 16884
Рейтинг: 1239
#15: 2011-06-03 17:50:35 ЛС | профиль | цитата
А что,StreamConvertor - лишний компонент в палитре HiAsm ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)