UNPKG

skayn-trading-sdk

Version:

Professional Bitcoin trading strategy backtesting framework with institutional-grade architecture

109 lines (93 loc) 3.12 kB
// TypeScript definitions for Skayn Trading SDK export interface TradingSignal { action: 'BUY' | 'SELL' | 'HOLD'; confidence: number; quantity?: number; strategy?: string; reasons?: string[]; } export interface MarketData { timestamp: number; open: number; high: number; low: number; close: number; volume: number; } export interface Portfolio { balance: number; positions: any[]; totalValue: number; } export interface BacktestResults { initialBalance?: number; finalBalance?: number; totalReturn?: number; totalTrades?: number; winRate?: number; maxDrawdown?: number; trades?: any[]; } export interface BacktestConfig { startDate?: string; endDate?: string; initialBalance?: number; symbol?: string; interval?: string; } export interface StrategyMetadata { name: string; version: string; description: string; } export interface Strategy { analyze(data: MarketData[], portfolio: Portfolio): Promise<TradingSignal>; getRequiredWarmupPeriods(): number; getStrategyMetadata(): StrategyMetadata; } export interface DataProvider { getData(startDate: string, endDate: string, interval?: string, symbol?: string): Promise<MarketData[]>; } export interface BacktestEngine { runBacktest(config: BacktestConfig): Promise<BacktestResults>; setStrategy(strategy: Strategy): void; setDataProvider(dataProvider: DataProvider): void; } export class SkaynTradingSDK { constructor(config?: any); strategy(strategy: Strategy): SkaynTradingSDK; dataProvider(provider: DataProvider): SkaynTradingSDK; exchange(exchange: any): SkaynTradingSDK; backtestEngine(engine: BacktestEngine): SkaynTradingSDK; backtest(config?: BacktestConfig): Promise<BacktestResults>; live(config?: any): Promise<void>; } export interface SDKFactory { create(config?: any): SkaynTradingSDK; strategy(analyzeFunction: (data: MarketData[], portfolio: Portfolio) => Promise<TradingSignal>, metadata?: Partial<StrategyMetadata>): Strategy; dataProvider(getDataFunction: (startDate: string, endDate: string, interval?: string, symbol?: string) => Promise<MarketData[]>, metadata?: any): DataProvider; backtestEngine(runBacktestFunction: (config: BacktestConfig) => Promise<BacktestResults>, metadata?: any): BacktestEngine; } export const SDK: SDKFactory; // Base interfaces for extending export { Strategy as IStrategy }; export { DataProvider as IDataProvider }; export { BacktestEngine as IBacktestEngine }; // Framework components export class TradingFramework { constructor(config?: any); use(type: string, nameOrInstance: string | any, config?: any): TradingFramework; get(type: string): any; initialize(): Promise<TradingFramework>; runBacktest(config?: BacktestConfig): Promise<BacktestResults>; startTrading(config?: any): Promise<void>; stopTrading(): Promise<void>; } export class PluginRegistry { constructor(); registerPlugin(type: string, name: string, pluginClass: any, metadata?: any): void; getInstance(type: string, name: string, config?: any): any; } export class ErrorHandler { static handle(error: Error): void; }