@stocksharp/trading-controls 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +204 -17
- package/dist/esm/black-scholes.js +147 -0
- package/dist/esm/black-scholes.js.map +1 -0
- package/dist/esm/chart-engine.js +15 -0
- package/dist/esm/chart-engine.js.map +1 -0
- package/dist/esm/control-types.js +8 -0
- package/dist/esm/control-types.js.map +1 -1
- package/dist/esm/equity-widget.js +261 -0
- package/dist/esm/equity-widget.js.map +1 -0
- package/dist/esm/heatmap-grid.js +271 -0
- package/dist/esm/heatmap-grid.js.map +1 -0
- package/dist/esm/index.js +37 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/log-monitor-widget.js +265 -0
- package/dist/esm/log-monitor-widget.js.map +1 -0
- package/dist/esm/log-tree.js +96 -0
- package/dist/esm/log-tree.js.map +1 -0
- package/dist/esm/optimization-heatmap-widget.js +303 -0
- package/dist/esm/optimization-heatmap-widget.js.map +1 -0
- package/dist/esm/option-desk-widget.js +322 -0
- package/dist/esm/option-desk-widget.js.map +1 -0
- package/dist/esm/option-smile-widget.js +252 -0
- package/dist/esm/option-smile-widget.js.map +1 -0
- package/dist/esm/pnl-curve.js +133 -0
- package/dist/esm/pnl-curve.js.map +1 -0
- package/dist/esm/statistics-widget.js +194 -0
- package/dist/esm/statistics-widget.js.map +1 -0
- package/dist/esm/strategies-widget.js +348 -0
- package/dist/esm/strategies-widget.js.map +1 -0
- package/dist/esm/surface-grid.js +282 -0
- package/dist/esm/surface-grid.js.map +1 -0
- package/dist/esm/surface-widget.js +379 -0
- package/dist/esm/surface-widget.js.map +1 -0
- package/dist/sstradingcontrols.js +2982 -295
- package/dist/sstradingcontrols.js.map +4 -4
- package/dist/types/black-scholes.d.ts +28 -0
- package/dist/types/black-scholes.d.ts.map +1 -0
- package/dist/types/chart-engine.d.ts +3 -0
- package/dist/types/chart-engine.d.ts.map +1 -0
- package/dist/types/control-types.d.ts +8 -0
- package/dist/types/control-types.d.ts.map +1 -1
- package/dist/types/equity-widget.d.ts +34 -0
- package/dist/types/equity-widget.d.ts.map +1 -0
- package/dist/types/heatmap-grid.d.ts +88 -0
- package/dist/types/heatmap-grid.d.ts.map +1 -0
- package/dist/types/index.d.ts +31 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/log-monitor-widget.d.ts +42 -0
- package/dist/types/log-monitor-widget.d.ts.map +1 -0
- package/dist/types/log-tree.d.ts +34 -0
- package/dist/types/log-tree.d.ts.map +1 -0
- package/dist/types/optimization-heatmap-widget.d.ts +45 -0
- package/dist/types/optimization-heatmap-widget.d.ts.map +1 -0
- package/dist/types/option-desk-widget.d.ts +68 -0
- package/dist/types/option-desk-widget.d.ts.map +1 -0
- package/dist/types/option-smile-widget.d.ts +39 -0
- package/dist/types/option-smile-widget.d.ts.map +1 -0
- package/dist/types/pnl-curve.d.ts +46 -0
- package/dist/types/pnl-curve.d.ts.map +1 -0
- package/dist/types/statistics-widget.d.ts +29 -0
- package/dist/types/statistics-widget.d.ts.map +1 -0
- package/dist/types/strategies-widget.d.ts +63 -0
- package/dist/types/strategies-widget.d.ts.map +1 -0
- package/dist/types/surface-grid.d.ts +64 -0
- package/dist/types/surface-grid.d.ts.map +1 -0
- package/dist/types/surface-widget.d.ts +64 -0
- package/dist/types/surface-widget.d.ts.map +1 -0
- package/dist/types/trading-data.d.ts +9 -0
- package/dist/types/trading-data.d.ts.map +1 -1
- package/package.json +54 -3
- package/screenshots/equity.png +0 -0
- package/screenshots/log-monitor.png +0 -0
- package/screenshots/optimization-surface.png +0 -0
- package/screenshots/optimization.png +0 -0
- package/screenshots/option-desk.png +0 -0
- package/screenshots/option-smile.png +0 -0
- package/screenshots/panels.jpg +0 -0
- package/screenshots/statistics.png +0 -0
- package/screenshots/strategies.png +0 -0
- package/src/black-scholes.ts +199 -0
- package/src/chart-engine.global.ts +64 -0
- package/src/chart-engine.ts +29 -0
- package/src/control-types.ts +8 -0
- package/src/equity-widget.ts +289 -0
- package/src/heatmap-grid.ts +405 -0
- package/src/index.ts +87 -0
- package/src/log-monitor-widget.ts +312 -0
- package/src/log-tree.ts +131 -0
- package/src/optimization-heatmap-widget.ts +347 -0
- package/src/option-desk-widget.ts +422 -0
- package/src/option-smile-widget.ts +281 -0
- package/src/pnl-curve.ts +216 -0
- package/src/statistics-widget.ts +226 -0
- package/src/strategies-widget.ts +435 -0
- package/src/surface-grid.ts +410 -0
- package/src/surface-widget.ts +457 -0
- package/src/trading-data.ts +22 -0
- package/styles/trading-controls.css +637 -0
- package/translation-keys.json +83 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const OptionTypes: {
|
|
2
|
+
readonly Call: "call";
|
|
3
|
+
readonly Put: "put";
|
|
4
|
+
};
|
|
5
|
+
export type OptionType = typeof OptionTypes[keyof typeof OptionTypes];
|
|
6
|
+
export interface OptionInputs {
|
|
7
|
+
assetPrice: number;
|
|
8
|
+
strike: number;
|
|
9
|
+
timeToExpiry: number;
|
|
10
|
+
riskFree: number;
|
|
11
|
+
dividend: number;
|
|
12
|
+
deviation: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Greeks {
|
|
15
|
+
delta: number;
|
|
16
|
+
gamma: number;
|
|
17
|
+
vega: number;
|
|
18
|
+
theta: number;
|
|
19
|
+
rho: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function normalCdf(x: number): number;
|
|
22
|
+
export declare function normalPdf(x: number): number;
|
|
23
|
+
export declare function d1(inputs: OptionInputs): number;
|
|
24
|
+
export declare function d2(inputs: OptionInputs): number;
|
|
25
|
+
export declare function premium(type: OptionType, inputs: OptionInputs): number;
|
|
26
|
+
export declare function greeks(type: OptionType, inputs: OptionInputs): Greeks;
|
|
27
|
+
export declare function impliedVolatility(type: OptionType, inputs: OptionInputs, price: number): number | null;
|
|
28
|
+
//# sourceMappingURL=black-scholes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"black-scholes.d.ts","sourceRoot":"","sources":["../../src/black-scholes.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAItE,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IAGf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;CACf;AAWD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAsC3C;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAGD,wBAAgB,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAO/C;AAGD,wBAAgB,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAG/C;AAMD,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CActE;AAID,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAiCrE;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBtG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-engine.d.ts","sourceRoot":"","sources":["../../src/chart-engine.ts"],"names":[],"mappings":"AAaA,OAAO,EACH,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACR,QAAQ,EACR,cAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,IAAI,GACP,MAAM,mBAAmB,CAAC"}
|
|
@@ -6,6 +6,14 @@ export declare const ControlTypes: {
|
|
|
6
6
|
readonly OrderBook: "orderbook";
|
|
7
7
|
readonly TradeFeed: "tradefeed";
|
|
8
8
|
readonly OrderEntry: "orderEntry";
|
|
9
|
+
readonly Statistics: "statistics";
|
|
10
|
+
readonly LogMonitor: "logMonitor";
|
|
11
|
+
readonly Strategies: "strategies";
|
|
12
|
+
readonly OptionDesk: "optionDesk";
|
|
13
|
+
readonly OptionSmile: "optionSmile";
|
|
14
|
+
readonly Equity: "equity";
|
|
15
|
+
readonly OptimizationHeatmap: "optimizationHeatmap";
|
|
16
|
+
readonly OptimizationSurface: "optimizationSurface";
|
|
9
17
|
};
|
|
10
18
|
export type ControlType = typeof ControlTypes[keyof typeof ControlTypes];
|
|
11
19
|
//# sourceMappingURL=control-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-types.d.ts","sourceRoot":"","sources":["../../src/control-types.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"control-types.d.ts","sourceRoot":"","sources":["../../src/control-types.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAgBf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TradingHost } from './trading-host.js';
|
|
2
|
+
import { type PnlPoint } from './pnl-curve.js';
|
|
3
|
+
import { type AreaData, type CrosshairEvent, type IChartApi, type ISeriesApi } from './chart-engine.js';
|
|
4
|
+
export interface EquityDeps {
|
|
5
|
+
host: TradingHost;
|
|
6
|
+
}
|
|
7
|
+
export declare class EquityWidget {
|
|
8
|
+
static TYPE: "equity";
|
|
9
|
+
rootEl: HTMLElement;
|
|
10
|
+
_host: TradingHost;
|
|
11
|
+
_closeBtn: HTMLElement | null;
|
|
12
|
+
_resetBtn: HTMLElement | null;
|
|
13
|
+
_lastEl: HTMLElement | null;
|
|
14
|
+
_hoverEl: HTMLElement | null;
|
|
15
|
+
_emptyEl: HTMLElement | null;
|
|
16
|
+
_chartEl: HTMLElement | null;
|
|
17
|
+
_chart: IChartApi | null;
|
|
18
|
+
_series: ISeriesApi<AreaData> | null;
|
|
19
|
+
_points: PnlPoint[];
|
|
20
|
+
_resizeObserver: ResizeObserver | null;
|
|
21
|
+
static create(hostEl: HTMLElement, state: Record<string, unknown>, deps: EquityDeps): EquityWidget;
|
|
22
|
+
static _buildRoot(host: TradingHost): HTMLElement;
|
|
23
|
+
constructor(rootEl: HTMLElement, _state: Record<string, unknown>, deps: EquityDeps);
|
|
24
|
+
dispose(): void;
|
|
25
|
+
update(points: PnlPoint[]): void;
|
|
26
|
+
resetZoom(): void;
|
|
27
|
+
chart(): IChartApi | null;
|
|
28
|
+
_ensureChart(): boolean;
|
|
29
|
+
_render(): void;
|
|
30
|
+
_fit(): void;
|
|
31
|
+
_renderLast(value: number | null): void;
|
|
32
|
+
_renderHover(param: CrosshairEvent): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=equity-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equity-widget.d.ts","sourceRoot":"","sources":["../../src/equity-widget.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAEH,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EACtE,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,WAAW,CAAC;CACrB;AA2BD,qBAAa,YAAY;IACrB,MAAM,CAAC,IAAI,WAAuB;IAElC,MAAM,EAAE,WAAW,CAAC;IAEpB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY;IAQlG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;gBAqBrC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU;IA8BlF,OAAO,IAAI,IAAI;IAcf,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMhC,SAAS,IAAI,IAAI;IAMjB,KAAK,IAAI,SAAS,GAAG,IAAI;IAMzB,YAAY,IAAI,OAAO;IAwCvB,OAAO,IAAI,IAAI;IAwBf,IAAI,IAAI,IAAI;IAUZ,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAavC,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;CAqB5C"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export declare const HeatDirections: {
|
|
2
|
+
readonly Higher: "higher";
|
|
3
|
+
readonly Lower: "lower";
|
|
4
|
+
};
|
|
5
|
+
export type HeatDirection = typeof HeatDirections[keyof typeof HeatDirections];
|
|
6
|
+
export interface HeatCell {
|
|
7
|
+
x: string;
|
|
8
|
+
y: string;
|
|
9
|
+
value: number;
|
|
10
|
+
}
|
|
11
|
+
export interface HeatBucket {
|
|
12
|
+
x: string;
|
|
13
|
+
y: string;
|
|
14
|
+
value: number;
|
|
15
|
+
count: number;
|
|
16
|
+
}
|
|
17
|
+
export interface HeatRect {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
}
|
|
23
|
+
export interface HeatScale {
|
|
24
|
+
anchor: number;
|
|
25
|
+
reach: number;
|
|
26
|
+
min: number;
|
|
27
|
+
max: number;
|
|
28
|
+
}
|
|
29
|
+
export interface HeatCellShape {
|
|
30
|
+
bucket: HeatBucket;
|
|
31
|
+
rect: HeatRect;
|
|
32
|
+
tint: number;
|
|
33
|
+
best: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface HeatGapShape {
|
|
36
|
+
x: string;
|
|
37
|
+
y: string;
|
|
38
|
+
rect: HeatRect;
|
|
39
|
+
}
|
|
40
|
+
export interface HeatLabel {
|
|
41
|
+
text: string;
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
}
|
|
45
|
+
export interface HeatMark {
|
|
46
|
+
value: number;
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
}
|
|
50
|
+
export interface HeatLegendStep {
|
|
51
|
+
rect: HeatRect;
|
|
52
|
+
tint: number;
|
|
53
|
+
}
|
|
54
|
+
export interface HeatLegend {
|
|
55
|
+
steps: HeatLegendStep[];
|
|
56
|
+
low: HeatMark;
|
|
57
|
+
anchor: HeatMark;
|
|
58
|
+
high: HeatMark;
|
|
59
|
+
}
|
|
60
|
+
export interface HeatLayoutInput {
|
|
61
|
+
width: number;
|
|
62
|
+
height: number;
|
|
63
|
+
cells: readonly HeatCell[];
|
|
64
|
+
betterWhen: HeatDirection;
|
|
65
|
+
xLabel: string;
|
|
66
|
+
yLabel: string;
|
|
67
|
+
}
|
|
68
|
+
export interface HeatLayout {
|
|
69
|
+
plot: HeatRect;
|
|
70
|
+
columns: string[];
|
|
71
|
+
rows: string[];
|
|
72
|
+
cells: HeatCellShape[];
|
|
73
|
+
gaps: HeatGapShape[];
|
|
74
|
+
xTicks: HeatLabel[];
|
|
75
|
+
yTicks: HeatLabel[];
|
|
76
|
+
xTitle: HeatLabel;
|
|
77
|
+
yTitle: HeatLabel;
|
|
78
|
+
legend: HeatLegend;
|
|
79
|
+
scale: HeatScale;
|
|
80
|
+
}
|
|
81
|
+
export declare function foldCells(cells: readonly HeatCell[]): HeatBucket[];
|
|
82
|
+
export declare function axisValues(values: readonly string[]): string[];
|
|
83
|
+
export declare function heatScale(buckets: readonly HeatBucket[]): HeatScale;
|
|
84
|
+
export declare function tintOf(value: number, scale: HeatScale, betterWhen: HeatDirection): number;
|
|
85
|
+
export declare function valueAt(tint: number, scale: HeatScale, betterWhen: HeatDirection): number;
|
|
86
|
+
export declare function layoutHeatmap(input: HeatLayoutInput): HeatLayout | null;
|
|
87
|
+
export declare function hitHeatmap(layout: HeatLayout, x: number, y: number): HeatCellShape | null;
|
|
88
|
+
//# sourceMappingURL=heatmap-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatmap-grid.d.ts","sourceRoot":"","sources":["../../src/heatmap-grid.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { MarketDataLevels, PRESENTATION_CLASSES, assertHost } from './trading-host.js';
|
|
2
2
|
export type { HostStore, MarketDataClient, MarketDataLevel, TickerSink, TradingApi, TradingContext, TradingControl, TradingHost, TradingPresentation, } from './trading-host.js';
|
|
3
|
-
export type { BalanceRow, InstrumentRow, OrderRow, OrderSide, OrderStatus, OrderType, PositionRow, QuoteStats, TradeRow, } from './trading-data.js';
|
|
3
|
+
export type { BalanceRow, InstrumentRow, OrderRow, OrderSide, OrderStatus, OrderType, PositionRow, QuoteStats, StatisticRow, TradeRow, } from './trading-data.js';
|
|
4
4
|
export { ControlTypes } from './control-types.js';
|
|
5
5
|
export type { ControlType } from './control-types.js';
|
|
6
6
|
export { cleanRejectReason, formatPnl, formatPrice, formatQty, formatTime } from './formatters.js';
|
|
@@ -20,10 +20,40 @@ export { OrderBookWidget } from './orderbook-widget.js';
|
|
|
20
20
|
export type { OrderBookDeps, OrderBookView } from './orderbook-widget.js';
|
|
21
21
|
export type { BookLevel, OrderBookFrame, QuoteLevel } from './trading-data.js';
|
|
22
22
|
export type { CanvasPalette } from './trading-host.js';
|
|
23
|
+
export { compressPnl, drawPnlCurve, pnlCurve } from './pnl-curve.js';
|
|
24
|
+
export { EquityWidget } from './equity-widget.js';
|
|
25
|
+
export type { EquityDeps } from './equity-widget.js';
|
|
26
|
+
export { AreaSeries, CrosshairMode, LineSeries, createChart } from './chart-engine.js';
|
|
27
|
+
export type { IChartApi, ISeriesApi } from './chart-engine.js';
|
|
28
|
+
export { OptimizationHeatmapWidget } from './optimization-heatmap-widget.js';
|
|
29
|
+
export type { OptimizationHeatmapDeps } from './optimization-heatmap-widget.js';
|
|
30
|
+
export { HeatDirections, heatScale, hitHeatmap, layoutHeatmap, tintOf, valueAt } from './heatmap-grid.js';
|
|
31
|
+
export { SurfaceWidget } from './surface-widget.js';
|
|
32
|
+
export type { SurfaceData, SurfaceDeps } from './surface-widget.js';
|
|
33
|
+
export { DEFAULT_VIEW, MAX_PITCH, MIN_PITCH, clampView, dragView, project, surfaceLayout, zoomView, } from './surface-grid.js';
|
|
34
|
+
export type { SurfaceAxis, SurfaceBox, SurfaceInput, SurfaceLayout, SurfaceQuad, SurfaceView } from './surface-grid.js';
|
|
35
|
+
export type { HeatBucket, HeatCell, HeatCellShape, HeatDirection, HeatGapShape, HeatLabel, HeatLayout, HeatLayoutInput, HeatLegend, HeatLegendStep, HeatMark, HeatRect, HeatScale, } from './heatmap-grid.js';
|
|
36
|
+
export type { PnlBox, PnlCurve, PnlCurveContext, PnlCurveStyle, PnlPoint } from './pnl-curve.js';
|
|
37
|
+
export { OptionDeskWidget, greekPlaces, greekScales, scaleChain, sideGreeks } from './option-desk-widget.js';
|
|
38
|
+
export { OptionSmileWidget } from './option-smile-widget.js';
|
|
39
|
+
export type { OptionSmileDeps } from './option-smile-widget.js';
|
|
40
|
+
export { sideVolatility, sortedChain, toSmileSeries } from './option-smile-widget.js';
|
|
41
|
+
export type { OptionChainContext, OptionDeskDeps, OptionSide, OptionStrike } from './option-desk-widget.js';
|
|
42
|
+
export { OptionTypes, d1, d2, greeks, impliedVolatility, normalCdf, normalPdf, premium } from './black-scholes.js';
|
|
43
|
+
export type { Greeks, OptionInputs, OptionType } from './black-scholes.js';
|
|
44
|
+
export { StrategiesWidget, StrategyStates } from './strategies-widget.js';
|
|
45
|
+
export type { StrategiesActions, StrategiesDeps, StrategyRow, StrategyState } from './strategies-widget.js';
|
|
46
|
+
export { LogMonitorWidget } from './log-monitor-widget.js';
|
|
47
|
+
export type { LogMonitorDeps } from './log-monitor-widget.js';
|
|
48
|
+
export { LogLevels, buildLogTree, keepLog, subtreeOf } from './log-tree.js';
|
|
49
|
+
export type { LogLevel, LogMessageRow, LogSourceNode, LogTreeNode, LogView } from './log-tree.js';
|
|
50
|
+
export { StatisticsWidget, formatStatistic } from './statistics-widget.js';
|
|
51
|
+
export type { StatisticsDeps } from './statistics-widget.js';
|
|
23
52
|
export { TradeFeedWidget } from './tradefeed-widget.js';
|
|
24
53
|
export type { TradeFeedDeps } from './tradefeed-widget.js';
|
|
25
54
|
export { aggregateBubbles } from './tradefeed-aggregator.js';
|
|
26
55
|
export type { FeedBubble, FeedTick } from './tradefeed-aggregator.js';
|
|
27
56
|
export { layoutBubbles } from './tradefeed-bubbles.js';
|
|
28
57
|
export type { BubbleAxisTick, BubbleLane, BubbleLaneShape, BubbleLayout, BubbleLayoutInput, BubbleShape } from './tradefeed-bubbles.js';
|
|
58
|
+
export { makeGridMenu } from './grid-menu.js';
|
|
29
59
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvF,YAAY,EACR,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,mBAAmB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACR,UAAU,EACV,aAAa,EACb,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKnG,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5E,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhH,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE1E,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/E,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TradingHost } from './trading-host.js';
|
|
2
|
+
import { type LogMessageRow, type LogSourceNode, type LogTreeNode } from './log-tree.js';
|
|
3
|
+
import { DataGrid, GridColumn } from '@stocksharp/grids/data-grid';
|
|
4
|
+
export interface LogMonitorDeps {
|
|
5
|
+
host: TradingHost;
|
|
6
|
+
maxMessages?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class LogMonitorWidget {
|
|
9
|
+
static TYPE: "logMonitor";
|
|
10
|
+
rootEl: HTMLElement;
|
|
11
|
+
el: HTMLElement | null;
|
|
12
|
+
_host: TradingHost;
|
|
13
|
+
_max: number;
|
|
14
|
+
_closeBtn: HTMLElement | null;
|
|
15
|
+
_clearBtn: HTMLElement | null;
|
|
16
|
+
_exportBtn: HTMLElement | null;
|
|
17
|
+
_treeEl: HTMLElement | null;
|
|
18
|
+
_filterEl: HTMLInputElement | null;
|
|
19
|
+
_sources: LogSourceNode[];
|
|
20
|
+
_messages: LogMessageRow[];
|
|
21
|
+
_levels: Set<string>;
|
|
22
|
+
_text: string;
|
|
23
|
+
_selected: string | null;
|
|
24
|
+
_grid: DataGrid<LogMessageRow> | null;
|
|
25
|
+
static create(hostEl: HTMLElement, state: Record<string, unknown>, deps: LogMonitorDeps): LogMonitorWidget;
|
|
26
|
+
static _buildRoot(host: TradingHost): HTMLElement;
|
|
27
|
+
constructor(rootEl: HTMLElement, _state: Record<string, unknown>, deps: LogMonitorDeps);
|
|
28
|
+
dispose(): void;
|
|
29
|
+
setSources(sources: LogSourceNode[]): void;
|
|
30
|
+
append(messages: LogMessageRow[]): void;
|
|
31
|
+
clear(): void;
|
|
32
|
+
select(sourceId: string | null): void;
|
|
33
|
+
visible(): LogMessageRow[];
|
|
34
|
+
_render(): void;
|
|
35
|
+
_renderTree(): void;
|
|
36
|
+
_appendNode(into: HTMLElement, node: LogTreeNode): void;
|
|
37
|
+
_treeRow(node: LogTreeNode, id: string | null): HTMLElement;
|
|
38
|
+
_export(): void;
|
|
39
|
+
_columns(): GridColumn<LogMessageRow>[];
|
|
40
|
+
_sourceName(id: string): string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=log-monitor-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-monitor-widget.d.ts","sourceRoot":"","sources":["../../src/log-monitor-widget.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAEY,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAC1E,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD,qBAAa,gBAAgB;IACzB,MAAM,CAAC,IAAI,eAA2B;IAEtC,MAAM,EAAE,WAAW,CAAC;IACpB,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAEvB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,gBAAgB;IAW1G,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;gBAwCrC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc;IA0DtF,OAAO,IAAI,IAAI;IAQf,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI;IAQ1C,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI;IASvC,KAAK,IAAI,IAAI;IAMb,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAOrC,OAAO,IAAI,aAAa,EAAE;IAK1B,OAAO,IAAI,IAAI;IAIf,WAAW,IAAI,IAAI;IASnB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAOvD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW;IAc3D,OAAO,IAAI,IAAI;IAIf,QAAQ,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE;IAsCvC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;CAGlC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const LogLevels: {
|
|
2
|
+
readonly Error: "error";
|
|
3
|
+
readonly Warning: "warning";
|
|
4
|
+
readonly Info: "info";
|
|
5
|
+
readonly Debug: "debug";
|
|
6
|
+
readonly Verbose: "verbose";
|
|
7
|
+
};
|
|
8
|
+
export type LogLevel = typeof LogLevels[keyof typeof LogLevels];
|
|
9
|
+
export interface LogSourceNode {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
parentId?: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface LogTreeNode extends LogSourceNode {
|
|
15
|
+
depth: number;
|
|
16
|
+
children: LogTreeNode[];
|
|
17
|
+
}
|
|
18
|
+
export interface LogMessageRow {
|
|
19
|
+
id: number | string;
|
|
20
|
+
time: number | string;
|
|
21
|
+
level: LogLevel | string;
|
|
22
|
+
sourceId: string;
|
|
23
|
+
source?: string;
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function buildLogTree(sources: readonly LogSourceNode[]): LogTreeNode[];
|
|
27
|
+
export declare function subtreeOf(sources: readonly LogSourceNode[], selectedId: string | null): Set<string> | null;
|
|
28
|
+
export interface LogView {
|
|
29
|
+
levels: ReadonlySet<string>;
|
|
30
|
+
text: string;
|
|
31
|
+
sources: ReadonlySet<string> | null;
|
|
32
|
+
}
|
|
33
|
+
export declare function keepLog(message: LogMessageRow, view: LogView): boolean;
|
|
34
|
+
//# sourceMappingURL=log-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-tree.d.ts","sourceRoot":"","sources":["../../src/log-tree.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAGhE,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAGD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B;AAGD,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAEpB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,WAAW,EAAE,CAoB7E;AAkBD,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAmB1G;AAGD,MAAM,WAAW,OAAO;IACpB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvC;AAGD,wBAAgB,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAQtE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TradingHost } from './trading-host.js';
|
|
2
|
+
import type { HeatCell, HeatCellShape, HeatDirection, HeatLayout, HeatRect } from './heatmap-grid.js';
|
|
3
|
+
export interface HeatmapData {
|
|
4
|
+
xLabel: string;
|
|
5
|
+
yLabel: string;
|
|
6
|
+
metricLabel: string;
|
|
7
|
+
betterWhen: HeatDirection;
|
|
8
|
+
cells: HeatCell[];
|
|
9
|
+
}
|
|
10
|
+
export interface OptimizationHeatmapDeps {
|
|
11
|
+
host: TradingHost;
|
|
12
|
+
}
|
|
13
|
+
export declare class OptimizationHeatmapWidget {
|
|
14
|
+
static TYPE: "optimizationHeatmap";
|
|
15
|
+
rootEl: HTMLElement;
|
|
16
|
+
canvasEl: HTMLCanvasElement | null;
|
|
17
|
+
_host: TradingHost;
|
|
18
|
+
_metricEl: HTMLElement | null;
|
|
19
|
+
_emptyEl: HTMLElement | null;
|
|
20
|
+
_tooltipEl: HTMLElement | null;
|
|
21
|
+
_closeBtn: HTMLElement | null;
|
|
22
|
+
_ctx: CanvasRenderingContext2D | null;
|
|
23
|
+
_data: HeatmapData | null;
|
|
24
|
+
_layout: HeatLayout | null;
|
|
25
|
+
_size: {
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
} | null;
|
|
29
|
+
_resizeObserver: ResizeObserver | null;
|
|
30
|
+
static create(hostEl: HTMLElement, state: Record<string, unknown>, deps: OptimizationHeatmapDeps): OptimizationHeatmapWidget;
|
|
31
|
+
static _buildRoot(host: TradingHost): HTMLElement;
|
|
32
|
+
constructor(rootEl: HTMLElement, _state: Record<string, unknown>, deps: OptimizationHeatmapDeps);
|
|
33
|
+
dispose(): void;
|
|
34
|
+
update(data: HeatmapData): void;
|
|
35
|
+
_sizeCanvas(): void;
|
|
36
|
+
_render(): void;
|
|
37
|
+
_paintTint(ctx: CanvasRenderingContext2D, rect: HeatRect, tint: number, ground: string, up: string, down: string): void;
|
|
38
|
+
static _outline(ctx: CanvasRenderingContext2D, rect: HeatRect, inset: number): void;
|
|
39
|
+
_setEmpty(empty: boolean): void;
|
|
40
|
+
_bindHover(): void;
|
|
41
|
+
_showTooltip(shape: HeatCellShape, x: number, y: number): void;
|
|
42
|
+
_tooltipLine(label: string, value: string): HTMLElement;
|
|
43
|
+
_hideTooltip(): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=optimization-heatmap-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimization-heatmap-widget.d.ts","sourceRoot":"","sources":["../../src/optimization-heatmap-widget.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKtG,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;CACrB;AAID,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,WAAW,CAAC;CACrB;AAmBD,qBAAa,yBAAyB;IAClC,MAAM,CAAC,IAAI,wBAAoC;IAE/C,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEnC,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAG1B,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,uBAAuB,GAAG,yBAAyB;IAa5H,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;gBAgBrC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,uBAAuB;IA2B/F,OAAO,IAAI,IAAI;IAQf,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAU/B,WAAW,IAAI,IAAI;IAiBnB,OAAO,IAAI,IAAI;IAoFf,UAAU,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAWvH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAcnF,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM/B,UAAU,IAAI,IAAI;IAkBlB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAkC9D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAOvD,YAAY,IAAI,IAAI;CAGvB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { TradingHost } from './trading-host.js';
|
|
2
|
+
import { type Greeks } from './black-scholes.js';
|
|
3
|
+
import { DataGrid, GridColumn } from '@stocksharp/grids/data-grid';
|
|
4
|
+
export interface OptionSide {
|
|
5
|
+
symbol?: string;
|
|
6
|
+
bid?: number | null;
|
|
7
|
+
ask?: number | null;
|
|
8
|
+
last?: number | null;
|
|
9
|
+
theoretical?: number | null;
|
|
10
|
+
volume?: number | null;
|
|
11
|
+
openInterest?: number | null;
|
|
12
|
+
ivBid?: number | null;
|
|
13
|
+
ivAsk?: number | null;
|
|
14
|
+
ivLast?: number | null;
|
|
15
|
+
historicalVolatility?: number | null;
|
|
16
|
+
greeks?: Greeks;
|
|
17
|
+
}
|
|
18
|
+
export interface OptionStrike {
|
|
19
|
+
strike: number;
|
|
20
|
+
call: OptionSide;
|
|
21
|
+
put: OptionSide;
|
|
22
|
+
}
|
|
23
|
+
export interface OptionChainContext {
|
|
24
|
+
assetPrice?: number | null;
|
|
25
|
+
timeToExpiry?: number | null;
|
|
26
|
+
riskFree?: number;
|
|
27
|
+
dividend?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface OptionDeskDeps {
|
|
30
|
+
host: TradingHost;
|
|
31
|
+
}
|
|
32
|
+
interface DeskRow extends OptionStrike {
|
|
33
|
+
maxCallVolume: number;
|
|
34
|
+
maxPutVolume: number;
|
|
35
|
+
maxCallOpenInterest: number;
|
|
36
|
+
maxPutOpenInterest: number;
|
|
37
|
+
maxVolatility: number;
|
|
38
|
+
callIntrinsic: number;
|
|
39
|
+
putIntrinsic: number;
|
|
40
|
+
}
|
|
41
|
+
export declare class OptionDeskWidget {
|
|
42
|
+
static TYPE: "optionDesk";
|
|
43
|
+
rootEl: HTMLElement;
|
|
44
|
+
el: HTMLElement | null;
|
|
45
|
+
_host: TradingHost;
|
|
46
|
+
_closeBtn: HTMLElement | null;
|
|
47
|
+
_exportBtn: HTMLElement | null;
|
|
48
|
+
_rows: DeskRow[];
|
|
49
|
+
_context: OptionChainContext;
|
|
50
|
+
_places: Record<keyof Greeks, number>;
|
|
51
|
+
_grid: DataGrid<DeskRow> | null;
|
|
52
|
+
static create(hostEl: HTMLElement, state: Record<string, unknown>, deps: OptionDeskDeps): OptionDeskWidget;
|
|
53
|
+
static _buildRoot(host: TradingHost): HTMLElement;
|
|
54
|
+
constructor(rootEl: HTMLElement, _state: Record<string, unknown>, deps: OptionDeskDeps);
|
|
55
|
+
dispose(): void;
|
|
56
|
+
update(strikes: OptionStrike[], context?: OptionChainContext): void;
|
|
57
|
+
rows(): readonly DeskRow[];
|
|
58
|
+
_export(): void;
|
|
59
|
+
_rowClass(row: DeskRow): string;
|
|
60
|
+
_columns(): GridColumn<DeskRow>[];
|
|
61
|
+
_bar(value: number | null | undefined, max: number, kind: 'call' | 'put' | 'iv', text: string): string | Node;
|
|
62
|
+
}
|
|
63
|
+
export declare function scaleChain(strikes: readonly OptionStrike[], context: OptionChainContext): DeskRow[];
|
|
64
|
+
export declare function sideGreeks(row: OptionStrike, which: 'call' | 'put', context: OptionChainContext): Greeks | null;
|
|
65
|
+
export declare function greekPlaces(values: readonly (number | null | undefined)[]): number;
|
|
66
|
+
export declare function greekScales(rows: readonly OptionStrike[], context: OptionChainContext): Record<keyof Greeks, number>;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=option-desk-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-desk-widget.d.ts","sourceRoot":"","sources":["../../src/option-desk-widget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TradingHost } from './trading-host.js';
|
|
2
|
+
import type { OptionChainContext, OptionSide, OptionStrike } from './option-desk-widget.js';
|
|
3
|
+
import { type CrosshairEvent, type IChartApi, type ISeriesApi, type LineData } from './chart-engine.js';
|
|
4
|
+
export interface OptionSmileDeps {
|
|
5
|
+
host: TradingHost;
|
|
6
|
+
}
|
|
7
|
+
export declare function sideVolatility(side: OptionSide | undefined): number | null;
|
|
8
|
+
export declare function sortedChain(strikes: readonly OptionStrike[]): OptionStrike[];
|
|
9
|
+
export declare function toSmileSeries(chain: readonly OptionStrike[], put: boolean): LineData[];
|
|
10
|
+
export declare class OptionSmileWidget {
|
|
11
|
+
static TYPE: "optionSmile";
|
|
12
|
+
rootEl: HTMLElement;
|
|
13
|
+
_host: TradingHost;
|
|
14
|
+
_closeBtn: HTMLElement | null;
|
|
15
|
+
_resetBtn: HTMLElement | null;
|
|
16
|
+
_emptyEl: HTMLElement | null;
|
|
17
|
+
_chartEl: HTMLElement | null;
|
|
18
|
+
_spotEl: HTMLElement | null;
|
|
19
|
+
_hoverEl: HTMLElement | null;
|
|
20
|
+
_chart: IChartApi | null;
|
|
21
|
+
_call: ISeriesApi<LineData> | null;
|
|
22
|
+
_put: ISeriesApi<LineData> | null;
|
|
23
|
+
_strikes: OptionStrike[];
|
|
24
|
+
_context: OptionChainContext;
|
|
25
|
+
_resizeObserver: ResizeObserver | null;
|
|
26
|
+
static create(hostEl: HTMLElement, state: Record<string, unknown>, deps: OptionSmileDeps): OptionSmileWidget;
|
|
27
|
+
static _buildRoot(host: TradingHost): HTMLElement;
|
|
28
|
+
constructor(rootEl: HTMLElement, _state: Record<string, unknown>, deps: OptionSmileDeps);
|
|
29
|
+
dispose(): void;
|
|
30
|
+
update(strikes: OptionStrike[], context?: OptionChainContext): void;
|
|
31
|
+
resetZoom(): void;
|
|
32
|
+
chart(): IChartApi | null;
|
|
33
|
+
_ensureChart(): boolean;
|
|
34
|
+
_render(): void;
|
|
35
|
+
_fit(): void;
|
|
36
|
+
_renderSpot(): void;
|
|
37
|
+
_renderHover(param: CrosshairEvent): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=option-smile-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-smile-widget.d.ts","sourceRoot":"","sources":["../../src/option-smile-widget.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAEH,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EACtE,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,WAAW,CAAC;CACrB;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAW1E;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE,CAI5E;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,EAAE,CAUtF;AAED,qBAAa,iBAAiB;IAC1B,MAAM,CAAC,IAAI,gBAA4B;IAEvC,MAAM,EAAE,WAAW,CAAC;IAEpB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,GAAG,iBAAiB;IAQ5G,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;gBAgCrC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe;IA6BvF,OAAO,IAAI,IAAI;IAef,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI;IAOvE,SAAS,IAAI,IAAI;IAKjB,KAAK,IAAI,SAAS,GAAG,IAAI;IAIzB,YAAY,IAAI,OAAO;IA+BvB,OAAO,IAAI,IAAI;IAef,IAAI,IAAI,IAAI;IAYZ,WAAW,IAAI,IAAI;IAcnB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;CAiB5C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export interface PnlPoint {
|
|
2
|
+
time: number;
|
|
3
|
+
value: number;
|
|
4
|
+
}
|
|
5
|
+
export interface PnlBox {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
padX: number;
|
|
9
|
+
padY: number;
|
|
10
|
+
}
|
|
11
|
+
export interface PnlCurve {
|
|
12
|
+
points: [number, number][];
|
|
13
|
+
area: [number, number][];
|
|
14
|
+
zeroY: number;
|
|
15
|
+
min: number;
|
|
16
|
+
max: number;
|
|
17
|
+
from: number;
|
|
18
|
+
to: number;
|
|
19
|
+
last: number;
|
|
20
|
+
positive: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function compressPnl(points: readonly PnlPoint[], count: number): PnlPoint[];
|
|
23
|
+
export declare function pnlCurve(points: readonly PnlPoint[], box: PnlBox): PnlCurve | null;
|
|
24
|
+
export interface PnlCurveStyle {
|
|
25
|
+
up: string;
|
|
26
|
+
down: string;
|
|
27
|
+
baseline: string;
|
|
28
|
+
lineWidth: number;
|
|
29
|
+
fillOpacity: number;
|
|
30
|
+
}
|
|
31
|
+
export interface PnlCurveContext {
|
|
32
|
+
clearRect(x: number, y: number, w: number, h: number): void;
|
|
33
|
+
beginPath(): void;
|
|
34
|
+
moveTo(x: number, y: number): void;
|
|
35
|
+
lineTo(x: number, y: number): void;
|
|
36
|
+
closePath(): void;
|
|
37
|
+
stroke(): void;
|
|
38
|
+
fill(): void;
|
|
39
|
+
setLineDash(segments: number[]): void;
|
|
40
|
+
globalAlpha: number;
|
|
41
|
+
strokeStyle: string | CanvasGradient | CanvasPattern;
|
|
42
|
+
fillStyle: string | CanvasGradient | CanvasPattern;
|
|
43
|
+
lineWidth: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function drawPnlCurve(ctx: PnlCurveContext, curve: PnlCurve, box: PnlBox, style: PnlCurveStyle): void;
|
|
46
|
+
//# sourceMappingURL=pnl-curve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pnl-curve.d.ts","sourceRoot":"","sources":["../../src/pnl-curve.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IAErB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAE3B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAEzB,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IAIZ,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAGb,QAAQ,EAAE,OAAO,CAAC;CACrB;AAeD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiClF;AAQD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAmDlF;AAID,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,eAAe;IAC5B,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,SAAS,IAAI,IAAI,CAAC;IAClB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,IAAI,IAAI,CAAC;IAClB,MAAM,IAAI,IAAI,CAAC;IACf,IAAI,IAAI,IAAI,CAAC;IACb,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IAGpB,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IACrD,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CA6B3G"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TradingHost } from './trading-host.js';
|
|
2
|
+
import type { StatisticRow } from './trading-data.js';
|
|
3
|
+
import { DataGrid, GridColumn } from '@stocksharp/grids/data-grid';
|
|
4
|
+
export interface StatisticsDeps {
|
|
5
|
+
host: TradingHost;
|
|
6
|
+
}
|
|
7
|
+
interface RankedRow extends StatisticRow {
|
|
8
|
+
categoryRank: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class StatisticsWidget {
|
|
11
|
+
static TYPE: "statistics";
|
|
12
|
+
rootEl: HTMLElement;
|
|
13
|
+
el: HTMLElement | null;
|
|
14
|
+
_host: TradingHost;
|
|
15
|
+
_closeBtn: HTMLElement | null;
|
|
16
|
+
_exportBtn: HTMLElement | null;
|
|
17
|
+
_rows: RankedRow[];
|
|
18
|
+
_grid: DataGrid<RankedRow> | null;
|
|
19
|
+
static create(hostEl: HTMLElement, state: Record<string, unknown>, deps: StatisticsDeps): StatisticsWidget;
|
|
20
|
+
static _buildRoot(host: TradingHost): HTMLElement;
|
|
21
|
+
constructor(rootEl: HTMLElement, _state: Record<string, unknown>, deps: StatisticsDeps);
|
|
22
|
+
dispose(): void;
|
|
23
|
+
update(rows: StatisticRow[]): void;
|
|
24
|
+
_export(): void;
|
|
25
|
+
_columns(): GridColumn<RankedRow>[];
|
|
26
|
+
}
|
|
27
|
+
export declare function formatStatistic(value: unknown): string;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=statistics-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statistics-widget.d.ts","sourceRoot":"","sources":["../../src/statistics-widget.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,WAAW,CAAC;CACrB;AAGD,UAAU,SAAU,SAAQ,YAAY;IACpC,YAAY,EAAE,MAAM,CAAC;CACxB;AAiBD,qBAAa,gBAAgB;IACzB,MAAM,CAAC,IAAI,eAA2B;IAEtC,MAAM,EAAE,WAAW,CAAC;IACpB,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAEvB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAElC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,gBAAgB;IAU1G,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;gBAqBrC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc;IA+CtF,OAAO,IAAI,IAAI;IAQf,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI;IAKlC,OAAO,IAAI,IAAI;IAMf,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;CAyCtC;AASD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAmBtD"}
|