Трейдинг и язык си

Лучший Форекс-брокер за этот месяц - Forex4you

В этой статье раскрыты следующие темы:

зависимость SI от RI

Похожие топики:

4 комментария

  • Вербицкий Георгий
  • 22 ноября 2013, 10:15

Зависимость возникает потому что индекс РТС выражает долларовую капитализацию компаний, в отличии от ММВБ. Ну а доллар имеет свою динамику, которая, соотвественно, влияет. Это прямая зависимость.
Есть еще косвенная макроэкономическая зависимость, связанная с оттоком и притоком капитала, если по-простому: когда «все идет хорошо», рубль укрепляется к доллару, а акции российских компаний дорожают, когда «жопа», рубль дешевеет, акции (и индекс) падают.

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

  • Алексей
  • 22 ноября 2013, 10:17
  • TT
  • 23 ноября 2013, 19:27

RI — это стоимость 50 российских акций, выраженная в долларах. Соответственно, значение RI прямо зависит от курса доллара, т.е. SI. Наглядно в этом можно убедиться сравнив графики RI, SI и MIX. MIX — это стоимость 50 российских акций, выраженная в рублях, т.е. индекс, свободный от влияния валютного курса. Грубо говоря, RI=MIX+SI.

В данном случае не SI зависит от RI, а наоборот. Ведущим является курс доллара. Как это использовать без HFT я не представляю, потому что зависимость слишком прямая и четкая, чтобы искать в ней какие-то неэффективности.

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

Язык R

Вчера с подачи СанСаныч Фоменко решил выяснить что же из себя представляет язык R, который он повсеместно использует при проектировании советников. R — это мощная свободно распространяемая среда, в которой выполняются статистические и математические вычисления. Многие сравнивают ее вычислительные возможности с таким софтом как MatLab и Statistica и др. Только места сама среда в начальной установке занимает около 100 МБ, а не несколько гигабайт, как профессиональный коммерческие программы Кстати, и само коммерческое ПО предусматривает в себе поддержку R. Сам по себе, язык скриптовый, однако скрипты служат практически только для обращения к скомпилироваанным математическим пакетам и манипуляции объектами. Практически, на R мы пишем только сценарий. В общем, интересная, мощная система.

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

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

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

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

Однако, поживем-увидим. До конца года нас обещали сильно удивить-порадовать грядущими обновлениями терминала.

Почему именно Wealth-Lab и в чем его преимущества

Добрый день, уважаемые читатели!

Сегодня мы с вами будем разбираться с программой Wealth-Lab и её особенностями.

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

В 4-ой версии программы используется Паскаль (c небольшой модификацией для трейдинга), начиная с 5-ой версии – C#.

Wealth-Lab 4 можно хорошо изучить за 2-а месяца и после этого возможно программирование любых стратегий, которые могут быть алгоритмизированы. Более того, можно очень быстро сделать связку между Quik и Wealh-Lab 4 позволяющую выставлять заявки в автономном режиме по сигналам системы. Таким образом, получится простой робот, позволяющий начать работу. Конечно, роботом это можно называть с большой натяжкой, но тем не менее работать будет, хотя конечно останутся проблемы со скоростью выставления заявок и устойчивостью работы.

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

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

Если говорить простым языком, то суть данной библиотеки следующая: профессиональные программисты-трейдеры на языке C# разработали определенные алгоритмы для подключения к программам интернет-трейдинга (включая «Плазу» для прямого доступа на биржу), а также различные торговые алгоритмы и систематизировали это все в одной библиотеке классов (Примечание: язык C# является языком объектного программирования и основу языка как раз и составляют объекты и классы).

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

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

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

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

Но, как известно, «дорогу осилит идущий»… Так что нет ничего невозможного, главное начать осваивать и развиваться. И тогда всё обязательно получится!

Желаю вам успехов во всех ваших начинаниях и, конечно же, прибыльной торговли!

С уважением Александр Шевелев.

Для связи со мной используйте эту ссылку.

Будьте в курсе всех важных событий проекта — подписывайтесь на мой Telegram-канал или вступайте в группу Вконтакте.

Высокочастотный трейдинг

Высокочастотный трейдинг, высокочастотная торговля (англ. High-frequency trading , HFT ) — основная форма алгоритмической торговли на финансовых рынках, [1] в которой современное оборудование и алгоритмы используются для быстрой торговли ценными бумагами. [2] [3] [4] В HFT используются специальные торговые стратегии, при которых компьютеры покупают и продают позиции в течение долей секунды. По оценкам на 2009 год, высокочастотная торговля составляла 60-73 % от всего объема сделок на рынках США, в 2012 году эта доля упала примерно до 50 %. [5] [6] [7]

Содержание

Высокочастотные трейдеры открывают и закрывают краткосрочные позиции с большими объемами с целью получения небольшой прибыли (иногда на уровне долей цента за акцию) на каждой сделке. [3] Компании, занимающиеся HFT, не требуют слишком большого объема капитала, не аккумулируют позиции и не удерживают портфели в течение ночи. [8] В результате, потенциальный коэффициент Шарпа для высокочастотной торговли (мера риска и вознаграждения) в десятки раз выше, чем для традиционных стратегий типа Buy and hold (англ.) русск. . [9] Обычно HFT-трейдеры конкурируют лишь друг с другом, но не с долгосрочными инвесторами [8] [10] [11] . HFT-компании имеют низкую доходность каждой сделки, но торгуют в больших объемах, совершая миллионы операций. Одним из стимулов развития технологий высокочастотной торговли стало развитие стратегии front running (англ.) русск. [12] , при которой различные задержки в передаче приказов на совершение сделок дают преимущество тому, кто имеет более ранний доступ к информации (например, использует каналы связи с меньшей задержкой).

Высокочастотная торговля имеет преимущество за счет прямого доступа к торгам и размещения оборудования в том же дата-центре, где размещается торговая система биржи. Наиболее распространенным решением является протокол FIX/FAST. FIX-протокол поддерживается большинством электронных площадок мира. Для получения минимальной задержки используются высокоуровневые языки, такие как C++, C#, Java и т.д.

Некоторые компании используют решения, основанные на специализированных аппаратных комплексах. Такие решения основываются на FPGA.

На срочном рынке Московской биржи используются проприетарные протоколы Plaza CGate, TWIME. Протокол TWIME появился в 2020 году, но пока не является основной заменой для CGate [13] .

Высокочастотная торговля вероятно началась в конце 1990-х, после того как Комиссия по ценным бумагам и биржам США (SEC) разрешила работу электронных торговых площадок в 1998 году. В начале высокочастотные сделки проводились на отрезке времени в несколько секунд, но к 2010 это время уменьшилось до миллисекунд, а иногда сотен и десятков микросекунд. [14] Информация о высокочастотной торговле редко появлялась вне финансового сектора вплоть до конца 2000-х. Одна из первых статей, привлекших общественное внимание к такой торговле, была опубликована в июле 2009 года газетой New York Times. [15]

Несмотря на множество предложений как в Европе, так и в США [16] , лишь немногие страны ввели законодательные ограничения на высокочастотную торговлю. Одной из первых стала Италия, которая 2 сентября 2013 года ввела налог, направленный против высокочастотных торговцев: с транзакций длившихся менее половины секунды, стал взиматься сбор в размере 0,02%. [17] [18] [19]

В начале 2000-х, высокочастотная торговля создавала менее 10% операций на рынках, однако их доля со временем увеличивалась. По данным NYSE, объёмы торговли увеличились в 2,6 раза за период с 2005 по 2009, и часть роста обеспечивалась высокочастотными трейдерами. [15]

Крупнейшие высокочастотные трейдеры США: Chicago Trading, Virtu Financial, Timber Hill, ATD, GETCO, Tradebot, Citadel LLC. [20] Вероятно, что крупные банки и другие финансовые компании также занимаются высокочастотными торгами, в дополнение к традиционным торгам.

По мере широкого внедрения стратегий высокочастотной торговли, становится все сложнее получать с их помощью прибыль. По оценке Frederi Viens (Purdue University) прибыли от всех HFT торговли в США упали с 5 миллиардов долларов в 2009 до 1,25 миллиардов в 2012. [21]

