Дневник алго-трейдера.

415
Статистика
Статистика
415
Статистика темы
  • Популярность
    Топ-163
  • Постов
    1,130
  • Просмотров
    210,576
  • Подписок
    415
  • Карма автора
    +10,019
Лучшие посты автора
Лучшие посты читателей
1 2 3 57
  • Всем привет! 
    Решил завести дневник по алго-трейдингу. Что-то не видно на форуме алго-трейдеров. То ли нет плюсовых, то ли они очень шифруются.


    Одно из моих увлечений - это программирование. Я не профессиональный программист, так что пишу только то, что мне интересно. 
    Я автор программы UPTO (программа для мультитейблинга и мультируминга), которая довольно давно распространяется на этом форуме. Хотя я давно не пишу в теме по UPTO, она до сих пор пользуется спросом.
    Также я написал солвер для китайского покера - это самый сложный и интересный мой проект.
    Из последнего - я один из разработчиков Биффа, который придумал Mercator.


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


    Точка отсчета - 01.01.2023, банкролл - 4300 USDT.


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

    Ответить Цитировать
    1/453
    + 68
  • Galax @ 10.01.23 

    А также надеюсь на какой-то фидбек.

    А это мы запросто. Скинь какую-нибудь стратегию а мы посмотрим, можно даже просто в виде исходника  

    Ответить Цитировать
    1/36
    + 5
  • В двух словах о стратегии.

    В основном все стратегии можно разделить на два больших подкласса - это трендовые и контр-трендовые.

    Из моих 4-х стратегий, 2 были контр-трендовые и 2 трендовые. 

     

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

     

    Противоположный класс стратегий - это трендовые. Они строятся на предположении, что если цена сделала движение в какую-то сторону, то она вероятно продолжит движение в эту сторону еще какое-то время. Это инерционность рынка (тренд наш друг). Задача такой стратегии - определить каким-то образом начало тренда, открыть сделку в направлении тренда (это стоп-заявки) и выйти из сделки, когда цена начнет разворачиваться. У этих стратегий процент убыточных сделок большой (60 на 40 в среднем) - они часто дают небольной минус, но зато когда плюсуют (когда ловят хороший тренд) они с лихвой перекрывают все минусы. Трендовые стратегии хороши при сильном движении (неважно вверх или вниз), но плохи во время флета.

     

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

    Ответить Цитировать
    2/453
    + 19
  • И так есть у нас какая-то трендовая стратегия. Мы смогли как-то формализировать все этапы и задать однозначные правила -  когда открывать сделку, по какой цене, каким объемом, когда будем закрывать сделку, где будет стоп-лосс и тейк-профит. Только имея такие строгие правила, компьютер сможет торговать длительное время без нашего вмешательства. Но есть несколько параметров, которые мы может выставить в два положения (вкл-выкл) и мы не знаем пока какое положение покажет лучший результат.

     

    Параметр первый - каким объемом входить в сделку. В своей стратегии я задаю программе размер средств (Capital $), которые я выделяю для этой стратегии. Программа сама расчитывает, какой размер лота нужно открыть и по какой цене. Но у нас есть два варианта - открыть по этой цене сразу весь лот (вариант 1) или разделить лот на 4 равных части (unit) и входить лесенкой по одному юниту, постепенно по мере движения цены (вариант 2). Первый вариант простой и очевидный. Второй имеет свои плюсы и свои минусы. Плюс в том, что когда цена во флете и мы болтаемся в узком диапазоне, то мы чаще всего имеем минусовые сделки. Когда мы открываем только один юнит и цена при этом развернулась, то мы получим в 4 раза меньший убыток по-сравнению с тем если бы мы открыли сделку сразу на всю сумму. Так как минусовых сделок 60%, то мы чаще будем экономить на таких сделках. Минус варианта 2 в том, что когда сделка плюсовая и мы вошли всеми 4-мя юнитами, то наша средняя цена входа хуже, чем если бы мы вошли сразу всем объемом. Т.е  когда в сделку грузится все 4 юнита, то вариант 2 проигрывает варианту 1, но когда грузится только 1 или 2 юнита, то выигрывает. Другими словами, когда сделка плюсовая, то мы зарабатываем чуть меньше, но когда минусовая, то и проигрываем тоже меньше. Сглаживается диспа и просадка уменьшается.  Но какой вариант лучше на дистанции трудно сказать, поэтому буду тестировать их на реальных сделках.

     

    Параметр второй - когда выходить из сделки. Есть стандартный выход он определяется по графику цены. Но кроме этого есть аварийный (или авральный?) стоп-лосс - он рассчитывается таким образом, чтобы убыток на одну сделку был не больше заданого значения. Этот авральный стоп-лосс обычно дает меньше убыток, чем стандартный выход. Кроме этого, если мы применяем вариант с 4-мя юнитами, то аварийный стоп-лосс двигается вместе с ценой по мере открытия каждого юнита. И когда мы вошли всеми 4-мя юнитами лесенкой и потом цена пошла в обратную сторону, то стоп-лосс сработает намного раньше и ограничит наши убытки по сравнении с тем, если бы мы вошли  сразу всей сумой и стоп-лосс стоял бы дальше от цены входа. Но при применении аврального стоп-лосса есть один, не очень очевидный минус, о котором чуть позже.

    Итак у нас есть два варианта - применять авральный стоп-лосс (вариант А) или не применять (вариант Б). Стандартный стоп-лосс будет применяться в обоих вариантах.

     

    В совокупности у нас есть четыре варианта - 1А, 2А, 1Б, 2Б. Задача - смоделировать на реальных данных все четыре варианта и определить победителя.

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

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

    Ответить Цитировать
    3/453
    + 8
  • Дельные мысли, сам много размышлял о вышеприведённых проблемах. Если вкратце что я думаю. По стоплоссу выхожу только руками, когда вижу, что структура тренда сломана. Да, часто теряю лишнего, зато нет обидных выносов хвостами. Я в основном всё-таки торгую к бтц, и даже когда на рынке очередной чёрный день и биток делает -20%, то хорошие альты непосредственно к битку обычно теряют не так много. Если не брать скамы, не брать то, что уже выросло на сотни процентов, и не забухивать на несколько суток не заходя в бот и графики (вот с этим пунктом основная проблема), то думаю можно стопы не ставить.

    Galax @ 10.01.23 

    Но у нас есть два варианта - открыть по этой цене сразу весь лот (вариант 1) или разделить лот на 4 равных части (unit) и входить лесенкой по одному юниту, постепенно по мере движения цены (вариант 2).

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

    Ответить Цитировать
    2/36
    + 3
  • Galax @ 10.01.23 

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

    Именно это мне видится ключевым: как уверенно определить, что есть тренд, и сделать это не слишком поздно, когда цена уже плохая. И если мы как-то научились более-менее это определять сами, то как формализовать алгоритм для машины. Бьюсь над этим уже годами    А стопы, цены выхода и т.д. это мелочи.

    Ответить Цитировать
    3/36
    + 2
  • Вся торговля ведется автоматически ботом. Мое участвие только в том, что я решаю для какой крипто-пары включить стратегию и какую сумму выделить для этой крипто-пары. Статистика  будет вестись с  01.01.2023. 

    Итак запущена одна стратегия для ETHBUSD, для нее выделено 4000$. Время от времени я буду менять выделяемую сумму. Возможно буду открывать дополнительно стратегии для других пар. Но эта пара - основная и именно по ней я хочу собрать максимально больше статистики.

    Результаты торговли буду смотреть в TradersDiaries от CScalp. Вот так приблизительно выглядит отчет за 07 и 08 января.

     

     

     Нас интересуют сделки только по паре ETHBUSD. Остальные сделки - это эксперименты на небольших объемах по другим стратегиям. Этот отчет хорош тем, что сразу дает  чистый результат, учитывая комиссию и фандинг. Но к сожалению я не могу отфильтровать только нужную мне пару и экран засоряется кучей мелких отчетов. Поэтому я буду копировать результаты в ексель и показывать вам только результаты по паре ETHBUSD.

     

    А вот результат в екселе с 01.01. по 08.01 

     

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

    Ответить Цитировать
    4/453
    + 8
  • Что мы видим по результатам первых восьми дней? Прогнозируемо побеждает моя рабочая стратегия с 4 юнитами и авральным стоп-лоссом. За счет более близкого стоп-лосса минусовые сделки дают меньше минуса. Но тут происходит сделка на 9-й день, которая в корне все меняет. Я упоминал, что короткий стоп-лосс может иметь негативный эффект - вот он и произошел. Открывается сделка в лонг, набирается позиция лесенкой на все 4 юнита и потом резкий откат и срабатывает близкий стоп-лосс. Остальные три варианта стоп-лосс не ловят, пережидают этот откат и на следующий день цена сильно идет вверх, давая всем трем стратегиям сильный плюс. Первая же стратегия после стоп-лосса, перезаходит в лонг, но уже по намного хуже цене и с меньшим к-вом объема. В результате плюс намного хуже. Вот статистика по 09.01.

     

    Первая стратегия делает две сделки - одну минусовую -60$ и вторую плюсовую +306$ - в сумме приносит +246$. Другие стратегии делают за это же время только одну плюсовую сделку - +675$! Честно говоря, я не ожидал такой огромной разницы. Близкий стоп-лосс принес "медвежью услугу". Теперь первая страта сильно отстает. 

    Но это еще не конец. Будем наблюдать дальше. Как часто будут срабатывать такие ложные стоп-лоссы? Удастся ли наверстать упущенное или придется переключится на другую, более выгодную стратегию?

     

    Но в общем год начался удачно. В реале получилось +383$ за 10 дней (это почти 10% от банкролла), а потенциально могло быть почти +700$. Тестируем дальше...

    Ответить Цитировать
    5/453
    + 7
  • А как резалты по бэктестам? Чем бэктестил и на каком периоде? Получилось ли забэктестить корректно вариант с 4 входами? Какой таймфрейм(-ы?) у страты? Лимитки или маркет?
    Круто, что решил завести блог!

    Ответить Цитировать
    1/3
    + 4
  • lovetaylor13, Хорошие, дельные вопросы.

    Бектестил на TradingView, таймфрейм 1H. Вариант с 4 входами не удалось корректно запрожить. На языках высокого уровня я могу что угодно запрожить, а на ихнем PineScript не понятно как простую переменную сохранить. Буду признателен, если кто подскажет как можно забектестить 4 юнита. По той же причине не корректно выставляются на бектестах авральные стоп-лоссы. По этому есть корректные бектесты только для простой стратегии - один юнит и без аврального стоп-лосса. Поэтому и решено проводить реальную торговлю, чтобы понять какая страта лучше. Результаты бектестов слишком хорошие, чтобы поверить в их реальность. Возможно где-то глючит TradingView, возможно я что-то упускаю из виду. Также мы знаем, что результаты на прошлых периодах не гарантируют успех в будущем. Поэтому набираемся терпения и следим за реальной торговлей, а затем будем делать выводы.

    Ответить Цитировать
    6/453
    + 2
  • Лимитки или маркет?

    Сначала я сделал довольно сложный алгоритм используя лимитки. Когда цена достигает нужного уровня включается алгоритм выставления лимитки. 

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

    Ответить Цитировать
    7/453
    + 2
  • Galax @ 10.01.23 

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

    Скачиваю историю свеч непосредственно с API бинанса и по ней анализирую.

    Ответить Цитировать
    4/36
    + 3
  • Galax, Я перепробовал пожалуй все опенсорс бектестеры, остановился на vectorbt. Давно интересовал вопрос бэктеста без концептуальных ограничений, чтобы можно было и n входов иметь, и n выходов, и лимитки юзать, и таймфреймы комбинировать, и всё-всё-всё, да и чтоб быстрый был. Смог комфортно это реализовать только в vbt. Есть еще tslab и osengine от отечественных разрабов, тоже в целом норм, но там шарп и гуй, а я больше по питону и консольке.
    Если будешь разбираться с vbt, обращайся, поделюсь скриптами. Я в нем не один десяток часов убил, либа занимательная. Короче, рекомендую)

    Ответить Цитировать
    2/3
    + 3
  • Galax @ 10.01.23 

    Если через некоторое время (например 20 сек) ордер не исполнился, то снова проверяем лучшую цену и выставляем уже по новой цене и так в цикле пока не исполнится лимитка.

     Можно иметь постоянный фид текущего лучшего бида и лучшего аска, и не ждать, а переставлять сразу же когда лучшая цена становится больше твоей, если ордер всё еще не исполнен. Ну типа всегда держать ордер на лучшем биде(если лонг). Все равно конечно когда цена начинает движ, то может полететь наверх вообще без продаж а значит и без нас. Так что да, если страта именно на пробой то маркеты имеют смысл.
    Кстати, страта лонг онли или в обе?

    Ответить Цитировать
    3/3
    + 0
  • mihhhhey @ 10.01.23 

    Скачиваю историю свеч непосредственно с API бинанса и по ней анализирую.

    Ну это слишком долгий путь. Я прикидывал, что если самому писать полноценный бектестер, то на это может уйти пару недель кодинга (а может и месяцев). А когда обнаружил TradingView, то обрадовался, что весь бектестинг я могу сделать, исправив пару строчек в готовом коде (и затратив пару часов на то, чтобы разобраться с кодом). Это сильно сэкономило мне время. Также на TradingView я познакомился со многими стратегиями и идеями, которые дали толчок в построении своих собственных стратегий.

    Ответить Цитировать
    8/453
    + 3
  • Кстати, страта лонг онли или в обе?

    В обе, и лонг и шорт.

    Ответить Цитировать
    9/453
    + 0
  • Galax, хоть и мало, что понимаю, но интересно читать. Успехов в этом году👍🏻

    Ответить Цитировать
    1/2
    + 3
  • Нахрена автоматизировать алготрейдинг (что с огромной вероятностью минусово, если ты, конечно, не планиируешь бабки с лохов под трейдинг своего бота привлекать), когда сейчас полно возможностей для арбитража (в том числе фьючей/фандингов, DEXов и NFT) или стратегий хеджированного майнинга ликвидности.

    Ответить Цитировать
    1/42
    + 0
  • народ, не знаете, где есть сервера, кроме Америки (надо там проживать, чтобы торговать с их айпи), с пингом ~2мс до бинанса?

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

    Ответить Цитировать
    1/2
    + 1
  • Galax, Успехов! Какой язык предпочитаешь?  Как тебе c# ?

    Ответить Цитировать
    1/4
    + 1
1 2 3 57
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.