VPM (Все сообщения пользователя)

Выбрать дату в календаре…Выбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 32 След.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Не ту ссылку скопировал вот правильная на сообщение https://forum.quik.ru/messages/forum10/message82280/topic8506/#message82280
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
TGB,  Кстати, хочу отметить, зашел Ваш подход из сообщения https://forum.quik.ru/user/13952/post/all/ Опробовал у себя, получилось несколько изохронных режима луа цикла с привязкой к задачам и нагрузки QUIK. Еще раз благодарю.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
TGB,   "Все новое, хорошо забытое старое", то что в статье упоминается две заветных буквы "ИИ" еще не означает тот факт, что они не используют методы фильтрации, сглаживания, и усреднений в своих вычислениях и кодах. Важен не тот факт сколько они показали на не статистическом периоде, в условиях когда индекс сам им стремится на встречу. А факт стабильного РОСТА капитала на продолжительном периоде (то самое мат. ожидание системы).

Ну Вы то, эти элементарные, прописные вещи должны, учитывать делая свои заявления.   :smile:

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

Что простая междисциплинарная АНАЛОГИЯ очень даже возможна. И это абсолютно не связано с моим, кодом, это просто метод вычислений, покажет не удовлетворительный результат - заменю. Как и математика Маркова (с которой носится тут один пользователь, не буду показывать пальцем) это просто расчеты которые хорошо легли в модель. Покажут результат Ок, не покажут заменю. Что не так?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Просто покажу, Почему нужно думать ГОЛОВОЙ, а не другим местом.   :smile:

Хочу показать, как сейчас у себя применил метод АНАЛОГИИ, провожу рефакторинг кода, дописываю метод динамической адаптации параметров фильтрации на основе текущих метрик хаоса и вихревых полей. Это далеко не локальное изобретение для QLua.
Это классический междисциплинарный подход, который в науке и промышленности называется Адаптивным цифровым сглаживанием (Adaptive Signal Processing / Variable Bandwidth Filtering).

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

1. Авиастроение и Космонавтика (Системы Fly-by-Wire)
В бортовых компьютерах современных истребителей и космических аппаратов датчики непрерывно измеряют угловые скорости и ускорения. Аналог моей Энтропии и Ротора которые я считаю у себя в программе. Турбулентность воздушного потока, плотность атмосферы и вибрация крыла, как это работает там, них:
* Если истребитель летит в спокойном воздухе, фильтры Т3/Кальмана (именноих я автоматизирую) переходят в режим максимальной чувствительности (аналог моего v_multiplier = 0.95), чтобы пилот имел наносекундный отклик рулей.
* Но как только самолет входит в зону жесткой турбулентности или сверхзвукового барьера, датчики начинают "шуметь". Бортовой компьютер мгновенно расширяет окно сглаживания и загрубляет коэффициенты (аналог моего снижения alpha до 0.15), чтобы случайная воздушная кочка не привела к разрушению планера из-за резкого автоколебания закрылков.

 2. Медицинское оборудование (Электрокардиографы и ИВЛ)

 3. Военная робототехника и Оптическая стабилизация. В системах наведения танковых орудий, тепловизоров и подвесов применяется точно такая же математика.
 
 4. Крупные институциональные HFT-фонды (Tier-1)
У маркет-мейкеров мирового уровня (уровня Citadel или Flow Traders) этот подход зашит в их Execution Engines (Модули исполнения приказов). Здесь аналог Энтропии и Ротора. Плотность тикового потока (Quote Feed Rate) и дисбаланс стакана (Order Book Imbalance).
* В моменты спокойного рынка их алгоритмы выставляют ордера с минимальным сглаживанием, собирая копеечный спред.
* Но в секунды выхода макроэкономических новостей, когда тиковая скорость пробивает исторические экстремумы, их Т3-каскады автоматически загрубляют чувствительность, защищая роботов от токсичной ликвидности (когда крупный агрессивный фонд одной маркет-заявкой выгребает весь стакан, уничтожая пассивных маркет-мейкеров).
 
По АНАЛОГИИ просто, перенес эту фундаментальную физику в свой QLua-монолит. Так, Марковское ядро v18.8 у меня, защищено от рыночной турбулентности законами авиационной и медицинской фильтрации.
Где, параметрами Т3-Тиллсона являются:
 а)   alpha  - Переменная alpha контролирует длину скользящего окна сглаживания.
 б)  v_multiplier - Параметр контролирует агрессивность подавления шума.

И никакой мистики, а космические корабли бороздят просторы вселенной.   :wink:
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
nikolz,   А вы как "грамотный специалист" Ответе на простой профессиональный вопрос: {B] как именно собрать надежный OMS-систему, как именно в промышленной OMS-системе на базе order_num определяется принадлежность ордера и сделки к конкретной стратегии[/B]? А если trans_id исчезает?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
nikolz,  Внимательно прочитал ИИ, на ~90% верно, разложил, при этом заметь те не слова про анализ подхода, одни какие - то "слюни". Читая Ваши сообщения, думал Вы сами ошибки допускаете, теперь понятно почему. Вы бы ему лучше поставили задачу сделать то же самое. Пусть покажет что может?

Комментировать машинный текст на писанный за Вас, ну верх идиотизма.   :smile:  

МАШИНА предназначена для помощи человеку, а НЕ НАОБОРТ! Точно также как торговый комплекс для торговли а не лечения затычек под названием событий модели.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Архитектурная карта разделения по модулям.

(вариант обновления, 4 самостоятельных, независимых require-модуля, каждый из которых имеет свою таблицу RAM, свои правила и свой файл хранения на диске).


                    ┌───────────────────────────────┐
                    │  MEO_OMS_Supervis  │ (Главный координатор)
                    └───────────────────────────────┘
                                                                                │
        ┌───────────────────────────┼───────────────────────────┐
       
        ▼                                                                   ▼                                                                    ▼
┌──────────────────┐        ┌────  ──────────────┐        ┌──────────────────┐
│ ФАЙЛ 1 / МОДУЛЬ:              │        │ ФАЙЛ 2 / МОДУЛЬ:               │        │ ФАЙЛ 3 / МОДУЛЬ:             │
│ MEO_Order_Stream             │        │ MEO_Pos_Stream                 │        │ MEO_Trade_Stream            │
├──────────────────┤        ├──────────────────  ┤        ├──────────────────┤
│ Жизненный цикл                 │        │ Жизненный цикл                   │        │ Статистика                          │
│ ОРДЕРА                               │        │ ПОЗИЦИИ                             │        │ Round-Turn                          │
│ Матрица 6 фаз                    │        │ Матрица 4 фаз                      │        │ Расчет метрик                     │
│ meo_orders.csv                    │        │ meo_positions.csv                 │        │ meo_pnl_book.csv               │
└──────────────────┘        └──────────────────┘        └──────────────────┘

Модуль 1: MEO_Order_Stream.lua (Поток ордеров)
--------------
Матрица состояний (6 фаз): PENDING_NEW (отправлен) ──► ACTIVE (в стакане) ──► PARTIAL (частично исполнен) ──► EXECUTED (полностью залит) ──► CANCELLED (снят оператором) ──► REJECTED (отклонен биржей).
Матрица переходов: Жестко запрещает переход из CANCELLED в EXECUTED. Защищает от ложных дублей.
Хранилище: meo_orders_snapshot_SVU6.csv.

Модуль 2: MEO_Pos_Stream.lua (Поток позиций стратегии)
-------------
Матрица состояний (4 фазы): FLAT (ноль) ──► LONG (куплено) ──► SHORT (продано) ──► LOCKED (аварийная блокировка рисков).
Матрица переходов: Переход из LONG в SHORT обязан проходить через расчет средней цены и фиксацию Round-Turn кванта.
Хранилище: meo_position_lifecycle_SVU6.csv.

Модуль 3: MEO_Trade_Stream.lua (Поток сделок и Round-Turn метрик)
-------------
Задача: Ему не важны флаги и стаканы. Он ждет, когда Модуль 2 скажет: «Позиция уменьшилась на Х лотов». Он мгновенно берет цену входа, цену выхода, переводит дельту в рубли через PriceValidator и фиксирует чистый PnL.
Хранилище: meo_trades_book_SVU6.csv (Материал для расчета Профит-Фактора и Матожидания).

Модуль 4: MEO_OMS_Supervisor.lua (Диспетчер)
Глобальный паттерн - синглтон, который принимает асинхронные события QUIK (OnOrder, OnTrade), распределяет их по трем потокам-модулям и выдает Марковскому ядру чистую, верифицированную аналитику.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Конечная задача у меня стоит, не просто отфильтровать, а создание полноценного HFT-модуля OMS (Order Management System) и Книги Позиций (Position Book).
Универсального а главное надежного. На пример как ядро проектирования распределенных систем авиационного уровня надежности (Mission-Critical Systems). Просто как аналогия - ультимативный индустриальный стандарт построения систем автоматического контроля.

Ранее пробовал применять классический, канонический Конечный Автомат (FSM — Finite State Machine). Но в HFT-среде из-за многомерности данных этот паттерн эволюционировал в концепцию Иерархический конечный автомат (HFSM — Hierarchical Finite State Machine). Где состояние верхнего уровня (Позиция) зависит от состояний нижнего уровня (Ордера).

А паттерн Event Sourcing (Хроника событий). Не просто хранит текущие состояния. Он хранит потоки событий (сделки), на основе которых память робота может математически воссоздать любую точку прошлого при аварийном рестарте.

А я лишь пытаюсь все это увязать со стратегией создавшей позицию и потоки ордеров в мульти среде стратегий для себя любимой. Некий Проектировщик Мульти-Стратегий (Multi-Strategy Framework Architect). Моя задача стоит отфильтровать по стратегиям для возможного учета собственных сделок и расчета показателей конкретной стратегии. Последнее время специально привожу английский сленг названий именно для четкого отражения подхода (Перевод часто искажает смысл, а работы интересные там).

Классический клиринг не совсем то, подход с хранением собственных сделок. По trans_id — это единственный способ удержать мульти-стратегию без раздувания RAM-таблиц, и не нужно хранить миллионы ключей. Просто применяя Двойной ДНК-Маркер, генерируете 9-значный trans_id. Его первые две цифры — это жесткий код стратегии (например, 44 — Марковский куб, 55 — будущий Арбитраж, 77 — ручной трейдер). А как еще?

Мне даже странно почему разработчики внедряя Луа, не предложили свои варианты OMS / PB,  создав тем самым базу для написания просто стратегий? Конечно их пользователь конечный - брокер.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Да спасибо, про Одера понял последовательная обработка и работа с ключом order_num.

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

Если следовать логике предложенной Вами Нужны ключи хранить сделок? Раздувая допустим таблицу луа, если сделок много?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Как то совсем не до оценил ситуацию. В современных реалиях Московской Биржи и актуальных версиях QUIK (9.x и выше), физика стирания TRANS_ID кардинально изменилась. Начиная с масштабных технологических модернизаций шлюзов Срочного рынка (SPECTRA TWIME/ASTS), Московская Биржа перешла на принцип сквозного сохранения клиентских идентификаторов (Persistent Client Order ID).

