@gabriel3615/ta_analysis
Version:
stock ta analysis
57 lines (56 loc) • 1.44 kB
TypeScript
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>;
}