@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.
Files changed (99) hide show
  1. package/README.md +204 -17
  2. package/dist/esm/black-scholes.js +147 -0
  3. package/dist/esm/black-scholes.js.map +1 -0
  4. package/dist/esm/chart-engine.js +15 -0
  5. package/dist/esm/chart-engine.js.map +1 -0
  6. package/dist/esm/control-types.js +8 -0
  7. package/dist/esm/control-types.js.map +1 -1
  8. package/dist/esm/equity-widget.js +261 -0
  9. package/dist/esm/equity-widget.js.map +1 -0
  10. package/dist/esm/heatmap-grid.js +271 -0
  11. package/dist/esm/heatmap-grid.js.map +1 -0
  12. package/dist/esm/index.js +37 -0
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/log-monitor-widget.js +265 -0
  15. package/dist/esm/log-monitor-widget.js.map +1 -0
  16. package/dist/esm/log-tree.js +96 -0
  17. package/dist/esm/log-tree.js.map +1 -0
  18. package/dist/esm/optimization-heatmap-widget.js +303 -0
  19. package/dist/esm/optimization-heatmap-widget.js.map +1 -0
  20. package/dist/esm/option-desk-widget.js +322 -0
  21. package/dist/esm/option-desk-widget.js.map +1 -0
  22. package/dist/esm/option-smile-widget.js +252 -0
  23. package/dist/esm/option-smile-widget.js.map +1 -0
  24. package/dist/esm/pnl-curve.js +133 -0
  25. package/dist/esm/pnl-curve.js.map +1 -0
  26. package/dist/esm/statistics-widget.js +194 -0
  27. package/dist/esm/statistics-widget.js.map +1 -0
  28. package/dist/esm/strategies-widget.js +348 -0
  29. package/dist/esm/strategies-widget.js.map +1 -0
  30. package/dist/esm/surface-grid.js +282 -0
  31. package/dist/esm/surface-grid.js.map +1 -0
  32. package/dist/esm/surface-widget.js +379 -0
  33. package/dist/esm/surface-widget.js.map +1 -0
  34. package/dist/sstradingcontrols.js +2982 -295
  35. package/dist/sstradingcontrols.js.map +4 -4
  36. package/dist/types/black-scholes.d.ts +28 -0
  37. package/dist/types/black-scholes.d.ts.map +1 -0
  38. package/dist/types/chart-engine.d.ts +3 -0
  39. package/dist/types/chart-engine.d.ts.map +1 -0
  40. package/dist/types/control-types.d.ts +8 -0
  41. package/dist/types/control-types.d.ts.map +1 -1
  42. package/dist/types/equity-widget.d.ts +34 -0
  43. package/dist/types/equity-widget.d.ts.map +1 -0
  44. package/dist/types/heatmap-grid.d.ts +88 -0
  45. package/dist/types/heatmap-grid.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +31 -1
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/types/log-monitor-widget.d.ts +42 -0
  49. package/dist/types/log-monitor-widget.d.ts.map +1 -0
  50. package/dist/types/log-tree.d.ts +34 -0
  51. package/dist/types/log-tree.d.ts.map +1 -0
  52. package/dist/types/optimization-heatmap-widget.d.ts +45 -0
  53. package/dist/types/optimization-heatmap-widget.d.ts.map +1 -0
  54. package/dist/types/option-desk-widget.d.ts +68 -0
  55. package/dist/types/option-desk-widget.d.ts.map +1 -0
  56. package/dist/types/option-smile-widget.d.ts +39 -0
  57. package/dist/types/option-smile-widget.d.ts.map +1 -0
  58. package/dist/types/pnl-curve.d.ts +46 -0
  59. package/dist/types/pnl-curve.d.ts.map +1 -0
  60. package/dist/types/statistics-widget.d.ts +29 -0
  61. package/dist/types/statistics-widget.d.ts.map +1 -0
  62. package/dist/types/strategies-widget.d.ts +63 -0
  63. package/dist/types/strategies-widget.d.ts.map +1 -0
  64. package/dist/types/surface-grid.d.ts +64 -0
  65. package/dist/types/surface-grid.d.ts.map +1 -0
  66. package/dist/types/surface-widget.d.ts +64 -0
  67. package/dist/types/surface-widget.d.ts.map +1 -0
  68. package/dist/types/trading-data.d.ts +9 -0
  69. package/dist/types/trading-data.d.ts.map +1 -1
  70. package/package.json +54 -3
  71. package/screenshots/equity.png +0 -0
  72. package/screenshots/log-monitor.png +0 -0
  73. package/screenshots/optimization-surface.png +0 -0
  74. package/screenshots/optimization.png +0 -0
  75. package/screenshots/option-desk.png +0 -0
  76. package/screenshots/option-smile.png +0 -0
  77. package/screenshots/panels.jpg +0 -0
  78. package/screenshots/statistics.png +0 -0
  79. package/screenshots/strategies.png +0 -0
  80. package/src/black-scholes.ts +199 -0
  81. package/src/chart-engine.global.ts +64 -0
  82. package/src/chart-engine.ts +29 -0
  83. package/src/control-types.ts +8 -0
  84. package/src/equity-widget.ts +289 -0
  85. package/src/heatmap-grid.ts +405 -0
  86. package/src/index.ts +87 -0
  87. package/src/log-monitor-widget.ts +312 -0
  88. package/src/log-tree.ts +131 -0
  89. package/src/optimization-heatmap-widget.ts +347 -0
  90. package/src/option-desk-widget.ts +422 -0
  91. package/src/option-smile-widget.ts +281 -0
  92. package/src/pnl-curve.ts +216 -0
  93. package/src/statistics-widget.ts +226 -0
  94. package/src/strategies-widget.ts +435 -0
  95. package/src/surface-grid.ts +410 -0
  96. package/src/surface-widget.ts +457 -0
  97. package/src/trading-data.ts +22 -0
  98. package/styles/trading-controls.css +637 -0
  99. 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,3 @@
1
+ export { AreaSeries, CrosshairMode, LineSeries, createChart, } from '@stocksharp/chart';
2
+ export type { AreaData, CrosshairEvent, IChartApi, ISeriesApi, LineData, SeriesOptions, Time, } from '@stocksharp/chart';
3
+ //# sourceMappingURL=chart-engine.d.ts.map
@@ -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;;;;;;;;CAQf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"}
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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"}
@@ -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;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,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":"AAoBA,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAG1E,MAAM,WAAW,UAAU;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,UAAU,CAAC;CACnB;AAID,MAAM,WAAW,kBAAkB;IAE/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,WAAW,CAAC;CACrB;AAED,UAAU,OAAQ,SAAQ,YAAY;IAElC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,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,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,gBAAgB;IAQ1G,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;IA2CtF,OAAO,IAAI,IAAI;IAUf,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI;IAQvE,IAAI,IAAI,SAAS,OAAO,EAAE;IAI1B,OAAO,IAAI,IAAI;IAMf,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IAM/B,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;IAwFjC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAkBhH;AAMD,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,EAAE,CA6BnG;AAMD,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAkB/G;AAmBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAUlF;AAMD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAQpH"}
@@ -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"}