Slawa,
Спасибо, действительно это соглашение я нарушил. Исправил, посмотрю.
И еще вопросы.
Использовать в качестве наименования "EURUSD1.hst" я не могу,
поэтому назову "EURUSD2.hst". То есть "как бы" 2-минутный график.
Накладывает ли это какие-то ограничения, требования на то время,
которое будет писаться в поле Time ?
Можно ли туда писать реальное время тика ?
Обязательно ли чтобы в Time были записаны начала минут с шагом 2min
(в соответствии с заголовком и наименованием) ?
Спасибо, действительно это соглашение я нарушил. Исправил, посмотрю.
И еще вопросы.
Использовать в качестве наименования "EURUSD1.hst" я не могу,
поэтому назову "EURUSD2.hst". То есть "как бы" 2-минутный график.
Накладывает ли это какие-то ограничения, требования на то время,
которое будет писаться в поле Time ?
Можно ли туда писать реальное время тика ?
Обязательно ли чтобы в Time были записаны начала минут с шагом 2min
(в соответствии с заголовком и наименованием) ?
да, можно. время может быть произвольным. мы у себя таким образом строили индикатор постоянного объёма.
кстати, мне кажется, что лучше ставить реальные ohlc на момент тика. так Вы сможете увидеть бар в развитии. а если Вам нужен тиковый график то Вы всегда сможете выбрать "линию по клозам"
кстати, мне кажется, что лучше ставить реальные ohlc на момент тика. так Вы сможете увидеть бар в развитии. а если Вам нужен тиковый график то Вы всегда сможете выбрать "линию по клозам"
Slawa,
Спасибо, это то, что нужно.
Спасибо, это то, что нужно.
Slawa,
При записи собственного файла истории столкнулся с проблемой:
невозможно дописать файл. Каждый раз он пишется заново.
После открытия я использовал такую конструкцию:
При записи собственного файла истории столкнулся с проблемой:
невозможно дописать файл. Каждый раз он пишется заново.
После открытия я использовал такую конструкцию:
last_fpos=FileSize(handle); if (last_fpos > 148) last_fpos=FileTell(handle); else { //---- History header FileWriteInteger(handle, version, LONG_VALUE); FileWriteString (handle, c_copyright, 64); FileWriteString (handle, c_symbol, 12); FileWriteInteger(handle, i_period, LONG_VALUE); FileWriteInteger(handle, i_digits, LONG_VALUE); FileWriteInteger(handle, 0, LONG_VALUE); FileWriteInteger(handle, 0, LONG_VALUE); FileWriteArray (handle, i_unused, 0, 13); }
Похоже, что функция FileOpenHistory() открывает файл каждый раз
как новый. Старый при этом уничтожается.
чтобы дописывать файл необходимо, во-первых открыть его на чтение-запись, а не просто на запись. во-вторых, сразу после открытия файла переместить файловый указатель на конец файла
FileSeek(header, 0, SEEK_END);
чтобы дописывать файл необходимо, во-первых открыть его на чтение-запись, а не просто на запись. во-вторых, сразу после открытия файла переместить файловый указатель на конец файла
Спасибо, понял.
С чего это меня на FileTell() занесло ? :-(
Приходится возвращаться к теме.
Исправил ошибки, история записыватся. Но...
1. Когда запись начинается с нуля, то есть даже файла нет, тогда все в порядке.
Но если файл уже есть и какая-то история записана, возникают проблемы.
Файл все-равно пишется, но когда открываешь его автономно, то читается он
только до определенного места. Никаких сообщений о нарушениях в структуре
файла, и вообще никаких сообщений об ошибках не возникает.
2. Такие сбои возникают либо когда остановился, а потом возобновился поток
данных, либо если эксперт остался присоединенным к графику при завершении
прошлой сессии и, соответственно, он начал работу сразу при запуске MT4.
К сожалению такие сбои случаются не всегда, иногда все пишется правильно.
А вот когда это происходит мне установить не удалось, нет средств контроля.
3. Оказывается MT4 допускает открытие в автономном режиме файла истории
который в данный момент используется экспертом для записи. Правильно ли
это ? Если так и было предусмотрено, то должны ли подгружаться на график
пополнения файла, когда они сбрасываются на диск ?
Посоветуйте что-нибудь. Могу представить код.
Исправил ошибки, история записыватся. Но...
1. Когда запись начинается с нуля, то есть даже файла нет, тогда все в порядке.
Но если файл уже есть и какая-то история записана, возникают проблемы.
Файл все-равно пишется, но когда открываешь его автономно, то читается он
только до определенного места. Никаких сообщений о нарушениях в структуре
файла, и вообще никаких сообщений об ошибках не возникает.
2. Такие сбои возникают либо когда остановился, а потом возобновился поток
данных, либо если эксперт остался присоединенным к графику при завершении
прошлой сессии и, соответственно, он начал работу сразу при запуске MT4.
К сожалению такие сбои случаются не всегда, иногда все пишется правильно.
А вот когда это происходит мне установить не удалось, нет средств контроля.
3. Оказывается MT4 допускает открытие в автономном режиме файла истории
который в данный момент используется экспертом для записи. Правильно ли
это ? Если так и было предусмотрено, то должны ли подгружаться на график
пополнения файла, когда они сбрасываются на диск ?
Посоветуйте что-нибудь. Могу представить код.
Slawa,
дайте, пожалуйста, ответ на мой пост.
На всякий случай код из эксперта:
дайте, пожалуйста, ответ на мой пост.
На всякий случай код из эксперта:
int start() { ............ handle = FileOpenHistory(c_filename, FILE_BIN|FILE_READ|FILE_WRITE); if (handle < 0) return(-1); FileSeek(handle,0,SEEK_END); last_fpos=FileTell(handle); if (last_fpos == 0) { //---- History header FileWriteInteger(handle, version, LONG_VALUE); FileWriteString (handle, c_copyright, 64); FileWriteString (handle, c_symbol, 12); FileWriteInteger(handle, i_period, LONG_VALUE); FileWriteInteger(handle, i_digits, LONG_VALUE); FileWriteInteger(handle, 0, LONG_VALUE); //timesign FileWriteInteger(handle, 0, LONG_VALUE); //last_sync FileWriteArray (handle, i_unused, 0, 13); } i_volume = 1.0; i_time = CurTime(); lastBid = Bid; FileWriteInteger(handle, i_time, LONG_VALUE); // Time FileWriteDouble (handle, lastBid, DOUBLE_VALUE); // Open FileWriteDouble (handle, lastBid, DOUBLE_VALUE); // Low FileWriteDouble (handle, lastBid, DOUBLE_VALUE); // High FileWriteDouble (handle, lastBid, DOUBLE_VALUE); // Close FileWriteDouble (handle, i_volume, DOUBLE_VALUE); // Volume ................. }
2Yurixx
А где закрытые файла? Никто и ничего не может вам гарантировать до тех пор пока файл не закрыт.
А где закрытые файла? Никто и ничего не может вам гарантировать до тех пор пока файл не закрыт.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Раньше этого нельзя было сделать даже в реальном времени. Но теперь,
когда есть возможность записать файл истории и затем открывать его
автономно, вроде бы это можно сделать.
Я переписал скрипт Period_Converter как индикатор и записываю историю
тиков так, что каждый тик - это как бы минутный бар у которого
open=high=low=close.
Писать-то пишу, но открыть этот файл автономно не могу, не открывается.
И его иконка в списке файлов истории тоже не нормальная: красная и разорванная. Что это значит ?
Может есть какие-то подробности по которым это сделать в принципе
невозможно ?