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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка рушія бектестингу на JavaScript/TypeScript
Складний
~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

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

JavaScript та TypeScript бектест-movements дозволяють бектестинг у браузері та Node.js середовищу. TradingView Pine Script занадто обмежений для професіонального бектестингу; кастомні engines на JavaScript забезпечують повний контроль з web-based фронтендами.

Архітектура

interface Bar {
  timestamp: Date;
  open: number;
  high: number;
  low: number;
  close: number;
  volume: number;
}

interface Order {
  id: string;
  symbol: string;
  side: 'BUY' | 'SELL';
  type: 'MARKET' | 'LIMIT' | 'STOP';
  quantity: number;
  price?: number;
  stopPrice?: number;
  status: 'PENDING' | 'FILLED' | 'CANCELLED';
}

interface Position {
  symbol: string;
  side: 'LONG' | 'SHORT';
  quantity: number;
  avgEntryPrice: number;
  unrealizedPnL: number;
  realizedPnL: number;
}

abstract class Strategy {
  protected context: BacktestContext;

  abstract onBar(bar: Bar): void;

  buy(quantity: number, orderType: 'MARKET' | 'LIMIT' = 'MARKET', price?: number): Order {
    return this.context.submitOrder({
      id: this.context.generateId(),
      symbol: this.context.symbol,
      side: 'BUY',
      type: orderType,
      quantity,
      price,
    });
  }

  sell(quantity: number, orderType: 'MARKET' | 'LIMIT' = 'MARKET', price?: number): Order {
    return this.context.submitOrder({
      id: this.context.generateId(),
      symbol: this.context.symbol,
      side: 'SELL',
      type: orderType,
      quantity,
      price,
    });
  }

  get position(): Position | null {
    return this.context.getPosition(this.context.symbol);
  }

  get cash(): number {
    return this.context.portfolio.cash;
  }
}

JavaScript/TypeScript бектестинг дозволяє швидку ітерацію та web-based дашборди аналізу для професіональних трейдерів.