Существует несколько стратегий, согласно которым действуют высокочастотные трейдеры [22] :

  • Электронный Маркетмейкер, предоставление ликвидности (Electronic market making, Electronic Liqu >[23][24] . Дополнительно за предоставление ликвидности, повышающее качество и привлекательность торговой площадки, трейдеры могут получать платежи от бирж или ECN, либо экономить на транзакционных платежах за счет скидок [22] .
  • Статистический арбитраж (statistical arbitrage), при котором трейдер пытается выявить корреляции между разными ценными бумагами и извлечь выгоду из дисбалансов между ними. Арбитраж может производиться между биржами разных стран, биржами одной страны, между различными формами торгуемого индекса (например, арбитраж между ценной бумагой и производным инструментом от неё) [22][23][24] .
  • Обнаружение ликвидности (liqu >[22][23] .
  • Арбитраж задержек (latency arbitrage), при котором высокочастотный трейдер получает преимущество за счет более раннего доступа к рыночной информации, например, используя прямое подключение к торговой площадке, размещение серверов вблизи бирж. Данная стратегия применяется в США, где большинство участников рынка зависит от общенациональной системы NBBO (англ.) русск. , а HFT-трейдеры получают рыночную информацию несколько быстрее [22][25] .

Большое количество исследователей утверждает, что HFT и электронная торговля создают новые сложности для финансовых систем. [2] [26] Алгоритмическая и высокочастотная торговля сыграли значительную роль в моментальном (длительностью менее 5 минут [27] ) обвале рынков 6 мая 2010 года ( 2010 Flash Crash [en] ), когда высокочастотные поставщики ликвидности резко остановили операции. [2] [11] [26] [28] [29] В нескольких европейских странах предлагалось ввести значительные ограничения или даже полный запрет на высокоскоростную торговлю из-за опасений по поводу волатильности [30] . Также существуют мнения, что HFT-компании отнимают часть прибыли у инвесторов, когда инвестиционные фонды типа Index Fund [en] проводят перебалансировку своих портфелей [31] [32] [33] . Многие финансовые аналитики и исследователи отмечают, что HFT и автоматизированная торговля улучшают ликвидность рынков и снижают затраты на торги [34] .

Блог трейдера

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

пятница, 29 декабря 2020 г.

Робострой — Пишем торгового робота на C#

Торговые роботы для quik как написать

Как создать такой портфель в quik 7.14 и выше?

if a_direction==»B» then l_oper=»S» l_count=a_count dir=-1 t_dir=1 p_take_profit_level=t[0].high-t[0].low p_stop_loss_level=(t[0].low-t[0].high)*2 to_log(«уровень тейк профита=»..tostring(p_take_profit_level)) to_log(«уровень.

Максим, добрый день. Я торгую рублем. Меня очень заинтересовал Ваш скрипт. Можно его модернизировать. Можно что бы скрипт выдавал звуковой сигнал когда в стакане появляется крупная заявка в диапазоне 4 000 — 10 000 на USDTOM от спреда со стороны поку.

Давно мучаюсь, не знаю как экспортировать графика доходности в exel. Подскажите, как вы это делайте?

asvag, а зачем нужны лог-файлы вообще? Чтобы журналировать действия вашего «робота»!

Пишем торгового робота на C#. Часть 1. Основы языка программирования и связь с терминалом

  • Максим Милованов
  • Роботы, теория, технологии
  • 17 сентября 2013 г.

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

Сразу хотелось бы отметить, что данная статья более всего ориентирована на новичков в программировании, знания которых ограничиваются школьной/университетской программой и опытом программирования на языках типа Pascal, Basic. В качестве литературы по языку C# лучше всего подойдут книги Шилдта и справка Microsoft.

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

1) Инструменты встроенные в терминал

  1. Qpile – встроенный язык в наиболее популярный терминал для торговли QUIK, язык довольно просто. Однако у этой простоты помимо очевидного плюса в легком освоении, есть очевидные минусы, как ограниченный функционал, сложность отладки.
  2. LUA – еще один несложный язык для терминала QUIK. Имеет больший функционал, чем Qpile. Однако большую популярность еще не приобрел. Сам код работает непосредственно в терминале QUIK.

2) Внешние коробочные продукты – очень схожие по функционалу: возможность тестирования на исторических данных, написание торговых систем на языке платформы .NET (обычно C#), интеграция с торговым терминалом.

  1. TradeMatic — система для создания торговых систем со встроенным механизмом тестирования на истории.
  2. TSLab – система аналогичная TradeMatic. Имеет визуальный редактор для проектирования торговой стратегии.
  3. LiveTrade RobotLab – терминал и визуальный конструктор роботов с возможностью написания кода самому.

3) Внешние программы, разработанные самостоятельно. В данном случае можно использовать любой язык программирования, который знает человек. Несколько лет назад была популярна связка терминала QUIK и Excel с роботом, написанным на Visual Basic. В настоящий момент можно воспользоваться довольно мощной и гибкой библиотекой для написания роботов Stock#, однако не программисту будет довольно сложно в ней разобраться.

Для разработки своего робота «с нуля» определимся со списком задач:

1) Реализация импорта данных из терминала QUIK в нашу программу

2) Программирование торгового алгоритма

3) Создание механизма отправки заявок на совершение торговых операций в терминал

Этот список можно разбить на множество подпунктов, которые мы будем формулировать по ходу реализации этих этапов.

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

В C# есть два способа построения интерфейсов клиентских приложений. Первый – использовать Windows Forms – технология построения приложений, которая уже более 10 лет применяется при проектировании визуального интерфейса. Второй — Windows Presentation Foundation (WPF) – довольно новая система для построения интерфейса, имеет возможность создавать привлекательный элементы с использованием 3D-графики, использует MVC-подход, однако требует больших ресурсов компьютера, чем WinForms. Поскольку Windows Forms проще и менее требователен к ресурсам, мы будем использовать именно эту технологию.

Начнем с создания приложения. Для этого надо запустить Visual Studio 2010 и создать проект «Приложение Windows Forms» (Рис. 1).

Рис. 1. создание приложения Windows Forms

После создания мы видим Форму – на ней будут размещаться визуальные элементы и дерево файлов, включая файл с кодом (Рис. 2, 3). Чтобы перейти к коду приложения, нужно нажать клавишу F7.

Рис. 3. Код приложения

Если посмотреть на код, который был создан Visual Studio, то мы видим что, платформа нам автоматически создала объект класса Form. Класс — это логическая структура, позволяющая создавать свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Класс подобен чертежу. Он определяет данные и поведение типа. Класс и объект — это разные вещи, хотя в некоторых случаях они взаимозаменяемы. Класс определяет тип объекта, но не сам объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса.

Также нам потребуется вспомнить это такое переменные. Переменные объявляются следующим образом:

int i = 10; //переменная целого типа

string st = “text”; //переменная строкового типа

bool flag = true; //переменная логического типа, принимает значения только true или false

Переменная представляет числовое или строковое значение или объект класса. Значение, хранящееся в переменной, может измениться, однако имя остается прежним.

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

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

Хочу обратить внимание, что импортировать свечи просто так у нас не получится. Чтобы импортировать свечи в нашу программу придется написать портфель на языке терминала Qpile и открыть его в терминале, выбрав в меню QUIK пункт Таблицы-Портфели-Задать портфель (Рис. 4) и нажать кнопку загрузить локально. После чего выбрать Таблицы-Портфели-Просмотр портфеля, нажать кнопки «Добавить все» и затем кнопку «Да», установив значение поля «Имя таблицы» как «candles» (Рис.5). После чего в QUIK появится новое окно со списком свечей (Рис. 6).

Рис. 4. Загрузка портфеля

Рис. 5. Открытие и запуск портфеля

Рис.6. Результат открытия портфеля

Теперь давайте подумаем, как можно получить данные из терминала QUIK. Из QUIK данные можно получить тремя способами:

1) экспортировать данные через ODBC

2) экспортировать данные через DDE

3) брать данные непосредственно из памяти

Третий способ очень трудозатратный для программирования, хотя является самым быстрым для получения данных. Вывод данных через ODBC, как пишут разработчики Quik, работает медленнее, чем вывод через DDE. Поэтому мы воспользуемся наиболее простым способом – выводом через DDE.

Настроим сразу же QUIK для вывода данных (Рис. 7). Для этого нужно выделить нужную таблицу и нажать в меню Экспорт данных – Вывод по DDE. В качестве DDE сервера нужно указать имя «DDEServer». В качестве рабочей книги нужно указать следующее:

1) для таблицы исторических свечей – «candles»

2) для таблицы котировок и инструментов – «quotes»

Не забудьте установить галочку «Вывод при нажатии Ctrl+Shift+L».

Рис. 7. Настройка вывода таблицы по DDE

В итоге окно QUIK будет выглядеть следующим образом:

Для импорта по DDE нам потребуется:

1) Класс XLTable, реализующий приведение данных из формата Excel к обычному виду (все необходимые файлы есть в приложении к статье)

2) Библиотека NDde.dll для создания DDE сервера

Чтобы добавить динамическую библиотеку, которая содержит необходимый набор функций для нашего приложения, нужно выбрать пункт «Добавить ссылку» в Обозревателе решений и открыть файл NDde.dll (Рис. 4).

Рис. 9. Импорт DLL

Сформируем класс для работы с DDE сервером:

class MyDDEServer : DdeServer

public MyDDEServer(string service) : base(service)

В этом классе должны быть предусмотрен минимальный набор функции:

1) Регистрация сервера

2) Разрегистрация сервера

3) Событие срабатывания таймера для получения новых данных

4) Метод для обработки принятия данных

Добавим объекты на форму, для которых назначим эти события (Рис. 5).

Рис. 10. Кнопки на форме

Теперь назначим на кнопку «Запустить» событие нажатия мышью, дважды кликнув на эту кнопку в конструкторе и добавим код запуска DDE сервера:

private void buttonRunDDEServer_Click(object sender, EventArgs e)

