canvas-trading
Version:
Interactive HTML5 Canvas Trading Chart
90 lines (89 loc) • 2.32 kB
TypeScript
/// <reference types="react" />
import type { Candle2D } from './classes/CandleClasses';
export interface CandleToDraw {
open: number;
openTime: string | Date;
closeTime: string | Date;
high: number;
low: number;
close: number;
indicators: Indicators;
trades?: AssignedTrade[];
asset?: string;
}
export type MountedIndicatorType = keyof Pick<Indicators, 'fractal' | 'revBar'> | 'trade';
export type IndicatorValue = RevBarIndicator | FractalIndicator | number;
export interface FoundCandle<T extends Candle2D | CandleToDraw = Candle2D> {
candle: T | false;
index: number;
innerIndex: number;
}
export interface AoCandle {
x: number;
y: number;
vertexValue: number;
height: number;
}
export interface AssignedTrade {
tradeID: number;
tradeType: 'long' | 'short';
buyPrice: number;
sellPrice: number;
profit: number;
isThisCandleStart: boolean;
isThisCandleEnd: boolean;
}
export interface OtherSettings {
allTradesShown?: boolean;
alligator?: boolean;
ao?: boolean;
stdev?: boolean;
mountedIndicators?: boolean;
/** @default true */
zoom?: boolean;
/** @default true */
scroll?: boolean;
/** @default false */
showAsset?: boolean;
showLastCandlePrice?: boolean;
cursor?: boolean;
/** @default false */
resizable?: boolean;
/** @default false */
fullscreen?: boolean;
aoCanvasStyle?: React.CSSProperties;
onlyShowSelectedFibonacci?: boolean;
autoFocusOnSelectedFibonacci?: boolean;
drawRevBar?: boolean;
drawFractal?: boolean;
dateTimeZone?: 'local' | 'UTC';
}
export type CheckedOtherSettings = Required<OtherSettings>;
export interface Indicators {
revBar: RevBarIndicator | '';
fractal: FractalIndicator | '';
hOrL: HighOrLow | '';
alligator: {
jaw: number;
teeth: number;
lips: number;
};
ao: {
value: number;
vertexValue: number;
};
stdev: number;
}
export type HighOrLow = 'high' | 'low';
export type RevBarIndicator = 'buy' | 'sell';
export type FractalIndicator = 'up' | 'down';
export type Vector2 = {
x: number;
y: number;
};
export interface FibonacciRetracement {
priceA: number;
priceB: number;
startDate: Date;
endDate: Date;
}