Как написать торговый робот – сразу к делу. Заказать программу Написание торгового бота


Чтобы создать торгового робота, нужна торговая система

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

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

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

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

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

Торговые роботы и Forex

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

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

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

Скачайте любой эксперт (торговый робот) и запустите его в тестере стратегий клиентского терминала MetaTrader 4 или MetaTrader 5 . Выберите один участок истории с ярко выраженным трендом и второй участок, на котором цена находится в диапазоне/флете. Проведите оптимизацию входных параметров эксперта и посмотрите, как они отличаются на этих двух участках.

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

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

Следующим шагом может стать создание более сложных торговых систем на основе комбинации уже существующих простых сигналов из набора Мастера MQL 5 . Вы можете, еще не прибегая к программированию, проверить и развивать свою торговую интуицию, отсеивая плохие сигналы одной системы с помощью фильтра на основе другой системы.

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

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

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

Программирование торгового робота

Вы изучили/изучаете язык программирования MQL 4 или MQL 5 и готовы написать свой первый советник для клиентского терминала MetaTrader . Здесь тоже возможно несколько вариантов.

Во-первых, вы можете разобрать несколько уже готовых торговых роботов по опубликованным статьям, чтобы лучше понимать тонкости программирования.

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

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

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

"Всё украдено до вас"

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

Военные во всех странах склонны к чрезмерному уровню секретности, и не зря на этот счет существует множество анекдотов, среди которых есть и такой: "Военная тайна заключается не в том, что вы это знаете" - говорит инструктор курсантам военного училища, - "а в том, что это знаете именно вы". С торговыми системами ситуация примерно такая же: большинство трейдеров используют простые известные торговые идеи, только с небольшими доработками, например, в виде использования трейлинг стопа (Trailing Stop) или подтверждения сигналов от трендовых индикаторов.

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

Поэтому вы можете смело брать доступные в исходном виде коды торговых роботов и пытаться найти правильное их использование на тех или иных инструментах и таймфреймах. Тут на память сразу приходит другая избитая поговорка: "Вы не любите кошек? Вы просто не умеете их готовить!" В это трудно поверить, но вероятность того, что вы придумаете что-то принципиально новое, очень мала. Тут главное всё правильно сделать самому из доступных ингредиентов и не думать, что кто-то сверхумный пользуется какими-то секретными разработками из лабораторий NASA. В этом и заключается секрет Грааля.

Редкая птица долетит до середины Днепра...

"Если торговые идеи лежат буквально под ногами, то почему ими никто не пользуется?" - возникает резонный вопрос. Ответ на него кроется, вероятно, в человеческой психологии. Многие банки и крупные инвестиционные фонды содержат в своих штатах трейдеров, которые торгуют по расписанным правилам и в объемах, которые им позволены. Но почему-то редко когда институциональные трейдеры уходят на вольные хлеба и начинают торговать на свои деньги.

Получается, что нужна не только сама торговая стратегия, но и железная дисциплина, чтобы выполнять все её правила. Многие трейдеры с горечью убеждались, что они такие же смертные, как и все остальные, и им не чужды все те проблемы психологии, которые описаны в книгах. И осознав, что самый большой враг трейдера - это он сам, трейдер задумывается о создании торгового робота, который будет работать вместо него и снимет с него психологическую нагрузку.

Отклоняясь немного от темы, приведем в пример легендарную группу "Черепахи", которая успешно торговала на множестве рынков в конце 20-го века. Почитайте "Путь черепах" , и вы поймете, что главное в профессии трейдера именно железная внутренняя дисциплина, а не какая-то суперсекретная система. Увы, большинство не сможет торговать по прибыльной стратегии, даже если получит её даром.

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

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

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

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

Вы также можете попробовать свои силы в создании и правильной настройке своего торгового робота, чтобы и получить результаты форвард-тестирования своего детища. Тем более что участие является бесплатным, а призы ощутимыми. Как говорится - "Welcome"!

Заключение

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

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

