Розробка рушія бектестингу на Python

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка рушія бектестингу на Python
Складний
~1-2 тижні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1286
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка движка бектестингу на Python

Python — домінуючий язык для розробки бектест-движків завдяки багатій екосистемі: NumPy, pandas, scipy для обчислень, ccxt для інтеграції бірж, matplotlib/plotly для візуалізації. Розробка власного движка виправдана коли готові рішення (Backtrader, Freqtrade) не закривають специфічні вимоги.

Архітектура кастомного движка

# Основні абстракції
from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from decimal import Decimal
from typing import Optional
import pandas as pd

@dataclass
class Bar:
    timestamp: pd.Timestamp
    open: float
    high: float
    low: float
    close: float
    volume: float

@dataclass
class Order:
    id: str
    symbol: str
    side: str          # 'BUY' | 'SELL'
    type: str          # 'MARKET' | 'LIMIT' | 'STOP'
    quantity: float
    price: Optional[float] = None
    stop_price: Optional[float] = None
    status: str = 'PENDING'

@dataclass
class Position:
    symbol: str
    side: str
    quantity: float
    avg_entry_price: float
    unrealized_pnl: float = 0.0
    realized_pnl: float = 0.0

class Strategy(ABC):
    def __init__(self, context: 'BacktestContext'):
        self.ctx = context

    @abstractmethod
    def on_bar(self, bar: Bar) -> None:
        pass

    def buy(self, quantity: float, order_type: str = 'MARKET', price: float = None) -> Order:
        return self.ctx.submit_order(Order(
            id=self.ctx.generate_id(),
            symbol=self.ctx.symbol,
            side='BUY',
            type=order_type,
            quantity=quantity,
            price=price,
        ))

    def sell(self, quantity: float, order_type: str = 'MARKET', price: float = None) -> Order:
        return self.ctx.submit_order(Order(
            id=self.ctx.generate_id(),
            symbol=self.ctx.symbol,
            side='SELL',
            type=order_type,
            quantity=quantity,
            price=price,
        ))

    @property
    def position(self) -> Optional[Position]:
        return self.ctx.get_position(self.ctx.symbol)

    @property
    def cash(self) -> float:
        return self.ctx.portfolio.cash

Python бектест-movements забезпечує гнучкість та контроль, необхідні для професіональної розробки алгоритмів з повним контролем над симуляцією ринку.