server = new MyDDEServer(«DDEServer»); //Создаем объект DDE сервер

server.Register(); //Регистрируем его

В этом случае мы создали объект класса MyDDEServer и затем вызвали метод этого объекта Register(). Конструктор класса принимает одно значение – строковую переменную, которая обозначает название имя нашего сервера. В реализации конструктора класса MyDDEServer мы используем таймер, который будет отвечать за оповещение при получении новых данных:

System.Timers.Timer _Timer = new System.Timers.Timer();

public MyDDEServer(string service) : base(service)

_Timer.Elapsed += this.OnTimerElapsed; //подписываемся на событие принятия данных

_Timer.Interval = 100; //Интервал таймера в мс

Рассмотрим теперь метод получения данных через DDE:

protected override PokeResult OnPoke(DdeConversation conversation, string item, byte[] data, int format)

XLTable table = new XLTable(data);

// Данные и Заголовки таблиц

double[,] impdata = new double[table.Rows, table.Columns];

string[,] imptitles = new string[table.Rows, table.Columns];

//Конвертируем данные в понятный вид

XLTable.BytesToMatrix(data, ref impdata, ref imptitles);

Этот метод вызывается каждый раз при срабатывании таймера, который был установлен в конструкторе класса. Данные содержатся в массиве data, который мы с помощью метода BytesToMatrix класса XLTable преобразуются в привычный нам вид. Затем мы используем условный оператор switch для определения, какую таблицу обрабатывать.

На форму приложения я также добавил визуальные объекты для отображения пришедших данных. В результате компиляции (F5) приложения и запуска импорта по DDE получилось следующее (Рис. 11):

Рис. 11. Импорт данных их QUIK в окно приложения

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

Словарь трейдера и инвестора. 130+ терминов

Словарь трейдера. Указатель

Акция – (англ. share) ценная бумага, относящаяся к определенной компании, которая позволяет получать дивиденды владельцу данной акции.

Анализ графический – способ анализа движения цены и прогнозирования с применением графических фигур на графике, таких как “треугольник”, “вымпел”, “флаг” и т.д.

Анализ технический – способ анализа движений цены и прогнозирования с помощью технических индикаторов.

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

Аск – (англ. ask – запрашивать цену) цена в книге ордеров, по которой трейдер может открыть сделку на покупку.

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

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

Бай – (англ. buy) сделка на покупку.

Бай-лимит – (англ. buy-limit) отложенный ордер на покупку, находящийся ниже рыночных цен.

Бай-стоп – (англ. buy-stop) отложенный ордер на покупку, находящий выше рыночных цен.

Бар – (англ. bar) вертикальный элемент графика цен, отражающий 4 цены (открытия, максимума, минимума, закрытия) за определенный временной промежуток (минута, час, день и т.п.).

Бид – (англ. bid – предлагать цену) цена в книге ордеров, по которой трейдер может открыть сделку на продажу.

Биржа — централизованный финансовый рынок, где торгуются ценные бумаги (акции), облигации, деривативы и другие финансовые инструменты.

Брокер – (англ. broker – посредник) институциональный и регулируемый посредник в торгах финансовыми инструментами.

Бык – (англ. bull) участник рынка, ожидающий рост цены. Бычий рынок – растущий рынок. См. также: Медведь.

Бэктест – (англ. backtest) тестирование торговых систем на исторических данных.

Валюта – (англ. currency) денежная единица страны.

Валюта базовая – в валютной паре базовой валютой является первая, т.е. стоит в числителе.

Валюта котирования – в валютной паре валютой котирования является вторая, т.е. стоит в знаменателе.

Валютная пара – финансовый инструмент, в котором стоимость одной валюты выражается в единицах второй.

Волатильность – (англ. volatility, от лат. volare – летать), показатель скорости движения цены. Как правило, измеряется визуально или при помощи индикаторов, например Average True Range (ATR), Stardard Deviation.

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

Высокочастотный трейдинг – (англ. high frequency trading – HFT) вид трейдинга, когда сделки могут открываться и закрываться в течение долей секунд. Для HFT применяются торговые роботы и алгоритмы, а компании, которые занимаются HFT, располагают свои офисы как можно ближе к серверам брокеров и дилеров, чтобы погрешность исполнения была минимальной.

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

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

Депозит – (англ. deposit) сумма счета, на которой трейдер ведет свою торговлю финансовыми инструментами.

Дериватив – (англ. derivative) производный финансовый инструмент, например фьючерс, форвард или опцион.

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

Диверсификация — распределения рисков по рынкам, инструментам, стратегиям.

Дилер – (англ. dealer) участник рынка, выступающий контрагентом в сделке с клиентами. Среди трейдеров ДЦ часто ласково именуется “кухня”.

Дилинговый центр, ДЦ – см. Дилер.

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

Дэйтрейдер – (англ. daytrader) трейдер, который совершает сделки, как правило, внутри дня, не перенося их на следующую торговую сессию или день.

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

Инвестор – (англ. investor) участник рынка, ведущий долгосрочную торговлю.

Индекс — показатель среднего значения финансовых инструментов. Так, например, индекс S&P 500 включает в себя 500 крупнейших компаний Америки (тем самым показывая силу или слабость американского фондового рынка), а индекс американского доллара — среднее значение доллара против основных валют.

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

Читать подробнее: индикаторы объема (Volumes, Better Volume, VSA Trader), технические индикаторы (SMA, EMA, Parabolic SAR, конверты, ATR и другие).

Издержки — плата за торговлю на финансовых рынках. К ним относятся комиссии, спреды, свопы.

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

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

Книга ордеров – (англ. order book) все стоповые и лимитные ордера на покупку или продажу инструмента, находящиеся у дилера в определенный момент времени.

Стакан заявок, стакан цен, рыночный стакан, глубина рынка – так еще называют книгу ордеров. Англ. – DOM (depth of market), LOB (limit order book).

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

Комиссия – плата трейдера своему брокеру за услуги.

Контрагент – другая сторона в сделке.

Консолидация – (англ. consolidation) другое название флэта. Период, когда цена не проявляет трендовых движений.

Корреляция – взаимосвязь движения отдельных инструментов.

Котировка – цена актива.

Котирование обратное – такой способ котирования, при котором доллар США (USD) стоит в знаменателе. К валютным парам с обратным котированием относятся EURUSD, GBPUSD, AUDUSD, NZDUSD.

Котирование прямое – такой способ котирования, при котором доллар США (USD) стоит в числителе. К валютным парам с прямым котированием относят USDCAD, USDCHF, USDJPY и др.

Коэффициент восстановления – (англ. recovery factor) выражает отношение между средней годовой доходностью и максимальной просадкой.

Кросс-курс – финансовый инструмент, не содержащий доллара США (USD). Однако сделки с кросс-курсами все равно осуществляются с участием доллара США.

Ликвидность – (англ. liquidity) доступный в данный момент на рынке объем торгуемого актива.

Лонг – (англ. long) “длинная” сделка, или сделка на покупку.

Лот – объем на сделку, равный 100 000 единицам базового инструмента. Например, покупка одного лота EUR/USD будет равняться покупке 100 000 EUR. В цифровом эквиваленте измеряется как 1.0 (100 000 базовой единицы), 0.1 (10 000 базовой единицы), 0.01 (1 000 базовой единицы).

Мажор – (англ. major) активно торгуемая валютная пара с прямым или обратным котированием.

Маржа – (англ. margin) обеспечительный взнос трейдера на торговый аккаунт.

Маржин-колл – (англ. margin call) дословно “звонок брокера с просьбой к клиенту пополнить маржу”; торговая ситуация, при которой у трейдера на балансе не хватает средств для поддержания открытых позиций.

Маркет-мейкер – (англ. market-maker) крупный участник рынка, обязанный предоставлять ликвидность и получающий за свои услуги комиссии. Маркет-мейкерами, как правило, являются крупные мировые банки.

Медведь – (англ. bear) участник рынка, ожидающий падение цены. Медвежий рынок – падающий рынок. См. также: Бык.

Мета-ордер – (англ. metaorder) очень крупный ордер, принадлежащий, как правило, крупным игрокам.

Механическая торговля – торговля с применением жестких технических правил. Чаще всего такие системы используют индикаторы и компьютерные алгоритмы.

Объем – совокупное количество актива, проторгованного за единицу времени. См. также: индикаторы объема в Индикатор технический.

Облигация — долговая ценная бумага, выпускаемая государством или корпорацией. Наиболее консервативный инструмент после банковского депозита.

Овернайт – (англ. overnight) процент от объема сделки, удерживаемый брокером, за перенос позиции на следующие сутки. Данный процент зависит от процентных ставок стран, чьи валюты участвуют в сделке трейдера.

Опцион — (англ. option) инструмент, который дает его владельцу право, но не обязанность, купить или продать финансовый инструмент по оговоренному курсу в определенный период времени.

Ордер – (англ. order – приказ) заявка трейдера на открытие позиции.

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

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

Ордер лимитный – см. Ордер отложенный.