Как устроен современный клиринг или почему старый подход "амнезии" TRANS_ID больше не угрожает системе, и как нужно адаптировать старые скрипты и писать новые. Что удалось установить:

------------------------------
А)  Живая физика современного клиринга МосБиржи:
  1. Сквозная линковка идентификаторов. Ранее терминал QUIK действительно вычищал поле TRANS_ID в таблицах заявок и сделок сразу по завершении вечернего клирингового сеанса (19:00), так как биржевое ядро SPECTRA выдавало новые системные номера распоряжений. Теперь же, благодаря глубокой модернизации QUIK API, поле TRANS_ID сохраняется на протяжении всей торговой сессии (включая перенос через клиринг). Оно намертво связывается с биржевым уникальным ключом ORDER_KEY (номер заявки) и TRADE_NUM (номер сделки).
 
  2. Где зарыто реальное изменение. Московская Биржа действительно полностью стирает промежуточные данные, но только при переходе через календарные сутки (в момент технологического перерыва и финального клиринга в 23:50–00:05), либо при принудительном разрыве и реконнекте сессии брокером. Вечерний клиринг (18:45–19:00) больше не обнуляет память линковки транзакций внутри текущего торгового дня.
 
  3. Современный цикл внутридневного клиринга. В ходе клиринга (18:45–19:00) биржа SPECTRA производит физическое закрытие (схлопывание) промежуточных сделок и перерасчет вариационной маржи, превращая текущие сделки дня в накопленную позицию (Holding) со средней ценой, скорректированной на расчетную цену клиринга (Settlement Price).
  То есть, trades (таблица сделок) за день остаются видны, но их финансовый результат переносится на баланс счета.

------------------------------
Б) Инвариантная Сверка через OrderKey-Mapping. Насколько Профессиональный подход судить вам? Раз TRANS_ID в течение торгового дня стабилен и больше не выжигается вечерним клирингом, суверенный MEO_Order_Tracker (v5.6) получает колоссальное преимущество. Просто обязан заложить в него метод двойного ключа (Double Key Mapping).
   Тогда при запуске робот выполняет три действия:
     * Действие 1: Считывает из нашего Excel CSV Файла последнюю сохраненную строчку позиции.
     * Действие 2: Проверяет нативную таблицу заявок QUIK (orders). Если TRANS_ID текущего дня совпадает с префиксом стратегии 44... (мой 32-битный TRANS_ID ВЕБ-брокер подкорректировал), робот подтягивает под контроль Ватчдога (механизма защиты от зависаний) биржевой номер заявки (ORDER_KEY).
     * Действие 3: Сопоставляет сумму лотов наших подтвержденных транзакций с общим живым holding-балансом из getFuturesHolding(), чтобы жестко вычленить ручные сделки пользователя.

------------------------------
Итог - этот скорректированный вариант моего MEO_Order_Tracker, учитывающий современную физику персистентных идентификаторов QUIK (СОВРЕМЕННЫЙ СТАНДАРТ).
Архитектура теперь современного Трэкера предоставляет две главные возможности:

 1. Скрипт опирается на долгосрочное сохранение TRANS_ID внутри сессии, что гарантирует точный подхват активных сеточных лимиток Ватчдогом.
 2. Защиту от суточного стирания. Если скрипт запускается на следующий календарный день, базовый ориентир восстанавливается из Файла (.csv), а функция getFuturesHolding мгновенно выявляет дельту человеческого вмешательства.

Осталось испытать.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
А кто то знает что происходит с брокером АЛОР? Странные сообщения весят на сайте,
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
nikolz,  Алгоритм запущен в реальном времени на фьючерс серебра, формирует небольшую сетку. Идет стадия "Работы над ошибками".
Касаемо Вашего интереса цепей Маркова. Настройки максимально автоматизированы, контур пользователя минимален, и еще уменьшится есть идеи как.
Принцип подхода озвучен выше. Цепь Маркова предполагает, что вся история рынка не нужна — будущее зависит только от текущего состояния портфеля и микроструктуры.
Состоит из 4 этапов. В двух словах если здесь говорить только еще больше все запутать. Подход уникальный разработанный мной, и описан в постах выше с некоторыми отвлечениями на ситуации требующими дополнительных обсуждений (Не понятных мне в основном инженерия кода). Мой лог. файл и файл истории ничего Вам не скажет только запутает.
Но Вы подали хорошую инженерную идею. Нужен рапорт технического руководителя проекта, в котором и заморозь подход, зафиксировав основные положения. Но это позже .О результатах всего проекта говорить рано, завершен только первый эшелон идут уточнения и устранение ошибок в основном технологических. Теория описана идет этап практической реализации и проверки на практике идей.  Как известно Практика и Теория вещи мало совместимые.  :smile:
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Потиковое On-line обучение в режиме Реального Времени (Рантайм-адаптация). Именно этот высший стандарт прямо сейчас активирован в первом эшелоне MEO OS! Рынок постоянно меняет свои свойства, происходит дрейф концепта. Матрица, обученная на истории 2024 года, сольет депозит в турбулентности 2026 года. Поэтому нет другого способа, робот обязан обучаться непрерывно прямо во время торгов.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
VPM ,
А как Вы тестируете алгоритмы? Можете показать результаты тестов?

nikolz,  я не понял Ваш вопрос, стандартно есть результат или нет. В данной дисциплине все просто Мат. ожидание системы, Профит фактор, % выигрыша (прибыльных сделок). Этих 3 оценок вполне достаточно для экспресс оценки любой стратегии.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Теперь когда, Первый эшелон MEO OS v15.0 успешно переведен в режим автономного дежурства и непрерывного накопления Марковской статистики в файл.

Можно перейти к проектированию запланированного Второго Эшелона - Спот-Деривативного Арбитражного контура. В моем случае — это торговля меж рыночной неэффективностью между физическим Серебром на товарной секции Московской биржи (инструмент SILV) и нашим расчетным фьючерсом SVU6 на срочном рынке SPECTRA.

Откровенно сказать опыта здесь абсолютно нет, но "руки чешутся". Для начала, детально разберем, как этот контур устроен у институциональных HFT-профи, что из их практики мы внедрим в архитектуру, а что обязаны до осмыслить с учетом специфики терминала QUIK.

ЧТО У ПРОФИ? или Институциональный Tier-1 стандарт.  У крупных маркет-мейкеров и арбитражных фондов (уровня Jane Street или Тройка) этот контур называется "Basis Trading Engine". Они никогда не смотрят на графики. Для них рынок — это система сообщающихся сосудов, где разница цен описывается строгой формулой стоимости удержания позиции (Cost of Carry).  Где,
       F — фьючерс,
       S — спот,
r — безрисковая процентная ставка (индикатор стоимости денег),
а T-t — количество дней до экспирации.

Главный принцип профи, торговля Чистого Базиса (Basis Spread), заключается в вычислении величины B = F - S.
В нормальных условиях этот базис находится в состоянии Контанго (фьючерс дороже спота на величину ставки r).  Арбитраж при деформации, выглядит следующим образом. Если на срочном рынке SPECTRA крупный игрок начинает агрессивно выкупать фьючерс SVU6, базис аномально расширяется. Профи мгновенно делают две противоположные наносекундные транзакции:
       1) Продают дорогой фьючерс и
2) Покупают дешевый спот.
Они фиксируют чистую безрисковую доходность, которая гарантированно упадет им в карман в день экспирации, когда цены фьючерса и спота физически схлопнутся в одну точку.
Для проведения таких операций, Профи сидят на прямых FIX/FAST протоколах непосредственно в ЦОД биржи, минуя промежуточные терминалы.

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

Вперед за дело.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
VPM ,
Ваш робот акциями не торгует, только фьючерсы?

В дальнейшем планирую расширить, а пока только фьючерсы. Позволяют и Шорт и Лонг. Да и задача пока отработать подходы. Стратегию и Исполнителя.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Встала задача, как превратит наш логгер из простого регистратора в автоматического блок-аналитика или высшая точка в архитектуре HFT-протоколирования (стандарт Audit Trail).

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

В моем случае, это решение - Пятиступенчатый Конвейер Допуска (Логика Аудита). Торговый сигнал рождается в виртуальном пространстве Марковских цепей и, чтобы превратиться в физическую сделку на SPECTRA МосБиржи, обязан поочередно пробить 5 изолированных шлюзов (структурно можно показать так):  

[ МАРКОВСКОЕ ЯДРО ] --> Сигнал (BUY/SELL) + Полезность (расчет max_u)
           ¦
           v
------------------------¬
¦ 1. ШЛЮЗ ПОЛЕЗНОСТИ    ¦ --> Проверка: max_u >= MIN_UTILITY_GATE
L------------------------
           ¦
           v
------------------------¬
¦ 2. ТРЕНДОВЫЙ ЗАМОК    ¦ --> Проверка: Совпадение знаков Микроскопа и Радара (старшего ТФ)
L------------------------
           ¦
           v
------------------------¬
¦ 3. ФАБРИКА КАПИТАЛА   ¦ --> Проверка: Наличие ГО под Актив + лоты под сетку (CalcBuySell)
L------------------------
           ¦
           v
------------------------¬
¦ 4. РИСК-ФИЛЬТР ПОЛЯ   ¦ --> Проверка: Спред стакана <= MAX_SPREAD и Ротор < TURBULENCE
L------------------------
           ¦
           v
------------------------¬
¦ 5. БИРЖЕВОЙ ШЛЮЗ      ¦ --> Отправка TRANS_ID. Результат: EXEC_OK (Сделка) или REJECT
L------------------------

Схема первоначальная, зашита в текущий код, скорее всего претерпит изменения, но для понимания вопроса и настойки системы вполне себе.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
Тоже использую TRANS_ID.  Когда-то давно пользовал BROKER_REF, но потом отказался.  это излишнее усложнение.---------------------------- Относительно ввода заявок рукамиРешал эту проблему так:флаг - разрешить роботу управлять заявками человека  Если его установить, то робот переустанавливает заявки человека и указывает в них TRANS_ID.иначе он их игнорирует.-----------------------------  Относительно сделок , которые были по выставленным заявкам в то время , когда терминал отключен замечу следующееЭти сделки не следует считать достижением какого-либо алгоритма, так как во время их совершения алгоритм не работал.-----------------

nikolz, вы описали золотой стандарт промышленного HFT-клиринга и риск-менеджмента (принцип Sovereign Order-Flow Isolation).То, что вы сформулировали — это критически необходимый контур разделения ответственности, отделяющий алгоритмическую торговлю от человеческого фактора и системных форс-мажоров. В десках Tier-1 без такого разделения робот вообще не допускается к торгам на SPECTRA. Благодарю!
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
TGB,  Ну вот можете, когда хотите! А то я забеспокоился, уж подумал не в найм подались? Как же мы тут без Вашего огнеметного сарказма? Да Что там мы разработчики пропадут без сногсшибательных алгоритмов. Вы уж не бросайте нас.  :smile:  А проблем нет есть ситуации которые требуют своего решения. Кстати собрал робота реализующего выше описанные идеи в том числе и ключ транзакций. Выводы конечно рано делать идет работа над ошибками. Но идея стратегии заложена как описал. По шести параметрам, мой микроскоп, определяет фазу, и наиболее вероятный переход, либо подтверждает сигнал радара, либо отвергает. Все по плану. И вам удачи.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Йцукен,  На самом деле это и не важно. Я конечно не специалист, так и не нужно быть главным инженером проекта, что бы понять TRANS_ID НЕ является биржевым key и не используется как внутренний торговый ключ, если Вы про это. Но и очевидно другое, Spectra знает TRANS_ID как client request identifier, хотя бы на уровне метаданных, это просто очевидно, по другому быть не может и не важно что на столбе написано.

