Как написать робота для торговли на бирже

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

Выяснилось, что две наиболее популярные биржи, на которых торгуют биткоинами — это MtGox и BTC-e. Я положил деньги на одну из них и принялся думать над тем, как предсказать изменение цены, а также, как это автоматизировать. Дело осложнялось тем, что на этих биржах можно покупать и продавать только на свои средства, поэтому нельзя играть на понижение, занимая короткую позицию, потому что, как говорил Матроскин: «Чтобы продать что-нибудь ненужное, нужно сначала купить что-нибудь ненужное».

Обзор

Почитав материалы по теме, я пришел к выводу, что существует две наиболее распространенные стратегии для алгоритмической торговли:

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

При рассмотрении применения этих стратегий к торговле биткоинами оказалось, что первая убыточна из-за комиссий бирж — 0.6% на MtGox и 0.2% на BTC-e за одну сделку, в то время как средний спред (разница между ценой покупки и цены продажи) на обоих биржах меньше, чем удвоенная комиссия за сделку.

Алготрейдинг #2 — Как быстро создать торгового робота без навыков программирования

Вторая стратегия в чистом виде оказалась неприменима: хотя разница в цене между BTC-e и MtGox обычно есть, причем на BTC-e, как правило, дешевле, чем на MtGox, перевод денег с MtGox на BTC-e затруднен задержкой вывода в несколько дней, а также, комиссией, которая в среднем съедает всю прибыль. Но если взглянуть на объем торгов, то можно обнаружить, что на MtGox он почти в 10 раз выше, чем на BTC-e, из чего можно сделать вывод, что «законодателем цены» является MtGox, а BTC-e его просто догоняет с некоторой поправкой (если бы не догоняла, был бы возможен «сильный» арбитраж с переводом денег/биткоинов туда-сюда). В результате было принято решение писать бота для торговли на BTC-e, который ориентируется на цену с MtGox.

Построение модели

Рассмотрим отношение цены на MtGox и BTC-e, а точнее, его натуральный логарифм — для «равноправности» двух цен, назовем его R:

Посмотрим, как меняется цена на BTC-e в зависимости от R:

Заметно, что через некоторое время после резкого увеличения R цена на BTC-e растет, а после уменьшения — напротив, падает. При этом, при R 0 цена всегда падает, а при R > 0.1 цена всегда растет. Чтобы выяснить, что же между, построим функцию распределения R:

Видно, что на интервале [-0.1; 0.11] находится большинство значений R, при этом в нем она распределена почти равномерно, поэтому по значению R в этом диапазоне нельзя однозначно определить, как будет меняться цена; в то же время, изменение R на некоторую пороговую величину Δ с вероятностью более 50% говорит о том, что цена вырастет/упадет.

Используя полученные результаты, построим следующую стратегию (не забываем, что при торговле биткоинами невозможны короткие позиции, только длинные):
в каждый момент времени оптимальная для BTC на счету от общего капитала должно быть равно , при этом, фактически совершаем покупку/продажу только тогда, когда R меняется по сравнению со значением на момент последней противоположной операции не менее, чем на некоторую величину Δ.
Из очевидных соображений, подкрепленных результатами численного моделирования, примем зависимость на интервале [Rmin; Rmax] линейной:

Оценим величину Δ. Она должна быть не менее минимального роста цены на BTC-e, при котором покупка и последующая продажа будут выгодными. Последняя складывается из комиссии за сделки: 2 * 0.2% и среднего спреда, который примем равным также 2 * 0.2% (равновесное состояние, в котором невозможен маркетмейкинг, а ближайшие друг к другу неисполненные ордеры на покупку и продажу выставляются так, чтобы скомпенсировать комиссию), т.е. Δ > 0.008 для безубыточности. Чтобы была прибыль, нужно взять чуть больше, поэтому пусть будет Δ = 0.01.

Проверка стратегии

Для проверки получившейся модели на реальных данных о ценах, напишем

скрипт на Matlab

