Избранное трейдера OnlyHuman

по

Запись прямого эфира TSLab Live

Всем доброго вечера!

Вчера наша команда провела первый стрим. Запись эфира доступна для просмотра на нашем YouTube канале TSLab Live

Запись прямого эфира: https://youtu.be/6fCwcaVktOg

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

После праздничных выходных мы проведем новый стрим, на котором более детально рассмотрим алгоритм из книги «Количественная сеточная торговля: как рыбак обходит Уолл-стрит» (Quantitative Grid Trading: How a Fisherman Beats Wall Street) автор Frank W Linn.

Скачать готовый скрипт можно по ссылке: https://t.me/tslabprorugroup/37590

Точные дату и время эфира мы сообщим после устранения технических проблем с оборудованием для вещания. Следите за нашими новостями!

С уважением, команда TSLab!
  • обсудить на форуме:
  • TSLab

Что почитать по (алго) трейдингу? Обзор небанальных книг без Талеба, Грэма и Богла

Привет! Бегло полистал SL и обнаружил, что книжные обзоры делятся на 2 типа – инвесторские и хардкорное алго (HFT и опционы). Промежуточный вариант попытаюсь закрыть данным постом. По уровню сложности книги в обзоре находятся между зубодробительной подборкой от Eugene Logunov https://smart-lab.ru/blog/534237.php и приятным чтивом по фундаментальным стратегиям.
Что почитать по (алго) трейдингу? Обзор небанальных книг без Талеба, Грэма и Богла

1)    Lasse H. Pedersen – Efficiently Inefficient

Отличная книга и №1 по соотношению польза/сложность. Автор показывает, как кванты тестируют и отбирают стратегии в портфель. Условно ее можно разделить на 4 части: арбитраж, факторные стратегии, глобал макро и технические моменты запуска и финансирования фонда. HFT и опционные стратегии упоминаются вскользь. Наверное, книга подойдет и для совсем начинающих, т.к. все метрики (вплоть до волатильности) и базовые концепции раскрываются с 0.

LHP – один из боссов крупного хедж фонда в Гринвиче, но в отличие от Далио или Дракенмиллера, еще и хардкорный академик. Поэтому в книге любое утверждение подтверждается ссылками, а для глубокого погружения есть отличный список первоисточников. Понятно, что никаких секретов своего работодателя LHP не раскрывает, но профильные главы для меня оказались полезными в плане идей + отсылки туда, где копать глубже.
Что почитать по (алго) трейдингу? Обзор небанальных книг без Талеба, Грэма и Богла



( Читать дальше )

Анализ объемов - начало

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

Мы решили выпустить серию статей, посвященных объемному анализу и свечным паттернам.

У большинства трейдеров сформировались уже свои ассоциации при виде той или иной свечи. Кто-то определенные ситуации трактует как разворот рынка, другие же наоборот предполагают продолжение тенденции. Смысл здесь кроется больше в «предыстории» этого движения, а не в самих свечах. Давайте рассмотрим теорию на практике, на конкретных примерах.
Анализ объемов - начало

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



( Читать дальше )
  • обсудить на форуме:
  • TSLab

Пример использования IB API - C++ - Flask - Reinforcement learning agent

Все привет, 

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

Было и несколько тем про применение обучения с подкреплением и моделей глубокого обучения, а так же как деплоить модели используя TensorFlow Extended (TFX)

Эксперимент: торговая система на базе глубокого обучения от начала до реальных торгов. Часть III. Начинаем работу с TFX

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

Пример использования IB API - C++ - Flask - Reinforcement learning agent

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

( Читать дальше )

Данные из QUIK в Python. Построение Дельта графика.

Данные из QUIK в Python. Построение Дельта графика.Построение нестандартных графиков в Python при помощи библиотеки finplot.
Можно строить почти любые нестандартные графики: Range, Renco, Delta.
В качестве примера скрипт для построения Дельта графика.
График строиться с момента запуска по поступающим данным из таблицы обезличенных сделок.
Для получения данных из КВИКа используется PythonServer Евгения Шибаева (огромное спасибо автору!!!)

Тапками не кидайтесь, программировать только учусь.

# В КВИКе запускаем луа-скрипт QuikLuaPython.lua
import socket
import threading
from datetime import datetime, timezone
import pandas as pd
import finplot as fplt

fplt.display_timezone = timezone.utc


class DeltaBar():
    def __init__(self):
        self.df = pd.DataFrame(columns='date_time open high low close delta delta_time_sec'.split(' '))
        self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0]

    def parser(self, parse):
        if parse[0] == '1' and parse[1] == 'RIH1':
            if abs(self.df.iloc[len(self.df) - 1]['delta']) >= 500:
                self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0]  # Добавляем строку в DF

            self.df.iloc[len(self.df) - 1]['close'] = float(parse[4])  # Записываем последнюю цену как цену close бара

            if self.df.iloc[len(self.df) - 1]['date_time'] == 0:
                self.df.iloc[len(self.df) - 1]['date_time'] = \
                    datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f").replace(microsecond=0)

            if self.df.iloc[len(self.df) - 1]['open'] == 0:
                self.df.iloc[len(self.df) - 1]['open'] = float(parse[4])

            if float(parse[4]) > self.df.iloc[len(self.df) - 1]['high']:
                self.df.iloc[len(self.df) - 1]['high'] = float(parse[4])

            if (float(parse[4]) < self.df.iloc[len(self.df) - 1]['low']) or \
                    (self.df.iloc[len(self.df) - 1]['low'] == 0):
                self.df.iloc[len(self.df) - 1]['low'] = float(parse[4])

            if parse[5] == '1026':
                self.df.iloc[len(self.df) - 1]['delta'] += float(parse[6])

            if parse[5] == '1025':
                self.df.iloc[len(self.df) - 1]['delta'] -= float(parse[6])

            self.df.iloc[len(self.df) - 1]['delta_time_sec'] = \
                datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f") - \
                self.df.iloc[len(self.df) - 1]['date_time']
            self.df.iloc[len(self.df) - 1]['delta_time_sec'] = self.df.iloc[len(self.df) - 1]['delta_time_sec'].seconds