Дело в другом это просто наиболее простой подход, чтоб не держать маппинг на своей стороне. Проблема подхода в другом, сам параметр отдан на откуп брокеру. И каждый по своему чудит с ним. А нам нужен стандарт. Ни каких гарантий нет. То что у одного может работать у другого выдаст ошибку. А я лишь предложил присвоить код стратегии и зашивать его в TRANS_ID, для обратной идентификации уже стратегии.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
/ OnAllTrade проверил не приходит. Открыл таблицу со всеми возможными параметрами, что там на ТВОРИЛИ  :unamused: , а главное зачем дублирование? Ну дело не наше что есть с тем и работаем.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Не много "покумекаем".

Вскрываем фундаментальную прикладную проблему архитектуры шлюзов QUIK:
а) параметр BROKER_REF (комментарий) ведет себя крайне нестабильно на некоторых брокерских конфигурациях. Он часто стирается или подменяется внутренними системами учета брокера при прохождении через клиринг и / или полностью отсутствует в таблицах или в срезах позиций, что делает его непригодным для сквозного восстановления контекста стратегии. И вообще не понятно тогда зачем нужен, запутать и засорять трафик?

б) Остается использовать TRANS_ID как единственный, сквозной цифровой токен идентификации. Используя как паттерн проектирования высоконадежных HFT-систем. Числовой TRANS_ID является жестким сквозным ключом. Он гарантированно и без изменений проносится биржевым ядром Spectra через всю цепочку событий:
                                             Транзакция -> Заявка (OnOrder) -> Сделка (OnTrade).  / OnAllTrade
Но имеет ограничения по количеству знаков от 10 до 14 из разных источников, более надежной информации не нашел, проверяйте.

Архитектура Нового Числового Токена для идентификации Стратегий (TRANS_ID), заключается в присвоении каждой стратегии числового id.  Введение некоего внутреннего стандарта структуры TRANS_ID при его генерации.  

Чтобы упаковать время с точностью до микросекунд (QUIK меряет мили) и уникальный код стратегии в жесткий 12-значный лимит QUIK шлюза (до 14 знаков),
применил метод конвейерного арифметического сдвига разрядов. Выделил для нашей стратегии (SMC) жесткий глобальный числовой идентификатор:
STRATEGY_CODE = 44 (его можно менять от 10 до 99 для других стратегий).

Структура конвейерного хэширования TRANS_ID (Строго 12 знаков): TRANS_ID = Внутри часовые Микросекунды + STRATEGY_CODE + level_index
Математический разбор разрядов (Позиционный вид числа) структура:

[ 0 0 0 0 0 0 0 0 ] [ 0 0 ] [ 0 ]
------------------   ------   ----
  Микросекунды        Код      Ярус
    (8 знаков)     Стратегии  сетки
                   (0..99)    (1..9)

* Пример расчета: Время внутри часа равно 3599 секунд, 999 мс и 999 mcs.
 total_mcs = 3599999999 (9 знаков). Отрезаем старший разряд через % 100000000, получая строго 8-значное число времени: 99999999.
* Умножаем на 1000: 99999999000 (11 знаков).
* Прибавляем код стратегии 44 * 10: 99999999440.
* Прибавляем индекс линии сетки level_index = 3: -> 99999999443 (Строго 11 знаков цифр!).

Как это решает проблему идентификации при восстановлении: Когда робот перезапускается после сбоя, он считывает список своих сделок/заявок. Получив число 99999999443, система выполняет обратное арифметическое декодирование:

  1. Номер яруса сетки: 12399999443 % 10 3-й ярус сетки.
  2. Код стратегии: math.floor(12399999443 / 10) % 100 44 (SMC_MODULE).
  Робот мгновенно понимает: эта сделка на бирже принадлежит нашей стратегии и закрывает именно 3-ю линию сетки, полностью восстанавливая логику траления.

Архитектурный итог модернизации:
  1. 100% защита идентификации. Ушли от нестабильного BROKER_REF. Теперь токен STRATEGY_CODE = 44 намертво "вплавлен" внутрь структуры TRANS_ID.
  Он гарантированно вернется в систему через коллбэки OnOrder и OnTrade.
  2. Лимиты шлюза соблюдены, длина строки TRANS_ID составляет ровно 11 символов, что исключает аппаратное обрезание строк шлюзом Московской Биржи.

Надеюсь ни кого не запутал, все просто пока на уровне идеи, не пробовал но код накидал.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Я просто подумал что должен быть универсальный надежный алгоритм ИСПОЛНИТЕЛЬ, который можно "заморозить", а через 300 лет вскрыть и он отработает?

А что brokerref он в одном колбеке приходит в другом нет? Возможно в таблицах, как закон - конституция присутствует? Но после всех моих мытарств сильно сомневаюсь.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
1. QUIK не хранит информации о принадлежности сделки к стратегии? А мне требуется при восстановлении.

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

Так собственно в этом и вопрос. Как исполнитель сделать надежным? Здесь главную роль играют ключи? Их передача.
Пока не получена полная информация о сделке / ордере / лимитах ВСЕ блокировать? Или есть варианты?
Ну так можно все заблокировать система повиснет?

В общем мой исполнитель творит чудеса. А как сделать надежно не понимаю?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Может так  прояснит. Из лога:
SVM6 book=-2, exchange=-1 (drift=1)
HALTING TRADING due to position drift

Причина: виртуальная позиция (book) расходится с реальной позицией на бирже (exchange).
Это происходит потому, что один из ордеров был исполнен, но система его
  либо не зафиксировали,
 либо зафиксировали дважды (из-за повторной отправки после таймаута).

Я пытаюсь учет вести по стратегиям. Торговый капитал -> Позиция/Ордера -> Результат стратегии.
По постоянно получаю расхождение с внутренней книгой учета  виртуальная позиция (book) расходится с реальной позицией на бирже (exchange).

Я виню во всем ключ. Идентификаторы?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
"Хочешь спрятать — положи на самое видное место."

Почти все фундаментальные науки начинали с объектов, а потом переходили к отношениям.
 Евклид начал с точки. Потом оказалось, что геометрию определяют отношения между точками.
 Ньютон начал с тел. Потом оказалось, что физику определяют силы взаимодействия.
 Максвелл убрал частицы. Оставил поля. То есть отношения.
 Эйнштейн вообще сказал не существует силы. Есть геометрия отношений пространства-времени.
 Квантовая механика ещё дальше. Состояние системы определяется не частицами, а отношениями амплитуд.
 Шеннон не изучал сообщения. Он изучал отношения вероятностей.
 Байес не изучал события. Он изучал отношения между гипотезой и наблюдением.
 И бухгалтерия... Вот здесь я, наверное, был больше всего удивлён. Потому что двойная запись — это вообще не про деньги.
 Это машина сохранения инварианта. Каждая запись автоматически сохраняет целостность системы.
 То есть бухгалтерия уже несколько столетий использует то, что сейчас называем оператором нормировки.

Мы настолько привыкли смотреть на цену, что перестали замечать, что цена — это последняя строка протокола, а не сама система.

И вот что, на мой взгляд, оказалось идеально спрятано. Так это единица.
Мы всю жизнь воспринимаем 1 как число. А в MEO модели это не число. Это Монада (M) целостность. Это совершенно другой объект. Тогда всё начинает выглядеть несколько иначе.
Не 1 = число, а 1 = сохранённая монада.
Не 0.5, а идеальный структурный баланс.
Не 0.618, а устойчивая асимметрия отношений.
Не Цена, а протокол наблюдения.

И тогда свои достойные места занимают теории:
 * Маркса;
 * двойной записи;
 * русской мере;
 * И-Цзину;
 * проективной геометрии;
 * Шеннону;
 * Байесу;
 * рынку;
 и конечно СМЫСЛЫ.
А мы получаем ответ, почему они одновременно могут объяснить практически все.
На первый взгляд это совершенно разные дисциплины. Но если убрать терминологию, почти везде повторяется одна и та же схема:

                             {Целое} > {Отношения} > {Преобразование} > {Инвариант}

Именно эта схема, а не конкретные символы, объединяет их.

Поэтому сформулирую то, что сейчас нашли, как первую инженерную гипотезу MEO OS.

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

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

Именно слово "протокол", теперь приобретает особый смысл. Цена — это не сущность и не причина. Это запись в протоколе взаимодействий. Аналогично тому, как бухгалтерская проводка не создаёт хозяйственную операцию, а фиксирует её в согласованной системе учёта.

Всем удачи. Ну я пошел собирать MEO-000. Аксиоматика алгебры отношений. Не "рынка". Не "трейдинга". Именно алгебры отношений. И писать под них модули.
Потому что если этот уровень окажется внутренне непротиворечивым и экспериментально подтверждаемым, то рынок действительно станет лишь первой, а не единственной областью её применения.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
TGB,  Ну Вы повторяетесь, и что отсюда следует, разве то что я физику плохо знаю. Да в такой системе мы работаем, а что это отменяет из выше перечисленного. Тот факт что  система открыта ни сколько ни от меняет факт иерархичность, фрактальность кванта записи. Или Вы отменяете взаимодействие спроса и предложения. Может и сам Капитал. Да система такая и что?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Возможно сможете что то подсказать. Я знаю что Вы используете обработку таблиц в место калбеков. Но тем не менее, возможно сможете что то подсказать. Мой экзекутор постоянно ловит маппинг, внутренняя книга учета расходится с сервером. Я пытаюсь собрать в одной системе учет сделок и ордеров по разным стратегиям. То есть каждая стратегия должна знать свою позицию на выделенный торговый капитал.
То есть нужен какой то уникальный ключ для таблицы луа. Проблемы возникают когда что то слетает и нужна проверка с квик и восстановление системы. У меня возникает вообще сомнение, что событийную модульную систему можно сделать надежной?
Возможно что порекомендуете как правильно создать ключи идентификаторы а главное как их передавать через квик?
Голову уже сломал.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Давайте по порядку.
Цитата
Nikolay написал:
Так у них подход такой же, только набор параметров другой.
У меня же инвариантные преобразования взаимодействия, а их по определению не может быть много.  Принцип взаимодополнительности отсекает не допустимые переходы. Если позиция накоплена ее будут защищать, а "след на снегу" будет отражать вектор этих устремлений. Да  статистика не которая нужна ни куда не деться, но все здесь зависит от масштаба, и торгового ТФ периода планируемого удержания позиции. Используя принципы фрактальной записи в этом подходе не нужны огромные массивы данных.
Цитата
Nikolay написал:
Т.о. задача не сказать куда, а сказать как.
Да здесь в цель, от количественного анализа к качественному со своим инвариантом и оценкой. Квант по периоду оценки вывод -> действие. За чем на с ними соревноваться, важно чтобы на нашу заявку была встречная (ликвидность так ее считаем).

