Сбор, скачивание, поиск тиковых данных для Forex

Sergey Kovalyov

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

Так вот. Это будет первое -- пробное сообщение. Если интерес будет, то продолжим. =)

Дла начала выкладываю простенький советник, который сохраняет тики выбранной пары. Каждый тик сохраняется в отдельный файл. Какой файл, почему именно так сделано поговорим при наличии интереса со стороны читателей.
 
Последнее редактирование:

Sergey Kovalyov

Элитный участник
Мда, не густо. Ну, попробуем еще раз удочку забросить.

Если вы решили, что хотите собирать тики зачем-то, то подразумевается, что у вас есть какой-то сносный уровень в программировании и трейдинге. Иначе оно вам просто не надо. Теоретически, собирать тики можно и на домашнем буке по вайфаю, но это как-то очень ненадежно, поэтому, рекомендуемый способ -- свой сервер или хотя бы VPS. Раз уж вы трейдер-программист, то у вас такой сервер так и так должен быть. Торговые роботы должны жить на сервере, а не на домашнем компе, где кот по клавиатуре ходит, и дочка трехлетняя в игры играет.

Такой сервер может быть под Linux (надежней и дешевле, так как за лицензию платить не надо) либо Windows. У меня Linux, но, в принципе, базу данных sqlite или MySQL можно не сильно сложно и под Windows запустить. Просто в Linux оно все сразу есть и работает, и можно сразу к делу приступать, а не париться со скачиванием всякого незнакомого софта и с попытками разобраться как его запустить. Хотя, может, я преувеличиваю.

Далее, MQL4 конечно, неплохой язык... был когда-то, но на сегодня он просто архаичен, как и сам терминал Поэтому я стараюсь с ним работать минимально. Тики в файлы сохранил -- свободен. Сбор тиков в базу и всякие разные другие штуки лично я делаю на Perl. И свои примеры тоже буду показывать на Perl. Кто шарит, может сделать по аналогии на PHP или... я не знаю, на чем вы там шарите. На MQL4 некоторые вещи будет очень сложно сделать.

Пока все. Сел на берегу, жду клева трейдеров-программистов. =)
Может, где-то не там сел, кстати...
 

Sergey Kovalyov

Элитный участник
И в третий раз забросил старче свой невод в синее море. =)

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

Раз мы пишем каждый тик в отдельный файл, то у такого файла должно быть уникальное имя, очевидно. Поэтому имя и состоит из времени прихода тика (с точночтью до секунды), индекса (в течении секунды может придти несколько тиков, поэтому каждый следующий имеет индекс + 1) и имени пары.
 

Sergey Kovalyov

Элитный участник
Чтобы придать этому безобразию какой-то более-менее законченный вид, выкладываю скрипт на Perl, который, собственно, эти файлы-тики и запуливает в базу (на выбор, или sqlite или MySQL).

Схема (для MySQL) таблицы:
Код:
create table if not exists ticks (
        id int unsigned not null auto_increment primary key,
        time int, key(time),
        idx int,
        pair varchar(10),
        ask double,
        bid double,
        price double,
        datetime datetime, key(datetime),
        key(time, idx),
        unique (pair, time, idx)
);


А про то, как качать готовые тики с dukascopy и всякое другое интересное я уже не буду рассказывать. Так как интересно это только мне. =)
 

Вложения

  • ticks2sql.zip
    1,2 КБ · Просмотры: 57

sibman

Активный участник
Мда, не густо. Ну, попробуем еще раз удочку забросить.

Пока все. Сел на берегу, жду клева трейдеров-программистов. =)
Может, где-то не там сел, кстати...
Видимо не там сел тёзка :). Но всё равно приятно встретить собрата-линуксоида в пустынном месте.

Вот нарыл на FXOpen.com API для сбора тиков с ихнего ECN-шлюза. Почему то - это добро было глубоко закопано на англоязычном форуме.
Сам не проверял, но вдруг кому пригодится.
 

Вложения

  • Quotes Transmitter doc.7z
    187,6 КБ · Просмотры: 56
  • Quotes Transmitter_mql_example.zip
    1,3 МБ · Просмотры: 53
  • Quotes TransmitterExamples_cpp.zip
    1,3 МБ · Просмотры: 44
  • QuotesTransmitterExamples_csharp.zip
    1,3 МБ · Просмотры: 39

Sergey Kovalyov

Элитный участник
Поглядел доку. Вот ты такого нормального API хочешь? Как по мне, так лучше какой-то text-based -- прогай на чем хочешь. =)

А ссылку дай? Там рядом не лежало торгового API? =)
 

sibman

