Pull to refresh

Comments 65

Один я прочитал заголовок как «Тестирование торТовой системы на PHP»? :)
Я лично хочу торт с момента прохождения первого portalа. Не удивился бы, если бы и я очитался. Фрейд вон и похлеще вещи выкидывал (отсылка к примеру из его жизни, где он вместо, кажется, стула, взял… девушку...).
Эх… сказывается влияние пятницы видимо :-)
У тебя видимо вообще какое-то особенное отношение к еде. Даже никнейм символизирует :)
Сейчас как раз сейчас потихоньку изучаю MQL5 и используя FANN для MQL пытаюсь что-то рабочее написать. Но ввиду того, что на MQL5 писать все таки тяжелее, чем на том же PHP, думал сначала оттестировать систему на PHP.

Поэтому тоже озадачивался тем же вопросом.
Если у Вас получится завести FANN на PHP, дайте, пожалуйста знать или напишите статью. У меня, например, в лоб не получилось и пришлось отступиться до пояления большего количества свободного времени.
попытался завести FANN, не получилось. ни руками не устанавливается, ни как либо еще. судя по всему php binding давным давно не обновлялся.
Давным-давно — это ещё мягко сказано =(
И чем же тяжелее? MQL готовый рабочим инструмент. Я сам РНР-программист, но изучаю в свободное время MQL и у меня даже мысли не возникало использовать РНР для разработки торговых роботов. Зачем? На MQL же гораздо удобнее, он для этого и создавался. Код вышеописанной стратегии на MQL уместится в несколько строк кода и написать его можно, без преувеличения, за несколько минут.
Гм… Довольно странное решение, имхо, тестировать на php…
Можно, например, тестировать на GNU R — там и с большими объемами данных удобно работать, и библиотек много, и графики красивые рисовать легко. php, конечно, можно перенести в веб, но я думаю, что прикрутить веб-морду к R также легко (опять же наверняка нагуглится библиотека).

А стратегия действительно «hello world». Меня забавляет, как в разных книжках расписывают прибыльность таких hello world'ов. Даже примеры графиков приводят. Вот только в реальной жизни все это давно не работает…
P.S. и да, я думаю, что легче выучить R со всем его многообразием библиотек, чем изобретать миллион велосипедов
Вопрос лишь в том, есть ли в GNU R какая нибудь реализация нейросетей.
Есть реализации чего угодно. Для нейронок можно пользоваться пакетом nnet.
Народная мудрость гласит, что если что-то нужно написать, то это уже написано на Fortran.

Fortran-код легко портируется на R. То есть, если что-то нужно написать, это уже написано на R.

P.S. Я не пиарю R. Есть еще десяток ему подобных языков/фреймвоков и т.д., которые больше подходят для данной задачи, чем php
согласен, если бы не одно но, примерно то же самое можно было услышать про perl-php. Зачем этот php когда есть perl, очень очень похожий по возможностям и функционалу? Но шло время и статистика показывает что распространение php сейчас шире нежели perl.

Так что я бы не стал так категорично.
Я имею в виду немного другое. Изначально GNU R больше приспособлен для таких задач, чем PHP, все-таки он язык для статистических вычислений.
А по удобству написания кода — мне кажется они равноценны. Это тебе не perl, который без поллитра никак=)
ИМХО этот велосипед не пойдет дальше среднего велосипеда — покататься и забросить.
Тренд мировой экономики сейчас отрицателен.
Поэтому если чел хорошо знает PHP — то почему бы и не писать на нем? Чем учить язык который скорее не пригодится.
Согласен. Но если возникнет необходимость много и упорно тестировать (а именно так и происходит, когда разрабатывается реальная стратегия), то велосипед не всегда подойдет.
В любом случае, почему бы и нет, мне кажется, что это замечательный experience для php-программиста.
UFO just landed and posted this here
Да, Глеб, МатЛаб вполне аналогичен. Хотя после использования R мне показалось, что он удобнее. Но о вкусах не спорят.
я постарался расписать критерии выбора языка, первоначально я смотрел WealthLab, ибо там используется C# и это мне показалось хорошим поводом познакомится с этим языком. Но до C# я не дошел, меня озадачил тот же индикатор гистограммы MACD, который они умудряются рассчитывать раньше его EMA.

по поводу легче изучить GNU R, возможно, но с точки зрения бизнеса программисты на PHP дешевле, возможностей больше.

Можно в принципе и в онлайн выводить продукты типа TSLab те же, они могут API предоставить чтобы их ядром можно было вертеть как хочешь и получать данные, другой вопрос почему этого они не делают, возможно не заинтересованы.
Программисты на php бывают разные. Настоящему индейцу пофиг, на чем писать.
Думал о нечто подобном, но руки не доходили и наверное не дойдут…
присоединяйтесь к разработке, пишите какой функционал вам нужен для тестирования, я буду стараться его реализовывать по мере возможностей. Либо сами реализуйте его и возвращайте в проект :)
Я хотел формализовать стратегии изложенные в одной книжке. Просто для проверки.
Но я ЛЮБИТЕЛЬ по программировать — не более. В реале я школьный учитель.
Хотя если будете терпеть — возможно я со школьником некую стратегию как исследовательский проект сделаю.

если не будет особой спешки то конечно присоединяйтесь, написание самой стратегии не особо сложное занятие, сложнее когда требуется под стратегию добавить функционал в ядро, помогу чем смогу :)
UFO just landed and posted this here
Вы не понимаете главного. Школьный проект и не рассчитан на прибыль. Будет, например произведена оценка вклада тех или иных параметров в суммарный убыток. Но в результате человек получит практический опыт программирования, работы в проекте и много чего еще.
MACD не совсем конечно удачный, зато им можно выявлять хорошо дивергенции цен при надвегающимся развороте тренда. Вот бы еще конвертор MQL4 в PHP, чтобы из MetaTrader`а брать советники и индикаторы
Жаль только что MQL4 достаточно скудный язык, явно хуже даже чем php. А проект коенчно интересный, может и присоединюсь как нибудь )))
А как же MQL5? К тому же можно написать свою DLL и подцепить ее.
Цеплял я свою dll. Это дает преимущества, но довольно геморройное занятие.
В нем появились более клевые типы, в 4ке вроде даже enum нету! Но вот проблема что не все брокер-системы поддерживают MetaTrade5. А вот с DLL действительно можно, я правда сам не пробовал, но если буду пробовать что-то действтельно большое, типа вероятностных нейросетей, то явно буду писать на внешнем языке))) а не на mql4
практически везде пишут что MACD дает очень много ложных сигналов, особенно на графике с интервалом меньше дня,
если к этому еще прибавить, что стратегия не учитывает ни силу движения индикатора, ни время, то удивительно как стратегия в принципе не сливает депозит :)

а вообще практически любая стратегия скорее проигрывает не столько из-за точек входа, сколько из-за плохой стратегии сопровождения позиции. Например в этой hello world стратегии если посмотреть на график сделок отношение убыток/доход примерно стремится 1 к 1. Соответственно при удачном открытии позиции мы не успеваем отбить потери на предыдущей убыточной серии.
На эту тему очень интересно написал Игорь Чечет, который провел тестирование первичности входа или сопровождения позиции ichechet.livejournal.com/15579.html. В целом изходя из тех тестов которые я проводил, он прав.
Спасибо, посмотрю. Стратегий и нюансов вообще огромное множество, и часто определенные стратегии хорошо отрабатывают на одном рынке, но как он меняется — они начинают давать большие просадки. Я сам в поисках грааля ))) хороший сайт с cтратегиями — strategy4you.ru
На PHP? Зачем изобретать велосипед? Есть специально заточенные платформы для создания торговых стратегий.
А вообще — ерунда это всё. Торговые системы на основе известных индикаторов и инструментов не работают — иначе все трейдеры давно были бы богачами =)
Рынок слишком сложная штука с кучей зависимостей (человеческий фактор, политическая обстановка в мире, время года, фаза луны и т.п.) для того, чтобы его можно было формализовать.
На вопрос «зачем» я написал в самой статье.

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

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

Есть роботы которые торгуют только на фундаментальном анализе?
Тоесть если позавчера ночью выступал Бернанке то робот должен был анализировать что он говорит понимать в какую сторону пойдет рынок? Типа если он сказал что будет рецессия как пару недель назад, то бакс пойдет вверх? эх, клева бы )))

А так есть стратегия при которой робот отслеживает важные новости (их списки есть в инете) и после новостей ставит отложеные ордеры на BUY или SELL, в зависимости от того куда пойдет рынок после новости, пощел резко вверх — ставим на BUY, пощел вниз — ставим на SELL, сам не пробовал, имхо рисковано ))) Один знакомый предлагал отслеживать твиттер и выцеплять ключевые слова и взвешивать их, но имхо покупка будет уже поздно, тут главное вовремя войти в рынок и вовремя выйти
нет нет, речь не идет об анализе речи Бернанке.

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

Торговля по новостям это по большей части торговля на эмоциях, а эмоции не лучшим образом сказываются на результатах торговли. Да и новости интерпретирует человек, что одному покажется неплохо, другому не совсем понравится. В итоге движение при выходе новости может быть часто ложным, если еще учитывать, что новость часто бывает заложена уже в цену можно прогореть. Но попробовать конечно можно
Аааа, понял, да, интересно.

Ну а новости как и тренды, фигуры итд толкуют все по разному, главное иметь хорошую и четкую стратегию игры и не поддаваться эмоциям! А впринципе технический анализ и построен на эмоциях, эмоциях людей. Как говорил Доу Джонс, психология людей не меняется, поэтому законы технического анализа имеют четкую закономерность и они повторяются во времени.
Насколько я знаю, большинство работает на анализе микроструктуры рынка. Ну или арбитражит. Это не технический анализ. Хотя его элементы без сомнений могут использоваться.
Если говорить о бесплатных тестерах (и забыть об эскспиренсе php-программиста) то есть огромный смысл глянуть в инвентарь форекс-клуба. Там есть несколько интересных терминалов. Не знаю, применимы ли они к торговле акциями, поскольку сам работаю с валютами.

В rumus2 есть встроенный тестер стратегий с шикарнейшим функционалом opt-перменных. Сама стратегия описывается на языке РуЛанг (собственный румусовский язык, простой как… не знаю как что, нереально простой, в общем), а opt-переменные можно использовать для оптимального подбора параметров индикаторов. Можно задать пределы перменной и с каким шагом ее подставлять в стратегию и прогнать по графику (история на данный момент доступна с 2006 года). На выходе получаем очень развернутый отчет о проделанной работе, какие значения для индикатора подходят наилучшим образом на данном графике, макс. просадка и т.п.

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

В румусе робота нет, только тестер. Сам лично использую связку этих программ. Для румуса аккаунт не надо заводить, можно и так гонять в хвост и в гриву. Для актТрейдера надо зарегаться на сайте форекс-клуба.
Известное дело, что платформ и инструментов миллион. Но пишут же люди свои операционные системы. Так почему было не написать еще один велосипед?
ewgRa молодец несмотря на все очевидные минусы его платформы.
ewgRa молодец, это безусловно. Но собирая свой собственный велосипед, полезно будет посмотреть на уже собранные велосипеды, просто чтобы знать какими функциями вообще могут обладать велосипеды.
У MetaTrader'a есть язык MQL. Он с C-подобным синтаксисом. Так же позволяет тестировать, прогонять разные параметры системы. К тому же есть возможность использования генетических алгоритмов на этапе тестирования.
Но обычно получается так, что оптимизировав систему под историю, в будущем прибыльность этой системы практически нулевая. Поэтому и есть желание использовать внутри эксперта/советника нейронные сети.
Я пробовал использовать reinforcement learning. Тоже замечательно обучается. Правда только в том случае, если вообще есть связь между тем, на что смотрим, и тем, на чем торгуем. И вот тут как раз возникают проблемы…
UFO just landed and posted this here
что имеется ввиду под «рассчетом эффективности»?

Для меня основным показателем эффективности является разница между начальной и конечной суммой на балансе, то есть сколько удалось заработать, или не заработать. Затем идет показатель максимальной просадки в течении тестируемого периода, он не должен быть слишком большим, иначе стратегия по моему мнению довольно рискованная.

Сами результаты работы пока никак особо не оформляются, возможно скоро сделаю формирование красивого отчета.

Это имелось ввиду под рассчетом эффективности? Если нет, расскажите поподробнее что вы имели ввиду.
Еще хорошо бы посмотреть на среднюю прибыль сделки (это скорее для прибыльных стратегий). То есть если стратегия имеет среднюю прибыль на трейд порядка комиссионных, то оно того не стоит. А если больше, то сразу понятно, насколько хорошо стратегия может быть масштабирована применением больших объемов.
ну если учитывать все комиссии сразу, как это будет делать брокер, то это скажется на конечном балансе и соответственно на прибыльности стратегии. если у нее прибыль будет порядка комисионных, то и о прибыльности речь не будет идти
«при реальной торговле результаты торговых стратегий будут несколько хуже, чем при тестировании» — это если идти втупую тик за тиком и мгновенно «исполнять» лимитки/стопы по первому тику. Я же написал себе маркет симулятор, который и ордера выполняет с задержкой и свкизы рисует по несколько центов (совсем ад).

Работа моего робота по такому симулятору в точности, цент в цент, совпадает с тем, как он работает на реальной бирже (только я торгую на NYSE и CME) — с поправкой на заложенные случайности.

У меня все написано на node.js, и я тоже постепенно готовлюсь опубликовать в opensource фундамент торговой системы.
ну как вариант, но тестирование работы по тикам должно очень много времени отнимать/

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

«почему вы решили свою систему писать» — тошнит от винды и от торгового софта. Но это ошибочное решение. Рациональнее было бы, конечно, использовать торговую платформу типа NinjaTrader.
Если вас не затруднит — сообщите когда будет публикация, был бы признателен за ознакомление с вашими реализованными идеями (можно через ЛС хабра).
Кстати, написав за год целую торговую платформу (с графиками, с симулятором рынка, с базой данных тиковых котировок почти по всему NYSE и т.д.) я бы очень советовал вам отказаться от вашей затеи.

Есть торговые платформы, на которых гораздо легче разрабатывать роботов. Даром, конечно, что все они под винду, но они работают и в них есть нужный инструментарий. Делать с нуля все свое, начиная от свечного графика и до протокола обмена с брокерами — это довольно-таки бессмысленный труд.
пока что это как хобби. можно сказать академическая задача, которую интересно решать, вам наверное тоже было интересно делать свою систему.
Из стандартных средств моделирования МТС — это тот же метатрейдер. Но. На нем не всё скажем так можно тестировать, так как еще с 200-х билдов есть список серьезных косяков, которые дадут положительное матожидание, но на самом деле при правильном расчете будет минус на гране минусов.
В идеале, если смотреть на торговлю с учетом наличия свободных существенных денег (не 10к рублей), то вся торговля должна быть такой: брокер/банк с торговым гейтом по FIX протоколу, у него же тиковый сервер и возможность оспаривания в суде работу по сделкам, на клиенте у себя тоже один сервер со своей историей хотя бы от 10-20 брокеров/банков за последние лет 10 хотя бы не хуже минуток, один тестовый искусственный поток с чем-то опасным и нерыночным для проверки устойчивости к жесткому и опасному рынку, далее свой софт с несколькими десятками постоянно торгующих роботов, проводящих все сделки исключительно в своей песочнице (смотрим рынок по модели и сделку ставим в своей системе, локально). Далее это все торгуется с годик онлайн 24*7*365 и вытачивается оптимальные алгоритмы (несколько МТС, несколько портфелей и т.п.), которые уже можно выводить на реальные деньги.
Плюс нужно понимать, что если цель всего этого серьезная — то никаких кухонь из СНГ, их невывод мелких объемов на межбанк — это игра в трубу с самим собой против себя же.
Ну и пожелание изучать это все с постоянным поиском качественного брокера/банка (не идеального, а реального), которому будет, скажем так, невыгодно вас сливать. Будете успешными на длительном интервале — считайте что ваши сделки будут зеркалировать сами брокеры (вам это пофиг, но если будете долго сливать у контрагента-прокладки будет серьезный зуд с желанием перекрыть свои косяки вашим депозитом через проскальзывания, неисполнение/потерю сделок и т.п. вариантов много, ограничение тут только фантазией), будете делать глупости при принятии решения — вас съедят за милую душу.

Хотите что-то заработать — готовьтесь к войне, судам и потерям. Ищите плоские положительные МТС на длительном интервале от года.
На мой взгляд PHP как инструмент для обработки больших объемов данных за конечное и приемлемое время не подходит. Также не подходит и то, что предлагают «брокеры» — тот же MQL (даже с учетом всех фенечек с DLL и т.п.).
Писать только своё при наличии времени, желательно на чем-то вроде С++ компилируемом либо, если есть средства — покупать готовый и ОЧЕНЬ дорогой софт для «игр в песочнице».
это все больше похоже на работу крупного трейдера. думаю большинство инвесторов не обладают такими возможностями, да и нет мне кажется такой необходимости.

но все равно интересно :) насколько все серьезно в крупном трейдинге
Жень, не трать время впустую. Ты убьешь очень много времени на то, чтобы сделать то, что уже сделано сто раз и правильно. И это не приблизит тебя к цели. Если ты конечно ставишь себе цель — заработать.

Да и к слову, алгоритм на стандартных индикаторах гарантировано сольет твой депозит. Лучше потрать время на чтение правильных книг, изучения поведения цены конкретных инструментов(выбери несколько и изучай) и торговой математики(опционы, например, очень интересная и полезная тема). Также неплохо понимать хотя бы основы макроэкономики и валютных рынков.

А в качестве системы программирования можно взять тот же TSLab для простых стратегий и stock# для нетривиальных.

Но и там есть куча подводных камней и сложностей, даже несмотря на то, что у тебя допустим есть хороший алгоритм. Я, например, до сих пор собираю иногда баги в роботах, несмотря на то, что они торгуют уже с апреля. Это долгий путь и тратить его впустую — глупо.
спасибо за совет, я и так в принципе понимаю «велосипед vs готовое взять» какие плюсы и минусы, но поиграться же интересно со своим :)

если серьезно заниматься этим, тогда да, надо брать готовое, а если это как хобби, то можно и со своим пока-что…

Sign up to leave a comment.

Articles