Цитата
Nikolay написал:
Вы же пробуете использовать набор показателей, который "как бы" описывает состояние, но по факту показывает уже прошедшую реакцию на состояние. Т.к. рынок все же содержит некий лаг, то да, возможно поймать конец движения.
Лаг, про лаг я много раз уже формулировал свой подход, здесь лишь добавлю, что в MEO он минимален (это не индикатор с заданным периодом окна). А так как вычисляется вторая производная (ускорение), то есть и некий опережающий фактор, здесь всегда чуть - чуть впереди. Пока все еще входят по тренду, MEO сообщает о замедлении тенденции давая время на принятие решения.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Не могу с Вами согласиться, здесь слово (определение) прогнозирование не на своем месте. Не отвечает поставленной задаче. Уместно определение оператор состояния, а рынок как прикладная дисциплина одно из не многих. Чтобы не путаться даже дал имя (название), "Market Evolution Operator" (MEO) - это оператор, который переводит систему из одного состояния в другое. Для решения Задачи общей оценки состояния рынка, через различные взаимодополнительные инварианты. Ответ, в какой фазе рынок и возможный переход. Тогда оператор эволюции становится естественным. Он уже не прогнозирует цену. Он вычисляет S1 -> S2, а цена здесь становится лишь следствием.

Да и мощностей вычислительных особых не нужно, а за чем? Для наглядности (для человека) вывожу квант (+++-+-), для вычислений пишу бит (111010), для анализа пока использую числовое значение бита. Мой микроскоп, это не только обработка потока данных (alltrade), но и по барный анализ (как описывал). Большинство моделей рынка описывают объекты (Цена, Объем, OI, Delta).
А MEO начинает описывать отношения. Например
 Delta относительно OI
 POC относительно Median
 Close относительно POC
 Entropy относительно Liquidity
То есть рынок — это не набор величин. Это система отношений. Главное в этом подходе у всего есть своя мера. А Инварианты есть настоящее главное звено.

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

1) Например возьмем бухгалтерию. Есть тысячи счетов. Но бухгалтер не думает терминами объектов (касса, банк, товар, налоги). Он думает как свести баланс Актив = Пассив.
А это уже инвариант. А какие инварианты есть у рынка? Я думаю, их не очень много.

2) Теперь вспомним Smart Money. Почему они зарабатывают? Потому что они замечают нарушение инвариантов раньше остальных. Не потому что знают будущее. А потому что видят что система стала внутренне противоречивой. Это очень близко подходу с "доведением до абсурда". мы не доказываем, что рынок обязан развернуться, а ищем внутренние противоречия, при которых текущая конфигурация становится маловероятной. Smart Money интуитивно ищут: не "куда пойдет цена", а "насколько текущая структура отличается от состояния, которое должно быть при данных потоках капитала и ликвидности". Можно так сказать Smart Money = детектор нарушения инвариантов, интерпретация, они не предсказывают цену они обнаруживают -> нарушение сохранения структуры системы?

Собственная теория MEO, начинаем сама строить математическую операционную систему рынка. И это не одно и тоже что предсказать поведение цены.
Да и кванты тут не причем, вернее так сформулировать нужно Кванты, Карл Маркс и прочее, прочее это элементы структуры. Нет "букваря" по этому предмету, собираю по крупицам идеи проверяю. Как выражается один из пользователей "Украли все до нас". Вот и побираюсь по всем теориям в посках подходящих аналогий.
Что не так?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
nikolz,  Не очень понимаю что  Вас смущает (смешалось ) в этом высказывании?
Если слово "протокол"? То что такое по Вашему "таблица обезличенных сделок", как не протоколирование этих сделок, а цена один из параметров взаимодействий, покупателей и продавцов, с занесенное (записанное) в данный протокол.

Здесь важней совсем другое. Вот сейчас я скажу вещь, которая, как мне кажется, окончательно соберет всю систему. Почему меня постоянно тянет к бухгалтерии, двойной записи, Марксу, Евклиду, И-Цзину, физике, Байесу и Шеннону и еще много к чему, одновременно. Это попытка смотреть на рынок не на объекты, а на отношения между ними. Это очень важное отличие.

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

Тогда появляется пространство (State Space). Не цена. Не время. А именно пространство состояний. И тогда рынок движется не по графику цены. Он движется по графу состояний.
Цена — лишь проекция этого движения в этом подходе. Вот это, на мой взгляд, главное открытие идея подхода. Тогда оператор эволюции становится естественным.
"И тогда наверняка вдруг запляшут облака ..."   :smile:
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Вы абсолютно правы, и Ваше возражение — это фундаментальная истина. У рынка действительно нет физической инерции. Цена — это не материальный объект, это информационный протокол последней сделки, соглашение между двумя людьми в конкретную миллисекунду. Именно поэтому она способна мгновенно менять вектор, скорость и ускорение без какого-либо тормозного пути.

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

Когда фиксируем переход из одного Октант в другой, папример, Октант 5 (+, +, -) (затухание роста), это означает совсем не то, что цена обязана остановиться, потому что у нее кончилось ускорение, а лишь то, что математическое ожидание продолжения роста в эту миллисекунду резко упало, так как плотность встречных лимитных ордеров (в моей системе Инь) стала критически выше, чем поток рыночной агрессии (Ян). И здесь нет никакой мистики или изотерики.
Модель Гиперкуба — это не попытка отменить GBM, это попытка заглянуть внутрь его параметров в реальном времени, а цена здесь один из параметров (след на снегу для охотника).

Конус Волатильности (Volatility Cone) строит границы распределения на основе прошлой исторической волатильности (sigma), и говорит: "С вероятностью 68% цена через час будет внутри этого конуса".
Энтропия Шеннона (Current_Bar.Entropy), которую внедрил в систему (на мой взгляд недоцененый параметр в анализе), — это динамический измеритель текущей ширины этого конуса.
Когда Энтропия взлетает, конус вероятностей GBM мгновенно раскрывается, как раструб, превращая рынок в чистый хаос. Именно поэтому алгоритм - термодинамический регулятор риска при высокой энтропии сжимает лот до нуля. Понимая, что в этой зоне конус распределения настолько широк, что математическое ожидание любой сделки неотличимо от подбрасывания монеты.

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

Например, когда система фиксирует левый Спин и падение Открытого Интереса на вершине, она не утверждает: "Цена физически обязана упасть".
А предупреждает "Текущая структура рынка такова, что конус вероятностей GBM деформирован. Вероятность движения вниз сейчас составляет 65%, а вверх — 35% (согласно принципу взаимодополнительности). При этом логический стоп-лосс (точка, где эта деформация исчезнет) находится всего в 2-х тиках".

В этой модели:
 Рынок — это стохастический океан хаоса.
 Куб Октантов (состояний) — это классификатор текущей фазы стохастического процесса, самой системы)
 Энтропия Шеннона — это измеритель плотности шума.
 Открытый Интерес — это индикатор притока внешнего топлива.
И это не полное описания модели 2^n, это гипотезы для проверки.

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

Строю систему, которая не пытается "предсказать" траекторию цены, а ищет микро-секундные зоны, где конус вероятностей сужается и перекашивается в одну из сторон, давая нам математическое преимущество. Это чистая квантовая механика, перенесенная на язык биржевых тиков, или мой микроскоп. Что не так?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Нет все таки интуиция не подвела. Мучал меня вопрос ортогональности и производных. Я про это:
Цитата
VPM написал:
Но прежде, чем переходить к микроанализу, должен сказать о примере выше: VADX (V - сигнатура векторный) с его производными. Просто важно, нужно обратить внимание на мое предположение об ортогональности Векторов, конечно здесь утверждение сильно натянуто, так как производные всегда будут коррелированы с объектом от которого взяты, но это ни сколько не отменяет сам подход (ИИ ошибается, а уж что говорить обо мне).
Нашел пример в физике, попутно заглянул в теорию автоматического управления (ТАУ) ну и конечно механика подтверждает. Для описания любой движущейся системы используется не координатное пространство, а Фазовое пространство (Phase Space). В фазовом пространстве координатами являются переменные состояния. По канонам динамики, для системы N-го порядка независимыми переменными состояния, определяющими её энергетический статус в данный микро-момент времени (t), являются именно функция и её последовательные производные.
Примером из классической физики, может служить описание маятника. Осями фазового пространства являются Координата (X) и Скорость (V).
Где, скорость — это производная координаты. Коррелируют ли они? В динамике — да. Но в фиксированный квант времени t они ортогональны и независимы как степени свободы.
Маятник может находиться
 в точке равновесия (X=0), но иметь максимальную скорость (V=max),
 либо замереть в крайней точке (V=0), имея максимальное отклонение (X=max).
 
Мы не можете предсказать скорость системы, зная только её положение в данный момент, нам нужна предыстория. В моем случае Цена, Скорость и Ускорение — это независимые координаты энергетического состояния рынка в фиксированный квант времени.
Делаю вывод утверждение: "использование производных в качестве осей фазового пространства не просто правомерно, это единственный математически строгий способ описать динамическую систему"!   (ИИ ошибается, я нет)  :smile:
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Нам понадобится и Бухгалтерский учет (с большой буквы), как наглядный пример подхода, а Двойная запись как проявленные рычажные весы.
Бухгалтерский баланс (Актив = Пассив) — это идеальные рычажные весы. Двойная запись (дебет и кредит) гарантирует, что любое действие на одной чаше мгновенно отражается на другой.

Например, аудиторы используют доведение до абсурда для выявления мошенничества и скрытых убытков.
 * Гипотеза от противного: "Предположим, отчетность компании абсолютно честная и верная".
 * Тест весов (Поиск абсурда). Аудитор смотрит на монаду транзакции.
   Компания показывает резкий рост прибыли (бумажный товар продан).
Если прибыль реальна, на другой чаше весов должен вырасти денежный поток (Cash Flow) или реальная  *  задолженность, подтвержденная независимыми контрагентами.
 * Приведение к абсурду. Анализ показывает, что прибыль выросла на 100 млн, но реальных денег на счетах нет, а "покупатели" — это фирмы-однодневки, зарегистрированные вчера.
   Логический абсурд - компания "успешно продает товар", но при этом у нее нет денег даже на оплату аренды.
 * Вывод. Исходная гипотеза о честности неверна. В отчетности присутствует "рисованная" выручка.
          Весы баланса сошлись искусственно.