Мы не даем здесь конкретных рекомендаций по изучению языка MQL4 или MQL5, на эту тему написано много других полезных статей. Цель данной публикации состояла в том, чтобы дать начальное представление о том, как и с чего начать создание собственного торгового робота для терминалов MetaTrader 4 и MetaTrader 5 .

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

Головной мозг трейдера функционирует не совсем обычным образом. Человек, далекий от финансовых рынков, действует рационально и предсказуемо. Когда же в дело вступает индивид, мыслящий исключительно свечными комбинациями, последствия предсказать гораздо сложнее. Как частное, сбитые жизненные приоритеты и повышенная импульсивность – известные пороки трейдеров. Сам процесс торговли становиться самоцелью, и биологический компьютер в недрах черепной коробки входит в бесконечный цикл, зависая на абстрактной идее идиллического существования и собственной яхты, пришвартованной у пирса набережной особняка.

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

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

1. Разработку форекс робота начинаем с идеи

Разработка робота для торговли на рынках – это непрерывный поиск идей и, как частное, поиск Святого Грааля. Вопреки утверждениям непросвещенных граждан, Грааль находится достаточно просто – скажем «спасибо» технологическому прогрессу. Попробуйте вбить в гугл «Святой Грааль Форекс» – скорее всего, советник вашей мечты находится на первой странице выдачи, к тому же абсолютно бесплатен.

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

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

2. 4 важных вопроса перед разработкой

Но перед этим попытайтесь ответить себе на следующие вопросы:

  • В чем состоит ваша торговая идея?
  • Какие задачи будет решать советник, и какое объективное преимущество это может дать в торговле?
  • Возможно, вам нужен графический индикатор или вспомогательный скрипт?
  • Насколько идея реализуема технически, и можете ли вы самостоятельно оценить ее сложность?

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

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

У новичков на валютном рынке часто возникает множество вопросов, ответы на которые бывают не совсем очевидны, либо являются лишь вопросом неопытности оного. Будучи начинающим трейдером, достаточно прочитать одну книгу Билла Вильямса, чтобы на всю жизнь подменить понятие торгового хаоса торговым порядком. Затем такие люди удивляются, почему вот здесь да не купить, а вот здесь да не продать, и заказывают у программистов советник по пересечению двух скользящих средних. А ведь на начальных этапах обучения это вполне можно отдать на откуп готовым инструментам разработки. Одной из таких как раз является MQL5 Wizard – мастер по созданию советников для MetaTrader 5.

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

Итак, для начала запускаем MetaTrader 5 и переходим в редактор приложений (кнопка F4). На верхнем меню жмем кнопку «Создать» и в появившимся диалоге выбираем генерацию нового советника.

Добавляем модули торговых сигналов. Модули могут быть как стандартные, так и разработанные сообществом (вы тоже можете поучаствовать в данном процессе).

Собственно, все стандартные сигналы хорошо описаны в онлайн справке на официальном сайте. Там же можно скачать и кастомные.

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

Обычный трейлинг стоп или закрытие сделки по значениям индикатора – на ваш выбор.

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

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

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

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

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

Пример плохого задания для создания торгового советника – его отсутствие. Само намерение заказчика может быть и понятно: есть индикатор, нужно написать торгового робота, ну а дальше что?

«Старайтесь вникать в процесс работы и всего, что непосредственно касается реализации идеи вашего советника»

Как закрывать сделку? Как ее сопровождать? Какие выбирать объемы? Что делать с ? Нужно понимать, что программист не обладает экстрасенсорными способностями. Если вы такого найдете, обязательно дайте знать, такие люди не должны пропадать.

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

Мораль : чем больше подробностей вы предоставите в задании, тем легче его будет понять, осмыслить и, в конце концов, реализовать.

7. Выбор исполнителя

Если у вас нет опыта работы с фриланс-биржами, попробуйте представить себе субэкваториальную версию ада. На самом деле, не все так страшно, но некоторые нюансы все же стоит учитывать.

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

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

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

«В ваших интересах контролировать процесс создания советника вашей мечты. Просите проводить промежуточные этапы работ, участвуйте в бета-тесте и не брезгуйте узнавать технические подробности.»

