Сбор, скачивание, поиск тиковых данных для 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 и всякое другое интересное я уже не буду рассказывать. Так как интересно это только мне. =)
 

Вложения

sibman

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

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

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

Вложения

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. Умеют же, гады. =)
 
Верх