Поразбирался с математикой, интересные идеи. Хорошая и интересная статья.
Однако, система может принести неприятности на разворотах тренда.
Это в статье не прозвучало.
а если курс изменился?
L1-фильтр идеально рисует прямые линии на устоявшемся тренде, игнорируя шум. Но у каузальной версии (которая не заглядывает в будущее) есть неизбежная плата за сглаживание: инерция.
Текущий live-цикл работает по таймеру — он пересчитывает сигналы раз в час или проверяет условия каждые 10-60 секунд. На волатильных инструментах вроде XAUUSD или GBPJPY самые жесткие развороты происходят внутри часа. Если цена резко разворачивается, формируя мощный паттерн, ожидание закрытия H1-бара или срабатывания минутного таймера приведет к огромной просадке по открытой позиции.
Доброе утро. При запуске программы я получаю ошибку "❌ EURUSD : не удается получить тик". Эта ошибка возникает со всеми символами. Есть ли какие-нибудь решения? В режиме тестирования на исторических данных все работает идеально, и графики в итоге генерируются. Однако в режиме "Бесконечный цикл в реальном времени" я получаю указанную выше ошибку.
<moderator's note: machine translation to the Russian>
1- change the total lot from static 6 to an output of a function that calculates it based on a multplier of free margin(e.g. 0.2)... then max per symbol would be a multplier of totLots (e.g. 0.1)
2- in many instances after the relearn the code looses contanct with mt5, you may benefit on adding this in send_market order :
mt5, terminal = mt5_connect_expected()
Good morning. When I launch the program, I get the error "❌ EURUSD : Unable to get tick." This error occurs with all symbols. Are there any solutions? In historical data testing mode, everything works perfectly, and charts are generated. However, in "Real-time infinite loop" mode, I get the error mentioned above.
<moderator's note: machine translation to the Russian>
for j in range(prev_i + 1, i): w = (j - prev_i) / (i - prev_i) out[j] = (1 - w) * prev_val + w * float(seg_l1[-1]) # ← seg_l1[-1] это значение в точке i (БУДУЩЕЕ!)
Алгоритм при интерполяции подглядывает в будущее на stride-1 баров и это делает его непригодным для live-торговли.- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Как построить 29-парный портфель с L1-фильтром и VaR-распределением лотов:
Разбирается практическое применение L1 Trend Filter для очистки шума и формирования структурных признаков, совместимых с live-торговлей. Показан полный цикл: H1-данные 29 инструментов из MetaTrader 5, каузальная фильтрация, CatBoost на горизонте трёх L1-баров, честный walk-forward и распределение лотов по VaR. Читатель получает воспроизводимый кодовый конвейер и методику портфельной оценки.
Каждый разработчик торговых систем рано или поздно приходит к одному и тому же разочарованию: модель, блестяще показавшая себя на исторических данных, начинает давать ложные сигналы, как только рынок переходит в иной режим. Причина почти всегда одна — шум. Высокочастотные флуктуации цены, несущие нулевую предиктивную информацию о направлении тренда, попадают в обучающую выборку наравне со значимыми сигналами и засоряют модель паттернами, которые никогда не повторятся.
Но есть и вторая проблема, о которой говорят реже: торговля одной парой делает систему заложницей конкретного инструмента. EURUSD в боковике может месяцами не давать прибыли, пока GBPJPY показывает направленное движение. Трейдер приходит к этой статье с двойной болью: признаки, построенные напрямую на сырой цене, дают модели слишком много мусора, а зависимость от единственной валютной пары делает доходность нестабильной.
Решение опирается на три идеи. По отдельности они полезны, вместе — дают новый уровень качества. Первая — L1 Trend Filter, математически строгий метод нелинейного сглаживания на основе выпуклой оптимизации, который извлекает из ценового ряда чистый кусочно-линейный тренд без задержки. Вторая — диверсификация на 29 инструментов: 28 мажорных и кросс-пар плюс золото (XAUUSD). Третья — параметрическое VaR-распределение лотов, где каждому инструменту выделяется доля от общего бюджета обратно пропорционально его волатильности, что автоматически снижает вес высокорисковых инструментов и повышает вес стабильных.
Автор: Yevgeniy Koshtenko