Вот чтото когдато зачемто делал, но забросил
type
THistoryHeader = packed record
version: integer; // версия базы
copyright:array[0..63] of char; // копирайт
symbol: array[0..11] of char; // инструмент
period: integer; // период инструмента
digits: integer; // число знаков после запятой в инструменте
timesign: cardinal; // временной отпечаток создания базы
last_sync: cardinal; // время последней синхронизации
unused:array[0..12] of integer;
end;
TRateInfo = packed record
ctm: cardinal; // текущее время в секундах
open: double; /// цена открытия
low:double;// минимум
high:double;// максимум
close:double;//закрытие
vol:double;// обьем
end;
var
Form1: TForm1;
hstfile:tfilestream; // эта штука чтоб с открытием файла не заморачиваться сильно
Close1: array[0..255] of TRateInfo ;// это массив на 256 элементов в него будем читать котировки
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
header:THistoryHeader;// эта переменая куда прочитаем заголовок
i,y1,y2:integer;// эти нужны были чтоб нарисовать и посмотреть чего читали
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;
end.
немогу понять - как получить High Low Close Open - ??? сори за наивность
Хорошо небольшой ликбез...
THistoryHeader
TRateInfo
Это две структуры: одна представляет собой заголовок файла, в нем разная служебная информация, воторая это элемент массива данных записанного в этом файле, другими словами все что идет после заголовка это массив записей TRateInfo, каждый такой элемент это и есть бар, в нем и открытие и закрытие и хай и лоу.
А в коде что на верху вставил давольно подробные коментарии.
Будет полезно если ты его с компилишь и поиграешься с ним.
THistoryHeader
TRateInfo
Это две структуры: одна представляет собой заголовок файла, в нем разная служебная информация, воторая это элемент массива данных записанного в этом файле, другими словами все что идет после заголовка это массив записей TRateInfo, каждый такой элемент это и есть бар, в нем и открытие и закрытие и хай и лоу.
А в коде что на верху вставил давольно подробные коментарии.
Будет полезно если ты его с компилишь и поиграешься с ним.
Jhonny - огромное спасибо
столкнулся со следующей проблемой
пи загрузки данный в StringGrid - подргужается только часть файла
если увеличиваю масив Close1: array[0..255] - то вываливается ошибка больше 1500 строк
пи загрузки данный в StringGrid - подргужается только часть файла
если увеличиваю масив Close1: array[0..255] - то вываливается ошибка больше 1500 строк
Ну что можно сказать... я пробовать не буду делать, если ты выложишь свой исходник погляжу, если что увижу подскажу, а так трудно сказать.
может эта инфа поможет?
а так поиск по "HST" выдал https://www.mql5.com/en/forum
вот здесь явно идет речь про чтение HST "Формат файла истории" и именно на дельфях
Slawa 05.06.06 12:45
На самом деле описание гораздо ближе. В клиентском терминале нажать F1. Сервис - Архив котировок - Формат файлов истории (HST-файлы)
На самом деле описание гораздо ближе. В клиентском терминале нажать F1. Сервис - Архив котировок - Формат файлов истории (HST-файлы)
а так поиск по "HST" выдал https://www.mql5.com/en/forum
вот здесь явно идет речь про чтение HST "Формат файла истории" и именно на дельфях
Всем спасибо - разобрался !!!!!
:)
а как с датой разобраться ???
а как с датой разобраться ???
попробуй функцию UnixToDateTime из модуля dateutils
А и еще... трудно сказать зачем тебе все это нужно но судя по фразе
похоже что ты надеешься получать котировки в свою прогу онлайн? если я угадал то огорчу тебя наверно, вновь поступившие котировки сохраняются в архиве только при закрытии терминала помоему, так что все время перзапускать терминал тоже не самый красивый метод.
А и еще... трудно сказать зачем тебе все это нужно но судя по фразе
Читать формат CSV - проще - но для этогонадо пастаянно заходить в терминал и экспортировать - неудобный
похоже что ты надеешься получать котировки в свою прогу онлайн? если я угадал то огорчу тебя наверно, вновь поступившие котировки сохраняются в архиве только при закрытии терминала помоему, так что все время перзапускать терминал тоже не самый красивый метод.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
столкнулся с необходимостью читать фаил истории котировок - В МТ4 он находится в виде файла *.hst
как егопрочитать на Delphi?
Читать формат CSV - проще - но для этогонадо пастаянно заходить в терминал и экспортировать - неудобный вариант.
по форуму находил информацию , но там на С - а я в нём несилён.
"формат файлов *.hst ???"
заранее всем благодарен
с Уважением Сергей.