Вот чтото когдато зачемто делал, но забросил
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 - проще - но для этогонадо пастаянно заходить в терминал и экспортировать - неудобный
похоже что ты надеешься получать котировки в свою прогу онлайн? если я угадал то огорчу тебя наверно, вновь поступившие котировки сохраняются в архиве только при закрытии терминала помоему, так что все время перзапускать терминал тоже не самый красивый метод.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
столкнулся с необходимостью читать фаил истории котировок - В МТ4 он находится в виде файла *.hst
как егопрочитать на Delphi?
Читать формат CSV - проще - но для этогонадо пастаянно заходить в терминал и экспортировать - неудобный вариант.
по форуму находил информацию , но там на С - а я в нём несилён.
"формат файлов *.hst ???"
заранее всем благодарен
с Уважением Сергей.