function trademodel() r_min = -0.01; % нижняя граница значений R, при достижении которой продаем все BTC r_max = 0.11; % верхняя граница значений R, при достижении которой покупаем BTC на все деньги delta = 0.01; % минимальное изменение значения R, при котором совершается торговая операция data = importdata(‘data.txt’, ‘ ‘); time = data(:, 1); time = time / 3600 / 24 + datenum(1970, 1, 1); % преобразуем unix timestamp в дату matlab mtgox_buy = data(:, 2) ; mtgox_sell = data(:, 3); btce_buy = data(:, 4) ; btce_sell = data(:, 5); btce_btc_amount = 0; btce_usd_amount = btce_buy(1) * 1.002; function state = total_in_usd(index) state = btce_usd_amount + btce_sell(index) * btce_btc_amount / 1.002; end function state = total_in_btc(index) state = btce_btc_amount + (btce_usd_amount — 1) / (btce_buy(index) * 1.002); end function expected_btc = btc_for_ratio(ratio) if ratio = r_max expected_btc = 1; else expected_btc = (ratio — r_min) / (r_max — r_min); end end count = 1; trading_times = zeros(1, length(time)); trading_states = zeros(1, length(time)); trading_times(1) = time(1); trading_states(1) = total_in_usd(1); last_buy_ratio = 0.0; last_sell_ratio = 0.0; for i = 1:length(time) ratio = log(mtgox_sell(i)) — log(btce_buy(i)); expected_btce = btc_for_ratio(ratio) * total_in_btc(i); btce_diff = expected_btce — btce_btc_amount; if btce_diff > 0.01 abs(last_sell_ratio — ratio) >= delta last_buy_ratio = ratio; btce_usd_amount = btce_usd_amount — btce_buy(i) * abs(btce_diff) * 1.002; btce_btc_amount = expected_btce; count = count + 1; trading_times(count) = time(i); trading_states(count) = total_in_usd(i); else ratio = log(mtgox_buy(i)) — log(btce_sell(i)); expected_btce = btc_for_ratio(ratio); expected_btce = expected_btce * total_in_btc(i); btce_diff = expected_btce — btce_btc_amount; if btce_diff < -0.01 abs(last_buy_ratio — ratio) >= delta last_sell_ratio = ratio; btce_usd_amount = btce_usd_amount + btce_sell(i) * abs(btce_diff) / 1.002; btce_btc_amount = expected_btce; count = count + 1; trading_times(count) = time(i); trading_states(count) = total_in_usd(i); end end end count = count + 1; trading_times(count) = time(end); trading_states(count) = total_in_usd(length(time)); trading_times = trading_times(1:count); trading_states = trading_states(1:count); subplot(2, 1, 1); plot(trading_times, 100*(trading_states / trading_states(1) — 1), ‘.-‘); grid on; title ‘Total profit, %’; datetick(‘x’, ‘dd.mm’); set(gca, ‘XTick’, trading_times(1):((trading_times(end) — trading_times(1)) / 10):trading_times(end)); subplot(2, 1, 2); plot(time, (btce_buy + btce_sell) / 2); grid on; datetick(‘x’, ‘dd.mm’); title ‘BTC-e price, USD’; set(gca, ‘XTick’, time(1):((time(end) — time(1)) / 10):time(end)); result_profit = trading_states(end) / trading_states(1) — 1; fprintf(‘profit: %f, profit per day: %fn’, result_profit, result_profit / (max(time) — min(time))); end

В результате его исполнения для данных за последние три недели получается следующий график:

и среднее значение ежедневной прибыли 3.5%. Тестовые данные и скрипт можно посмотреть на github.

Написание программы

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

Программа подключается через websocket к обновлениям цены на MtGox иполучает цену через HTTP-запросы с BTC-e. Запросы на BTC-e отправляются каждые две секунды, т.к. на сервере такая квота; данные с MtGox приходят примерно с такой же частотой. И то и другое просходит в отдельных потоках, информация о цене отправляется в главный поток через Queue. В главном потоке просходит обработка данных по описанному выше алгоритму, и если нужно совершить покупку или продажу, создается ордер по последней лучшей цене. Если ордер не исполнился полностью, то на следующей итерации он отменяется и создается новый, до тех пор, пока существует необходимость в покупке или продаже (пока разница между и текущим состоянием счета составляет более 0.01 BTC, меньшими объемами торговать не позволяет биржа).

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

