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.
47 lines (40 loc) • 1.42 kB
text/typescript
import { Indicator } from '@/lib/Indicator'
import { parseIntoRows } from '@/utils/parseOHLCV'
import ta from 'technicalindicators'
import { IchimokuCloudOutput } from 'technicalindicators/declarations/ichimoku/IchimokuCloud'
export class IchimokuCloud extends Indicator {
public basePeriod: number = 9
public conversionPeriod: number = 12
public spanPeriod: number = 16
public displacement: number = 21
constructor(key: string, options: IchimokuCloudOptions) {
super({
name: 'Ichimoku Cloud',
key: key,
description: 'Ichimoku Cloud.',
})
if (options.basePeriod) this.basePeriod = options.basePeriod
if (options.conversionPeriod)
this.conversionPeriod = options.conversionPeriod
if (options.spanPeriod) this.spanPeriod = options.spanPeriod
if (options.displacement) this.displacement = options.displacement
}
generate(): IchimokuCloudOutput[] {
const { highs, lows } = parseIntoRows(this.data)
const ichimoku = ta.IchimokuCloud.calculate({
basePeriod: this.basePeriod,
conversionPeriod: this.conversionPeriod,
spanPeriod: this.spanPeriod,
displacement: this.displacement,
high: highs,
low: lows,
})
return ichimoku
}
}
export interface IchimokuCloudOptions {
basePeriod: number
conversionPeriod: number
spanPeriod: number
displacement: number
}