Код для проверки (имя файла нестандартное):
Если
#include <WinUser32.mqh> int ExtHandle=-1; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int last_fpos; double d_close, last_volume; int hwnd=0,cnt=0; //---- History header int version=400; string c_copyright="Copyright © 2005, komposter"; string c_symbol=Symbol(); int i_period=Period(); int i_digits=Digits; int i_unused[13]; //---- ExtHandle=FileOpenHistory(c_symbol+i_period+"_all.hst", FILE_BIN|FILE_WRITE); if(ExtHandle < 0) return(-1); //---- write history file header FileWriteInteger(ExtHandle, version, LONG_VALUE); FileWriteString(ExtHandle, c_copyright, 64); FileWriteString(ExtHandle, "EURUSD", 12); FileWriteInteger(ExtHandle, i_period, LONG_VALUE); FileWriteInteger(ExtHandle, i_digits, LONG_VALUE); FileWriteInteger(ExtHandle, 0, LONG_VALUE); //timesign FileWriteInteger(ExtHandle, 0, LONG_VALUE); //last_sync FileWriteArray(ExtHandle, i_unused, 0, 13); //---- write history file int periodseconds = i_period * 60; int StartBar = Bars - 1; double d_open = Open[StartBar]; double d_low = Low[StartBar]; double d_high = High[StartBar]; double d_volume = Volume[StartBar]; //---- normalize open time int i_time = Time[StartBar]/periodseconds; i_time *= periodseconds; //+------------------------------------------------------------------+ //| обработка истории //+------------------------------------------------------------------+ int time0; for( int i = StartBar - 1; i >= 0; i-- ) { time0 = Time[i]; //---- если есть пропущенные бары, while ( time0 > i_time + periodseconds && TimeDayOfWeek(i_time) > 0 && TimeDayOfWeek(i_time) < 6 ) { //Print( "i = ", i, ", time0 = ", TimeToStr(time0), ", d_open = ", d_open, ", d_low = ", d_low, ", d_high = ", d_high, ", d_close = ", d_close, ", d_volume = ", d_volume ); last_fpos = FileTell(ExtHandle); FileWriteInteger(ExtHandle, i_time, LONG_VALUE); FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE); FileFlush(ExtHandle); cnt++; i_time += periodseconds; d_open = d_close; d_low = d_close; d_high = d_close; d_volume = 1; //Print( "i = ", i, ", time0 = ", TimeToStr(time0), ", d_open = ", d_open, ", d_low = ", d_low, ", d_high = ", d_high, ", d_close = ", d_close, ", d_volume = ", d_volume ); } if ( time0 >= i_time + periodseconds ) { last_fpos = FileTell(ExtHandle); FileWriteInteger(ExtHandle, i_time, LONG_VALUE); FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE); FileFlush(ExtHandle); cnt++; i_time = time0 / periodseconds; i_time *= periodseconds; d_open = Open[i]; d_low = Low[i]; d_high = High[i]; d_close = Close[i]; d_volume = Volume[i]; } } FileFlush(ExtHandle); Print(cnt," record(s) written"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void deinit() { if(ExtHandle>=0) { FileClose(ExtHandle); ExtHandle=-1; } } //+------------------------------------------------------------------+
Если
поменять наExtHandle=FileOpenHistory(c_symbol+i_period+"_all.hst", FILE_BIN|FILE_WRITE);
файл можно будет открыть автономно.. Иначе - только импортом котировок..ExtHandle=FileOpenHistory("EURUSD"+i_period+".hst", FILE_BIN|FILE_WRITE);
Вообще-то, существует соглашение о наименовании исторических
файлов и о соответствии наименования файла некоторым полям
заголовка файла
stringo:
Вообще-то, существует соглашение о наименовании исторических файлов и о соответствии наименования файла некоторым полям заголовка файла
Это, наверное, скорее хорошо, чем плохо ;)Вообще-то, существует соглашение о наименовании исторических файлов и о соответствии наименования файла некоторым полям заголовка файла
Только я не встречался с этим - вот и напоролся...
А как тогда быть? Я хочу из минуток сделать те же минутки, только отредактированные... А свои менять не хочется.
Как записать новый файл истории, не заменяя предыдущий?
Может, есть нормальное решение? Не копировать же в другую папку, а потом назад...
komposter:
Только я не встречался с этим - вот и напоролся...
Кстати, да. В хелпе по терминалу есть описание формата HST. Соглашение
же о наименовании и соответствии не приведено. Исправим.Только я не встречался с этим - вот и напоролся...
А как тогда быть? Я хочу из минуток сделать те же минутки, только отредактированные... А свои менять не хочется.
Как записать новый файл истории, не заменяя предыдущий?
Может, есть нормальное решение? Не копировать же в другую папку, а потом назад...
После этого Вы можете внести любые изменения, не трогая заголовка.
И открывайте хоть оффлайн, хоть онлайн. Однако, Вы потеряете Ваши изменения, нажав кнопочку "Обновить".
Чтобы не было проблем, соответствующий график обязательно должен быть закрыт и не должен принимать котировки. То есть, Вы закрываете график и выжидаете 10 минут, либо перезагружаете клиентский терминал.
После этого Вы можете внести любые изменения, не трогая заголовка.
И открывайте хоть оффлайн, хоть онлайн. Однако, Вы потеряете Ваши изменения, нажав кнопочку "Обновить".
В том-то и дело, что мне надо оба файла истории.После этого Вы можете внести любые изменения, не трогая заголовка.
И открывайте хоть оффлайн, хоть онлайн. Однако, Вы потеряете Ваши изменения, нажав кнопочку "Обновить".
1-й (оригинальные минутки) - достаточно ценный материал...
2-й (минутки без пропусков) - мне - для написания скрипта и отлова багов, людям - для анализа =) (неоднократно просили)
И нельзя жертвовать ни одним, ни другим...
Наверное, прийдётся называть его М2 ;)
Кстати, Вы можете оставить название EURUSDALL1.HST, соответственно
в поле symbol запишите EURUSDALL
Вот - то, что нужно =)Я об этом и спрашивал. Просто не догадался, что шапка должна совпадать. А про новое имя символа - догадался ;)

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
- файл успешно записывается, размер соответствует.
- пробую открыть файл в автономном режиме, открывается, вроде бы, нормально (в списке файлов правильно отображается имя и заголовок, при открытии ни какаих сообщений нет)
- просматриваю историю - не то. Вместо нужного файла загружается исходный файл (в моём случае, евро М1 и фунт М1)
Проверяю:
- удаляю всю историю евро-минуток (в архиве котировок)
- импортирую минутки из сделанного файла (там же)
- открываю график - всё ок, котировки загрузились
Пробую по-другому:
- пишу переделанную историю GBPUSD в файл "EURUSD1.hst"
- открываю файл "EURUSD1.hst" в автономном режиме - всё ок
Вывод - файлы с нестандартным именем не открываются автономно
ЗЫ: пробовал имя "СимволallПериод.hst" - эфект тот же...
ЗЗЫ: билд 188 от 19.01.2006