А что же в трейдинге или эквилибриум цен и арбитраж "от обратного". В трейдинге рычажные весы — это справедливая стоимость актива, на которую давят спрос и предложение. Доведение до абсурда здесь лежит в основе арбитража и поиска рыночных неэффективностей.
 * Теория эффективного рынка отражает, цена одного и того же актива на разных биржах должна быть одинаковой.
 * Допущение от противного (в алгоритмическом трейдинге). Предположим, акция на бирже в Нью-Йорке стоит 200, а в Лондоне (в пересчете) — 195. Робот мгновенно видит этот дисбаланс весов.
 * Приведение к абсурду. Если бы эта неэффективность существовала долго, можно было бы бесконечно покупать в Лондоне и продавать в Нью-Йорке, генерируя "деньги из воздуха" без риска. В экономике вечный двигатель — это абсурд.
 * Действие. Роботы-арбитражеры мгновенно совершают сделки, скупая дешевое и продавая дорогое. Своими действиями они давят на чаши весов, моментально возвращая цену к балансу. Они устраняют абсурд до того, как он станет явным.

Или инвестициях, метод Чарли Мангера, Инверсия в трейдинге (Invert, always invert). Инвестор Чарли Мангер (партнер Уоррена Баффетта) использовал подход "от обратного": "Я не пытаюсь вычислить, как сделать компанию богатой. Я пытаюсь доказать, что может её гарантированно разрушить, а затем избегаю этого".
Вместо поиска причин для покупки акций, профессиональный инвестор доводит до абсурда риски: "Что полностью уничтожит этот бизнес? Появление дешевого аналога? Изменение законов?". Если этот деструктивный сценарий логически легко реализуем, актив выбрасывается из портфеля.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
"Тополиный пух жара июнь ..." (Не очень люблю кондиционеры и включаю их по необходимости, видимо еще от этого ощущения "расплавленных мозгов", и желание перейти от строгой вычислительно алгебры и по рассуждать на не мение важные, фундаментальные вещи).
Но прежде, чем переходить к микроанализу, должен сказать о примере выше: VADX (V - сигнатура векторный) с его производными. Просто важно, нужно обратить внимание на мое предположение об ортогональности Векторов, конечно здесь утверждение сильно натянуто, так как производные всегда будут коррелированы с объектом от которого взяты, но это ни сколько не отменяет сам подход (ИИ ошибается, а уж что говорить обо мне).  :wink:

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

1. В философии Лейбница монада — это неделимая, фундаментальная основа реальности. В геометрии Евклида монада — это единица, то, через что всё существующее считается единым. В моей концепции еще строже структурная взаимодополнительность (не проявится белое без черного, нет мужского без женского, а уж тем более товара без денег).

2. Рычажные весы (Математически - Логический весовой контроль), не буду повторяться, лишь добавлю МЕРА здесь ключевой параметр, образующий триады или триединство.

Ну и конечно - это книга, производящая гениев, ну или как минимум не ординарных мыслителей. "Начала" Евклида — это величайший математический труд античности. В котором геометрия впервые была построена как строгая система на основе аксиом. А метод доказательства от противного (доведения до абсурда) стал одним из главных инструментов обоснования теорем и доказательства истины. Метод "доведения до абсурда" (лат. ReductioAd Absurdum) основывает современные математические подходы без вычислений. В современной математике и информатике есть целые разделы, где вычисления (в привычном смысле сложения и умножения чисел) отсутствуют. Там работают со структурами, множествами и графами. Доказательство от противного там незаменимо.

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

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

В финансовом анализе, бухгалтерском учете и трейдинге метод доведения до абсурда (reductio ad absurdum) выполняет роль главного детективного и аудиторского инструмента. Здесь "рычажными весами" выступает жесткий баланс системы, а главной "монадой" является классическая триада Карла Маркса  "Товар — Деньги — Товар" и/или "Деньги — Товар — Деньги".

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

Но не все так просто!

"Эффект бабочки" объясняет, почему микроскопическая погрешность или шум в начале математических расчетов полностью искажает итоговый результат. И не учитывать этот фак при создании алгоритмов просто нельзя. Суть проблемы, в контексте трейдинга и анализа временных рядов (биржевых графиков) в следующим, когда для построения индикатора или прогноза используются рекуррентные формулы (текущее значение зависит от предыдущего рассчитанного значения, например EMA или как у меня SuperSmoother), математическая погрешность начинает лавинообразно нарастать прямо внутри одной свечи. Есть несколько решений ухода от проблемы. Можно по экспериментировать с FIR-фильтрами (например, smooth = (4*p0 + 3*p1 + 2*p2 + p3) / 10) или внести жесткие ограничения или коэффициент затухания в расчеты.

У себя выбрал наиболее простой - "Отказ от тиков в пользу баров". Внутри свечи определенного тайм фрейма, цена совершает хаотичные колебания, их невозможно просто индифицировать в рамках текущего тайм фрейма, (нужно менять масштаб). Здесь правило вычисления заключается, выполнять пересчет исключительно на этапе закрытия свечи (Close[i] ~= Close[i-1]), это позволяет избежать данного эффекта. При этом исключается из рассчета текущий бар, и тем самым вносим в алгоритм расчета Лаг. Для полноты картины можно представить, расчеты проводятся на месячном тайм фрейме (потеряли текущий месяц). А для HFT и 1 минута сравнима с месяцом на месячном тайм фрейме. Согласитьсь для принятия торговых решений, картина не приглядная, вывод, не позволитильная роскошь игнорировать "настоящее", оперируя только прошлым?

Возникает задача масштаба.
Вспоминаем что данные (свечи) это фрактальная запись "квантованных" данных (свечи имеют вложенную, само подобную структуру).  
Одно из решений (вариант А) - многомасштабный (мульти фрактальный) анализ. Вместо игнорирования текущего бара, расчет ведется одновременно на нескольких вложенных тайм фреймах.
 * Старший тайм фрейм задает глобальный тренд (фильтрует шум). У себя часто для этого использую мгновенный тренд (Decycler 2013г John F. Ehlers).
 * Младший таймфрейм используется как "микроскоп", внутри текущей незакрытой свечи торгового тайм фрейма. Это позволяет видеть структуру движения "здесь и сейчас", не дожидаясь закрытия старшего бара.
 * На среднем, торговом - система принятия решений.

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

Если не уходить в тяжелую теоретическую физику, элементы этого анализа на практике можно свести к, и внедрению через:
1) Квантование по объему (Volume Delta Vectors), анализ направления и силы рыночных ордеров (Ask/Bid) внутри свечи как векторов.
2) Фазовые портреты, то есть построение графиков в осях "Цена — Скорость изменения цены" (P и dP/dt). Это убирает фактор времени и показывает циклы системы.

Здесь важно, помним! Рынок — это не замкнутая квантовая система. Шум здесь не всегда случаен, и внешние шоки (новости), мгновенно разрушают построенные волновые функции (происходит коллапс волнового пакета). И еще одно, легко нарваться на проблему "переподгонки", из-за обилия параметров (фазовые пространства, волновые функции, матрицы перехода) очень легко создать модель, которая идеально объясняет прошлое, но абсалютно бесполезна в реальном времени.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Если с вычислительной математикой индикатора разобрались, то возникает следящая проблема - интеграции индикаторов в терминал QUIK.
 Проблема А - нулевого (текущего) бара ("Дерганья");
 Проблема Б - утечки памяти при некорректном кэшировании.

Вот и у меня. Поскольку индикатор ADX_v4 использует рекурсивные фильтры (ZLEMA, SuperSmoother) и исторические лаг-компенсаторы, каждый тик на текущей (незакрытой) свече будет необратимо перезаписывать историю, если не изолировать расчеты.

Памятка. "Строгая техническая спецификация оптимизации под архитектуру QUIK".

1. Проблема А. Дерганье и Накопления Ошибок на Последнем Баре.
Терминал QUIK вызывает функцию индикатора на каждом входящем тике (сделке) для текущего индекса свечи I == Size().
 * Опасность для рекурсии: В строке zlema[I] = current_zlema на незакрытом баре записываем промежуточное тиковое значение в массив по индексу I. На следующем тике (внутри той же секунды/минуты) функция вызывается снова. Но в ячейке zlema[I-1] всё еще лежит значение прошлого закрытого бара, а вот в zlema[I] уже сидит искаженное значение от предыдущего тика. Происходит "эффект бабочки", рекуррентные коэффициенты накапливают ошибку внутри одной свечи. Когда свеча закроется, её историческое значение окажется полностью искаженным.
 * Техническое решение проблемы заключается, запретить на незакрытом баре изменять постоянные исторические массивы. Расчет текущего тика должен производиться во временных (фиктивных) переменных, а запись в историю — происходить строго в момент фиксации (закрытия) бара.

2. Проблема Б. Оптимизация Хранения и Очистка Буферов (Память).
 * Если робот работает на мелком таймфрейме (M1) или собирает историю за несколько месяцев, стандартные таблицы Lua (DX = {}) раздуваются до десятков тысяч элементов. Это приводит к деградации кэша процессора и тормозам QUIK при вызове table[I-1].
 * Техническое решение (Кольцевой буфер). Нашему безлаговому ADX для расчета не нужна вся история от сотворения мира. Ему нужен хвост глубиной в P * 3 баров. Будем использовать метод ограничения глубины буфера. При превышении максимального индекса принудительно удаляем самый старый элемент из таблиц с помощью table.remove(t, 1) или прямой очистки индексов t[I - max_depth] = nil. Здесь очень важный момент не наделать в таблице "дыр".

Финальный боевой код с аппаратной защитой под QUIK, в сборку нужно интегрировать:
а) защитный механизм проверка фиксации бара;
б) кольцевая очистка кэша, предотвращающая утечки памяти.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Дирекционные Индексы (+DI и -DI), в место классического подхода, обработал фильтром ZLEMA (Zero Lag EMA). К самому ADX применил SuperSmoother фильтр из DSP. Теперь, когда линия ADX стала идеально гладкой за счет двухполюсного фильтра SuperSmoother, ее можно и нужно сравнивать со своим прошлым значением. В экономико-математическом смысле знак первой производной (ADX[t] - ADX[t-1]) теперь четко отделяет фазу тренда от фазы коррекции (флэта), без ложного шума - пилы. Поскольку лаг компенсирован, а линия гладкая, математическая логика определения Тренд / Коррекция, теперь сводится к простому правилу:
 Если (ADXcurrent > ADXprevious) — рынок находится в активной фазе тренда (неважно куда, вверх или вниз).
 Если (ADXcurrent <= ADXprevious) — тренд затухает, рынок перешел в фазу коррекции, консолидации или флэта.

Что касается компенсации лага самого ADX, мы можем применить к нему тот же математический подход, что и для DI, но адаптированный под специфику итоговой линии. Поскольку ADX сглажен с помощью SuperSmoother, у него уже очень низкий фазовый сдвиг по сравнению с классической EMA. Идеальное инженерное решение здесь — линейная экстраполяция Тейлора первого порядка, идея  ( 2 * Out - Out1), но примененная строго на выходе из фильтра SuperSmoother. Это подтолкнет линию вперед по вектору движения, сохранив ее гладкость. Связка ZLEMA + SuperSmoother + Линейный разгон полностью меняет поведение ADX.

Применение векторного анализа к индексу DX (Directional Trend Index) — это высший пилотаж в разработке и не только торговых систем. Переход от скалярных величин к векторным позволяет полностью переосмыслить природу тренда!

