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

СанСаныч Фоменко #:

Нам необходимы предсказания будущего


Я бы скорректировал тезис.

Недавно спорил с одним взрослым дядей, который доказывал, что у него в руках ГРААЛЬ. 

Всё, что нужно — открываться от границ перерисовывающегося индикатора ТМА - и там, если что - доливаться, если цена продолжает идти не в нашу сторону. Несмотря на то, что понятие «доливка» означает наоборот - поход в сторону сделки. 

На мой простой аргумент: "Как долго тестировали?", ответил: "Две недели на XAUUSD M1". 


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

Чем отличается самый крутой трейдер, закрывающий 99 сделок из 100 в +, от него же, но с сеткой мартингейла?

100-ая позиция у оригинального трейдера закроется по СТОП-ЛОССУ на самом пике долгосрочного разворота. 

Но если этот трейдер использует сетку-мартингейла - он сольёт весь депозит. 



Я сказал "закрывающий", а не "прогнозирующий" 99 сделок в + из 100. 

Суть в том, чтобы ошибаться с минимальными потерями: успешные трейдеры не от того успешные, что прогнозируют разворот, а от того, что если фейлят - быстро выходят. И игнорируют дальнейшее развитие событий. До наступления следующего сетапа. 


Поэтому суть ИИ, МО, НС - это не ванговать, а научиться торговать. То есть, чтобы модель умела быстро выйти из прогноза, а не сидеть до победного. Ведь большинство "временно" рабочих моделей как раз имеют низкий риск-ревард и пытаются вытянуть за счёт количества. 

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


Напрашиваются две модели:

1) Первая учится ванговать

2) Вторая не умеет ванговать, но учится закрывать, если плавающий убыток растёт. И ей на вход можно подавать не паттерны графика, а историю торгов. Например. + что-то из волатильности и тд. 

Ivan Butko #:


Я бы скорректировал тезис.

Недавно спорил с одним взрослым дядей, который доказывал, что у него в руках ГРААЛЬ. 

Всё, что нужно — открываться от границ перерисовывающегося индикатора ТМА - и там, если что - доливаться, если цена продолжает идти не в нашу сторону. Несмотря на то, что понятие «доливка» означает наоборот - поход в сторону сделки. 

На мой простой аргумент: "Как долго тестировали?", ответил: "Две недели на XAUUSD M1". 


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

Чем отличается самый крутой трейдер, закрывающий 99 сделок из 100 в +, от него же, но с сеткой мартингейла?

100-ая позиция у оригинального трейдера закроется по СТОП-ЛОССУ на самом пике долгосрочного разворота. 

Но если этот трейдер использует сетку-мартингейла - он сольёт весь депозит. 



Я сказал "закрывающий", а не "прогнозирующий" 99 сделок в + из 100. 

Суть в том, чтобы ошибаться с минимальными потерями: успешные трейдеры не от того успешные, что прогнозируют разворот, а от того, что если фейлят - быстро выходят. И игнорируют дальнейшее развитие событий. До наступления следующего сетапа. 


Поэтому суть ИИ, МО, НС - это не ванговать, а научиться торговать. То есть, чтобы модель умела быстро выйти из прогноза, а не сидеть до победного. Ведь большинство "временно" рабочих моделей как раз имеют низкий риск-ревард и пытаются вытянуть за счёт количества. 

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


Напрашиваются две модели:

1) Первая учится ванговать

2) Вторая не умеет ванговать, но учится закрывать, если плавающий убыток растёт. И ей на вход можно подавать не паттерны графика, а историю торгов. Например. + что-то из волатильности и тд. 

Все Ваши рассуждения не имеют отношения к предсказанию на основе МО, так как МО предсказывает движение на некоторое число шагов вперед: 1, 2, 3, 4, .... По истечению прогнозируемого числа шагов позиция закрывается независимо от текущего результата.

[Удален]
Шоу знатоков началось 😁😁😁😁😁😁
СанСаныч Фоменко #:

Все Ваши рассуждения не имеют отношения к предсказанию на основе МО, так как МО предсказывает движение на некоторое число шагов вперед: 1, 2, 3, 4, .... По истечению прогнозируемого числа шагов позиция закрывается независимо от текущего результата.

Ок

[Удален]
Тем временем настроил апи, осталось придумывать промпты и получать прогнозы. По идее, должен быть выигрыш в скорости проверки разных ТС, потому что код пишется 1 раз, потом пишутся промпты, можно даже голосом ))

Получается ещё высокоуровневей, чем на питоне )
[Удален]

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

Но есть и с API. Ну либо ГигаЧат и иже с ними.

А, ну еще проблема в том, что на мак с arm чипом хрен установишь кастомные пакеты, без горечи.
[Удален]

Интересно как работает контекст в случае API. Все сообщения (свои и нейронки) нужно сохранять и передавать заново в качестве контекста при каждом новом запросе.

Пришлось сделать класс типа такого:

class GigaChatDialog:
    def __init__(self):
        self.messages = []
        self.url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
        self.headers = {
            "Content-Type": "application/json",
            "Accept": "application/json",
            "Authorization": f"Bearer " + json.loads(token.text)["access_token"],
            "X-Session-ID": "my chat"
        }

    def send_message(self, user_message):
        # Добавляем сообщение пользователя в историю
        self.messages.append({
            "role": "user",
            "content": user_message
        })

        payload = {
            "model": "GigaChat",
            "messages": self.messages
        }

        response = requests.post(self.url, headers=self.headers, json=payload, verify=cert_path)
        
        if response.status_code == 200:
            # Получаем ответ ассистента
            assistant_response = response.json()['choices'][0]['message']['content']
            # Добавляем ответ ассистента в историю
            self.messages.append({
                "role": "assistant",
                "content": assistant_response
            })
            return assistant_response
        else:
            return f"Ошибка: {response.status_code}"

# Пример использования:
chat = GigaChatDialog()

И проверка:

response1 = chat.send_message("Лиса красивая")
print(response1)
response2 = chat.send_message("что я говорил тебе про лису, дословно?")
print(response2)

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

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

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

[Удален]

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

А, ну понятно:

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

Теоретический вопрос. Пусть имеется некий трендовый актив. Вследствие трендовости имеется смысл делать выход по трейлинг-стопу.

Означает ли это, что есть смысл строить модель только как регрессию? То есть в качестве выхода Y использовать расстояние пройденное ценой до выхода.

А сведение к классификации (посредством фиксации уровня выхода) будет неким искажением сути ТС?

Aleksey Nikolayev #:

Теоретический вопрос. Пусть имеется некий трендовый актив. Вследствие трендовости имеется смысл делать выход по трейлинг-стопу.

Означает ли это, что есть смысл строить модель только как регрессию? То есть в качестве выхода Y использовать расстояние пройденное ценой до выхода.

А сведение к классификации (посредством фиксации уровня выхода) будет неким искажением сути ТС?

Будет искажением. Классификация запомнит сколько раз вы выиграли или проиграли, но не сколько в деньгах/пунктах.
Поэтому года 2-3 только регрессионные модели обучаю.
И поэтому же любители классификации, добиваясь ошибки в 20%, сливают в деньгах.