Осциллятор – (англ. oscillator, от осциллировать – колебаться) индикатор, ограниченный уровнями 0% и 100%. Осцилляторы называют опережающими индикаторами ввиду того, что они часто достигают экстремальных значений перед разворотом цен. Прибыльные сигналы осцилляторов наиболее вероятны во флэтовых рынках. Однако тренды не оставляют осцилляторам шансов на прибыльные сигналы, поскольку осциллятор на тренде большинство времени проводит в экстремальной зоне.

К осцилляторам относят следующие индикаторы: Stochastic, Williams’ %R, RSI, Momentum и некоторые другие. Даже MACD может относиться к осцилляторам, хотя формально не имеет верхней и нижней границы колебания.

Открытый интерес – (англ. Open Interest, OI) также называют “Сумма открытых позиций”. Открытый интерес – это сумма открытых фьючерсных или опционных контрактов, по которым не производился расчет. Одним словом – открытые позиции. ОИ является популярным индикатором среди трейдеров. Сведения берутся с Чикагской товарной биржи – CME (Chicago Mercantile Exchange).

Паттерн – (англ. pattern – модель, шаблон, схема) ценовая модель либо модель, образуемая показаниями индикатора.

Пирамидинг – (англ. pyramiding) постепенное увеличение объема работающей прибыльной позиции.

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

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

Поддержка – горизонтальный или наклонный ценовой уровень, удерживающий цену и не дающий ей падать дальше.

Портфель – торгуемые финансовые инструменты у отдельного трейдера/фонда в определенный период времени.

Поставщик ликвидности – (англ. liquidity supplier) участник рынка, как правило, маркет-мейкер, предоставляющий ликвидность другим участникам торгов. Поставки ликвидности – это размещение лимитных ордеров.

Потребитель ликвидности – (англ. liquidity consumer) участник рынка, как правило, трейдер, потребляющий ликвидность из книги ордеров. Потребление ликвидности происходит рыночными ордерами.

Поток ордеров — (англ. Order flow) совокупность всех сделок, которые поступают в книгу ордеров и которые влияют на ценообразование.

Прайс экшен – (англ. Price Action) дословно поведение цены, метод анализа графиков финансовых инструментов без индикаторов, основанный на поиске моделей продолжения и разворота тренда, образующихся одним или несколькими барами (свечами). Известные модели Price Action: пин-бар, внутренний бар, DBHLC / DBLHC, внешний бар (поглощение) и др. Метод имеет сходства с японским свечным анализом.

Просадка – (англ. drawdown) – убыток, полученный за время от достижения исторического пика кривой доходности до исторического минимума кривой доходности.

Проскальзывание – (англ. slippage) отсутствие котировки на заданных ценовых уровнях, связанная с разреженностью книги ордеров. См. также: Книга ордеров.

Проп-трейдинг – (англ. proprietary trading) вид деятельности на финансовых рынках, когда компания работает со своим капиталом (без привлечения инвесторских денег), а также позволяет сотрудничать частным трейдерам с ними, отбирая лучших в основной штат.

Профит-фактор – (англ. profit-factor) отношение общего дохода к общему убытку.

Профит – (англ. profit) прибыль, полученная на финансовых рынках в результате успешной сделки или сделок.

Предложение – желание и возможность участника продавать инструмент по определенной цене.

Ралли – (англ. rally) устойчивый, сильный и импульсный тренд вверх или вниз.

Ренко – способ отображения графика с целью фильтрации рыночного шума.

Робот – см. Советник.

Рынок фондовый или рынок ценных бумаг – биржа (физическое место, например – Wall Street и биржа NYSE), где проводятся операции по покупке, продаже или первичному размещению ценных бумаг и других инструментов.

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

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

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

Селл – (англ. sell) продажа финансового актива, сделка на продажу.

Селл-лимит – (англ. sell-limit) отложенный ордер на продажу, находящийся выше рыночных цен.

Селл-стоп – (англ. sell-stop) отложенный ордер на продажу, находящийся ниже рыночных цен.

Сессия торговая – отрезок времени в пределах торгового дня, когда активен тот или иной финансовый центр или регион. Выделяют 3 основные сессии: азиатско-тихоокеанскую, лондонскую (европейскую) и нью-йоркскую (американскую).

Сетап – (англ. setup) ценовая модель, пригодная для совершения сделки.

Своп – (англ. swap) см. Овернайт.

Система торговая – набор торговых правил, согласно которым совершаются сделки на рынке.

Скальпер – (англ. scalper) активный внутридневной трейдер, использующий скальпинг в качестве торгового подхода.

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

Советник – (англ. expert advisor) торговый робот, компьютеризированный торговый алгоритм, запускаемый на платформе и выполняющий за трейдера все или отдельные торговые действия. Советники создают на языках программирования (популярные языки плюс MQL 4/5), а также в визуальных конструкторах, например, Visual JForex. Визуальное программирование торгового робота не требует от трейдера навыков программирования.

Сопротивление – горизонтальный или наклонный ценовой уровень, удерживающий цену и не дающий ей расти дальше.

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

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

Спред – (англ. spread) расстояние между ценами Бид и Аск.

Спред бара – разница между хай и лоу свечи.

Спрос – желание и возможность участника покупать инструмент по определенной цене.

Стоп-лосс – (англ. stop-loss) отложенный ордер, фиксирующий запланированный трейдером убыток.

Стэйтмэнт – (англ. statement) статистика торговых результатов трейдера или фонда.

Алготрейдинг (что это): полное руководство

Что такое алготрейдинг, как и когда появилась алгоритмическая торговля на фондовом рынке и на Форекс? Алготрейдинг для начинающих — обучение, книги и научный подход к высоко-технологичной торговле на биржах.

  • Aa
  • Aa
  • Aa

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

Что такое алгоритмическая торговля, её особенности и использование на различных рынках – далее.

Что такое алготрейдинг (алгоритмическая торговля)

Алгоритмический трейдинг (с англ. Algorithmic trading) может иметь два значения:

  1. Алготрейдинг – это автоматическая система, которая открывает сделки без участия трейдера в рамках заданного алгоритма;
  2. Алгоритмическая торговля – это методика исполнения крупной заявки на рынке, когда она автоматически делится на части и открывается постепенно по заданным правилам.

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

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

О том что такое алготрейдинг, пишет Википедия:

Алгоритмическая торговля, или Алгоритмический трейдинг (англ. Algorithmic trading) — это метод исполнения большой заявки (слишком большой, чтобы быть исполненной за раз), когда с помощью особых алгоритмических инструкций большая заявка (parent order) делится на несколько под-заявок (child orders) со своими характеристиками цены и объема и каждая из под-заявок отправляется в определенное время на рынок для исполнения. Такие алгоритмы были придуманы для того, чтобы трейдерам не приходилось постоянно следить за котировками и делить большую заявку на маленькие вручную.

Основной формой алгоритмической торговли является HFT-трейдинг (с англ. High-frequency trading — «высокочастотный алготрейдинг»). Его суть заключается в совершении сделок за доли секунды. Иными словами, такие системы используют своё основное преимущество — скорость.

Суть алготрейдинга

Квантовые (quants) трейдеры или как их называют еще – алготрейдеры, используют только теорию вероятности попадания цен в нужный диапазон. Расчёты производятся на основе предыдущего ценового ряда, либо нескольких финансовых инструментов. Важно понимать, что правила могут меняться вместе с изменением поведения рынка. Алготрейдеры постоянно ищут неэффективности рынка, повторяющиеся модели на истории котировок и рассчитывают вероятность их повторения в будущем. Таким образом, суть алгоритмической торговли в подборе правил по открытию позиций и семейств роботов. Такой подбор может быть:

  • ручным — выполняется исследователем на основе математики и физических моделей;
  • автоматическим — нужен для массового перебора правил и тестирования в рамках программы;
  • генетическим — в этом случае правила разрабатываются программой с элементами искусственного интеллекта.

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

В таких крупных инвестиционных компаниях как Renessaince Technology, Citadel, Virtu, использующих алгоритмы , в наличии сотни семейств (серий) торговых роботов, распространяющихся на тысячи инструментов. Именно такой подход даёт им ежедневную прибыль, это своего рода диверсификация алгоритмов.

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

Официальным началом использования алгоритмов является 1998 год, когда SEC (Комиссия по ценным бумагам) в США разрешила применение электронных площадок. После этого стартовала настоящая технологическая гонка.

  • 2000-е — время совершения автоматических сделок в несколько секунд, доля роботов на рынке США менее 10%;
  • 2009 — сделки осуществляются со скоростью быстрее миллисекунды (доли микросекунд), доля на рынке свыше 60%;
  • 2012 и более поздний период — из-за массовых ошибочных действий алгоритмов их рыночный объём сократился до 50% от всех сделок.

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