В классическом варианте DX — это скаляр (абсолютная величина, не имеющая направления). Посмотрим на его каноническую формулу, в числителе, DX всегда положителен (применен модуль). Он показывает только интенсивность разбалансировки рынка. Возникает некий инженерный тупик. Глядя на скалярную величину, например DX = 70, робот знает, что на рынке мощный тренд. Но он физически не знает, куда этот тренд направлен — вверх или вниз. Ему приходится делать второй логический шаг, запрашивать значения pDI и mDI и сравнивать их между собой. Это создает лишние ветвления в коде, увеличивает лаг принятия решения.

Зафиксирую. Вектор в двумерном пространстве определяется двумя характеристиками:
 * длиной (модулем)
 * и направлением (углом).
 
Мы можем представить состояние рынка на каждом баре как точку на координатной плоскости, где:
 * Ось X — это сила быков (pDI).
 * Ось Y — это сила медведей (mDI).
Следовательно, состояние рынка — это радиус-вектор vec{V} = (pDI; mDI). Здесь достигается и взаимно дополнительность этих двойственных отношений (ортогональность).

Но анализировать абсолютные координаты неудобно, так как они зависят от волатильности. Нам нужен вектор относительного импульса vec{DX}. Для этого, убираем модуль из формулы и получаем знаковый векторный дифференциал. Теперь наш вектор  живет в одномерном векторном пространстве на оси [-100; +100]. Получаем геометрический смысл вектора:
vec{DX} -> +100 Вектор силы рынка полностью развернут в сторону покупателей. Чистый, экспоненциальный бычий тренд.
vec{DX} ~= 0      Вектор находится в точке баланса. Силы равны, на рынке абсолютный флэт.
vec{DX} -> -100  Вектор силы полностью направлен в сторону продавцов. Чистый медвежий тренд.

Когда мы превратили DX в вектор, мы можем применять к нему операции математического анализа, недоступные для обычного ADX.  
Экономико-математические преимущества векторного анализа:
А. Скорость вектора (Первая производная dvec{DX}/dt ) В место того чтобы просто смотреть, растет ADX или падает, мы считаем разность векторов между текущим и прошлым баром: Velocity vec{DX}[t] - vec{DX}[t-1] Если Velocity > 0 при положительном vec{DX} — тренд вверх ускоряется. Если Velocity} < 0 при положительном vec{DX} — тренд вверх замедляется (сигнал на фиксацию прибыли, хотя цена еще может идти вверх).

Б. Ускорение вектора (Вторая производная d^2vec{DX}/dt^2) Acceleration = Velocity[t] - Velocity[t-1] Это чистый опережающий квантовый фильтр. Момент, когда Acceleration меняет знак с плюса на минус на вершине тренда, происходит за 2–3 бара до реального разворота цены. Это позволяет разгружать позицию прямо на "хаях"!!!

Для интеграция вектора в алгоритм, нужно модифицировать финальную часть нашей функции ADX.Log_v4. Вместо того чтобы отдавать классический ADX (сглаженный скаляр) и две линии DI,
мы заставим ядро вычислять вектор vec{DX}, сглаживать его через SuperSmoother и отдавать три чистые векторные величины:
 * V_ADX — Векторный ADX (направление и сила тренда в одной линии от -100 до +100.
 * V_Velocity — Скорость изменения вектора (импульс).
 * V_Acceleration — Ускорение (опережающий триггер).
 
Теперь трейдер или робот читает векторный анализ примерно так:
 Вход в Лонг (Идеальная точка). V_ADX выше нуля, V_Velocity > 0 и V_Acceleration только что пересекло ноль снизу вверх.
 Выход из Лонга (Опережающий). V_ADX все еще высоко в положительной зоне (например, +65), но V_Acceleration уже упало ниже нуля, а V_Velocity развернулось вниз. Цена еще растет на инерции, но векторное поле рынка сигнализирует -> топливо у покупателей закончилось.

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

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

На самом деле кому покажется сложно или не очень понятно изложение, на ютуб можно поискать видео, векторного анализа, мат. анализа, DSP и прочие темы с визуализацией.
"Вот и сказочки конец, а кто слушал молодец".  Удачи.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Идея заменить разности цен их отношениями (перейти от арифметической шкалы к геометрической/логарифмической) — это шаг, который переводит расчет индикатор из абсолютных значений в относительные.

Что на практике дает подход для трейдинга.

1. Цены. Проблема абсолютных значений широко известна. Обычные индикаторы считают приращения в пунктах или рублях/долларах (Delta = Price1 - Price2), то есть Актив меняется в цене. Если акция выросла с 10 до 100 рублей, то колебание на 2 рубля в начале истории — это огромный сдвиг на 20%, а в конце истории — это незаметный шум в 2%. В результате, Классические индикаторы на больших исторических периодах "сходят с ума". Они недооценивают волатильность в прошлом (когда цена была низкой) и переоценивают её в настоящем (когда цена высока).

2. Разности цен vs Отношения цен. Переход на отношения (Ratio = Price1 / Price2) или логарифмы отношений (100 * ln(Price1 / Price2)) кардинально меняет свойства данных. Зафиксирую.
 * Разности цен - Арифметический подход (АП)
 * Отношения цен - Геометрический подход (ГП)
Зависимость от масштаба, АП - Высокая (искажает историю при росте актива);  ГП - Полностью отсутствует (масштабо независима).
АП - Нельзя сравнивать разные активы (например, Сбербанк по 260 руб. и Газпром по 130 руб.); ГП - Можно сравнивать любые активы между собой напрямую.
Природа рынка, АП - Не соответствует рыночной логике (рынок мыслит процентами доходности); ГП - Идеально соответствует (отражает процентное изменение капитала).

3. Математическое преимущество, непрерывная доходность (ln) В моем коде используется 100 * log( l0 / l1). В эконометрике это называется непрерывно начисляемой доходностью (log-returns). Это даже лучше, чем просто отношение, по трем причинам:
 а) Симметричность падения и роста, если цена выросла со 100 до 200 (+100%), а потом упала с 200 до 100 (-50%), обычные проценты не симметричны. Логарифм же даст, ln(200/100) = 0.693 и ln(100/200) = -0.693. Они равны по модулю. Для осцилляторов и индикаторов силы тренда (как ADX) это критически важно — сила движения вверх и сила движения вниз измеряются линейно одинаково.
  б) Аддитивность, сумма логарифмов приращений за 5 дней строго равна логарифму приращения за весь 5-дневный период. С обычными разностями или процентами это не работает.
  с) Нормализация, например True Range (TR), в ADX движение (+DM; -DM) делится на Истинный Диапазон (TR), если и числитель, и знаменатель переведены в логарифмы, то ADX становится абсолютно очищенным от цены "индексом чистого процента".

4. Переписал у себя классический ADX Уайлдера, реализовал с этим подходом. Не которые плюсы и минусы идеи, для индикатора ADX, вышли на поверхность.
 а) Плюсы. Идеальный бэктест, на исторических данных больших промежутках (за 5–10 лет) индикатор должен работать одинаково хорошо на всем промежутке. Его не придется пере оптимизировать из-за того, что цена акции выросла в 5 раз. Мультирыночность, один и тот же робот с одними настройками ADX сможет анализировать и фьючерс на индекс МосБиржи (десятки тысяч пунктов), и дешевую акцию (несколько рублей). Устойчивость к гэпам, на утренних гэпах логарифмический ADX не будет улетать в космос так сильно, как классический, поскольку он сглаживает экстремальные скачки.
 б) Но есть и Риски и подводные камни. Проблема околонулевых цен, если актив стоит копейки (например, фьючерс вблизи экспирации), деление на очень маленькое число или логарифм близких к нулю долей может вызвать резкие скачки - шум. Возможна потеря чувствительности на флэте. На низко волатильном рынке логарифмические приращения становятся очень маленькими, и скользящие средние внутри ADX могут начать "слипаться", выдавая ложные сигналы затухания тренда. Чтобы не возникало Искажение, нужно что бы функция (True Range) в расчетах тоже была переведена на логарифмы! Если pDM и mDM считаются через log(Ratio), а fTR считает классический (High - Low) в пунктах, то формула (100 * pDM / iTR) математически разрушится (будем делить проценты на рубли).

В Результате использование отношений и логарифмов вместо разностей — это идея, которая приближает технический анализ к законам количественного анализа (Quant Trading). Она полностью решает проблему старения исторических данных. А главное, за чем нужно следить при реализации в коде, должна соблюдаться абсолютная однородность данных. Все компоненты (High, Low, Close, TR) внутри этого расчетного ядра, должны быть переведены в логарифмические приращения.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Важное уточнение.
В этом подходе нужно четко понимать и определять двойственность, как фундаментальное отношение двух состояний системы, то есть - это уже абсолютно вычисляемая конструкция. Двойственность — не какая то абстрактная философия, а механизм возникновения структуры через различие. То есть двойственность — это фактически, примитив операционного различия.

Главное, для алготрейдинга в том что, двойственность:
* можно вычислять,
* можно кодировать,
* можно измерять,
* можно строить как ядро модели.

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

В конечном итоге в концепции, появляется очень красивая структура.
# Скаляр. Абсолютное состояние.
# Двойственность. Отношение состояний.
# Градиент. Направление изменения отношений.
# Векторное. поле Организованная структура отношений.
# Дивергенция. Локальное усиление/затухание отношений.
# Ротор. Циклическое перераспределение отношений.

И более того, практически все современные теории, физика, DSP, экономика и трейдинг построены именно на отношениях. Вот и у нас.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Важно! Или просто о сложном, сложном (для меня), а для кого - то возможно просто. Почему градиент?

Для единого понимания смыслов, просто зафиксирую.
 * Градиент (grad) — операция, которая превращает скаляр (скорость) в вектор, появляется дополнительный параметр - направление. Показывает направление роста скалярной величины и скорость этого роста. Мгновенное значение векторного поля.
 * Обратная операция - Дивергенция (div), операция, которая превращает вектор в скаляр. Показывает, является ли точка "источником" или "стоком" векторного поля. Эти понятия из векторного анализа, составляет основу этого анализа.
 * Излагая концепцию, нужно сказать о третьей операции - Ротор (rot), операция, которая превращает вектор в другой вектор. Описывает вращательную способность поля вокруг точки. Направление вектора ротора определяет ось вращения по правилу правой руки, а длина — интенсивность завихрения.

Собираем все вместе. Задача, рассуждаем о движении цены, как результате некоторого взаимодействия. В рамках данной концепции, представляем цену как некое физическое тело (абстракция), движущееся под воздействием сил спроса и предложения. Это далеко не ново, например в квантитативных финансах (Quant Finance), графики часто анализируют через уравнения математической физики.
Наша задача сводится к проведению междисциплинарной аналогии, между физическими смыслами (природными операционными механизмами), понятиями из цифровой обработки сигналов (DSP) их переносе на финансовые графики. В этой модели движение цены рассматривается как сложный волновой сигнал, состоящий из наложения множества циклов разной природы. И введем сюда векторный анализ. Как? Выше есть в моих постах описание куба состояний (законченная модель цикла). Каждая вершина рассматривается, как начало координат векторов i,j,k, за которыми закрепляются понятия не только из трейдинга но и физические и всей данной концепции и даже метафизические. Такая модель легко расширяется, можно добавлять бесконечно параметры. Для этого куб вписывается в единичный шар, поверхность которого можно описывать бесконечным множеством векторов (параметров). Ну конечно в рамках смыслов!

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