Выводы

Описанная стратегия позволяет получать заметную прибыль при больших колебаниях цены (15-20%), при малой волатильности она почти не приносит дохода. К сожалению, когда я полностью закончил разработку модели и написание программы, уже шел май, и как я думаю, период апрельских колебаний курса закончился, поскольку ажиотаж, связанный с биткоинами, везди притих. Программа проработала около недели, но из-за спокойствия рынка заработк почти не было. Поэтому интерес к торговле начал пропадать, а поскольку внесенные на биржу деньги неожиданно понадобились, сегодня я вывел их и написал этот пост.

Источник: savepearlharbor.com

Как создавать торгового робота в программе TSLab? Пошаговая инструкция и особенности работы с приложением

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

Создаем робота в TSLab

Эта опция набирает популярность у трейдеров благодаря удобству и значительной экономии средств.

ВЫБИРАЙТЕ ЛУЧШИХ! ЭТИХ БРОКЕРОВ МЫ ПРОТЕСТИРОВАЛИ ДЛЯ ВАС

от 2-7 часов

9,8

ТОП 3 АВТОРСКИЕ СТРАТЕГИИ для Intrade bar

9,9

ТОП 2 ПРОВЕРЕННЫЕ СТРАТЕГИИ для Бинариум

от 8 часов

9,9

от 3-8 часов

9,8

от 3-8 часов

9,9

9,1

Программа для создания торгового робота TSLab – как это работает?

Инновация TSLab – первая русифицированная программа российского производства, дающая возможность создания и управления механическими торговыми системами (МТС). На данный момент не имеет аналогов на отечественном рынке.

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

Преимущества при создании торгового робота в TSLab:

  • Доступность и простота.
  • Русский язык.
  • Понятный интерфейс, что дает возможность программировать роботов без специальных знаний: скрипт формируется из уже заранее прописанных блоков.
  • Возможность писать алгоритмы на C#.
  • Оперативная русскоязычная поддержка клиентов.
  • Формирование заявок с помощью «горячих» клавиш и мыши с целью экономии времени.
  • Роботы подходят для различных торговых терминалов (включая QUIK и PLAZA).
  • Создание диверсифицированного портфеля МТС.

Однако, необходимо упомянуть минусы при создании торгового робота в TSLab:

  • Если создано много роботов, возможны сложности с созданием и исполнением заявок.
  • Достаточно высокие системные критерии.

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

Доступные опции TSLab для создания торгового робота

Возможности программы обширны, поэтому в данном материале мы рассмотрим ключевые:

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

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

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

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

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

Эта опция очень удобна в обучении; Паркинг скриптов дает возможность уменьшить риски при нестабильной интернет-связи и отсутствии мощностей ПК (сервер в data-центре с установленной ОС и с TSLab, работающий круглосуточно, что сильно увеличивает доходность). По сути, это и есть замена VDS/VPS сервера; Модуль риск-контроля. Он отвечает за риск-менеджмент, отслеживая оформленные заявки перед их выполнением. Пользователь самостоятельно регулирует критерии, формируя свои конкретные запросы с помощью собственного или чужого скрипта. Настройка производится согласно предпочтениям пользователя.

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

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

Официальный сайт TSLab

Однако, торговля настоящей валютой потребует активации TSLab у выбранной площадки:

  • Финам,
  • ITinvest,
  • Алор,
  • Риком-Траст,
  • Netinvestor,
  • Открытие,
  • Солид,
  • Церих,
  • БКС,

Соответственно, нужно понимать, что без вложения минимальных средств реальный заработок невозможен. Абонентская плата невысока: она находится в диапазоне от 1680 руб./месяц за версию с QUIK и 3500 руб./месяц за работу с PLAZA.

САМЫЕ ПРОЗРАЧНЫЕ БРОКЕРЫ ОПЦИОНОВ Год основания 2012. Депозит с 300 рублей. обзор | отзывы | БОНУС 100% НА СЧЕТ Год основания 2016. Можно без верификации. обзор | отзывы | ТРЕЙДИНГ С 10 USD ФОРЕКС БРОКЕРЫ — ЛИДЕРЫ РЕЙТИНГОВ 2007 год. Самый востребованный брокер.

БОНУС ДО 100% К СЧЕТУ | обзор/отзывы Имею тут счет в 1050$. Платит с 1998 года! 4 АКЦИИ И КОНКУРСА | обзор/отзывы

Обучение созданию роботов в программе TSLab

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

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

Главным достоинством обучающих программ является полное прохождение всего объема доступной информации и создание робота в TSLab с нуля.

  • Типы торговых систем и способы их редактирования/создания
  • Формирование МТС
  • Прописывание бота на скользящих средних
  • Что значит скрипт с опцией лимитирования убытков и скрипт для канала
  • Каким образом находить готовые алгоритмы и заниматься их усовершенствованием.

10 шагов при разработке бота под QUIK и TSLab

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

Торговый робот за 10 шагов в TSLab

Итак, для создания качественного робота необходимо грамотно пройти следующие шаги:

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

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

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

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

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

Среди качественных техинструментов отметим следующие:

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

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

Вот так выглядит готовый скрипт в визуальном редакторе:

создание торгового робота

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

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

Как создать робота в программе TSLab?

Если у вас есть познания в трейдинге и опыт торговли Форекс-роботами, то есть смысл задуматься о создании робота в программе TSLab. Также для создания таких ботов должно присутствовать техническое мышление, но если его нет, в таком случае можно заказать его у сторонних разработчиков, предварительно подготовив ТЗ.

Все основные навыки использования программы TSLab

Источник: infofx.ru

Чем заняться на каникулах: пишем роботов для торговли на бирже на скриптовом языке TradeScript

В блоге на Хабре мы много пишем о биржевых технологиях и торговых роботах. В сегодняшнем материале вопрос создания таких систем будет рассмотрен подробнее — на примере встроенного в торговый терминал SmartX скриптового языка программирования TradeScript.

Что за TradeScript

TradeSript – векторный язык программирования, разработанной американской компанией Modulus Financial Engineering специально для создания торговых роботов. Данный инструмент входит в пакет технологий, которые были лицензированы (OEM) нашей компанией для создания торгового терминала SmartX (подробнее о его создании мы рассказывали здесь).

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

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

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

Начинаем писать роботов: примитивы и векторы

Одно из важных понятий в языке TradeScript — примитивы, то есть встроенные функции, которые нужны для облегчения процесса создания скриптов. Пример примитива — функция TREND:

TREND(CLOSE, 30) = UP

Он вернет значение Истина, если имеет место восходящий тренд – он рассчитывается за последние 30 дней по ценам закрытия торговых сессий.

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

Например, чтобы рассчитать простую скользящую среднюю «срединной» цены акций за
последние 30 периодов при помощи обычного языка программирования типа BASIC, нуж-
но написать что-то типа:

For each symbol For bar = 30 to max Average = 0 For n = bar — 30 to bar median = (CLOSE + OPEN) / 2 Average = Average + median Next MedianAverages(bar) = Average / 30 Next bar 10 Next symbol

Для описания крайне простого действия, нужно «потратить» 9-10 строк кода. С помощью векторного языка можно то же полезное действие можно уложить в одну строку:

SET MedianAverage = SimpleMovingAverage((CLOSE + OPEN) / 2, 30)

Таким образом, на TradeScript можно описывать все те же стратегии, что и на процедурных языках вроде C++, VB или Java.

Примеры реальных стратегий

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

Многие из существующих индикаторов (скользящие средние, осцилляторы, индексы, функции диапазонов и линейной регрессии и т.п.) встроены в TradeSript в виде примитивов, так что их можно использовать при программировании роботов. Такая программа может включать один или несколько индикаторов. Рассмотрим примеры кода торговых роботов на TradeScript, использующих индикаторы теханализа.