Алгоритмическая торговля на фондовом рынке

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

  • Системы на основе технического анализа — подразумевают использование рыночной неэффективности и выявление трендов с помощью нескольких индикаторов. В большинстве случаев такие стратегии нацелены на извлечение прибыли за счёт приёмов из классического технического анализа.
  • Парный и баскет-трейдинг — в такой системе используется соотношение двух или более инструментов, которые имеют относительно высокий процент корреляции, но не равный единице. Соответственно, если один из инструментов отклонился от заданного курса, то высока вероятность, что он вернётся к своей группе. За счёт отслеживания таких отклонений алгоритмы осуществляют сделки и приносят прибыль своим владельцам.
  • Market making — иной род стратегий, направленный на поддержание рыночной ликвидности. Маркет-мейкеры удовлетворяют спрос на различных инструментах даже против своей выгоды, за что получают вознаграждение от биржи. Тем не менее, это не мешает таким алгоритмам извлекать прибыль с помощью специальной стратегии на основе быстрого потока и учёта рыночных данных.
  • Front running — в рамках подобных систем используется анализ объёма сделок по инструменту и выявление крупных заявок. Алгоритмы берут в расчёт, что крупная заявка удержит цену и спровоцирует появление встречных сделок в противоположную сторону. Таким образом, они ловят колебания за счёт скорости анализа рыночных данных в стакане и ленте, стараясь обогнать других участников и забирая небольшие движения во время исполнения очень крупных заявок.
  • Арбитраж — торговля финансовыми инструментами, корреляция между которыми близка к единице. Обычно в таких инструментах отклонение минимально, это может быть акция и фьючерс одной компании или одинаковые акции, но на разных рынках. Система отслеживает изменение цен связанных инструментов и производит арбитражные сделки, которые уравнивают цену.
  • Торговля волатильностью — самый сложный вид торговли, основанный на покупке опционов различных типов, с расчётом на то, что волатильность определенного инструмента вырастет. Подобный алготрейдинг требует высоких вычислительных мощностей и команды специалистов.

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

Алгоритмическая торговля на Форекс

Использование автоматических роботов получило широкое распространение и на межбанковском валютном рынке. В особенности торговые советники заслужили популярность, благодаря платформе MetaTrader 4 и языку программирования MQL4, который и позволяет вести алгоритмическую торговлю на Форекс даже начинающим трейдерам:

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

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

Операторы языка Си

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

  1. Условные операторы (if, switсh);
  2. Операторы цикла (for, while, do);
  3. Операторы переходов (break, continue, return, goto);
  4. Операторы “выражение” (”,”, “пустой оператор”).

Операторы в программе могут объединяться в составные операторы с помощью фигурных скобок.

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

Все операторы языка Си, кроме составных операторов, заканчиваются точкой с запятой (;).

I.Оператор ”выражение”

Этот оператор заключается:

a. в вычислении выражения и присваивания;

b. в вызове функций.

Пример:

II.Пустой оператор

Состоит только из точки с запятой. При выполнении ничего не происходит. Используется в операторах do, for, while, ifв случаях, когда тело оператора не требуется, хотя по синтаксису требуется хотя бы один оператор. А также, когда необходимо пометить фигурную скобку меткой. Синтаксис требует, чтобы после метки обязательно следовал оператор. Фигурная скобка оператором не является. Поэтому, если надо передать управление на фигурную скобку, необходимо использовать пустой оператор.

Пример:

III.Составной оператор

В конце составного оператора точка с запятой не ставится. Выполнение составного оператора заключается в последовательном выполнении составляющих его операторов.

IV.Операторif.

if(выражение)

[else оператор2]

Пример: if (i iVar2) < if ( iVar2 iVar2) if ( iVar2

Выражение, следующее за ключевым словомswitch, может быть произвольным выражением, значение которого должно быть целым.

Константное выражение вычисляется во время компиляции. Оно не может содержать переменные или вызовы функций. Обычно используются целые или символьные константы.

Замечание:Программист должен сам позаботиться о выходе из case, иначе все выполняется до конца.

Пример:

default: printf(“Good bye\n”);

Выполнение будет идти от func2() и до конца.

VI.Оператор break

Обеспечивает прекращение выполнения самого внутреннего из объемлющих его операторов switch, do, for иwhile.После выполнения оператора breakуправление передается оператору, следующему за прерванным.

Пример:

printf(“Введите знак операции (+ — * /):”);

default: printf(«Неизвестная операция.\n»);

VII.Оператор for

Оператор цикла for имеет следующий формат:

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

Условное выражение — выражение, определяющее условие, при котором оператор цикла будет исполняться.

Выражение_итерация определяет изменение переменных, управляющих циклом после каждого выполнения цикла.

Схема выполнения оператора for:

  1. вычисляется выражение_инициализация;
  2. вычисляется условное выражение;
  3. если значение условного выражения не равно нулю, выполняется оператор;
  4. вычисляется выражение_итерация;
  5. вновь вычисляется условное выражение;
  6. если условное выражение равно нулю, управление передается на оператор, следующий за оператором for.

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

Пример:

char cStr[]=»Квадрат числа «;

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент — человек, постоянно откладывающий неизбежность. 10364 — | 7278 — или читать все.

188.64.174.65 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Логические операторы в си

Логические операторы

Л огические операторы – это операторы, которые принимают в качестве аргументов логические значений (ложь или истину) и возвращают логическое значение. Как и обычные операторы, они могут быть одноместными (унарными, т.е. принимать один аргумент), двуместными (бинарные, принимают два аргумента), трёхместными и т.д.

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

Логические значения обычно порождаются операторами сравнения (==, !=, >, =. О ператор НЕ (NOT) используется для того, чтобы инвертировать значение аргумента. Т.е., если ему передали истину, то он вернёт ложь, если получил ложь в качестве аргумента, то вернёт истину.

Логический оператор НЕ

X NOT X
0 1
1 0

В си отрицание представлено оператором !. Например

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

Логическое И

О ператор И (AND, логическое умножение) возвращает истину тогда и только тогда, когда оба аргумента являются истиной.

Логический оператор И

X Y X AND Y
0 0 0
0 1 0
1 0 0
1 1 1

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

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

Также условие могло быть записано

Логическое ИЛИ

О ператор логическое ИЛИ (логическое сложение, OR) истинен тогда, когда истиной является хотя бы один его аргумент.

Логический оператор ИЛИ

X Y X OR Y
0 0 0
0 1 1
1 0 1
1 1 1

В си ИЛИ представлен оператором ||. Например, усовершенствуем программу: теперь пол можно вводить как большой, так и маленькой буквой

Как и в случае оператора И, ИЛИ коммутативен и ассоциативен.

Операторы можно перемешивать друг с другом, создавая сложные операторы

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

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

Рассмотрим сначала кусок

Меняем все значения на обратные

заменяем оператор && на ||

и инвертируем ответ

Как видим, результат тот же. Очевидно, что

Таким образом, изменим условие

Поменяем таким же образом вторую скобку

Теперь можно применить это же правило и для всего выражения

Порядок выполнения логических операторов

Р ассмотрим выражение

где a, b, c, d – логические значения. Всё выражение равно истине тогда и только тогда, когда все операнды истинны. Если хотя бы один из операндов ложь, то остальные уже не важны. Поэтому, для оптимизации работы, вычисление происходит слева направо и останавливается, как только был найден первый операнд, равный нулю.

В си оператор присваивания может возвращать значение. Иногда он используется непосредственно в условии:

В данном случае, оператор malloc не будет выполнен, так как первый операнд a равен 0 (соответственно, всё выражение равно нулю). Таким образом, оператор free попытается очистить память, которую не может очистить (т.к. p продолжит ссылаться на a). Если же мы поменяем a = 1, то всё отработает без проблем.

То же самое происходит и при выполнение ||. Выражение

выполняется слева направо до тех пор, пока не встретит первое ненулевое значение. После этого выполнение останавливается, так как известно, что всё выражение равно истине.

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

Вывод – не используйте присваивания и вызовов функций (особенно, если они изменяют состояние программы) внутри условий.

Трейдинг и язык си

Форекс форум » Университет трейдера » Справочник трейдера » Трейдерский сленг (язык трейдера в деталях)

Трейдерский сленг

SeMI Дата: Пятница, 13.09.2013, 11:26 | Сообщение # 1
Название основных валют:

USD (доллар США) — грин;

GBP (английский фунт стерлингов) — стерлинг, кабель, фунтик, фунтяра;

СAD (канадский доллар) — луни, лунь, кад, канадец, канада, кадди;

EUR (Евро) — ева, еврик, еврейка, евра;

JPY (японская иена) — жоп, йешка;

СHF (швейцарский франк) — чиф, свисси, свис;

AUD (австралийский доллар) — ауд, ос, осси, кенгуру, австрал, оззи, оз;

NZD (новозеландский доллар) — нзд, киви, навоз;

DJIA (индекс Доу Джонса) — Умка;

S&P — Си-Пи.

SeMI Дата: Пятница, 13.09.2013, 11:49 | Сообщение # 2
Название валютных пар:

USD/JPY (американский доллар к японской иене) — енот;

GBP/JPY (английский фунт стерлингов к японской иене) — фуй, фунтжоп, кабложоп, фунтоиен, пацан, пацанский кросс;

GBP/CHF (английский фунт стерлингов к швейцарскому франку) — писчиф, фуфел, фунточиф;

EUR/JPY (евро к японской иене) — евражоп, еврожоп, евройен, евряйка;

GBP/USD (английский фунт стерлингов к доллару США) — кабель
Мажоры — основные валютные пары. Шесть валют в соотношении с долларом США: EUR/USD, GBP/USD, USD/JPY, USD/CHF, AUD/USD, USD/CAD.

SeMI Дата: Пятница, 13.09.2013, 11:55 | Сообщение # 3
Сделки на языке трейдера:

покупать — баить, лонг, длинная позиция, тариться;

продавать — селить, солить, шортить, короткая позиция;

слить — довести депозит до банкрутства;

отполовинить — закрыть часть сделки;

долить — открыть ещё одну сделку в том же направлении;

разбавить — добавить к убыточной сделке (усреднение);

полезть — открыть позицию;

замок — одновременно продать и купить одинаковый лот по одному и тому же торговому инструменту;

переворот с тройной доливкой — изменение направления позиции с добавлением трех лотов с целью отыграть убыток;

играть по рынку – покупать при росте или продавать при падении цены;

играть против рынка – продавать при росте или покупать при падении цены;

крыть – закрывать ранее открытые сделки;

купил-попал – характеристика последствий покупки на нисходящем тренде;

купить в яме – открыть сделку на покупку у локального минимума цен;

сесть на пилу – означает «купить задорого и затем продать задешево» или «продать задешево и затем купить задорого»;

перестоять – продержать позицию во время неблагоприятного движения цен и дождаться, в конце концов, позитивного результата;

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

SeMI Дата: Пятница, 13.09.2013, 20:05 | Сообщение # 4
Результат сделки на языке трейдеров:

профит — сделка закрытая c прибылью, позитивный результат сделки;

лось — сделка закрытая с убытком, обычно после срабатывания ордера stop loss.

в шоколаде — сделка находится в прибыли;

нахожусь в позе — сделка в убытке;

нахожусь в позиции — сделка в прибыли.

SeMI Дата: Пятница, 13.09.2013, 20:11 | Сообщение # 5
Трейдер в зависимости от занимаемой позиции на рынке может быть:

бык, бидараст — тот кто покупает;

медведь, оферист — тот кто продает;

сидеть на заборе — оставатся вне рынка без открытых сделок.

SeMI Дата: Пятница, 13.09.2013, 20:37 | Сообщение # 6
Разновидности игроков на рынке:

волк, акула — маркетмейкер, брокер или успешный трейдер;

кукловоды — крупные игроки рынка, возможности которых позволяют влиять на курс торгового инструмента;

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

овцы — трейдеры торговля которых полностью построена на чужом мнении;

свиньи — это трейдеры торговля которых направлена на погоню за максимальной прибылью. Жадность фраера сгубила;

маньяк — специалист из управления капиталом;

муфлоны – это мелкие спекулянты-неудачники;

космонавты – игроки которые играют на повышение;

скверик — трейдер который расслабился.

SeMI Дата: Суббота, 14.09.2013, 09:14 | Сообщение # 7
Тренд и направление движения цены торгового инструмента на языке трейдеров:

восходящий тренд — бычий, северный;

нисходящий тренд — медвежий, южный;

боковой тренд — болото, флэт, боковик;

ценовой разрыв — гэп.

SeMI Дата: Суббота, 14.09.2013, 15:52 | Сообщение # 8
Торговый терминал и все что с ним связано на языке трейдеров:

пипс — один пункт изменения курса торгового инструмента;

маржин колл, дядя Коля, Коля, Колян. — принудительное закрытие убыточных позиций при максимально допустимом размере убытка;

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

фигура, фига — изменение цены торгового инструмента на сто пунктов;

чарт — ценовой график;

инструмент — валютная пара, акция, фьючерс. ;

офер — цена по ask;

фантики, вертуха — виртуальные деньги, демо торговый счет;

реал — реальный торговый счет;

блохи — тиковый график, одноминутный, пятиминутный;
трал — трейлинг стоп;

спайк — нерыночная ценовая котировка;

спрэд — разница между ценой купли и продажи;

хай — верхняя точка ценового графика;

лоу — нижняя точка ценового графика;

SeMI Дата: Суббота, 14.09.2013, 16:03 | Сообщение # 9
Торговые стратегии на языке трейдеров:

интрадей — торговая стратегия в основе которой лежит торговля внутри дня;

МТС, тамагочи — механическая торговая система;

грааль — торговая стратегия которая приносит прибыль на постоянной основе;

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

атс — автоматизированная торговая стратегия (советник).

SeMI Дата: Суббота, 14.09.2013, 16:26 | Сообщение # 10
Ситуации на рынке языком трейдера:

долбить — цена торгового инструмента предпринимает попытки пробить важный ценовой уровень;

откат — цене торгового инструмента не удалось пробить важный ценовой уровень;

болтанка — ценовые изменения в течение некоторого времени находиться в некотором коридоре;

разогретый рынок — ликвидный рынок;

движняк — сильные внутридневные ценовые движения;

сыпаться, падать колом — сильное снижение цены торгового инструмента;

отстрел стопов — ситуация на рынке когда крупный игрок (маркет-мейкер) преднамеренно раскачивает рынок;

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

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

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

Советы по языку программирования Си: 10 полезных приемов

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

1. Указатели на функцию

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

Этот приём заключается в следующем. Сперва нужно задать тип “указатель на функцию, возвращающую что-то” и использовать его для объявления переменной. Рассмотрим простой пример. Сначала я задаю тип PFC (Pointer to a Function returning a Character):

Затем использую его для объявления переменной z :

Определяю функцию a() :

Адрес функции теперь хранится в z :

Заметим, что вам не нужен оператор & («address-of») ; компилятор знает, что a должна быть адресом функции. Так происходит из-за того, что с функцией можно произвести лишь две операции: 1) вызвать её или 2) взять её адрес. Поскольку вызова функции не происходит (отсутствуют скобки), остаётся лишь вариант с получением адреса, который помещается в z .

Чтобы вызвать функцию, адрес которой находится в z , просто добавьте скобки:

2. Списки аргументов переменной длины

Обычно вы объявляете функцию, которая принимает фиксированное число аргументов. Тем не менее, можно написать функцию, которая принимает любое их количество. Стандартная функция printf() тому доказательство. Разумеется, вы можете сами написать подобную функцию. Вот пример:

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

1 июля – 3 декабря, онлайн, беcплатно

С переменными аргументами работают несколько встроенных функций и макросов: va_list , va_start , va_arg и va_end (они определены в stdarg.h ).

Сперва вам нужно объявить указатель на список аргументов:

Затем установите argp в первый аргумент переменной части. Это первый аргумент после последнего фиксированного (в нашем случае arg_count ):

Теперь извлекаем каждую переменную по очереди, используя va_arg :

Заметим, что вам нужно знать тип аргумента заранее (в нашем случае int ) и число аргументов (у нас задаётся фиксированным arg_count ).

Наконец, нужно убраться при помощи va_end :

3. Проверка и установка отдельных битов

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

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

Если они как-то связаны, как в примере выше (они все описывают состояние движения), то зачастую бывает удобнее хранить их в одной “переменной состояния” и использовать каждый бит для задания того или иного состояния:

Тогда вы сможете использовать битовые операции для задания или обнуления отдельных битов:

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

В архиве с кодом, который будет дан в конце статьи, есть пример работы с битами.

Чтобы установить заданный бит переменной value (в диапазоне от 0 до 31), используйте такое выражение:

Для очистки бита используйте:

А для получения значения бита:

4. Ленивые логические операторы

Логические операторы Си, && (“и”) и || (“или”), позволяют вам составлять цепочки условий в тех случаях, когда действие должно выполняться при выполнении всех условий ( && ) или только одного ( || ). Но в Си также есть операторы & и | . Очень важно понимать разницу между ними. Если вкратце, двухсимвольные операторы ( && и || ) называются “ленивыми” операторами. Если они используются между двумя выражениями, то второе будет выполнено, только если первое оказалось верным, иначе оно пропускается. Рассмотрим пример:

Тест (int)f && feof(f) должен вернуть истинный результат, когда будет достигнут конец файла f . Сперва тест вычисляет f ; она будет равна нулю (ложное значение), если файл не был открыт. Это ошибка, поэтому попытка чтения файла не увенчается успехом. Однако, поскольку первая часть теста провалена, вторая не будет обработана, и feof() не будет запущена. Этот пример демонстрирует корректное использование ленивого оператора. Теперь посмотрите на этот код:

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

5. Тернарные операторы

Операция называется тернарной. когда принимает три операнда. В Си тернарный оператор ? : можно использовать для сокращённой записи тестов if..else . Общий синтаксис выглядит так:

Пусть у нас есть две целых переменных, t and items . Мы можем использовать if..else для проверки значения items и присваивания её значения переменной t таким образом:

Используя тернарный оператор, эту запись можно сократить до одной строки:

Если вы не привыкли к тернарным операторам, то они могут показаться вам странными, но на самом деле они весьма удобны.

Рассмотрим ещё один пример. Этот код выводит первую строку, когда у нас один предмет, и вторую, когда их несколько:

Это можно переписать так:

6. Стек

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