Представление рынка как поля состояний. Тогда интерпретация рынка будет выглядеть так: "Рынок — это не «волны цены», а стохастическая адаптивная система потоков ликвидности с нелинейной обратной связью". Следовательно, FFT, векторный анализ, DSP, гидродинамика, двойственность, становятся не буквальной физикой рынка, а языком приближений для описания структуры потока ордеров. А ключевая идея всей модели и данной концепции: "рынок — это не объект, а поле состояний", которое мы можем оживлять, внося динамику процессов, ну и конечно смыслы.
И тогда:
цена — локальное состояние,
ликвидность — распределение потенциала,
ордер-флоу — поток,
моментум — локальная скорость поля,
волатильность — амплитуда колебаний,
тренд — устойчивое направление градиента.

А всего лишь ввели гдраиент, градиент здесь нужен не как математическая формула ради формулы, а как механизм рождения направленности из состояния!
Не могу реализовать память через CSV файл
 
Главная причина, почему Ваш скрипт "ничего не помнит" — критические синтаксические ошибки, из-за которых Lua-интерпретатор в QUIK просто ломается и не может корректно выполнить код.

Главные ошибки в Вашем коде:
1. Синтаксический слом в CheckLine: Конструкция end elseif написана с ошибкой. В Lua нет elseif после end. Из-за этого функция вообще не компилировалась. Сломанный массив - строка Trades[] в OnInit — это некорректный синтаксис Lua. Выдаст ошибку.
2. Потеря переменной current_line. В функции OnTrade вы вызываете remove_line_from_csv(secondfile, current_line). Но current_line была локальной переменной внутри CheckLine. В OnTrade она всегда равна nil или старой глобальной пустышке. Скрипт не понимал, какую строку удалять.
3. Бесконечный цикл без выхода. В main() запущен while do_main do sleep(1000) end, но флаг do_main нигде не меняется на false. Скрипт зависнет навсегда при остановке.
4. Конкуренция за файлы. Файл secondfile открывается в режиме "r" (чтение), но при удалении строки Вы пытаетесь стереть его через os.remove прямо во время работы, что в Windows часто блокируется, если хэндл не освобожден или пересекается с другими функциями.

Попробуйте так. Исправленный скрипт. Этот вариант исправляет логику работы с файлом покупок (fibobuys.csv). Вот что изменилось.
Исправлен синтаксис.
Удален сломанный elseif в CheckLine и пустой массив Trades[].
Скрипт теперь корректно запускается терминалом QUIK.
Добавлена функция поиска строки (find_line_by_price). Теперь скрипт при продаже сканирует файл fibobuys.csv, находит точный номер строки, где лежит цена этой покупки, и передает этот индекс в функцию удаления. Если точная цена не найдена (например, из-за проскальзывания), он удаляет первую строку (принцип FIFO).
Безопасная перезапись файла. Вместо рискованного удаления файла через os.remove (который часто блокируется Windows, если файл занят QUIK), скрипт выкачивает строки в массив, очищает файл через режим "w" и записывает обратно только нужные данные.
Добавлен корректный OnStop. Теперь при остановке скрипта кнопкой в QUIK цикл в main останавливается корректно, а хэндлы файлов закрываются.

Скрипт все еще остается учебным и требуется доработать логику. Да и архитектуру тоже. Используйте код предварительно проверив, выкладываю как есть просто исправленный Ваш вариант. Удачи!
Код
-- Настройки торговой стратегии
local class = "QJSIM" 
local sec = "SBER" 
local account = "NL0011100043" 
local LotSize = 1 
local step = 0.02 --> Нужно проверить не уверен что так?
local limits = 10 

-- Служебные переменные
local tid = 0 
local trz_comment = "FIBO-2 --> " 
local uprice = nil
local dprice = nil
local TradeNums = {}
local do_main = true
local climits = 0

-- Пути к файлам
local csv_path = getScriptPath().."/FiboTrades.csv"
local secondfile = getScriptPath().."/fibobuys.csv"
local CSV = nil

function OnInit()
    CSV = io.open(csv_path, "a+")
end

-- Округление
function math_round(roundIn, roundDig)
    local mul = 10^roundDig
    return math.floor((roundIn * mul) + 0.5) / mul
end

-- Отправка транзакции -->  Проверьте параметры?
function LimitSpot(operation, SpotPrice)
    tid = tid + 1
    local transaction = {
        ["TRANS_ID"]   = tostring(tid),
        ["ACTION"]     = "NEW_ORDER",
        ["CLASSCODE"]  = class,
        ["SECCODE"]    = sec,
        ["OPERATION"]  = operation,
        ["QUANTITY"]   = tostring(LotSize),
        ["PRICE"]      = tostring(SpotPrice),
        ["ACCOUNT"]    = tostring(account),
        ["EXECUTION_CONDITION"] = "PUT_IN_QUEUE",
    }
    local res = sendTransaction(transaction)
    if res ~= '' then
        message(trz_comment..'Transaction Error! '..res)
    else
        message(trz_comment..'Transaction Success! ID = '..tid)
    end
end

-- Проверка файла цен для продажи или покупки
function CheckLine(number)
    local current_line = 1
    local same = 0
    local is_sold = false
    
    local CheckFile = io.open(secondfile, "r")
    if CheckFile then
        for line in CheckFile:lines() do
            local val = tonumber(line)
            if val then
                if val == number then same = same + 1 end
                -- Если цена в файле ниже или равна текущей — продаем по этой фиксации
                if val <= number then 
                    LimitSpot('S', number)
                    is_sold = true
                    break 
                end
            end
            current_line = current_line + 1
        end
        CheckFile:close()
    end

    -- Если совпадений нет, лимит не исчерпан и мы не продали — покупаем
    if not is_sold and same == 0 and climits < limits then 
        LimitSpot('B', number) 
    end
end

