Сообщество трейдеров » Алготрейдинг » ВВЕДЕНИЕ В НАУКУ О АНАЛИЗЕ ЦИФРОВЫХ СИГНАЛОВ. Глава 1
апрель 14 2020

ВВЕДЕНИЕ В НАУКУ О АНАЛИЗЕ ЦИФРОВЫХ СИГНАЛОВ. Глава 1

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

Обычно индикаторы технического анализа описываются в рамках фиксированного периода времени. Например, стандартный интервал, используемый для индикатора относительной силы (RSI), составляет последние 14 ценовых баров. Часто можно услышать о пятидневном стохастике или 10/30-дневной системе скользящих средних. Поскольку рынок постоянно меняется, нет абсолютно никаких причин выбирать статические периоды для ваших индикаторов. Выбор правильного интервала времени имеет важное значение для реализации максимального потенциала классических индикаторов. При определении инструментов, с помощью которых можно сделать индикаторы адаптивными, вы увидите новейшие индикаторы, превосходящие классические в точности и производительности.

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

Многие физические системы предполагают использование аналоговых сигналов, которые представляются через непрерывные временные функции. Сигнал имеет определенную амплитуду в каждый момент времени. Амплитуда сигнала может принимать бесконечное число значений. При этом, если сигнал ограничен полосой частот, то его энергия за частотой среза незначительна. Поскольку для изменения амплитуды в любой физической системе требуется энергия, это означает, что сигнал не может мгновенно изменять амплитуду. Поэтому точки, удаленные друг от друга с малым шагом, будут иметь относительно одинаковые амплитуды. Существует еще несколько способов представления сигнала кроме как непрерывно аналогового. Один из методов состоит в том, чтобы квантовать сигнал по амплитуде и удерживать это значение до следующего квантования. Число амплитуд ограничено, но функция непрерывна во времени. В этом отличие от дискретного сигнала, который имеет непрерывные значения амплитуды, но определяется только в дискретные моменты времени. Как и в случае с аналоговыми сигналами, существует бесконечное число уровней, но число точек по времени ограничено. Если сигнал квантован по амплитуде и дискретизирован по времени, то он называется цифровым сигналом. Данные, с которыми мы имеем дело в трейдинге, являются цифровыми сигналами от выборки, которая выполняется в одинаковые периоды времени (один раз в день, один раз в час и т. д.).

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


 δ - импульсная функция; Т – интервал между импульсами.

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


Результаты дискретизации в частотной области показаны на рисунке 1.1. Непрерывный сигнал с ограниченной полосой F (f) показан в верхнем сегменте (a) как имеющий спад по частоте в некоторой точке. В среднем сегменте (b) показана форма волны импульса выборки S(f), имеющая одночастотную спектральную линию на частоте дискретизации fs и все ее гармоники. При выборке по сигналу с ограниченной полосой, свернутая форма волны показана в нижнем сегменте (c). Присутствует не только непрерывный сигнал с ограниченной полосой частот, этот же сигнал также появляется в виде верхней и нижней боковых полос каждой гармоники частоты дискретизации. Поскольку нижняя боковая полоса частоты дискретизации может накладываться на исходную основную полосу, полоса должна ограничиваться ниже половины частоты дискретизации. Половина частоты дискретизации называется частотой Найквиста, потому что теорема Найквиста о выборке утверждает, что дискретизация сигнала должна происходить не менее двух раз за период сигнала, чтобы избежать наложения спектров.

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

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

В трейдинге мы можем масштабировать все таймфреймы до каждого бара. Каждый бар является отбором. Поэтому, чтобы удовлетворить критерию Найквиста, самый короткий цикл, который мы можем рассмотреть, — это цикл с 2 барами. С практической точки зрения, 5-ти и 6-тибарные циклы следует считать самыми короткими полезными циклами.

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

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

Исторически, один децибел обозначал мощность, теряемую телефонным сигналом на одну милю провода (названо в честь Александра Грэма Белла). Децибел — это одна десятая бел. Бел — это десятичный логарифм отношения мощностей. Таким образом, децибел выражается как 10*Log10(P2/P1) и сокращенно обозначается как дБ.

Работа с децибелами упрощает понимание уровней сигнала потому, что большие отношения мощностей сжимаются в меньший диапазон чисел за счет логарифма и потому, что добавление децибел (т. е. добавление логарифмов) проще, чем выполнять умножения в голове. Например, 2*2 = 4 также может быть выполнено через логарифмы: Log (2) =0.3, поэтому Log (2) +Log (2) =0.6, что является Log (4). Запоминание некоторых ключевых отношений позволяет быстро осознать коэффициент мощности. Коэффициент мощности 2 переводится в + 3 дБ. Если это соотношение равно 1/2, а не 2, то оно переводится в -3 дБ. То есть величина, обратная отношению мощности равна тому же абсолютному значению в децибелах, но знак обратный. Отношение меньше 1 (но обязательно больше 0) всегда выражается в отрицательных децибелах. Если мы удвоим мощность, то это будет 3 дБ. Если мы удвоим ее снова так, что мощность будет в 4 раза больше оригинала, то есть 6 дБ. Удваивая еще раз, чтобы получить в 8 раз больше первоначальной мощности, мы добавляем еще 3 дБ, чтобы достичь уровня 9 дБ. Поскольку у нас есть десятичный логарифм, коэффициент мощности 10 составляет 10 дБ, а коэффициент мощности 100 есть 20 дБ и так далее. Учтем это, для дополнительной иллюстрации использования децибела: если на выходе фильтра половина мощности относительно входа, то выходная мощность составляет -3 дБ. Говорят, что фильтр имеет потери 3 дБ. Если подобный фильтр установлен на выходе первого, то полная выходная мощность от составного контура составит -6 дБ.