Код ниже задаёт очень маленький стек: массив _stack из двух целых. Помните, что при тестировании всегда лучше использовать небольшие числа. Если код содержит ошибки, найти их при работе с массивом из 2 элементов будет проще, чем если их будет 100. Также объявляется указатель на стек _sp и устанавливается в основание стека _stack :

Теперь определим функцию push() , которая помещает целое в стек. Она возвращает новое число элементов в стеке или -1, если стек полон:

Для получения элементов стека нужна функция pop() . Она возвращает новое число элементов в стеке или -1, если он пуст:

А вот пример, демонстрирующий работу со стеком:

7. Копирование данных

Вот три способа копирования данных. Первый использует стандартную функцию memcpy() , которая копирует n байт из src в dst :

Теперь посмотрим на самодельную альтернативу memcpy() . Она может быть полезной, если копируемые данные нужно как-то обработать:

И наконец, функция, использующая 32-битные целые для ускорения копирования. Помните, что скорость в конечном итоге зависит от оптимизации компилятора. В этом примере предполагается, что счётчик данных n кратен 4 из-за работы с 4-байтовыми указателями:

Примеры можно найти в архиве ниже.

8. Использование заголовочных файлов

Си использует заголовочные файлы ( .h ), которые могут содержать объявления функций или констант. Заголовочный файл можно импортировать в код двумя способами: если файл предоставляется компилятором, используйте #include , а если файл написан вами — #include «mystring.h» . В сложных программах есть риск того, что вы можете подключить один и тот же заголовочный файл несколько раз.

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

Затем создадим другой файл header2.h , содержащий это:

Добавим в нашу программу, main.c , это:

При компиляции программы мы получим ошибку компиляции, потому что T_SIZE будет объявлена дважды (её определение в header1 подключено к двум разным файлам). Мы должны подключить header1 к header2 для того, чтобы header2 компилировался в тех случаях, когда header1 не используется. И как это исправить? Можно написать макрос для header1 :

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

9. Скобки: нужны ли они?

Вот несколько простых правил:

  1. Скобки нужно использовать для изменения порядка выполнения операторов. Например, 3 * (4 + 3) — не то же самое, что 3 * 4 + 3 .
  2. Скобки можно использовать для улучшения читаемости. Здесь они, очевидно, не нужны:

Приоритет оператора || ниже, чем и > . Однако, в этом случае скобки точно не будут лишними:

Скобки стоит использовать в макросах:

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

Без скобок результат получился бы неверным из-за порядка выполнения операторов.

Но в одном месте скобки точно не нужны: в выражении после return. Например, это…

…выполнится так же, как это:

10. Массивы как адреса

Программисты, которые учат Си после какого-то другого языка, часто удивляются, когда Си работает с массивами как с адресами и наоборот. Массив — это контейнер фиксированного размера, а адрес — это число, связанное с местом в памяти; разве они связаны?

Си прав: массив — это просто адрес базы в блоке памяти, а форма записи массива, например, в Java или JavaScript — просто синтаксический сахар.

Присмотритесь к этому коду:

Первый цикл здесь копирует адрес каждого элемента массива в сам массив:

На каждой итерации адрес увеличивается на i . Поэтому адрес переменной _x будет первым элементом, а каждый следующий адрес — адресом _x плюс 1. Когда мы прибавляем 1 к адресу массива, компилятор Си вычисляет подходящий сдвиг в зависимости от типа данных (в нашем случае 4 байта для массива целых).

Второй цикл выводит значения, хранящиеся в массиве, сперва выводя адрес элемента _x + i , затем значение элемента через привычный вид массива _x[i] , а потом содержимое массива с использованием адресной нотации (где оператор * возвращает содержимое памяти по адресу в скобках): *(_x + i) . Во всех случаях значения будут одинаковыми. Это наглядно демонстрирует, что массив и адрес — это одно и то же.

Обратите внимание, что для получения адреса массива вам не нужен оператор & , поскольку компилятор считает, что массив и есть адрес.

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

Высокочастотный трейдинг (что это) — алгоритмы и стратегии

На протяжении всей истории рынка появлялись новые стратегии, неординарные расчёты и торговые идеи. Тренд последних двух десятилетий — это алгоритмы высокочастотной торговли. Они совершают операции за считаные доли секунды, что вовсе недоступно человеческому глазу. В текущей статье мы рассмотрим, что такое высокочастотный трейдинг (HFT), его историю и существующие стратегии.

Что такое высокочастотный трейдинг

Высокочастотный трейдинг (с англ. «HFT, High-frequency trading») — это основной вид автоматической торговли с использованием алгоритмов, используемый для сверхбыстрых операций с инструментами на фондовом рынке.

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

Ключевые признаки HFT по версии CFTC (Комиссии по торговле товарными фьючерсами в США):

  1. Применение систем торговли, которые реализуют сверхбыстрое (менее 5 миллисекунд) размещение ордеров и их отмену, либо изменение;
  2. Использование программного обеспечения для автоматизации процесса по принятию решений об открытии позиций;
  3. Использование colocation-сервисов для прямого доступа к бирже;
  4. Сверхкороткий срок для открытия и закрытия сделки;
  5. Высокий оборот в портфеле на ежедневной основе;
  6. Размещение крупного числа ордеров, которые также быстро могут отменяться;
  7. Закрытие дня с близкой к нулю или вовсе с отсутствием позиций.

Интересный факт: явление высокочастотной торговли существует уже много лет, но его определение и термин «HFT» были введены лишь 23 июля в New York Times в рамках статьи «Stock Traders Find Speed Pays, in Milliseconds», написанной Чарльзом Дуиггом.

Как зарабатываются деньги

Механизм заработка у HFT алгоритмов сводится к двум основным направлениям:

  • Маркет-мейкинг — поддержание ликвидности за вознаграждение от биржи;
  • Арбитраж — перепродажа коррелирующих активов на различных рынках.

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

Все данные передаются трейдеру в терминал по каналу связи через интернет. HFT-компании стараются получить информацию о заявках и сделках раньше, чем другие за счёт особых технологий. По этой причине решающее значение имеет «Colocation», что означает близкое расположение к серверам биржи. Ярким примером борьбы за коммуникации с биржей выступает расстояние длиной в 1180 км у пригорода Чикаго Авроры и городком Маво, располагающимся на севере Нью-Джерси. В России оно получило название «Хорда капитализма».

По последним данным самую быструю скорость соединения сегодня предоставляет компания MacKayBrothers. Её результат — проход через 22 станции биржи за 4,09 миллисекунды. Конкуренты отстают как минимум на 60 000 наносекунд.

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

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

История появления

По официальным источникам датой рождения высокочастотной торговли считается 1998 год. Именно тогда члены Комиссии по ценным бумагам в США разрешили использование электронных площадок. В действительности идея HFT-алгоритмов появилась почти на 10 лет раньше. Её основателем является некий Стивен Суонсон, который будучи талантливым программистом и обладателем научной степени по математике реализовал идею по использованию производительных компьютеров в биржевых торгах.

В дальнейшем Стивен вместе с двумя единомышленниками (Дэвидом Уиткомбом и Джимом Хоуксом) открыли первую в мире HFT-компанию под названием Automated Trading Desk. В те годы обработка операций была гораздо медленнее, но они смогли осуществить невероятное — исполнение в течение 1 секунды.

Распространение высокочастотной торговли

Роботы для высокочастотной торговли приносили огромную прибыль, как следствие, появилось довольно много последователей данного направления. К 2010 году объёмы операций увеличились в 2,6 раза, а скорость возросла до десятков микросекунд.

Крупнейшие представители HFT-трейдинга в США:

  • Virtu Financial;
  • Citadel LLC;
  • ATD;
  • Chicago Trading.

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

Биржевой крах из-за HFT-алгоритмов

Случай произошёл 6 мая 2010 года. В тот день индекс Dow Jones упал на 990 пунктов за 5 минут без каких-либо причин. Это породило панику на рынке и снижение котировок.

Как стало известно позже, на тот момент доля на рынке HFT-трейдеров составила 70%, и им достаточно было закрыть позиции, чтобы рынок обвалился. Поскольку их схема работы во многом схожа, именно это и произошло с 14:42 по 14:47 6 мая. Вышеуказанные события вызвали сильный резонанс в обществе.

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

Тем не менее, всё это оказалось безрезультативно, и HFT-трейдинг лишь прочнее укрепился на рынке.

Современный период

К 2012 году стала отмечаться тенденция по снижению эффективности HFT и его доли на рынке. С 2009 всего за три года объёмы прибыли от высокочастотной торговли снизились в 5 раз с 5 млрд. долларов до 1,25 млрд.

В 2014 году вышла книга «Flash Boys: Высокочастотная революция на Уолл-стрит», подробно описывающая историю и механизмы HFT, как финансовую махинацию и развитие рынка. Продукт стал бестселлером, автором является Майкл Льюис.

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

Ощутить разницу можно взглянув на индекс волатильности VIX:

Волатильность сильно влияет на заработок алгоритмов высокочастотного трейдинга. О сложностях современного рынка и поиске сделок официально заявили в 2020 году гендиректор Tradeworx Майкл Беллер, а также владелец Interactive Brokers и миллиардер Томас Петерффи.