Активный участник
Да и по поводу FIX API. Делал я один проект на фрилансе на С++ с использованием QuickFIX (_http://www.quickfixengine.org/). Ощущение от протокола осталось, что это Тьюринг с Фон Нейманом по пьяне телетайп изобретали. Много мути и костыль на костыле. Обилие версий как раз и говорит о том, что пора это всё бульдозером сносить. Поэтому не хотелось бы с ним связываться. А командная строка меня не пугает, ибо дедушка Столман завещал, что чистый ANSI C и Lisp наше всё :)
 

Sergey Kovalyov

Элитный участник
Ну, я только теоретик. Внуть ни в одну спецификацию FIX'а не смотрел. Хотя, такие же отзывы как твой тоже слышал. Ну, дадут что-то в паблик кто-то из тех контор, сам знаешь каких, будем уже подстраиваться под то, что они дадут. =)
 

sibman

Активный участник
Поглядел доку. Вот ты такого нормального API хочешь? Как по мне, так лучше какой-то text-based -- прогай на чем хочешь. =)
А ссылку дай? Там рядом не лежало торгового API? =)

_http://*************.com/forumdisplay.php?190-FXOpen-ECN-STP

Смотри FDK. Там какая то версия FIX реализована. Но всё это на .NET
Для меня это засада. Не люблю я этот продукт. А на счёт text-based я только за, но существующее положение с фиксом не лучщий вариант.
 

sibman

Активный участник
Ну, я только теоретик. Внуть ни в одну спецификацию FIX'а не смотрел. Хотя, такие же отзывы как твой тоже слышал. Ну, дадут что-то в паблик кто-то из тех контор, сам знаешь каких, будем уже подстраиваться под то, что они дадут. =)
Большинство контор, которые фикс-айпи предоставляют возлюбили версию 4.4. С 5 версией еще ни одну не видел. Если нашим конторам понадобятся бета-тестеры API, я всегда готов,но только С++ или Java. С С# не дружу.
 
Последнее редактирование:

Sergey Kovalyov

Элитный участник
До понял я, что там под звездочками. =)

Там где FDK, пишут, что всего 1.7 FIX заимплементили. А что 5-ый типа лучше стал или тебе просто ради интереа поиграться с новым чем-то?

Ну, Раннев шарп не даст. И вряд ли яву даст. Там сишники у него, как я понял. Так что все будет хорошо. =)

А опены... я там Дениса спросил в их ветке, подождем, что расскажет.
 

Sergey Kovalyov

Элитный участник
Меняешь посты на ходу. =)

Я не понял, ты "нормальный" API подвязываешься тестить или таки FIX 5ый?
 

sibman

Активный участник
До понял я, что там под звездочками. =)

Там где FDK, пишут, что всего 1.7 FIX заимплементили. А что 5-ый типа лучше стал или тебе просто ради интереа поиграться с новым чем-то?

Ну, Раннев шарп не даст. И вряд ли яву даст. Там сишники у него, как я понял. Так что все будет хорошо. =)

А опены... я там Дениса спросил в их ветке, подождем, что расскажет.
Нет версии 1.7 у фикса. Это в версии 1.7 FDK фикс появился.
 

sibman

Активный участник
По поводу 5 версии фикса. Я про то, что если хочешь им заморочиться, смотри спецификацию 4.4 пятерка пока в широкую серию не пошла.
 

sibman

Активный участник
Да , Сергей, еще если интересно пообщайся с NPB. Они тоже API дают, но там будет Java 100%.
 

Sergey Kovalyov

Элитный участник
Нет версии 1.7 у фикса. Это в версии 1.7 FDK фикс появился.

"New version of FDK has been released.
List of changes:
• Quotes downloader example
• FIX protocol 1.7 supporting
• Renaming "

Ну я не знаю, кто так ченжлоги пишет, тогда. =)

Про 4.4 понял, спасибо. Яву не хочу. Мне или text-based или максимум C/C++
Да и как hrenfx сказал, не API важней, а торговые условия. Ацкий налог для нерезидентов все сразу перечеркивает на взлете. =)
 
Последнее редактирование:

sibman

Активный участник
"New version of FDK has been released.
List of changes:
• Quotes downloader example
• FIX protocol 1.7 supporting
• Renaming "

Ну я не знаю, кто так ченжлоги пишет, тогда. =)

Про 4.4 понял, спасибо. Яву не хочу. Мне или text-based или максимум C/C++
Да и как hrenfx сказал, не API важней, а торговые условия. Ацкий налог для нерезидентов все сразу перечеркивает на взлете. =)

Посмотрел ForexConnect API - это обвязка на с++ и java вокруг FIX 4.4
Для институционалов FXCM отдает чистый FIX 4.4

Хотел api сюда выложить, но он зараза 12 мег, во вложения не лезет.
Взять можно здесь _http://forexforums.dailyfx.com/forexconnect/392705-forexconnect-api-subscribe-updates.html
 

Sergey Kovalyov

Элитный участник
Ну, для ознакомления, разве что. Торговые условия там зверские, конечно. =)

Выглядит солидно. Сразу дают и под Linux. Умеют же, гады. =)
 
Верх