-3 дБ обычно является критической точкой для фильтра. Такая точка половинной мощности в характеристике фильтра возникает, когда амплитуда волны составляет 0,7 относительно ее максимального значения. Это верно, потому что 0,7*0,7= 0,5, то есть половина мощности. Критическая точка в фильтре часто называется частотой среза, потому что частотные составляющие за пределами частоты среза существенно ослабляются, а частотные составляющие в пределах частоты среза ослабляются очень мало. Для упрощения представьте фильтр, с характеристикой в виде каменной стены. В этой аналогии частоты ниже частоты среза не ослабляются, а частоты выше частоты среза не пропускаются через фильтр.

EasyLanguage в настоящее время является самым популярным языком программирования для трейдеров. Поэтому, я использую эту среду для создания программного кода. EasyLanguage является ответвлением Паскаля и содержит нестандартные ключевые слова, присущие для торговли. Поскольку язык читается почти как английский, EasyLanguage довольно легко понять. Это также легко перевести на другие компьютерные языки. При переводе необходимо понимать условное обозначение. Предназначение EasyLanguage состоит в том, что все вычисления выполняются для одного текущего бара. Например, Close означает цену закрытия текущего бара. Если с этим параметром связана ссылка, то она отображается в квадратных скобках и означает количество баров назад, на которые она ссылается. Например, Close [3] относится к цене закрытия 3 бара назад. 0 может быть использован в качестве ссылки и имеет то же значение, что и текущий бар без какой-либо ссылки (нет ссылки в будущее). В качестве дополнительного примера, двухдневный моментум записывается как Momentum = Close - Close [2];. Каждая завершенная строка кода должна заканчиваться точкой с запятой. Для ясности, я всегда пишу общее описание действия, не обращаясь к более сложной функции TradeStation. В результате, представленный компьютерный код может быть легко переведен на BASIC, C+, или даже в таблицу формата Excel.

 

Ключевые моменты для запоминания

 

  • 1. Эта книга может быть прочитана на нескольких уровнях понимания, начиная от широкого обзора до подробного программирования кода.
  • 2. Новейшие и уникальные индикаторы появляются благодаря внедрению математических методов.
  • 3. Эффективность классического индикатора можно увеличить, делая их адаптивными к текущим рыночным условиям.
  • 4. Временные интервалы финансовых данных могут обрабатываться на основе каждого бара. Абсолютный временной масштаб данных не имеет значения для вычислительных целей.
  • 5. Работа с выборочными данными существенно отличается от работы с непрерывной информацией. Выборочные данные всегда должны быть сглажены, во избежание ошибочных сигналов.

Комментарии

  1. Zaharen

    Zaharen

    21 апреля 2020 09:07 Гости
    Доброго времени суток!
    Совсем недавно заинтересовался темой спекуляций на бирже. (Завел ИИС). Постепенно погружаясь в этот "вопрос" пришел к мысле почему мне не встречается какое либо упоминание о способах (методах) анализа "рынка" "ЦОС". Это же лежит на поверхности. Ведь кривая "рынка" это и есть сигнал. Из которого нужно выделять "цель". Как в мою прошлую бытность поиск "валовой" составляющей в "шуме моря". Вообще загорелся идеей "пойзучать " "кривую рынка" в МАТЛАбе. Но времени как всегда нет... И тут, на тебе! Такая хорошая книга!!!
    1. Prival

      Prival

      21 апреля 2020 13:18 Администраторы
      МатЛаб лучший пакет для анализа. Там есть Сигнал процессинг. Все что придумало человечество там есть (ну почти все). Моя мечта была всегда присоединить его к торговой системе.... получаешь данные, закидываешь их в Матлаб, там анализ, оттуда возвращается покупать, продавать или сидеть на заборе, а терминал выполняет эти команды. Всегда смотрел на терминалы и видя ту математику что там вложена, понимал на сколько они убогие (((
      1. Павел

        Павел

        19 мая 2020 02:48 Гости
        Предпочитаю python с его богатейшим инструментарием для анализа сигналов, который не уступает матлабу. Через сокет получаю в python данные из квика. Это возможно без проблем благодаря lua-скриптам из проекта quiksharp. К сожалению, для python нет готовой обвязки, как для c#. Но, как говорится, есть, над чем поработать
        1. Prival

          Prival

          19 мая 2020 08:38 Администраторы
          python классный инструмент, но я к сожалению с ним не работал, сужу только по публикациям, там действительно богатый инструментарий. Наверное правильнее будет искать закономерности в специально предназначенных для анализа данных инструментах (матлаб, python...) а уже потом переносить это в ТС. Павел вы правильно сказали это долгий путь, но наверное самый правильный.
          1. pch

            pch

            19 мая 2020 11:16 Посетители
            Познакомившись с python, я вдохновлялся с каждым днём: скорость разработки достаточно сложных вещей и читаемость кода на порядки лучше по сравнению с с/с++, с#,... На низкоуровневые языки стоит переходить, когда вы упираетесь в производительность и уже понятно, что игра стоит свеч. Второй главный плюс python — почти всё, что вам нужно, уже реализовано и легко доступно! Ну, кроме продуманного коннектора к quik :)

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

    Денис

    2 мая 2020 22:17 Гости
    Классная книга! А когда будет продолжение?

Оставить комментарий

  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent