Советники: SaveTicks

 

SaveTicks:

Утилита предназначена для записи тиковых котировок в текстовом (CSV) и бинарном (BIN) форматах. Файлы записываются в папку MQL5\Files. Котировки пишутся с постоянной частотой выборки, что удобно для последующего анализа в математических программах.


Входные параметры

  • Recording interval - интервал записи тиков, миллисекунд;
  • The symbols chosen as... - метод выбора символов для записи
    • All symbols - запись всех символов, которые предоставляет брокер;
    • MarketWatch symbols - запись всех символов из окна "Обзор рынка";
    • Load list of symbols from file - набор символов загружается из файла.
  • Name of file with all symbol names - имя файла с набором символов, например "InputSymbolList.txt";
  • Format recording - формат записи, CSV или Binary, который описан выше;
  • Time format - формат времени. Может записываться серверное время или локальное время компьютера.

Автор: Alexey Volchanskiy

 

Изначально была идея писать тики с точностью миллисекунды, а не секунды, как позволяет MQL4/5. Но в кодобазе мой код зарубили, так как использовалась windows dll "Kernel32.dll". Заставили ее убрать и порезать функционал.

Вот оригинальные советники для МТ4/5 с точностью в миллисекунды, пользуйтесь лучше ими.



 
Alexey Volchanskiy:

Изначально была идея писать тики с точностью миллисекунды, а не секунды, как позволяет MQL4/5. Но в кодобазе мой код зарубили, так как использовалась windows dll "Kernel32.dll". Заставили ее убрать и порезать функционал.

Вот оригинальные советники для МТ4/5 с точностью в миллисекунды, пользуйтесь лучше ими.




Алексей подскажите пожалуйста почему я не вижу ваши индикаторы на графике я уже все перепробовал 

 
fulstak:

Алексей подскажите пожалуйста почему я не вижу ваши индикаторы на графике я уже все перепробовал 


Разве вы что-то должны видеть на графике? Читайте описание, там написано: Утилита предназначена для записи тиковых котировок в текстовом (CSV) и бинарном (BIN) форматах.

 

Алексей, несколько замечаний.

1. У вас отсутствует выбирание символа через SymbolSelect, а это нужно для получения котировок по всем символам.

2. Желательно как-то учитывать текущий торговый сервер при задании имён (или пути) файлов.  Чтоб при переключении на счёт другого брокера он не писал в те же самые файлы.  Ну либо просто прекращать работу при смене торгового сервера.

3. Не мешало бы добавить проверку на наличие подключения к торговому серверу.  Иначе при обрыве связи он будет продолжать писать, и потом не узнаешь, что в этом месте был обрыв.

4. В mql действует идиотское ограничение на количество одновременно открытых файлов (не более 64 штук), поэтому имейте ввиду, код надо усложнять.
 
Evgeny Belyaev:

Разве вы что-то должны видеть на графике? Читайте описание, там написано: Утилита предназначена для записи тиковых котировок в текстовом (CSV) и бинарном (BIN) форматах.


Евгений, спасибо, почему-то не приходят сообщения в личку на новые комменты в КБ. Чисто случайно сейчас увидел.

 
Alexey Navoykov:

Алексей, несколько замечаний.

1. У вас отсутствует выбирание символа через SymbolSelect, а это нужно для получения котировок по всем символам.

2. Желательно как-то учитывать текущий торговый сервер при задании имён (или пути) файлов.  Чтоб при переключении на счёт другого брокера он не писал в те же самые файлы.  Ну либо просто прекращать работу при смене торгового сервера.

3. Не мешало бы добавить проверку на наличие подключения к торговому серверу.  Иначе при обрыве связи он будет продолжать писать, и потом не узнаешь, что в этом месте был обрыв.

4. В mql действует идиотское ограничение на количество одновременно открытых файлов (не более 64 штук), поэтому имейте ввиду, код надо усложнять.

Алексей, спасибо за замечания, надо поправить. Только насчет Symbol Select не очень уверен. В хелпе в примерах он не используется и вообще описание крайне туманное. Такое чувство, что его вообще отключили в плане обновления данных, только в MarketWatch удаляет-выбирает символы.

Вот из хелпа кусок примера. А вот SymbolIsSynchronized наверное надо ставить.

Проверяет факт синхронизированности данных по указанному символу в терминале с данными на торговом сервере

void OnStart() 
  { 
//---   
   int     attempts=0;     // счетчик попыток 
   bool    success=false;  // флаг успешного выполнения копирования тиков 
   MqlTick tick_array[];   // массив для приема тиков 
   MqlTick lasttick;       // для получения данных последнего тика 
   SymbolInfoTick(_Symbol,lasttick); 
//--- сделаем 3 попытки получить тики 

***

 
Alexey Volchanskiy:

Алексей, спасибо за замечания, надо поправить. Только насчет Symbol Select не очень уверен. В хелпе в примерах он не используется и вообще описание крайне туманное. Такое чувство, что его вообще отключили в плане обновления данных, только в MarketWatch удаляет-выбирает символы.

Вот из хелпа кусок примера. А вот SymbolIsSynchronized наверное надо ставить.

Проверяет факт синхронизированности данных по указанному символу в терминале с данными на торговом сервере

***

К чему гадать. Всё ж легко проверяется. Попробуйте получить котировку по любому символу, отсутствующему в Обзоре рынка. Получите нули.  Поэтому обязательно нужно его выбрать сначала.

А SymbolIsSynchronized - это что-то другое.  Честно говоря, не очень понимаю её смысл, т.к. котировки вроде всегда синхронизируются с сервером (при наличии подключения).  Хотя вот сейчас на выходных она выдаёт false.  Возможно подразумевается не сервер, а торговая площадка, с которой поступают котировки.  Тогда действительно это необходимая функция, которую тоже надо учитывать.

 
Alexey Navoykov:

К чему гадать. Всё ж легко проверяется. Попробуйте получить котировку по любому символу, отсутствующему в Обзоре рынка. Получите нули.  Поэтому обязательно нужно его выбрать сначала.

А SymbolIsSynchronized - это что-то другое.  Честно говоря, не очень понимаю её смысл, т.к. котировки вроде всегда синхронизируются с сервером (при наличии подключения).  Хотя вот сейчас на выходных она выдаёт false.  Возможно подразумевается не сервер, а торговая площадка, с которой поступают котировки.  Тогда действительно это необходимая функция, которую тоже надо учитывать.

Ясно, я всегда все символы держу в Обзоре, такого варианта не предусмотрел. Вот и наглядная польза от комьюнити, один человек что-то упусти, а другой заметит.

Помню, давно еще, студентами, с другом - электроником разрабатывали один проект, работали на пару, я был довольно хорошим электроником.

И заметили, насколько меньше стало ошибок и возросла скорость. Он что-то упустит, я подмечу, и наоборот.

PS: сайт подсвечивает красным слово Электроник, а это официальное название профессии, у меня так в трудовой и записано давным-давно. Не путать с фильмом "Приключения Электроника" ))


 
Возможно ли записывать данные только в первую строчку?