def service():
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind(('127.0.0.1', 3587))  # Хост-этот компьютер, порт - 3587
    while True:
        res = sock.recv(2048).decode('utf-8')
        if res == '<qstp>\n':  # строка приходит от клиента при остановке луа-скрипта в КВИКе
            break
        else:
            delta_bar.parser(res.split(' '))  # Здесь вызываете свой парсер. Для примера функция: parser (parse)
    sock.close()


def update():

    df = delta_bar.df
    # Меняем индекс и делаем его типом datetime
    df = df.set_index(pd.to_datetime(df['date_time'], format='%Y-%m-%d %H:%M:%S'))
    # print(delta_bar.df)

    # pick columns for our three data sources: candlesticks and TD
    candlesticks = df['open close high low'.split()]
    volumes = df['open close delta_time_sec'.split()]
    if not plots:
        # first time we create the plots
        global ax
        plots.append(fplt.candlestick_ochl(candlesticks))
        plots.append(fplt.volume_ocv(volumes, ax=ax.overlay()))
    else:
        # every time after we just update the data sources on each plot
        plots[0].update_data(candlesticks)
        plots[1].update_data(volumes)


if __name__ == '__main__':
    delta_bar = DeltaBar()
    # Запускаем сервер в своем потоке
    t = threading.Thread(name='service', target=service)
    t.start()

    plots = []
    ax = fplt.create_plot('RIH1', init_zoom_periods=100, maximize=False)
    update()
    fplt.timer_callback(update, 2.0)  # update (using synchronous rest call) every N seconds

    fplt.show()
  • обсудить на форуме:
  • QUIK

Уменьшаем количество транзакций, перестроением алгоритма

Приветствуем Всех!

Кто торгует через TSLab, знают о ситуациях в «реверсных» алгоритмах, когда необходимо переворачивать позу. Сначала выставляется закрытие для текущей позиции, далее открытие для новой. В большинстве случаев, конечно это происходит крайне быстро и без проблемно, но любая транзакция имеет задержки, пусть 100-300мс но все же задержки есть. Этого не избежать в принципе никак. Но можно перестроить алгоритм, таким образом, чтобы вместо закрытий позиций, были просто «задвоеные» заявки. То есть получается, открыли лонг, далее например открываем шорт +1 к лонгу.

В итоге получим просто перевесы в размере позиции, то есть лонгов 144 шортов 145, в итоге текущая позиция просто 1лот шорт. Это слегка не привычно с точки зрения восприятия, но главное избегаем двух транзакций!
Скрипт построен на фьючерсе ртс, индикаторов в принципе нет, простенький паттерн используется для демонстрации системы.
Так выглядит график при таком «фокусе»
Уменьшаем количество транзакций, перестроением алгоритма



( Читать дальше )
  • обсудить на форуме:
  • TSLab

Пробуем "умный" стоп-лосс

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


Начальный алгоритм достаточно прост и стандартен — хай/лоу с периодом в 2000 баров. Тикер РТС Фьючерс. Специально был взят отрезок из прошлого, так как на нем он лучше всего «летал».

Параметр не подогнанный — начальный период в блоках TSLab обычно 20 и мы приписали пару нулей для увеличения продолжительности сделки.
Эквити в начальном виде.
Пробуем "умный" стоп-лосс
Результаты показывать не будем, так как они будут более интересными, чем график дохода. Рекомендуем посмотреть как это работает на практике лично, если вы уже пользователь нашей программы)

Да — это не плохой график, но попытаемся сделать лучше! Выводим следующую формулу — открываем позицию, считаем доход/количество удерживаемых баров. Если значение растет, — значит рынок двигается с хорошей скоростью в нашу сторону. Если же начинает медленно падать или уходит в минус — значит перестал двигаться в нужном направлении. Пользуясь таким методом, алгоритм приближает стоп-лосс на 1 шаг цены с каждым баром. Для заметки: если работаете с историческими данными, то перепроверьте какой шаг цены вы указали. Иначе рискуете искать долго причину почему стоп не двигается ближе,  как это было у меня!)



( Читать дальше )
  • обсудить на форуме:
  • TSLab

Запись вебинара Павла Целищева "Автоматизация торговли для не программистов с использованием TSLab"

Доброго дня и продуктивной трудовой недели!

На нашем YouTube канале TSLab Live добавлена запись вебинара Павла Целищева «Автоматизация торговли для не программистов с использованием TSLab».



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

Вебинар был организован нашими коллегами из SR Solutions
srsolutions.ru
bot-adviser.ru
t.me/srsolutions
t.me/SowaTrends
  • обсудить на форуме:
  • TSLab

Логические и математические рассуждения при реализации алгоритма

Приветствуем.

Работая с программой TSLab, иногда, а иногда часто), возникают пожелания, в виде необходимости новых блоков, которые в составе софта отсутствуют. Многие сложности, на самом деле решаемы имеющимся функционалом, хотя иногда конечно не обойтись без программирования.
В комментариях к предыдущей статье, попросили добавить блок — месяц года. Просто взять и добавить блок — чаще всего это цикл через 6 рук пройдет от тикета с требованием к реализации, далее принятие решение о срочности и тд и тп. не суть важна в бюрократии, а в том что сделать можно все своими руками!

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



( Читать дальше )
  • обсудить на форуме:
  • TSLab

....все тэги
UPDONW
Новый дизайн