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

Автор:Доброта, Создано: 2019-06-25 15:48:58, Обновлено: 2023-10-31 21:01:08

Когда цены сверху и снижаются, то есть прорываются через линию поддержки, мы считаем, что силы в воздухе усиливаются, и уже сформировалась волна падения, которая создает сигнал продажи.imgРисунок 4-20

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

Условия продажи

Большое предложение:如果无持仓,并且收盘价大于上轨,并且时间非14:45 Открытие акций:如果无持仓,并且收盘价小于下轨,并且时间非14:45 Многоголовые позиции:如果持多单,并且收盘价小于中轨,或者时间是14:45 Плохое положение:如果持空单,并且收盘价大于中轨,或者时间是14:45

Реализация стратегического кода

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

Шаг 1: Используйте стратегическую структуру CTA

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

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

Следует отметить, что в приведенном выше рисунке код разновидности является rb000/rb888. Это означает, что данные сигналов используются rb000, данные транзакций используются rb888, и автоматически меняются. Конечно, вы также можете указать конкретный код разновидности, например, код разновидности rb1910, то есть сигнальные данные и данные транзакций используются rb1910.

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

Второй шаг: получить данные.

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

Получение данных K-линии

Первое, что нужно сделать, это получить K-линейные матрицы и верхние корни K-линий, потому что есть K-линейные матрицы, чтобы вычислить показатели Бринговых полос.imgРисунок 4-22.

