Блог им. tradezen |Пересечение скользящих средних + трейлинг стоп

В прошлых сериях:
— Простое пересечение скользящих стредних на 49 тикерах (https://smart-lab.ru/blog/730110.php)
— Пересечение + стоп в процентах от входа (https://smart-lab.ru/blog/730616.php). Стало только хуже.
— Пересечение + стоп на основе ATR (https://smart-lab.ru/blog/731254.php) Тоже стало хуже.

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

Рассмотрел четыре варианта трейлинг стопа: 1, 3, 5 и 10%.
Пересечение скользящих средних + трейлинг стоп

Топ 10 по доходности изначальной стратегии со всем вариантами трейлинг стопа

ret, max_dd — доходность и просадка простого пересечения скользящих средних
tps1...10_ret, tps1...10_max_dd — доходность и просадка разных процентов трейлин стопа

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

ОФФТОП |Нужно больше данных или как качать данные с яху финанс, финама и бинанса в одном месте

Нужно больше данных или как качать данные с яху финанс, финама и бинанса в одном месте



Короче, меня поглотило программирование. Данных нужно всё больше и одним бинансом не обойтись. Зафигачил единый интерфейс для яху финанс, финама и бинанса. Надеюсь внутренний программист меня отпустит и дальше напишу что-нибудь про тестирование стратегий.

В телеграме есть ссылка на гитхаб и примеры кода bit.ly/zenoftrading

Блог им. tradezen |Скачиватель исторических данных с бинанса

Скачиватель исторических данных с бинанса


Для тестов мне нужно скачивать много исторических котировок с бинанса. Сделал для себя небольшую обертку на питоне. На выходе получается красивый датафрейм с удобочитаемой датой и столбцами open, high, low, close, volume и csv файл в придачу. Датафрейм или файл можно подавать на вход тестировщика.

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

Исходники залил на гитхаб. Ссылку можно взять у меня в телеграме: bit.ly/zenoftrading
  • обсудить на форуме:
  • Binance

Блог им. tradezen |Как бесплатно качать исторические котировки c tradingview с помощью python

Искал откуда можно скачать исторические котировки. Да так, чтобы все было в одном месте: и рынок РФ, и рынок США, и фьючерсы, и крипта. Да ещё и бесплатно.

Все эти котировки есть в tradingview, но скачать оттуда можно только в платном аккаунте.

Как бесплатно качать исторические котировки c tradingview с помощью python



Кстати, при регистрации дают пробный период на 30 дней на любом тарифе. Во время пробного периода можно купить платный аккаунт со скидкой до 60%.

Как бесплатно качать исторические котировки c tradingview с помощью python

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

Блог им. tradezen |Как скачать исторические котировки c yahoo finance и финама с помощью python

В одной из прошлых заметок мне нужно было скачать исторические котировки по 650 активам. Часть из них на российском рынке, часть крипта и большая часть на рынке США. Всё, что касается крипты, валют и американского рынка качал с yahoo finance. Российский рынок качал с финама. Естественно качал с помощью питона. Дальше расскажу как это можно повторить.

Yahoo finance и python


Пакет yfinance. Гитахб github.com/ranaroussi/yfinance Установка командой: pip install yfinance

Можно качать не только дневные данные. Интервалы из документации: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo На практике данные меньше дневных сильно ограничены. Например, часовые доступны за 60 последних дней.

Перейдём к делу, как качать котировки:

import yfinance as yf

data = yf.download(«TSLA», start=«2017-01-01», end=«2017-04-30»)

Как добавить интервал:

data = yf.download(«TSLA», start=«2017-01-01», end=«2017-04-30», interval='1h')

Данные скачиваются в датафрейм. Датафрейм можно сохранить в csv:

data.to_csv('tsla.csv')

Для тикеров с московской биржи нужно добавить постфикс .ME. То есть SBER и GAZP превращаются в SBER.ME и GAZP.ME Для валют тикеры выглядят вот так RUBUSD=X Для криптовалют BTC-USD

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

Блог им. tradezen |Как слать сообщения в телеграм из питона в три строчки

Удобно когда бот шлёт сообщения в телеграм, а не в лог файл. Как это можно сделать в python? Очень просто.

Как слать сообщения в телеграм из питона в три строчки

Шаг 1. Устанавливаем либу loguru. Вам же нужно логирование в боте? Через loguru настраивается парой строчек.
Шаг 2. Устанавливаем либу notifiers которая шлёт сообщения куда угодно тоже парой строчек.
Шаг 3. Настраиваем

# подключаем либы
from loguru import logger
from notifiers.logging import NotificationHandler

# прописываем параметры телеграм бота, от чьего имени и куда слать, где их взять думаю сами разберетесь
params = {
    'token': 'dfdfsfasdfljsahdfkljhasdfklj',
    'chat_id': 'dfkdsflksdjfls;kfjas;ldkf'
}
tg_handler = NotificationHandler("telegram", defaults=params)

# добавляем в logger правило, что все логи уровня info и выше отсылаются в телегу
logger.add(tg_handler, level="INFO")

Я у себя настроил уровень info. Использую его как раз для сообщений в телегу. А вот debug сообщения в телегу уже не приходят. Нечего эфир засорять. Подробнее про уровни логов можно почитать в справке docs.python.org/3/library/logging.html#logging-levels

Шаг 4. Отправляем сообщение
logger.info("Слава роботам! Убить всех человеков!")

Если не нужны логи, можно слать просто через notifiers.

Блог им. tradezen |Быстрый бектестинг стратегии на python с pandas

Я уже давно использую для бектестов python и pandas. pandas это библиотека для работы с матрицами и её прелесть в том, что она оперирует векторами и работает ГОРАЗДО быстрее, чем обычные циклы. Для того, чтобы сохранить это достоинство при бектестах я использую логарифмическую доходность (log-return на английском). Не ручаюсь за русские термины, так как узнал про них из англоязычных статей. Написанное ниже не истина в первой инстанции, а моя попытка разобраться как это всё работает чтобы применять на практике. Если я не прав, напишите. Я хоть и защищал кандидатскую диссертацию, но не по математике или экономике.

Немного теории



Логарифмическая доходность — разница стоимости актива в разные промежутки времени в процентах. Рассчитываеся по такой формуле:  
Быстрый бектестинг стратегии на python с pandas


Формула для расчёта логарифмической доходности, логарифм натуральный

Теперь на примере акций теслы. Цена по дням:  

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

Блог им. tradezen |Простой бот для крипто биржи Deribit

Нашёл тестовое задание на разработчика в один фонд. Само задание можно посмотреть в файле. Нужно написать робота для крипто биржи Deribit. Из требований:
1. Написать на python 3
2. Нужно использовать asyncio так как API Deribit работает через websockets
3. Для управления зависимостями использовать poetry
4. Запуск робота через docker и docker compose
5. Написать пару тройку юнит тестов
6. Данные по сделкам сохранять в mysql базу данных.

Не долго думая решил его закодить, потренироваться лишний раз в программировании, заодно разобраться в API Deribit.

Базу данных использовал sqlite. Юнит тесты пока не делал.

Бот можно использовать как пример работы с API Deribit. Код работает как есть без всяких гарантий.

Ссылку на гитхаб можно найти у меня в телеграме: t.me/zenoftrading/68
  • обсудить на форуме:
  • Deribit

Блог им. tradezen |Простой торговый робот для биржи Binance без индикаторов

Ссылка на код на github в телеграме

Бот исключительно в демонстрационных целях. Когда я писал своего первого бота мне не хватало чего-то такого.

Идею для торговой стрегии взял из книги Ларри Вильямса «Долгосрочные секреты краткосрочной торговли» и слегка упростил. Он называет это прорыв волатильности. В чём суть:
— считаем разницу между хай и лоу предыдущей свечи
— к цене открытия текущей свечи прибавляем разницу из предыдущего пункта, это и будет ценой для входа в позицию
— если цена достигла этой цены покупаем
— выход на октрытии следующего бара

Всё. Максимально просто.

Теперь ещё раз то же самое на примере.
— Хай прошлой свечи 251 USDT, лоу 248 USDT. Разница 3 USDT.
— Открытие текущей свечи 250 USDT. Цена входа 253 USDT.
— Как только цена достигла 253 USDT покупаем 0,1 BNB
— На следующем открытии свечи выходим. Если цена выше, то заработали что-то, если нет, то нет.

Торговая пара BNB/USDT с биржи binance.

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

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

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