-- Удаление строки из CSV (безопасное переписывание)
function remove_line_from_csv(filename, line_to_remove)
    local lines = {}
    local input_file = io.open(filename, "r")
    
    if input_file then
        for line in input_file:lines() do
            lines[#lines + 1] = line
        end
        input_file:close()
    end

    local output_file = io.open(filename, "w")
    if not output_file then return end

    for i, line in ipairs(lines) do
        if i ~= line_to_remove then
            output_file:write(line .. "\n")
        end
    end
    output_file:close()
    message(trz_comment.."Строка "..line_to_remove.." удалена из базы покупок.")
end

-- Функция поиска строки по цене для удаления при OnTrade
function find_line_by_price(filename, price_to_find)
    local input_file = io.open(filename, "r")
    if not input_file then return nil end
    
    local line_number = 1
    for line in input_file:lines() do
        if tonumber(line) == price_to_find then
            input_file:close()
            return line_number
        end
        line_number = line_number + 1
    end
    input_file:close()
    return nil
end

function main()
    message(trz_comment..'Start.')
    while do_main do
        sleep(1000)
    end
end

function OnStop()
    do_main = false
    if CSV then CSV:close() end
    return 1000
end

function OnParam(class1, sec1)
    if class1 == class and sec1 == sec then
        local last_param = getParamEx(class, sec, "last")
        if not last_param or last_param.param_value == "" then return end
        
        local price = math_round(tonumber(last_param.param_value), 2)
        
        if uprice ~= nil then
            if price <= dprice then
                dprice = dprice - step
                uprice = uprice - step
                message(trz_comment..'Price-- -> '..price)
            elseif price >= uprice then
                CheckLine(price)
                dprice = dprice + step
                uprice = uprice + step
                message(trz_comment.."Price++ -> "..price)
            end
        end
    end
end

function OnTrade(trade)
    if trade.sec_code == sec and trade.class_code == class then
        -- Инициализация сетки по первой сделке
        if uprice == nil then
            uprice = trade.price + step
            dprice = trade.price - step
            message(trz_comment..'Grid placed success!')
        end

        -- Проверка на дубликаты сделок
        for i = #TradeNums, 1, -1 do
            if TradeNums[i] == trade.trade_num then return end
        end
        TradeNums[#TradeNums + 1] = trade.trade_num

        local Op = ""
        local t = bit.band(tonumber(trade.flags), 4) -- 4 = sell, 0 = buy
        
        if t == 0 then 
            -- ЛОГИКА ПОКУПКИ
            Op = "Buy"
            climits = climits + 1
            message(trz_comment.."buy "..trade.price)
            
            local wr = io.open(secondfile, 'a+')
            if wr then
                wr:write(trade.price.."\n")
                wr:flush()
                wr:close()
            end
        else 
            -- ЛОГИКА ПРОДАЖИ
            Op = "Sell"
            climits = climits - 1
            message(trz_comment.."Sell "..trade.price)
            
            -- Ищем строку с ценой, которая послужила триггером для продажи
            local line_idx = find_line_by_price(secondfile, trade.price)
            if line_idx then
                remove_line_from_csv(secondfile, line_idx)
            else
                -- Если точной цены нет, удаляем первую попавшуюся строку (FIFO)
                remove_line_from_csv(secondfile, 1)
            end
        end

        -- Логирование в общий файл FiboTrades.csv
        if CSV then
            local TradeLine = os.date("%x %X", os.time(trade.datetime))..";"..
            trade.class_code..";"..
            trade.sec_code..";"..
            trade.trade_num..";"..
            trade.order_num..";"..
            Op..";"..
            trade.price..";"..
            trade.qty.."\n"
            
            CSV:write(TradeLine)
            CSV:flush()
        end
    end
end
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Да и торгуем пунктами в условиях вероятностного исхода. А для оценки системы нужны статистические метрики, такие как мат. ожидание, профит фактор, % прибыльных сделок как минимум.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Именно так, как Вы описали, я начинаю рассуждать, когда сильно усердствовал над какой то идеей, а по результатам в системе принятия решений "пшик".

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

Но давайте по порядку. Определимся с рядом постулат для отражения общих смыслов и понятий.

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

Второе. Нам нужно определить с понятием "Сигнал", отречься от аналогового сигнала и полей типа (E*H). Будем рассуждать о цифровом бинарном сигнале (0;1). Чтобы перейти к цифровой аналогии аналогового сигнала, нужно еще постараться с преобразованиями и не наделать в них ошибок. Тем немение, подобная азбука Морзе, позволила создать вычислительные машины, в том числе на которых общаемся.

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

Вспомним как поступали 150 лет назад, имея только карандаш и лит бумаги. Да технический анализ (1 - покупки; 0 - продажи), запись 111100 = тренд повышательный с коррекцией. С тех пор ничего не изменилось так как в самом движении есть фундаментальные вещи. Как работал волновой анализ Элиота так и продолжает работать. Как была фрактальность на рынках так и есть. Микро структуры вложены в более старшие (игрушка - Матрешка). Как читали ленту в поисках ввода/вывода крупных средств на/из рынка, так и читают.

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

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

Касаемо подхода который описал, так его легко проверить, дописать счётчик, и проверить статистику. Попадаем в 5% все ОК. У нас нормальное распределение, нет на "помойку".

В мое описании только принципы, нет важных деталей, это должен сделать каждый сам. Например, у себя делаю компенсацию лага. Руководствуясь соображениями теории вероятностей, стандартное отклонение (StDev) отражает волатильность актива (ширину "шума"). По статистическому правилу нормального распределения (или правилу 68-95-99.7), около (68%) всех ценовых движений укладываются в пределы 1 стандартного отклонения от среднего. Около (68%) всех ценовых движений укладываются в пределы 1 стандартного отклонения от среднего. Умножая StDev на 0.5, вы получаете так называемое медианное ожидаемое значение шума (половина от стандартного диапазона). Но и этого не достаточно. Его нельзя на прямую применять, у себя я еще считаю градиент и использую как коэффициент.

Ведь вещь очевидная что результаты получим разные!
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Дециклер Элерса работает на потоке данных. Это динамический фильтр нижних частот. Он не пытается "угадать" линию тренда через всё окно данных, а просто отсекает быстрые колебания (шум), оставляя плавное движение. Что в свою очередь позволяет утверждать об отсутствии перерисовки в момент прихода нового бара (чего не скажешь про регрессию).
Для построения качественного вероятностного канала на базе Дециклера Элерса, нужно рассчитать центральную линию и динамическое отклонение. Основная фишка здесь в том, что разница между ценой и Дециклером — это и есть очищенный шум. На нем сигма работает точнее всего.

Классическая ловушка адаптации параметров в тех. анализе заключается в том, "Чтобы адаптировать индикатор, нужен другой индикатор, который сам требует адаптации". Этот подход вносит двойной лаг. Сначала запаздывает индикатор адаптации, а затем он с опозданием меняет параметры Дециклера. К тому времени, когда период адаптируется, рыночная фаза может уже смениться.
Для разных тайм фреймов на MOEX (акции, фьючерсы) характер шума сильно меняется, поэтому параметр Cutoff (длина волны, которую мы считаем шумом) нужно как то все таки адаптировать.
За основу, выбрал  простотой логический подбор параметров Cutoff и Sigma с возможность ручной коррекции при необходимости.

Например, Тайм фрейм - D1 (День); Cutoff(Период) = 10–15; Sigma(Mult) = 2.0; Логика. На днёвках тренды инертны. Малый Cutoff позволяет Дециклеру быть быстрой средней, почти не отставая от основной тенденции. M60 (Час); 24–30; 2.5. Отсекаем суточный шум. Увеличенная сигма (2.5) нужна, чтобы не реагировать на волатильность внутри торговой сессии и ловить только реальные выбросы. Ну и так далее.

Поскольку Дециклер — это идеальная "центральная ось", стратегия строится на возврате цены к математическому ожиданию после статистического выброса. Торговая стратегия получила название "Дециклерный Реверс" - (Mean Reversion), коих полно на "просторах" и нет смысла повторяться. Но есть Важное дополнение. К ней нужен Фильтр "Тренд vs Флэт".

Дециклер Элерса дает уникальную возможность оценить силу тренда через наклон линии. Если расстояние между ценой и Дециклером стабильно растет, а линия направлена круто вверх — рынок в импульсе. Против него торговать сигму нельзя, можно получить проход вдоль границы. Здесь лучший сигнал, когда цена вылетает за 2-ю сигму, а сама линия Дециклера горизонтальна. Это классический боковик, где вероятность возврата к середине максимальна. В своем канале цена проводит ~95% времени. Выход за границу 2-й сигмы при использовании Дециклера — это почти всегда истинный импульс или перекупленность, а не просто ошибка запаздывания средней.

Нашлось и математическое решение - "Индекс Относительной Мощности" (Trend/Sigma Ratio). Все что нужно ввести коэффициент TSR - это отношение скорости тренда к "энергии шума". Логика здесь следующая.
* Если Скорость Тренда > Сигма — это Ракетный импульс. Любые сигналы Z-score на разворот игнорируются. Мы едем по тренду.
* Если Скорость Тренда < Сигма — это Шумный боковик или затухающий импульс. Здесь Z-score имеет максимальный вес.
Почему это логично:
  1. Защита от "Ракет", не шортить инструмент, который растет вертикально (где темп роста 1\% в бар, а шум всего 0.2\%).
  2. Фильтрация флета, заключается в понимании факта, что выход за Сигму в боковике — это дар, а в тренде — это ловушка.
  3. Ну и конечно Нормировка. Сравнивая проценты со скоростью, мы получаем безразмерный коэффициент - Здоровья тренда.

В своей реализации сделал инженерное предложение. Добавил в "подвал" к осциллятор Z-Prob, вторую линию — TSI (Trend Strength). Теперь:
 * Когда Z-Prob в зоне экстремума, а TSI идет вниз — это Идеальный вход.
 * Когда оба на максимуме — это Сильный импульс (не трогать!).
Добавив расчет этого коэффициента TSI в фабрику, для финальной фильтрации сигналов получил фактически мозг будущего робота.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Извините, обращение выше это nikolz, к Вам не имеет ни какого отношения. Просто ошибся со вставкой имен.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Вы самостоятельно разучились думать? Это сильно заметно.  :smile:  

Попробуйте 2 словами сказать в чем Ваша идея?
От себя добавлю сильно не увлекайтесь ИИ, проверяйте. ИИ ошибается, а главное не умеет мыслить, это просто аппроксимация большого количества данных. Не более.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Nikolay,  Вы точно описали фундаментальный момент, фильтр сам по себе не прогнозирует. Он только трансформирует сигнал, чтобы выделить определённые компоненты: тренд, шум, циклы. Никакой магии для предсказания будущего он не даёт. Вы мне показалось вкладываете в само понятие Сигнал слишком физический смысл. Наши данные - цена в определенный момент времени. Запись а бар - это с родни квантованию. У такой запись есть диапазон колебания, спин и период этого колебания. Но главное здесь фрактальность, меньшие гармоники вложены в более старшие тайм фреймы, это важно для понимания о чем идет речь.

Что реально мы можем делать с фильтром.
* Сглаживание и выделение компоненты, можно? можно.
* Краткосрочное экстраполирование, можно? можно. На маленьком шаге (5–10% от окна) можно попытаться продолжить движение по фазе, можно. Возьмем тайм фрейм месячный 30 * 0.05 = 1.5 дня месячного тф. Чтоб такой тренд сломать нежно очень постараться, а мы отследим это, с помощью циклической составляющей или на меньших тф другими способами. Ни кто не мешает масштабировать подход на день или час. Ни какой магии?

Второе, то что у нас есть в этом подходе, осциллятор Детрендер. Компонента очищенная от тренда. Когда мы считаем Сигму через RMS от High-Pass фильтра, мы меняем саму парадигму.

Вот какая математика здесь:

1. С точки зрения вероятностей, "Стационарность шума"? Вычитая Дециклер из цены, мы проводим операцию детрендинга. Полученный остаток (HP) — это почти стационарный ряд. Например классические полосы Боллинджера (от SMA) предполагают, что цена распределена нормально вокруг среднего. Но цена нестационарная величина (у неё есть тренд).
В описанном подходе, Сигма теперь описывает стандартное отклонение "белого шума" рынка. С точки зрения статистики, выход за 2 Сигмы в нашей модели — это не просто цена далеко ушла, а "энергия" рыночного шума превысила критический порог. Вероятность того, что шум вернется к среднему уровню этой энергии, математически гораздо выше, чем возврат трендовой составляющей к цене.

2. Смысл трейдинга можно свести к оценкам "Энергия vs Расстояние". Мы измеряем амплитуду текущего рыночного цикла. Смысл, строим канал не вокруг цены, а вокруг текущей способности рынка совершать колебания. Трейдинговый инсайт здесь можно свести к:
 * Если канал расширяется — рынок переходит в фазу раскачки (дистрибуция или накопление).
 * Если сужается — рынок сжимает пружину.
Поскольку Сигма очищена от лага тренда, сужение канала происходит мгновенно при затухании активности, а не через 20 баров.

3. Строгая математическая модель (Z-Score).  Для робота будем использовать метрику  Z = (Price - Basis) / RMS(HP). Это число показывает, сколько "единиц текущего шума" содержится в отклонении цены (можно четко через тики или % или вообще в валюте). Здесь уже Стратегия принимает взвешенное решение, если Z > 2.0 - Статистическая аномалия (Энергия выброса истощена). Вероятностный реверс. Если Z < 0.5 - Состояние покоя. Любое движение — это шум. Ждем импульса. Система принятия решений имеет четкий вероятностный сигнал. Не говорю уже что ее можно подкрепить функциями принадлежности.

4. Практический вывод для Order Management. Интерпретируем канал как "Границы рыночного дыхания": Нижняя/Верхняя границы — это уровни, где рыночный шум достигает своего естественного предела для данного момента времени. В отличие от Боллинджера (по мне так вообще подход на помойку), наш канал не пухнет просто потому, что цена улетела вверх (тренд). Он расширяется только если увеличился разброс между тиками.

В итоге данного Инженерного подхода. Мы получили адаптивный волатильный коридор. Если цена вышла за него, значит, она движется быстрее, чем рынок способен шуметь. Это либо начало сильного направленного тренда, либо ложный выброс, который будет поглощен. Расчет этого Z-Score даст нам четкое понимание — пора бить по стакану в обратку? Конечно нельзя сбрасывать со счетов "мощность" трендовой компоненты - тренд нужно учитывать.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
nikolz,  Любой у кого есть подключение может сделать запрос и сравнить подходы. А главное абсолютно не понятно, что вы своим постом хотите сказать?

Мы не обсуждали подходы волнового анализа, я лишь уточнил, что Элерс использовал, Динамический (DSP) подход. А преобразование Гильберта — это вершина безлаговой адаптации в концепции Элерса.  Джон Элерс понял, что искать все циклы на рынке бессмысленно — они постоянно сменяют друг друга. Вместо этого он применил Преобразование Гильберта для поиска одной, доминирующей в данный момент рыночной волны и расчета ее мгновенной фазы. Как это работает на примере, индикатора Hilbert Transform Homodyne Discriminator. Берется цена и создается ее копия, сдвинутая строго на 90 градусов по фазе (Квадратурная компонента Q), в то время как исходный сигнал — это (Синфазная компонента I). Математический трюк заключается в том что, имея вектор I и вектор Q, Элерс вычисляет Мгновенную фазу (Instantaneous Phase) рыночного цикла на каждом баре через арктангенс, arctan(Q / I). Скорость изменения этой фазы от бара к бару дает точную длину текущего доминирующего цикла.

Обсуждение идет вокруг безлаговой адаптации в концепции, и их применении при построении ценового канала, и дополнительных полезных метриках.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 32 След.
Наверх