Пересечение скользящих средних

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

image

Ниже — пример кода системы, основанной на пересечении скользящих средних (Moving Average Crossover). Такой робот будет покупать если короткая скользящая средняя пересекает снизу-вверх длинную скользящую среднюю, и продавать, если пересечение идет в обратном направлении.

Buy Signals # 20-периодная EMA пересекает снизу-вверх 60-периодную EMA CROSSOVER(EMA(CLOSE, 20), EMA(CLOSE, 60)) Sell Signals # 20-периодная EMA пересекает сверху вниз 60-периодную EMA CROSSOVER(EMA(CLOSE, 60), EMA(CLOSE, 20)) Exit Long # Цена закрытия пересекает снизу-вверх Parabolic SAR CROSSOVER(CLOSE, PSAR(CLOSE, 0.02, 0.2)) Exit Short # Цена закрытия пересекает сверху вниз Parabolic SAR CROSSOVER(PSAR(CLOSE, 0.02, 0.2), CLOSE)

Система Parabolic SAR/MA System

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

image

В нашем примере робот принимает такие решения на основе пересечения скользящих средних и пересечения индикатором Parabolic SAR снизу вверх цены закрытия.

Buy Signals # Покупаем, если скользящие средние пересеклись сегодня или вчера и # если PSAR пересеклись сегодня или вчера (CROSSOVER(CLOSE, PSAR(0.02, 0.2)) OR CROSSOVER(REF(CLOSE,1), PSAR(0.02, 0.2))) AND (CROSSOVER(EMA(CLOSE, 10), EMA(CLOSE, 20)) OR CROSSOVER(REF(EMA(CLOSE, 10),1), REF(EMA(CLOSE, 20),1))) Sell Signals # Продаем, если скользящие средние пересеклись сегодня или вчера и # если PSAR пересеклись сегодня или вчера (CROSSOVER(PSAR(0.02, 0.2), CLOSE) OR CROSSOVER(PSAR(0.02, 0.2), REF(CLOSE,1))) AND (CROSSOVER(EMA(CLOSE, 20), EMA(CLOSE, 10)) OR CROSSOVER(REF(EMA(CLOSE, 20),1), REF(EMA(CLOSE, 10),1)))

Ценовой разрыв

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

image

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

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

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

Buy Signals # Имеет место не менее чем 2% гэп вверх на высоком объеме LOW > REF(HIGH,1) * 1.02 AND VOLUME > SMA(VOLUME, 5) * 2 Sell Signals # Имеет место не менее чем 2% гэп вниз на высоком объеме HIGH < REF(LOW,1) * 0.98 AND VOLUME >SMA(VOLUME, 5) * 2 Exit Long Используем цель прибыли приблизительно ½ от величины гэпа, а также стоп-лосс. Exit Short Используем цель прибыли приблизительно ½ от величины гэпа, а также стоп-лосс

«Бычье» и «медвежье» поглощение (Japanese Candlestick Engulfing Line System)

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

image

Вот каким может быть скрипт, использующий этот принцип:

Signals # Бычий паттерн CANDLESTICKPATTERN() = BULLISH_ENGULFING_LINE AND TREND(CLOSE, 30) = DOWN AND VOLUME > REF(VOLUME, 1) # Медвежий паттерн CANDLESTICKPATTERN() = BEARISH_ENGULFING_LINE AND TREND(CLOSE, 30) = UP AND VOLUME > REF(VOLUME, 1)

Заключение

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

  • Описание и руководство пользователя терминала SmartX
  • Руководство по работе с языком TradeScript
  • Открытие тестового торгового счета для изучения возможностей системы ITI Capital
  • Создание торговых роботов: 11 инструментов разработки
  • Биржевой софт: история создания торгового терминала
  • TradeScript
  • торговые роботы
  • программирование
  • торговый терминал
  • биржа

Источник: h.amazingsoftworks.com

Рейтинг
( Пока оценок нет )
Загрузка ...
Заработок в интернете или как начать работать дома