Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3728

[Удален]  
Aleksey Nikolayev #:

if(getprofit) {MessageBox("BABLO?", "BABLO?"); Alert("BABLO!");}

На каждом тике :))
[Удален]  
Aleksey Nikolayev #:
Попросил написать скрипт с максимально полной проверкой допуска к торговле. Показалось что результат заметно основан на примерах из книги Короткого.
Клауде 4.5 тоже что-то там может. Просил нарисовать на канвасе простую панельку. Почти что справился. 
 
Aleksey Nikolayev #:

if(load_profit) {MessageBox("BABLO?", "BABLO?"); Alert("BABLO!");}

Спасибо, попробую прикрутить к своему линуксу.

казалось бы, все просто

а ведь нет, не помогает ;)

[Удален]  
Maxim Dmitrievsky #:

Фишка разметки в том, что она не look ahead, то есть без заглядывания в будущее. Например, сигналы с помощью любого осциллятора (перекупленность/перепроданность). Потом обобщение.

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

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

https://www.mql5.com/ru/articles/20343

Обучаем нейросети на осцилляторах без подглядывания в будущее
Обучаем нейросети на осцилляторах без подглядывания в будущее
  • 2025.11.24
  • www.mql5.com
В статье описывается подход к разметке сделок с помощью осцилляторов для моделей машинного обучения. Это позволяет избавиться от look ahead bias. Показано, что такая разметка не приводит к переобучению моделей, а стратегии продолжают работать продолжительное время.
[Удален]  

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

Обычно делают наоборот - сглаживают ряд.

Простой пример:

def amplify_high_freq(df: pd.DataFrame, long_period: int = 100, amplification_factor: float = 2.0) -> pd.DataFrame:
    """
    Усиливает высокочастотные компоненты в столбце 'close'
    путем добавления к цене усиленных остатков от долгосрочного EMA.

    :param df: Исходный DataFrame с ценами (индекс - время, столбец - 'close').
    :param long_period: Период для долгосрочного EMA (низкочастотный компонент).
    :param amplification_factor: Коэффициент усиления высокочастотных остатков (k > 1).
    :return: DataFrame с новым столбцом 'close_amplified'.
    """
    if 'close' not in df.columns:
        raise ValueError("DataFrame должен содержать столбец 'close'.")
        
    # 1. Вычисление низкочастотной компоненты (долгосрочное сглаживание)
    # Используем EMA, так как оно лучше отслеживает тренд, чем SMA.
    df['EMA_long'] = df['close'].ewm(span=long_period, adjust=False).mean()

    # 2. Выделение высокочастотной компоненты (Остатки)
    # Остаток = Цена - Тренд
    df['High_Freq_Component'] = df['close'] - df['EMA_long']

    # 3. Применение коэффициента усиления и создание нового ряда
    # P_amplified = P + k * (P - EMA_long)
    df['close_amplified'] = df['close'] + amplification_factor * df['High_Freq_Component']

    # Удаляем временные столбцы для чистоты
    return df.drop(columns=['EMA_long', 'High_Freq_Component']).dropna()

До и после амплификации:

Можно усиливать разные компоненты и посмотреть как это влияет на обучение. Можно не через МА.

 

Если подставить к=2, то формулу можно пересчитать в
close_amplified = close + 2 * (close - EMA )
= close * 3 - EMA * 2

Т.е. цена  - МА с какими-то (наверное подбираемыми) коэффициентами. Так понятнее суть преобразований.

Если потом будут разницы close_amplified подаваться на обучение, то разницы МАшек (100) будут очень малыми (1/100 от дельт Close), т.е. останутся почти разницы Close.

Как будет влиять на обучение МО - пока не понятно. Наверное, как и разницы МА(100). Теоретически. Если будете сравнивать на практике (с и без) - будет интересно, сойдется ли с теорией.

[Удален]  
Forester #:

Если подставить к=2, то формулу можно пересчитать в
close_amplified = close + 2 * (close - EMA )
= close * 3 - EMA * 2

Т.е. цена  - МА с какими-то (наверное подбираемыми) коэффициентами. Так понятнее суть преобразований.

Если потом будут разницы close_amplified подаваться на обучение, то разницы МАшек (100) будут очень малыми (1/100 от дельт Close), т.е. останутся почти разницы Close.

Как будет влиять на обучение МО - пока не понятно. Наверное, как и разницы МА(100). Теоретически. Если будете сравнивать на практике (с и без) - будет интересно, сойдется ли с теорией.

Не, на обучение подаю исходный датасет но с метками, которые размечены на преобразованном. Пока только видно, что больше шума в сделках ну и на форварде более ровно.
[Удален]  
Адаптивная амплификация (меняем множитель в зависимости от волатильности) дает неплохие результаты.
 
Maxim Dmitrievsky #:

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

Обычно делают наоборот - сглаживают ряд.

Простой пример:

До и после амплификации:

Можно усиливать разные компоненты и посмотреть как это влияет на обучение. Можно не через МА.

Это же вроде дробного дифференцирования?

Наверно лучше средние частоты усиливать.

[Удален]  
Rorschach #:

Это же вроде дробного дифференцирования?

Наверно лучше средние частоты усиливать.

Ну типа усилить какие-то частоты, чтобы акцентировать разметку лейблов на определенных стратегиях. Чтобы было больше примеров. Не сильно большие улучшения, скорее вариативность финальных моделей дает.
Исходно ущербные стратегии не улучшает :)