quant-zero
Version:
Node-Quant is a powerful Node.js package for developing and testing quantitative trading strategies in cryptocurrency markets, offering tools for backtesting and performance analysis.
48 lines (40 loc) • 1.35 kB
text/typescript
import { Indicator } from '@/lib/Indicator'
import ta from 'technicalindicators'
import { StochasticRSIOutput } from 'technicalindicators/declarations/momentum/StochasticRSI'
export class StockRSI extends Indicator {
public dPeriod: number = 9
public kPeriod: number = 12
public rsiPeriod: number = 14
public stochasticPeriod: number = 16
constructor(key: string, options: StockRSIOptions) {
super({
name: 'Bollinger Bands',
key: key,
description: 'Boillinger Bands.',
})
if (options.dPeriod) this.dPeriod = options.dPeriod
if (options.kPeriod) this.kPeriod = options.kPeriod
if (options.rsiPeriod) this.rsiPeriod = options.rsiPeriod
if (options.stochasticPeriod)
this.stochasticPeriod = options.stochasticPeriod
}
generate(): StochasticRSIOutput[] {
const values = this.data
.map((update) => update[4])
.filter((value): value is number => value !== undefined)
const stochRSI = ta.StochasticRSI.calculate({
values,
dPeriod: this.dPeriod,
kPeriod: this.kPeriod,
rsiPeriod: this.rsiPeriod,
stochasticPeriod: this.stochasticPeriod,
})
return stochRSI
}
}
export interface StockRSIOptions {
dPeriod: number
kPeriod: number
rsiPeriod: number
stochasticPeriod: number
}