Кто применяет HFT

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

В целом всех пользователей высокочастотной торговли можно разделить на четыре категории:

  1. Независимые проп-трейдинговые компании;
  2. Дочерние подразделения брокеров;
  3. Хедж-фонды;
  4. Крупные банки, инвестиционные структуры.

Такое положение дел связано с несколькими факторами:

  • Необходимость в наличии высоких производительных мощностей;
  • Обязательная оптимизация структуры торгов и установка сервера HFT вблизи со шлюзами биржи по протоколу FIX/FAST;
  • Реализация высокоуровневых языков программирования C++, Java и т.д.;
  • Крупные капиталовложения.

Всё это вместе взятое недоступно рядовому трейдеру, независимо от его финансовых возможностей или желания.

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

Стратегии высокочастотной торговли

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

  • Статистический арбитраж — в её основе лежит анализ корреляций между инструментами и поиск выгодных отклонений в ценах схожих инструментов на различных рынках.
  • Рибейт арбитраж — задействует размещение пассивных заявок на различных биржах с помощью специального алгоритма.
  • Новостной арбитраж — работает с максимально быстрым анализом лент новостей для открытия позиций в момент выхода важной статистики.
  • Маркет-мейкинг — создаёт ликвидность на рынке по указанным инструментам и контролирует величину спреда за вознаграждение от биржи или иной структуры.
  • Front-running — определение крупных заявок и выставление ордеров перед ними.
  • Спекуляции со спредом — выявление микро-трендов внутри спреда и проведение выгодных сделок.
  • Структурные стратегии — используют уязвимость в самой структуре рынка и связи между биржами и клиентами брокеров.
  • Дирекционные стратегии — в частности, «спуфинг» или манипуляция рынком с целью введения в игру агрессивных трейдеров и захвата стоп-ордеров.

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

Критика высокочастотной торговли

В течение последнего десятилетия активно ведётся критически настроенная пропаганда против HFT-алгоритмов. Особую активность она приобрела после выхода вышеупомянутой книги Майкла Льюиса «Flash Boys». Тем не менее, в её содержании рынок скорее описывается как инновационный или технически развитый, преувеличивая его достоинства. В действительности критики опираются на несколько аргументов:

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

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

Заключение

Высокочастотная торговля (HFT) стала неотъемлемой частью современного фондового рынка. Её суть заключается в прямом соединении с биржей и использовании высоких производительных мощностей для автоматического совершения сделок в течение считанных наносекунд. Пользователями таких систем являются крупные игроки: хедж-фонды, банки, инвестиционные структуры. Исторически особое внимание высокочастотные трейдеры к себе привлекли в 2010 году, когда по их вине произошёл обвал рынка.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Видеокурс Программируем на языке QLua

Разработка торгового робота для терминала QUIK

Количество занятий: 60 занятий

Стоимость: 12950 РУБ

Описание

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

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

Почему стоит выбрать LUA:

  • Стабильная работа. Язык программирования LUA полностью интегрирован в терминал QUIK и работает стабильно и надежно. Роботам на языке LUA можно доверять свои деньги.
  • Высокая скорость работы. Язык LUA отличается высокой скоростью работы и позволяет реализовывать сложные расчеты, не замедляя работу терминала QUIK.
  • Прост в изучении. Язык LUA при огромных возможностях достаточно прост в изучении даже для неподготовленного пользователя и позволяет быстро его освоить.
  • Подходит для профессионалов. Для программистов со стажем язык LUA включает множество возможностей, в частности, интергация кодов на С и С++.

Формат курса:

Видеокурс состоит из 5 частей, в которые входят 60+ видео-уроков.

Алгоритмический трейдинг. 3 первых шага для новичка

Время на чтение: 5 минут

Содержание

С чего необходимо начинать

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

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

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

Не лишним фактором будут знания языков программирования, таких как R, Python или C/C++. Тем не менее, сегодня существуют инструменты, которые позволяют начать и без подобных навыков, например, — конструктор Visual JForex (для рынка форекс) или Excel (актуален для любых инструментов). Для новичка в мире алгоритмического трейдинга данные программы подойдут лучше всего.

150 минут видео о создании торговых роботов доступно бесплатно и без регистрации

Выявление алгоритмических стратегий

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

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

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

Сразу может возникнуть вопрос — почему же различные финансовые фирмы и хедж-фонды делятся своими прибыльными наработками? На самом деле, здесь все достаточно просто.

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

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

Следующий важный аспект — частотность вашей алгоритмической стратегии. Она может быть:

  • высокочастотная
  • среднечастотная
  • низкочастотная

После того, как стратегии выбраны, нужно переходить к их бэктестам.

Язык программирования C# 6.0

Язык программирования C# 6.0


[Специалист] Язык программирования C# 6.0

Язык программирования C# — один из самых востребованных и динамично развивающихся языков программирования в отрасли IT, который используется для разработки приложений на платформе Microsoft .Net.

Окончив авторский курс «Язык программирования C# 6.0», Вы освоите объектно-ориентированный язык программирования C# 6.0, научитесь использовать интегрированную среду разработки Visual Studio 2015 и приобретете базовые навыки создания объектно-ориентированных приложений.

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

Модуль 1. Введение в платформу .Net

  • Основные элементы платформы .Net.
  • Использование интегрированной среды разработки Visual Studio 2015.
  • Определение понятия Сборка и её описание.
  • Особенности языка программирования C#.
  • Создание и работа со сборками в Visual Studio 2015.
  • Работа в командной строке.

Модуль 2. Введение в язык программирования C#

  • Языковые лексемы C#.
  • Введение в систему типов языка C#.
  • Пространства имён.
  • Работа со структурными типами и константами.
  • Операции языка C#.
  • Тип данных Nullable.
  • Разработка пользовательских структурных типов.
  • Создание и работа со структурой на C#.

Модуль 3. Методы и операторы C#

  • Создание и вызов методов.
  • Перегрузка и методы с переменным числом аргументов.
  • Параметры по умолчанию и именованные параметры
  • Операторы ветвления.
  • Операторы циклов.
  • Написание методов в Visual Studio 2015.

Модуль 4. Массивы и строки в C#

  • Одномерные массивы.
  • Многомерные массивы.
  • Класса String.
  • Динамические строки.
  • Регулярные выражения.
  • Работа с аргументами командной строки в Visual Studio 2015.

Модуль 5. Разработка классов на C#

  • Обзор основных концепций ООП.
  • Объявление класса.
  • Члены класса и создание объектов класса.
  • Модификаторы доступа.
  • Свойства и автоматические свойства.
  • Модификаторы const, readonly и static.
  • Конструкторы и деструкторы в C#.
  • Partial классы.
  • Вложенные классы.
  • Написание классов для приложения Геометрия.

Модуль 6. Наследование и полиморфизм

  • Наследование как механизм повторного использования кода.
  • Конструктор при наследовании
  • Преобразование типов и операция is(as) .
  • Виртуальные методы и позднее связывание.
  • Абстрактные классы и методы.
  • Модификатор new и сокрытие членов класса.
  • Создание иерархии для приложения Геометрия.

Модуль 7. Иерархия классов .Net Framework

  • Класс Object и переопределение его методов.
  • Упаковка и распаковка объектов.
  • Метаданные и рефлексия.
  • Другие полезные классы .Net Framework.

Модуль 8. Обработка ошибок в C#

  • Концепция исключений.
  • Использование операторов try, catch и finally.
  • Создание своих классов исключений.
  • Контроль за переполнением при целочисленных вычислениях.

Модуль 9. Интерфейсы в C#

  • Концепция интерфейсов.
  • Объявление интерфейса.
  • Реализация интерфейса.
  • Итераторы в .Net Framework.
  • Разработка альтернативных итераторов для вывода массива объектов.

Модуль 10. Потоки данных в .Net Framework

  • Обзор классов потоков.
  • Работа с байтовыми потоками.
  • Работа с потоками символов.
  • Сериализация объектов в C#.

Модуль 11. Коллекции в .Net Framework

  • Обзор классов коллекций.
  • Концепция параметризованных типов данных.
  • Ключевое слово default и ограничения для параметризованных типов.
  • Обзор параметризованных коллекций.
  • Работа с данными в приложении Геометрия.

Модуль 12. Перегрузка операций в C#

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

Модуль 13. Делегаты и события в C#

  • Создание и работа с делегатами.
  • Классы Action<> и Func<>.
  • Анонимные методы.
  • Лямбда выражения.
  • События.
  • Асинхронный вызов метода.

Модуль 14. Расширенные возможности C#

  • Атрибуты.
  • Сборка мусора и освобождение ресурсов.
  • Работа с динамическими типами.
  • Асинхронное программирование.
  • LINQ.
  • Реализация асинхронного паттерна.

По окончании курса Вы будете уметь:

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

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

Продолжительность курса — 40 ак. ч.

Преподаватели курса

Цена автора на его сайте: 20.990 руб.
Наша цена в розницу: 3.149 руб.

Добавить комментарий