Интеграция с Jesse (Python)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с Jesse (Python)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция с Jesse (Python)

Jesse — Python фреймворк для алготрейдинга с акцентом на простоту кода и качество бэктестинга. Особенность Jesse — подробные отчёты о бэктестах включая дневные P&L, метрики по отдельным сделкам, и встроенная защита от look-ahead bias.

Установка и создание проекта

pip install jesse
jesse make-project my-trading-strategy
cd my-trading-strategy

Написание стратегии

from jesse import research
from jesse.strategies import Strategy
import jesse.indicators as ta

class MACrossStrategy(Strategy):
    @property
    def fast_period(self) -> int:
        return self.hp.get('fast_period', 9)

    @property
    def slow_period(self) -> int:
        return self.hp.get('slow_period', 21)

    def should_long(self) -> bool:
        fast_ema = ta.ema(self.candles, self.fast_period)
        slow_ema = ta.ema(self.candles, self.slow_period)
        rsi = ta.rsi(self.candles, 14)
        return fast_ema > slow_ema and rsi < 45

    def should_short(self) -> bool:
        return False  # Только long-стратегия

    def should_cancel_entry(self) -> bool:
        return False

    def go_long(self):
        qty = self.capital * 0.95 / self.price
        self.buy = qty, self.price  # market order

    def go_short(self):
        pass

    def update_position(self):
        fast_ema = ta.ema(self.candles, self.fast_period)
        slow_ema = ta.ema(self.candles, self.slow_period)

        if fast_ema < slow_ema:
            self.liquidate()

    def hyperparameters(self) -> list:
        return [
            {'name': 'fast_period', 'type': int, 'min': 5, 'max': 20, 'default': 9},
            {'name': 'slow_period', 'type': int, 'min': 15, 'max': 50, 'default': 21},
        ]

Бэктестинг через код

from jesse import research

# Загрузка данных
candles = research.get_candles(
    exchange='Binance',
    symbol='BTC-USDT',
    timeframe='1h',
    start_date='2023-01-01',
    finish_date='2024-01-01',
)

# Запуск бэктеста
result = research.backtest(
    config={
        'starting_balance': 10_000,
        'fee': 0.001,
        'futures_leverage_mode': 'cross',
        'futures_leverage': 1,
        'exchange': 'Spot Binance',
    },
    routes=[
        {'exchange': 'Spot Binance', 'strategy': 'MACrossStrategy', 'symbol': 'BTC-USDT', 'timeframe': '1h'},
    ],
    extra_routes=[],
    candles={'Spot Binance BTC-USDT 1h': candles},
)

# Просмотр результатов
print(result['metrics'])

Особенности Jesse

Встроенная защита от look-ahead: Jesse использует индекс -2 вместо -1 для текущего бара — self.candles[-1] это закрытый последний бар, а не текущий незакрытый.

Расчёт позиции через self.capital: автоматически учитывает текущий доступный капитал.

Multiple routes: одновременный бэктест нескольких стратегий на разных символах с учётом общего портфеля.

Результаты бэктеста включают: полный список сделок с entry/exit ценами, P&L каждой сделки, equity curve по дням, Sharpe, Sortino, Calmar, max drawdown, winning streak.

Jesse хорош для трейдеров, которым нужен чистый код без лишних абстракций и качественные отчёты по бэктестам. Меньше overhead чем Freqtrade для simple strategies.