Как показано на рисунке выше: Четвертая строка: получение K-строевой матрицы, которая имеет фиксированный формат. 5-я строка: фильтр длины K-строки, потому что параметр, который мы используем для вычисления показателя K-линии, - 20, когда K-строка меньше 20 узлов, нельзя вычислить показатель K-линии. Так что здесь нужно фильтровать длину K-строки, если K-строка меньше 20 узлов, мы возвращаемся прямо, продолжаем ждать следующей K-строки. Строка 6: из полученной K-линейной матрицы сначала извлечь объект верхней K-линии, а затем извлечь из этого объекта цену закрытия. Получить второй элемент ингредиента матрицы, то есть длину матрицы минус 2 ((r[r.length - 2]); элементы в матрице K-линии - это объекты, которые содержат цену открытия, цену максимума, цену минимума, цену закрытия, количество сделок, время, чтобы получить цену закрытия, сразу после чего добавляется клей.

Получение данных о времени K-линии

Поскольку мы внутридневная стратегия, нам нужно выровнять позиции перед закрытием, поэтому для того, чтобы определить, является ли текущая линия K близкой к закрытию, если это линия K близкая к закрытию, то мы выровняем позиции, если это не линия K близкая к закрытию, мы можем открыть позиции.imgРисунок 4-23.

Как показано на рисунке: Строка 8: Получить свойства временной теги корня K-строки, а затем создать объект времени ((new Date ((временной теги)). 9-я строка: в зависимости от объекта времени, рассчитывать количество часов и минут соответственно, и определить, когда время корневой линии K - 14:45;

Доступ к данным о хранении

Информация о наличии позиции является важным условием количественной стратегии торговли. При установлении условий торговли необходимо также определить состояние позиции и количество позиций, чтобы определить, можно ли разместить заказ. Например: при установлении условий торговли покупкой открытой позиции, если есть позиции, то это не обязательно повторяется.imgРисунок 4-24. Как показано на рисунке выше: Строка 11: Получить текущее состояние хранения. При наличии нескольких заказов значение - 1; при наличии пустых заказов значение - 1; при отсутствии хранения значение - 0.

Доступ к данным Брин-Бенда

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

Двумерная матрица, на самом деле, хорошо понятна, это матрица в матрице, поэтому порядок получения таков: сначала получать указанную матрицу из матрицы, а затем получать указанный элемент из указанной матрицы, как показано на рисунке ниже:imgРисунок 4-25

Как показано ниже, строки 13 - 19 - это числа, полученные с помощью кода, находящихся на траектории, средней траектории и нижней траектории ленты Брулина. Среди них строка 13 - это API, используемая непосредственно изобретателем для получения массивов ленты Брулина; строки 14 - 16 - первые, полученные из двухмерной массивы массивов на траектории, средней траектории и нижней траектории; строки 17 - 19 - это значения на траектории, средней траектории и нижней траектории ленты Брулина, полученные из массивов траектории, средней траектории и нижней траектории группы К.imgРисунок 4 - 26

Третий шаг: заключить сделку

С этими данными можно написать логику транзакции и код для транзакции под заказ. Формат также очень прост, наиболее часто используется фраза "if" в фразе "if", которая может быть описана словами: "если условия 1 и 2 утверждены, под заказ; если условия 3 или 4 утверждены, под заказ"; как показано на рисунке:imgРисунок 24-27

В приведенном выше рисунке строки 21-24 представляют собой логику сделки и код для следующей сделки. Сверху вниз: плоский, пустой, многократный, открытый.

Возьмем, к примеру, множественное число (стр. 23), которое представляет собой строку, если в ней выполняется только одна строка кода, в которой скобки могут быть пропущены. Строка переводится как: если текущая задержка равна 0, а цена закрытия больше, чем на трассе, и время строки K не 14:45, то строка возвращает 1 тонну.

Если вы внимательно посмотрите, вы увидите, что в этих строках есть "return 1" и "return -1", это фиксированный формат, который означает: если вы покупаете, напишите "return 1"; если вы продаете, напишите "return -1".

Полный код стратегии

На этом этапе будет написан полный код стратегии, и если вы разделите его на рамки, данные, логику, покупки и продажи, это будет очень просто.imgРисунок 4-28.

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

Подведение итогов

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

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

Следующая часть

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

Домашнее задание

1, Попробуйте использовать знания, полученные в этом разделе, чтобы реализовать двулинейную стратегию. 2, попытаться реализовать алгоритм показателей KDJ с помощью языка JavaScript в инструментах для количественного измерения изобретателей.

4.3 Быстрое введение в Python

Аннотация

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

Почему нужно учить столько языков?

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

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

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

Почему выбирать Python для количественных сделок

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

Пять причин выбрать Python

1. Широкое применение количественной оценки:

Американский Quantipian и отечественные изобретатели могут использовать Python для количественного измерения.

2. Простые и удобные для изучения:

Философия дизайна Python - это ориентация на пользователя и легко дешифруемый интерпретационный язык.

3. Бесплатный открытый источник:

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

4. Богатая библиотека:

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

5. Интерфейс приложения:

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

Полная стратегия

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

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

Если написать его на языке Python, это выглядит так:imgРисунок 4-29

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

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

Выбор версии

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

Идентификаторы

Идентификатор - это название переменной, например, test, test10, test10, test10, test10, test10, test10, test10, test10, test10, test10,demo и т. д..Все в Python (имена переменных, функций и операторов) различают буквы, т. е. имена переменных test и variable name Test - это две разные переменные. Первый символ идентификатора (имена переменных, функций, свойств, параметров функций) должен быть буквой, подчеркнутой строкой.Если вы хотите, чтобы ваш сайт был доступным для всех пользователей, вы должны иметь доступ к следующему веб-сайту: https://www.facebook.com/facebook.com/facebook/facebook.com/facebook/facebook/facebook.com/facebook.com/facebook.com/facebook?imgРисунок 4-30

Комментарии

Аннотация - это перевод или интерпретация строки кода, правила которой очень просты и включают в себя однострочную аннотацию и блоковую аннотацию. Однострочная аннотация начинается с нуля ((#), блоковая аннотация начинается с трех цитат (() или трех двузначных цитат ((""") и заканчивается тремя двузначными цитатами (()) или тремя двузначными цитатами (("""), как показано ниже:imgРисунок 4-31

Линия и сжатие

Наиболее характерной особенностью Python является использование сжатия для обозначения блоков кода, без использования заглавных скоб {}. Количество сжатых пространств изменяется, но заявления одного и того же блока кода должны содержать одинаковое количество сжатых пространств.imgРисунок 4-32

Переменные

Переменная может хранить любой тип данных, прямой запись имени переменной - это создание переменной, но при создании переменной нужно одновременно установить значение переменной, иначе программа вернет ошибку. Именные числа ((=) на левой стороне оператора - это имя переменной, именные числа ((=) на правой стороне оператора - это значения, хранящиеся в переменной. Как показано ниже: name2 - это имя переменной, и inventor-quantifier-quantifier - это значение переменной. Если не перезагрузить новое значение на name2, то значение name2 всегда является inventor-quantifier-quantifier.imgРисунок 4-33

Данные

В Python есть шесть типов данных, из которых три неизменные, и три переменные. По сути, неизменные данные, как только они создаются, не могут быть изменены и имеют уникальный адрес в памяти; переменные данные - это ссылки на адреса в памяти, которые не меняются в памяти, если их значение меняется. Неизменные данные ((3):Number ((цифры) 、String ((строки) 、Tuple ((состав); Переменные данные (три): List (список), Dictionary (словарь), Set (собрание).imgРисунок 4-34

Цифры

Цифровые типы в Python поддерживают функцию int ((полный тип), float ((плавучая точка), bool ((буль), complex ((комплекс)); встроенная функция type ((), которая может быть использована для запроса типа объекта, к которому относится переменная.imgРисунок 4 - 35

Операторы

Как и в большинстве языков, математические операции в Python очень интуитивны. Арифметические операторы, сравнительные операторы и логические операторы - это то, что мы знаем в школе. В них арифметические операторы - это математические операции, связанные с умножением и вычитанием.imgРисунок 4-36

Следует отметить, что: and означает логический с, что означает и . or означает логический или, что означает или . ! означает нелогический, что означает или : Одно и то же - это когда все условия являются верными, и только тогда окончательное условие является верным. Собственность или несовместимость является условием всех условий, при условии, что любое из условий является совпадением или несовместимостью, и конечное условие является совпадением или несовместимостью.

Приоритеты

Если есть выражение 100* ((10-1) / ((10+5), какой шаг программы вычисляется первым? Средняя школа математики говорит нам: если это однообразные операции, обычно вычисляется в порядке слева направо. Если есть как добавление, так и вычитание, сначала умножают, затем подсчитывают и вычитают. Если есть скобки, то предварительно подсчитывают в скобках. Если соответствует закону операций, можно уменьшить с помощью закона операций.imgРисунок 4-37

Значение Бура

Булевой тип представляет собой истинный, обычно используемый в условном суждении и циркулирующих заявлениях. Python определяет две постоянные, которые представляют истинный и ложный. Фактически, любой объект может быть преобразован в Булевый тип или может быть напрямую использован для условного суждения, как показано ниже:imgРисунок 4-38

Структура

Строки - это тексты, которые часто используются при настройке разновидностей кода. Например, строки в Python используют однозначные или двойные цитаты.imgРисунок 4-39

Список

Список - самый часто используемый тип данных в Python. Вы можете представить список в виде контейнера, только элементы в контейнере расположены в порядке от левого к правому, первый элемент - 0, второй элемент - 1, и так далее. Кроме того, список в Python может хранить любой тип данных, как показано на рисунке ниже:imgРисунок 4-40

Функции

Функции в Python не отличаются по своей сути от функций, которые мы изучаем в школе, и вы можете понять, что передается, а что выводится с помощью вычислений функций, как показано на следующей схеме:imgРисунок 44-41

if-заявление

if-заявления часто появляются в нашей жизни, например: если сегодня будет дождь, я буду делать ставку. Это означает, что это заявление будет выполняться только при условии, что условие будет истинным.imgРисунок 44-42

if...else фраза

if...else также является обычным предложением, например: если сегодня будет дождь, я буду делать ставки; иначе я не буду делать ставки.imgРисунок 44-43

Elif фраза

Поскольку Python не поддерживает switch-заявления, то при определении нескольких условий Python может использовать только elif-заявления. Например: если это солнечный свет, я смотрю больше; иначе, если это цинк, я смотрю пусто; иначе, я наблюдаю; как показано на следующей картинке:imgРисунок 44-44

for цикл

Иногда, когда нам нужно получить данные K-линий за последние несколько дней, нам нужно получить их из K-линейных массивов, в зависимости от их местоположения. Для этого очень удобно использовать цикл for, как показано на рисунке:imgРисунок 4-45

while цикл

Мы все знаем, что рынок постоянно меняется, и если вы хотите получить самые последние K-линейные массивы, вам нужно постоянно выполнять один и тот же код снова и снова, тогда используйте цикл whilex, который всегда будет получать самые последние K-линейные массивы, если условие указано как true.imgРисунок 44-46

break и continue

Цикл имеет предварительные условия, и только при условии, что это условие является истинным, цикл начинает повторяться, и цикл заканчивается, пока это условие не является ложным. Однако break-заявления могут сразу выйти из цикла в процессе выполнения цикла; continue-заявления могут прервать один цикл, а затем продолжить следующий цикл, как показано ниже:imgРисунок 44-47

return-слова

return-заявление прекращает выполнение функции и возвращает значение функции. return-заявление может появиться только в теле функции, и если оно появится в любом другом месте в коде, это вызовет синтаксическую ошибку!imgРисунок 44-48

Стратегическая структура

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

В этом случае строка 4 - 7 является основной входной функцией всей программы, то есть компьютер выполняет код с четвёртой строки; сразу после прямого выполнения строки 5 он попадает в бесконечный цикл; затем в бесконечных циклах постоянно выполняются логические функции onTick и sleep; onTick - это также 1-я строка кода, и вы можете написать логику на 2-й строке; мы знаем, что в цикле скорость выполнения программы очень быстрая, поэтому с помощью Sleep можно приостановить работу, а следующий код Sleep (500) - это каждый цикл, который засыпает на 500 миллисекунд.imgРисунок 44-49

Подведение итогов

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

Следующая часть

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

Домашнее задание

1, попробуйте получить исторические K-линии с помощью языка Python в инструменте квантования изобретателей. 2. Попробуйте написать стратегический код в начале этого раздела и написать комментарий.

4.4 Как использовать язык Python для реализации стратегических сделок

Аннотация

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

Стратегическое описание

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

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

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

Правила стратегии проезда в Доньчжоне

Тоньцзянский канал относится к тенденционным показателям, его внешний вид и сигналы немного похожи на индикаторы Брин-Белда. Однако ценовой канал Тоньцзянского канала построен на основе наивысших и самых низких цен в течение периода. Например: при расчете максимального значения наивысшей цены последних 50 линий К формируется трасса; при расчете минимального значения наименьшей цены последних 50 линий К формируется трасса. Индекс состоит из трех различных цветных кривых, которые по умолчанию являются максимальными и минимальными ценами за 20 циклов, чтобы показать волатильность цен на рынке. Когда его канал узкий, это означает меньшую волатильность рынка, а широк, наоборот, означает большую волатильность рынка.

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

Метод вычисления тоннеля Дончжан

В инструментах количественного анализа изобретателей метод расчета тонцзянского канала очень прост, можно использовать прямой доступ к максимальной или минимальной цене в течение указанного цикла, как показано на рисунке ниже: строка 5 - максимальная цена максимальной цены 50 циклов, строка 6 - минимальная цена минимальной цены 50 циклов.imgРисунок 4-50

Стратегическая логика

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

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

Условия продажи Большое предложениеЕсли у вас нет акций, и цена закрытия больше, чем цена на рынке:Открытие акцийЕсли у вас нет акций, и цена закрытия ниже, чем на трассе:Многоголовые позиции: если у вас больше заказов, и цена закрытия меньше среднейПлохое положениеЕсли у вас есть пустые билеты и цена закрытия больше средней:

Реализация стратегического кода

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

Первый шаг: использовать библиотеку транзакций

Вы можете представить библиотеку сделок как функциональный модуль, и использование библиотеки сделок позволяет вам сосредоточиться на написании логики стратегии. Например, когда мы используем библиотеку сделок, мы можем открыть позиции прямо с помощью следующего API из библиотеки сделок; но если мы не используем библиотеку сделок, мы можем открыть позиции, чтобы получить доступ к ценам сделок, чтобы рассмотреть вопросы с заявками, которые не выполняются, чтобы рассмотреть вопросы снятия заказов и т. д.imgРисунок 4-52

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

В JavaScript есть встроенная библиотека шаблонов, и Python требует копировать и сохранить этот шаблон:https://www.fmz.com/strategy/24288На странице редактирования стратегии выберите ссылку.

img

Второй шаг: получить данные.

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

Получение данных K-линии

Во-первых, нужно получить K-линейный массив и текущую K-линейную цену закрытия, так как имеется K-линейный массив, чтобы можно было вызвать API для получения максимальной или минимальной цены N циклов.imgРисунок 4-53 Как показано на рисунке выше: Четвертая строка: Получить K-линейный массив, который является фиксированным форматом. Строка 5: Профильтруйте длину K-строки, потому что мы рассчитываем максимальную или минимальную цену цикла N, параметры используются 50, когда K-строка меньше 50 копеек, это не подсчитывается. Строка 6: Мы используем код len ((records - 1)), чтобы получить последние данные K-линейного массива, то есть последние данные K-линий. Данные данного объекта содержат: открытие цены, максимальные цены, минимальные цены, закрытие цены, объем сделок, время и т. д.

Доступ к данным о хранении

Информация о наличии позиции является важным условием для количественной стратегии торговли. При установлении условий торговли необходимо также определить состояние позиции и количество позиций для размещения заказа. Например: при установлении условий торговли покупкой открытой позиции, если есть позиции, то это не обязательно повторяется; если нет позиций, то это возможно.imgРисунок 4-54

Как показано на рисунке выше: Это функция, которая получает информацию о хранении, и возвращает 0 при пустом хранении; 1; 1 при пустом хранении; обратите внимание на код выше: Строка 2: Создать функцию, которая называется mp, и у которой нет параметров. Строка 3: Получить массив хранения, который является фиксированным форматом. Четвертая строка: определить длину матрицы хранения, если ее длина равна, то она должна быть пустой, поэтому она возвращает 0. Строка 6: с помощью цикла "for" мы начинаем проходить по матрице, и следующая логика будет довольно простой: если у нас много цифр, мы вернем 1; если у нас нет цифр, мы вернем -1; Строка 18: Вызвать только что написанную функцию получения хранимой информации mp.

Получить самые высокие и самые низкие цены на последние 50 K-линий

В инструментах для количественной оценки, разработанных изобретателями, функции TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Highest TA.Highest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TA.Lowest TAimgРисунок 4-55

Как показано на рисунке выше: Строка 19: Вызвать функцию TA.Highest, чтобы получить максимальное значение максимальной цены 50 циклов Строка 20: Вызвать функцию TA.Lowest для получения минимальной цены 50 циклов Строка 21: среднее значение рассчитывается на основе максимального значения максимальной цены 50 циклов и минимального значения минимальной цены 50 циклов

Третий шаг: заключить сделку

С этими данными можно написать логику транзакции и код для транзакции под заказ. Формат также очень прост, наиболее часто используемый является фраза "if", которая может быть описана словами: "если условия 1 и 2 утверждены, под заказ; если условия 3 или 4 утверждены, под заказ".imgРисунок 4-56

Как показано на рисунке: Строка 22: Использование библиотеки классов сделок, это фиксированный формат Строки 23 и 24: Это простой многоодинный высказывание, в котором используются аналогичные параметры и аналогичные логические параметры, которые мы выучили ранее, что означает, что все позиции будут свернуты, если в данный момент у вас многоодинный, и цена закрытия меньше среднего. Строки 25 и 26: Это утверждение о плоском пустом списке, в котором используются знаки сравнения и логические знаки, которые мы выучили ранее, что означает, что все позиции будут свернуты, если текущий лист будет пустым, а цена закрытия будет больше средней. Строка 27: Определить текущее состояние запасов, а если они пусты, то следующий шаг. Строки 28 и 29: Определить, является ли цена закрытия выше, чем цена открытия, если цена закрытия выше, чем цена закрытия. Строки 30 и 31: Определить, является ли цена закрытия меньше низкого уровня, и продать открытую позицию, если цена закрытия упала ниже низкого уровня.

Подведение итогов

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

Следующая часть

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

Домашнее задание

1, Начиная с Линьцзинь, приступить к реализации стратегии данного раздела. 2. Попробуйте добавить к стратегии данного раздела однополый показатель, чтобы снизить частоту торгов.

Глава 5: Стратегический обзор, дезинфекция и улучшение

5.1 Значение и ловушки рецензирования

Аннотация

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

Значение рецензирования

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

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

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

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

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

Ловушка повторного тестирования

Появился сигнал о том, что ловушка мерцает:

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

Проверка будущих функций ловушки:

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

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

Отслеживание ловушки

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

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

Невозможная цена ловушки

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

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

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

Четвертый вид: Чёрный лебедь. В черном круге, в случае с черным лебедями, несмотря на то, что на первый взгляд, есть цена открытия, цена максимума, цена минимума, цена закрытия, на самом деле, в экстремальных условиях дня, средняя цена пуста, много стоп-лосс, что приводит к толчкам, ликвидность - нулевая, сложность сделок очень велика, но можно остановить убытки при повторном тестировании.imgРисунок 5-2

Слишком сильная ловушка

Каждый раз, когда я смотрю на этот рисунок, я думаю: ха-ха-ха... Посмотрите на этот рисунок, и вы увидите, что абсурдная модель, если она достаточно сложная, может идеально соответствовать данным.imgРисунок 5 - 3

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

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

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

Проверка отклонений выживших в ловушке

На Уолл-Стрит распространена шутка: предположим, что на рынке есть 1000 зайцев, которые участвуют в инвестировании, и в первый год выбросить 500 зайцев, которые проиграли в большом разряде; в следующем году выбросить половину и остаться с 250 зайцами; к концу третьего года остаться с 125 зайцами.imgРисунок 5 - 4

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

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

Например, на рисунке слева мы видим, что большинство инвесторов уверены в том, что результат будет хорошим.imgРисунок 5-5

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

Оценка затрат на удар ловушки

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

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

Отзывы без сдвига

imgРисунок 5-6

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

Плюс повторное измерение скольжения

imgРисунок 5-7

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

Подведение итогов

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

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

Домашнее задание

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

5.2 Как провести количественную рецензию

Аннотация

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

Рекурсионный анализ представляет собой рекурсионный анализ данных, который проводится путем рекурсионного анализа исторических данных K-линий и имитации реальных правил торговли, в конечном итоге объединяет данные, такие как коэффициент Шарпа, максимальный рекурсионный показатель, годовой доход, кривая капитала и т. д. за определенный период времени.

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

Введение интерфейса рецензирования

Мы использовали стратегию количественного материнского языка для разработчиков и создали веб-сайт для количественных торговых инструментов.www.fmz.comНажмите на "Контроль-центр", "Книга стратегий", "Выберите стратегию", "Аналогическое повторное тестирование" и вы попадете на следующую страницу:imgРисунок 5-8

В интерфейсе конфигурации повторного тестирования можно настроить его в соответствии со своими реальными потребностями. Например: установить время повторного тестирования, цикл K-линии, тип данных (данные на аналоговом уровне или на дискетном уровне; в сравнении с аналоговом уровне данные повторного тестирования быстрее, а на дискетном уровне данные повторного тестирования более точны); кроме того, можно установить процедурные сборы при повторном тестировании, а также начальный капитал счета и т. д.

У малейших операторов есть два способа повторного выполнения: модель закрытия и модель реального времени. Модель закрытия означает, что модель выполняется только после завершения текущей линии K, а сделка выполняется в начале нижней линии K. Модель реального времени означает, что модель выполняется один раз при каждом изменении цены и что сделка выполняется сразу после того, как был создан торговый сигнал.imgРисунок 5-9

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

Фьючерсные опционы заполняют контрактную разновидность, которую нужно просматривать, например, rb000 или rb888. Реальный дисковый опцион используется в основном для реального дискового трейдинга, при этом в реального дисковом трейдинге можно сохранить настройки по умолчанию. Если клик на автоматическое восстановление прогресса является истинным, то после того, как политика остановит робота в режиме реального диска, робот будет автоматически восстанавливаться до позиции сигнала, без необходимости пересчитывать сигнал.imgРисунок 5-10

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

Стратегическая рецензия

Перед тем, как проанализировать, сначала определите свою торговую стратегию, здесь мы приводим примеры стратегии Thermostat, которая будет использоваться в зависимости от состояния рынка, в зависимости от тренда, в зависимости от тренда, а в зависимости от шока.imgРисунок 5-12 В аналоговом интерфейсе повторного тестирования, после настройки настроек повторного тестирования, нажмите на кнопку "Начать повторное тестирование", и результаты повторного тестирования сразу же появятся через несколько десятков секунд. В журнале повторного тестирования записывается количество секунд использования повторного тестирования, общее количество журналов и количество сделок. В нем информация о счете, которая печатается, отражает результаты стратегического повторного тестирования: средний доход, убыток, гарантийный размер, расходы на обработку и прогноз прибыли и т. д.imgРисунок 5-13

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

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

Ежегодный волатильность, как и в названии, является днем волатильности x число дней торговли в году, это мера риска фонда, но это абсолютно не все риски. Например, стратегия A имеет большую волатильность, но постоянно колеблется вверх, доходность хорошая, стратегия B имеет небольшую волатильность, но постоянно неподвижна, можем ли мы сказать, что стратегия B лучше стратегии A?imgРисунок 5-14

Наконец, в блоке информации журнала подробно записывается, как была сделана каждая сделка при повторном рассмотрении, включая конкретное время проведения сделки, биржу, тип открытия и закрытия, цены, которые были сделаны, количество сделок и печатная информация.imgРисунок 5-15

После повторного тестирования

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

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

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

Подведение итогов

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

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

Домашнее задание

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

5.3 Как читать отчеты о результатах стратегических ретроспекций

Аннотация

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

Объективная и полная оценка

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

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

Ответ: нет. Односторонняя оценка приведет к тому, что система количественных сделок окажется в тупике.

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

Торговая система, которая может быть проверена исторически, не обязательно является полезной, но не может быть проверена исторически. В целом, мы должны анализировать отчетность о результатах с точки зрения стабильности, устойчивости, ожидаемости или нет.imgРисунок 5 - 17

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

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

Важные показатели эффективности

Максимальный коэффициент вывода активов (Max Drawdown)

Максимальное обратное расчетное уравнение для


Связанные

Больше

Hailhydra2Хорошая статья!

Куантизация пустотыотметка