Один из типичных примеров – недопонимание форматов файлов и их значения. Вроде: «У меня тут есть.dll библиотека (.exe файл или.ex4 программа), не могли бы вы быстренько поправить то и то, а я вам за это копеечку закину? Нет? А почему? Василий мне сделал советника за 5 баксов, а вы плохой разработчик значит!».

Мораль : старайтесь вникать в процесс работы и всего, что непосредственно касается реализации вашей идеи. Это не только поможет лучше разобраться в работе робота самому, но и в дальнейшем упростит процесс общения с исполнителями. В работе всегда принимают участие, как минимум, две стороны, и если вы намерены сделать трейдинг своей основной профессией, терпение нужно беречь – и свое, и окружающих.

Этап сдачи работы – самый сложный. Будьте уверены, каждый исполнитель с горя пьет успокоительный отвар, черным маркером отмечая день календаря, когда его в очередной раз просят поправить и без того исчерпавший все сроки заказ. Как и вселенной, совершенству нет предела, но в определенный момент нужно собраться и сказать – задача завершена.

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

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

Если задача небольшая, исполнитель вполне может пойти на уступки, и исправить работу в соответствии с новым ТЗ. Если работа проделана масштабная – что-либо менять уже поздно. Частая проблема – тотальная отрешенность в процессе разработки, например, отказ от участия в бета-тестировании: «Зачем вы мне скинули советника с ошибками, я что за вас тестировать еще должен?» или: «Откуда я знаю, как этот ваш тестер запускать, я программист что-ли?».

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

Мораль : не стоит отдавать все на самотек. В ваших интересах контролировать процесс создания советника вашей мечты. Просите проводить промежуточные этапы работ, участвуйте в бета-тесте и не брезгуйте узнавать технические подробности.

Заключение

Великие деятели, как Альберт Хофманн, не дадут соврать. Опыт создания своего продукта бесценен. Если же вы пришли на валютный рынок по собственному желанию, поверьте, это надолго.

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

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

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

Не буду лить воду, а перейду сразу к делу. Итак, первым делом нужно скачать и установить Delphi 7. Это можно сделать по ссылке – . После этого открываем папку с программой-оболочкой. С программой можно ознакомиться и заказать по ссылке:

Нас интересует файл TradeRobot.dpr . Открываем его и видим то, что изображено на картинке ниже.

Окно, на котором написано "Робот" – это Form1, окно Windows проще говоря. Так оно выглядит в разработчике. На него нам нужно поместить элементы управления и контроля робота такие, как: две кнопки и три небольших окна-строки. Первая кнопка будет отвечать за соединение с QUIK, вторая за запуск и остановку нашего робота. В строках окон будет выводиться информация об объемах крайних покупки и продажи и текущий статус программы.

Чтобы поместить необходимые элементы на форму нужно кликнуть мышью на кнопке во вкладке Standard.

После этого кликнуть в любом месте на форме. Delphi предложит переименовать кнопку и мы этим воспользуемся. Назовем ее ConnectButton.

Точно так же создадим вторую кнопку и назовем ее StartButton.

Теперь создадим 3 окна-строки. Для этого в той же вкладке Standard выберем соответствующую иконку (как на картинке) и поместим ее на форму.

Так повторяем три раза и называем их следующим образом:
- левое верхнее BuyVolumeEdit
- правое верхнее SaleVolumeEdit
- нижнее StatusEdit

Теперь нужно изменить надписи на элементах. Это делается в окне ObjectInspector, для кнопок в строке Caption, для окон-строк в строке Text.

Должно получиться так, как на картинке ниже.

Теперь нам нужно прописать сценарий для каждой кнопки. Для этого кликаем два раза по кнопке Connect to QUIK и откроется код, как на картинке ниже.

Перед begin вставляем следующий текст:

Var EMsg: Array of char; EMsgSz:DWord; ExtEC,rez:LongInt; path:string; dOrderNum:double; Massage: string;

Между begin и end вставляем следующее:

EMsgSz:=255; ExtEC:=0; rez:=-1; path:= "C:\Quik-Junior-Zerich\"; FillChar(EMsg, SizeOf(EMsg), 0); rez:=connect(PChar(path), ExtEC, EMsg, EMsgSz); Massage:= ResultToString(rez and 255); if Massage = "EXECUTE" then begin StatusEdit.Text:= "Соединен..."; Status:= "Соединен..."; end else begin StatusEdit.Text:= "Не удалось..."; Status:= "Не удалось..."; end;

В итоге получиться должно следующее:

Красным подчеркиванием отмечен путь к QUIK. Если он у вас другой, то измените путь в этом месте.

Теперь переходим к кнопке START. Открываем сценарий двойным щелчком и между begin и end вставляем следующее:

If StartButton.Caption = "START" then begin Status:= "Запущен"; StartButton.Caption:= "STOP"; end else begin Status:= "Остановлен"; StartButton.Caption:= "START"; end; StatusEdit.Text:= Status;

Должно получиться так:

Теперь пропишем глобальные переменные. Для этого найдем часть кода:

И вставим следующий код:

DataTable: array of array of string; BuyVolume, SaleVolume: Real; Status: String;

Теперь в ObjectInspector выбираем Form1 и во вкладке Events находим строку onshow. Кликаем два раза и открывается код. Между begin и end вставляем следующее:

SetLength(DataTable,2000000,10);

Теперь нам нужно найти место в коде, как на картинке ниже:

После var i, j: integer; вставляем следующее:

Path,transaction:string; dOrderNum:double;

После begin следующее:
StatusEdit.Text:= Status;

После If (Data.Cells <> "0") and (Data.Cells <> "0,00") then begin вставляем код:

DataTable:= Data.Cells; if DataTable <> "" then begin BuyVolume:= StrToFloat(DataTable); SaleVolume:= StrToFloat(DataTable); If StartButton.Caption = "STOP" then begin if (BuyVolume > 10) and (Status <> "Покупка") then begin transaction:="ACTION=NEW_ORDER; TRANS_ID=1; CLASSCODE= SPBFUT; SECCODE= SiU6; ACCOUNT= SPBFUT00553; CLIENT_CODE= ; TYPE=M; OPERATION= B; QUANTITY=1; PRICE=0;"; Status:= "Покупка"; dOrderNum:=0; send_async_transaction_test(transaction, dOrderNum); end; if (SaleVolume > 10) and (Status <> "Продажа") then begin transaction:="ACTION=NEW_ORDER; TRANS_ID=1; CLASSCODE= SPBFUT; SECCODE= SiU6; ACCOUNT= SPBFUT00553; CLIENT_CODE= ; TYPE=M; OPERATION= S; QUANTITY=1; PRICE=0;"; Status:= "Продажа"; dOrderNum:=0; send_async_transaction_test(transaction, dOrderNum); end; end; end; BuyVolumeEdit.Text:= DataTable; SaleVolumeEdit.Text:= DataTable;

Должно получиться так:

ВНИМАНИЕ!

В строках типа (их таких две):

Transaction:="ACTION=NEW_ORDER; TRANS_ID=1; CLASSCODE= SPBFUT; SECCODE= SiU6; ACCOUNT= SPBFUT00553; CLIENT_CODE= ; TYPE=M; OPERATION= B; QUANTITY=1; PRICE=0;";

в параметре ACCOUNT= нужно указать свой счет. Сейчас там указан мой SPBFUT00553.

Все, робот написан. Теперь остается его скомпилировать, т.е. превратить в готовое приложение EXE. Для этого нажимаем на зеленую кнопку Run (или F9), похожую на Play.

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

Wealth-Lab

Продукт компании Fidelity International является одним из самых мощных средств для технического анализа, разработки и тестирования торговых стратегий. Встроенным языком программирования в ней является WealthScript, имеющий немало общего с Pascal, в последних версиях используется C# и другие.NET языки.

На российском фондовом рынке применяется в связке с брокерскими терминалами – в Wealth-Lab пользователь описывает свою стратегию, согласно которой программа генерирует заявки на совершение операций. С помощью специальных библиотек для интеграции, эти приказы затем передаются в торговый терминал, из которого и происходит их исполнение. Объективно такая схема накладывает довольно много ограничений, поэтому Wealth-Lab, конечно, нельзя назвать идеальным вариантом для российских бирж.

MetaStock

Еще один зарубежный продукт. MetaStock содержит большую библиотеку различных индикаторов и средств для создания собственных формул. Из плюсов – довольно простой встроенный язык программирования. С помощью дополнительных модулей можно генерировать приказы на покупку/продажу. Как и Wealth-Lab, на российском рынке применяется в связке с торговыми терминалами с помощью дополнительных библиотек, что влечет за собой примерно те же проблемы. Также к минусам можно отнести и тот факт, что простота встроенного языка программирования не позволяет описывать сложные торговые стратегии.

Omega Research

Средство для технического анализа, предназначенное для создания и тестирования механических торговых систем. Писать роботов можно на встроенном языке программирования Easy Language (синтаксис похож на Pascal). Как и в случае двух вышеперечисленных программ, на российском фондовом рынке используется с помощью «прокладок». Среди минусов, соответственно, стабильность работы подобной конструкции, а также сложность настройки Omega Research. Кроме того, программа работает только со своим форматом данных и не поддерживает конвертацию из текстовых файлов или форматов других программ технического анализа.

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

TSLab

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

StockSharp

Бесплатная (в базовой версии) платформа StockSharp с открытым исходным кодом и продукты на ее основе (S#. Studio). Как ясно из названия, программировать можно на языке C#. Из плюсов – возможность подключения к различным торговым терминалам и брокерским системам.

LiveTrade

Линейка продуктов петербуржской компании Cofite. Благодаря API, с помощью торгового теринала LiveTrade Terminalможно запускать роботов, реализованных на платформе.NET. Есть возможность подключения к торговым терминалам и системам нескольких российских брокеров (в т.ч. к системе ITinvest с помощью API SmartCOM). Кроме того, у Cofite есть продукт Robotlab, который целиком и полностью предназначен для создания роботов. Как и в случае TSLab – торговые алгоритмы можно реализовывать с помощью визуального конструктора. Получившуюся блок-схему робота затем можно запустить в терминале.

SmartX

Торговый терминал SmartX представляет собой не обычный терминал в привычном понимании, а интегрированный программный продукт, который, помимо прочего, включает в себя и встроенный скриптовый язык программирования TradeScript – векторный язык, который был создан американской компанией Modulus Financial Engineering (США) специально для создания торговых роботов.

Из интересных функций терминала можно выделить:

  • Возможность бэк-тестинга торговых стратегий - тестирования робота на исторических данных. При этом, эти архивные данные не нужно подгружать из других (часто платных) источников – они подгружаются терминалом автоматически.
  • Возможность построения алгоритмов по тиковым данным.
  • Другая интересная особенность – возможность тестирования торговой стратегии «на лету» с использованием текущих биржевых данных, но без вывода приказа, собственно, на биржу – время виртуальной сделки, цена и получившаяся доходность будут показываться в отдельном окне.

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

Пример простого робота на TradeScript:

Buy Signals # Покупаем, если волатильность снижается, а объем и цена имеют восходящий тренд HistoricalVolatility(CLOSE, 15, 252, 2) < REF(HistoricalVolatility(CLOSE, 15, 365, 2), 15) AND TREND(VOLUME, 5) = UP AND TREND(CLOSE, 40) = UP Sell Signals # Продаем, если волатильность снижается, а объем и цена имеют нисходящий тренд HistoricalVolatility(CLOSE, 15, 252, 2) < REF(HistoricalVolatility(CLOSE, 15, 365, 2), 15) AND TREND(VOLUME, 5) = UP AND TREND(CLOSE, 40) = DOWN
Плюсом данного способа создания роботов является то, что в отличие тех же Wealth-Lab и Metastock здесь нет необходимости создавать сложные конструкции и использовать для передачи приказов в терминал «прокладки» в виде дополнительных библиотек – все встроено и сразу подключено к брокерской торговой системе.

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

SmartCOM

API нашей брокерской системы (подробнее в ), с помощью которого можно создавать торговых роботов любой сложности. Существует дополнительный плагин для AmiBroker, что значительно облегчает анализ данных.

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

Сергей пишет 08.08.2019 00:05:
>Написание любых программ на заказ. 2 Диплома МИФИ (Московского Инженерно-Физического института) - математика и программиста. 25 лет опыта профессионального программирования. Эксперт высочайшего класса, много лет работал за границей в компаниях с мировым именем. Языки С, С++, C#, Java, JavaScript, HTML, Pascal, Delphi, Visual Basic, Excell, Assembler, Assembler для микроконтроллеров (AVR, PIC, x51, x80-86). Базы данных - любые в т. ч. Oracle, MS SQL Server, InterBase, DB2, Paradox, Access, FoxProлюбые, клиент - сервер. Микроконтроллеры ASSEMBLER (все диалекты) - 8080, 8085, Z80, x51, AVR, PIC, Arduino. Компьютерная графика 2D, 3D - OpenGL, DirectX. Создание сайтов любого уровня сложности.

Приветствую.Меня интересует написание след программы.
Программа-бот для автоматических ставок в букмекерской конторе
Не для betfair. Программа должна выполнять ряд действий, всё должны выглядеть примерно таким образом:

1. Заходим в приложение, нажимаем кнопку, нужные ставки (прогнозы) парсятся с почтового адреса (каждый день приходит новое письмо). Возможно выводим их в отдельное окно или форму в программе.

2. По полученным ставкам (прогнозам) программа автоматически проставляет эти ставки с определенным временным промежутком на нескольких аккаунтах в БК.

3. Аккаунт в БК может быть как один, так и несколько. В идеале в программу можно просто вбивать аккаунты и ставить галочки какой аккаунт использовать, а какой – нет.

4. Время между ставками должно быть случайным, но не меньше и не больше диапазано, который можно указать в настройках. Например: установлен промежуток от 1 до 5 сек. 1 ставка – бумц, вторая через 2 сек, третья через 3.6, четвертая через 1.7 и т.д.

5. Сайт букмекерской конторы тоже нужно парсить в окно с программой и выбирать только нужную линию и нужные события. Как это реализовать я не знаю, программист должен придумать. Для чего? Иногда определенное название команды в прогнозе может отличаться от названия в БК. А потому автоматически ставку сделать не получится. Смотрим далее.

6. Если всё-таки некоторые ставки автоматически поставить не получилось, программа должна максимально быстро дать пользователю поставить их вручную. Т.е. к примеру 8 из 10 ставок проставлено удачно, то выбивается окно какие ставки сделаны не были – пользователь в программе уже видит спарсенную линию с нужными событиями и может одним кликом поставить вручную. Т.е. кликнуть 1 раз по нужной ставке – а ставка будет сделана с всех аккаунтов.

7. Сумма ставок задается в настройках и является одинаковой для всех ставок.

8. В случае, если во время работы бота изменился коэффициент, размер форы (т.е. сама ставка) или максимальная сумма ставки то: а) в случае смены коэффициента ставить по новому коэфициэнту если он не равен 1.01 (но такого в принципе не бывает, может упасть с 1.9 до 1.7) б) в случае смены размеры форы выдавать пользователю окно с новой форой, где будет видна ставка и новая фора, нажать можно ПРИНЯТЬ либо ОТМЕНА в) в случае смены максимальной ставки (может смениться с 50 до 0.01 например) тоже принимать новую сумму, если она не меньше N (это желательно вынести в натсройки).
Возможно это не всё что нужно, но это как минимум 90%. Вопросы любые уточняйте во время разработки. Конечно, не будет такого что с ног на голову программу нужно будет поменять, но некоторые доработки я думаю потребуются. В идеале это должна быть программа трёх кликов: открыть прогу, спарсить ставки, проставить ставки. Сайт БК дам лично программисту, тогда же покажу в каком формате приходят письма на мыло и какую линию с БК нужно парсить. Разрабатывайте программу так, чтобы в дальнейшем можно было делать апдейты, будем сотрудничать долго