UNPKG

@gabriel3615/ta_analysis

Version:

stock ta analysis

57 lines (56 loc) 1.44 kB
import { Candle } from '../../types.js'; export type SignalDirection = 'long' | 'short' | 'flat'; export interface Signal { timestamp: Date; direction: SignalDirection; strength?: number; entry?: number; stop?: number; targets?: number[]; reason?: string; } export interface Strategy { name: string; generateSignal: (history: Candle[], i: number) => Promise<Signal | null> | Signal | null; } export interface BacktestConfig { initialCapital: number; positionSizing: number; maxConcurrentPositions: number; commissionPerTrade: number; slippageBps: number; allowShort: boolean; exitParams?: { takeProfitPercent?: number; stopLossPercent?: number; trailingStopPercent?: number; }; } export interface Trade { entryIdx: number; exitIdx: number; direction: 'long' | 'short'; entryPrice: number; exitPrice: number; qty: number; pnl: number; } export interface BacktestResult { trades: Trade[]; totalPnL: number; returns: number[]; equity: number[]; metrics: { winRate: number; avgWin: number; avgLoss: number; maxDrawdown: number; sharpe: number; tradeCount: number; }; } export declare class Backtester { private config; constructor(config?: Partial<BacktestConfig>); run(candles: Candle[], strategy: Strategy): Promise<BacktestResult>; }