@tradecanvas/core 1.1.0 → 1.2.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/LICENSE +21 -21
- package/dist/axis/PriceAxis.d.ts.map +1 -1
- package/dist/drawings/tools/Circle.d.ts +14 -0
- package/dist/drawings/tools/Circle.d.ts.map +1 -0
- package/dist/drawings/tools/CrossLine.d.ts +13 -0
- package/dist/drawings/tools/CrossLine.d.ts.map +1 -0
- package/dist/drawings/tools/CyclicLines.d.ts +15 -0
- package/dist/drawings/tools/CyclicLines.d.ts.map +1 -0
- package/dist/drawings/tools/DateAndPriceRange.d.ts +17 -0
- package/dist/drawings/tools/DateAndPriceRange.d.ts.map +1 -0
- package/dist/drawings/tools/FibChannel.d.ts +19 -0
- package/dist/drawings/tools/FibChannel.d.ts.map +1 -0
- package/dist/drawings/tools/FibSpeedResistanceFan.d.ts +26 -0
- package/dist/drawings/tools/FibSpeedResistanceFan.d.ts.map +1 -0
- package/dist/drawings/tools/HorizontalRay.d.ts +18 -0
- package/dist/drawings/tools/HorizontalRay.d.ts.map +1 -0
- package/dist/drawings/tools/InfoLine.d.ts +15 -0
- package/dist/drawings/tools/InfoLine.d.ts.map +1 -0
- package/dist/drawings/tools/Pitchfork.d.ts +17 -6
- package/dist/drawings/tools/Pitchfork.d.ts.map +1 -1
- package/dist/drawings/tools/PriceLabel.d.ts +15 -0
- package/dist/drawings/tools/PriceLabel.d.ts.map +1 -0
- package/dist/drawings/tools/RiskReward.d.ts +20 -0
- package/dist/drawings/tools/RiskReward.d.ts.map +1 -0
- package/dist/drawings/tools/TrendAngle.d.ts +18 -0
- package/dist/drawings/tools/TrendAngle.d.ts.map +1 -0
- package/dist/drawings/tools/index.d.ts +13 -0
- package/dist/drawings/tools/index.d.ts.map +1 -1
- package/dist/drawings/tools/labels.d.ts +27 -0
- package/dist/drawings/tools/labels.d.ts.map +1 -0
- package/dist/drawings/tools/patterns.d.ts +64 -0
- package/dist/drawings/tools/patterns.d.ts.map +1 -0
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2037 -991
- package/dist/index.js.map +1 -1
- package/dist/indicators/IndicatorBase.d.ts +10 -1
- package/dist/indicators/IndicatorBase.d.ts.map +1 -1
- package/dist/indicators/IndicatorEngine.d.ts +19 -1
- package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
- package/dist/indicators/IndicatorValueMap.d.ts +38 -0
- package/dist/indicators/IndicatorValueMap.d.ts.map +1 -0
- package/dist/indicators/index.d.ts +5 -0
- package/dist/indicators/index.d.ts.map +1 -1
- package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
- package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
- package/dist/indicators/overlay/BollingerBands.d.ts +1 -0
- package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
- package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
- package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
- package/dist/indicators/overlay/EMA.d.ts +1 -0
- package/dist/indicators/overlay/EMA.d.ts.map +1 -1
- package/dist/indicators/overlay/Envelope.d.ts +18 -0
- package/dist/indicators/overlay/Envelope.d.ts.map +1 -0
- package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
- package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
- package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
- package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
- package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
- package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
- package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
- package/dist/indicators/overlay/SMA.d.ts +1 -0
- package/dist/indicators/overlay/SMA.d.ts.map +1 -1
- package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
- package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
- package/dist/indicators/overlay/TEMA.d.ts +21 -0
- package/dist/indicators/overlay/TEMA.d.ts.map +1 -0
- package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
- package/dist/indicators/overlay/VWMA.d.ts +17 -0
- package/dist/indicators/overlay/VWMA.d.ts.map +1 -0
- package/dist/indicators/overlay/WMA.d.ts +23 -0
- package/dist/indicators/overlay/WMA.d.ts.map +1 -0
- package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
- package/dist/indicators/panel/ADX.d.ts.map +1 -1
- package/dist/indicators/panel/ATR.d.ts +1 -0
- package/dist/indicators/panel/ATR.d.ts.map +1 -1
- package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -1
- package/dist/indicators/panel/Aroon.d.ts.map +1 -1
- package/dist/indicators/panel/AwesomeOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -1
- package/dist/indicators/panel/CCI.d.ts.map +1 -1
- package/dist/indicators/panel/CMF.d.ts.map +1 -1
- package/dist/indicators/panel/ChaikinOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -1
- package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -1
- package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -1
- package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -1
- package/dist/indicators/panel/Coppock.d.ts.map +1 -1
- package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -1
- package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -1
- package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
- package/dist/indicators/panel/FisherTransform.d.ts.map +1 -1
- package/dist/indicators/panel/ForceIndex.d.ts.map +1 -1
- package/dist/indicators/panel/KST.d.ts.map +1 -1
- package/dist/indicators/panel/Klinger.d.ts.map +1 -1
- package/dist/indicators/panel/MACD.d.ts +3 -0
- package/dist/indicators/panel/MACD.d.ts.map +1 -1
- package/dist/indicators/panel/MFI.d.ts.map +1 -1
- package/dist/indicators/panel/MassIndex.d.ts.map +1 -1
- package/dist/indicators/panel/OBV.d.ts +1 -0
- package/dist/indicators/panel/OBV.d.ts.map +1 -1
- package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -1
- package/dist/indicators/panel/Qstick.d.ts.map +1 -1
- package/dist/indicators/panel/ROC.d.ts.map +1 -1
- package/dist/indicators/panel/RSI.d.ts +3 -0
- package/dist/indicators/panel/RSI.d.ts.map +1 -1
- package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -1
- package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -1
- package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -1
- package/dist/indicators/panel/StdDev.d.ts.map +1 -1
- package/dist/indicators/panel/Stochastic.d.ts +1 -0
- package/dist/indicators/panel/Stochastic.d.ts.map +1 -1
- package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -1
- package/dist/indicators/panel/TRIX.d.ts.map +1 -1
- package/dist/indicators/panel/TSI.d.ts.map +1 -1
- package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -1
- package/dist/indicators/panel/VROC.d.ts.map +1 -1
- package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -1
- package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -1
- package/dist/indicators/panel/Vortex.d.ts.map +1 -1
- package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -1
- package/dist/indicators/panel/WilliamsR.d.ts.map +1 -1
- package/dist/indicators/registry.d.ts.map +1 -1
- package/dist/indicators/tick.bench.d.ts +2 -0
- package/dist/indicators/tick.bench.d.ts.map +1 -0
- package/dist/indicators/worker/messages.d.ts +6 -0
- package/dist/indicators/worker/messages.d.ts.map +1 -1
- package/dist/interaction/CrosshairHandler.d.ts +2 -1
- package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
- package/dist/realtime/CurrentPriceLine.d.ts +4 -1
- package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
- package/dist/realtime/StreamManager.d.ts +2 -0
- package/dist/realtime/StreamManager.d.ts.map +1 -1
- package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -1
- package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -1
- package/dist/ui/ChartLegend.d.ts +8 -0
- package/dist/ui/ChartLegend.d.ts.map +1 -1
- package/dist/ui/SessionBreaks.d.ts +4 -0
- package/dist/ui/SessionBreaks.d.ts.map +1 -1
- package/dist/viewport/Viewport.d.ts +20 -1
- package/dist/viewport/Viewport.d.ts.map +1 -1
- package/package.json +2 -2
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 TradeCanvas Contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TradeCanvas Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PriceAxis.d.ts","sourceRoot":"","sources":["../../src/axis/PriceAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IAEzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"PriceAxis.d.ts","sourceRoot":"","sources":["../../src/axis/PriceAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IAEzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAuDnF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** Circle from a center point and a point on its edge. */
|
|
4
|
+
export declare class CircleTool extends DrawingBase {
|
|
5
|
+
descriptor: {
|
|
6
|
+
type: "circle";
|
|
7
|
+
name: string;
|
|
8
|
+
requiredAnchors: number;
|
|
9
|
+
};
|
|
10
|
+
private geometry;
|
|
11
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
12
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Circle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,0DAA0D;AAC1D,qBAAa,UAAW,SAAQ,WAAW;IACzC,UAAU;;;;MAAmE;IAE7E,OAAO,CAAC,QAAQ;IAMhB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAiB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAOhG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** A horizontal and a vertical line crossing at one point — marks a price and a time at once. */
|
|
4
|
+
export declare class CrossLineTool extends DrawingBase {
|
|
5
|
+
descriptor: {
|
|
6
|
+
type: "crossLine";
|
|
7
|
+
name: string;
|
|
8
|
+
requiredAnchors: number;
|
|
9
|
+
};
|
|
10
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
11
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=CrossLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CrossLine.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/CrossLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,iGAAiG;AACjG,qBAAa,aAAc,SAAQ,WAAW;IAC5C,UAAU;;;;MAA0E;IAEpF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAiB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAKhG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** x positions of the cycle lines from A forward, spaced by A→B, within the chart. */
|
|
4
|
+
export declare function cycleLineXs(a: Point, b: Point, viewport: ViewportState): number[];
|
|
5
|
+
/** Cyclic Lines: vertical lines repeating at the A→B interval, for spotting time cycles. */
|
|
6
|
+
export declare class CyclicLinesTool extends DrawingBase {
|
|
7
|
+
descriptor: {
|
|
8
|
+
type: "cyclicLines";
|
|
9
|
+
name: string;
|
|
10
|
+
requiredAnchors: number;
|
|
11
|
+
};
|
|
12
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
13
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CyclicLines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CyclicLines.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/CyclicLines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAQjF;AAED,4FAA4F;AAC5F,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,UAAU;;;;MAA8E;IAExF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAmB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAMhG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** Summed volume of the bars between the two anchors, or null without data. */
|
|
4
|
+
export declare function volumeBetween(state: DrawingState, viewport: ViewportState): number | null;
|
|
5
|
+
/** The stats the box shows: price change, bars and time spanned, volume traded. */
|
|
6
|
+
export declare function dateAndPriceRangeLines(state: DrawingState, viewport: ViewportState): string[];
|
|
7
|
+
/** Date and Price Range: a box measuring both axes at once, with volume traded inside it. */
|
|
8
|
+
export declare class DateAndPriceRangeTool extends DrawingBase {
|
|
9
|
+
descriptor: {
|
|
10
|
+
type: "dateAndPriceRange";
|
|
11
|
+
name: string;
|
|
12
|
+
requiredAnchors: number;
|
|
13
|
+
};
|
|
14
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
15
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=DateAndPriceRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateAndPriceRange.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/DateAndPriceRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAUzF;AASD,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAU7F;AAED,6FAA6F;AAC7F,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,UAAU;;;;MAA4F;IAEtG,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAgC5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAOhG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
export declare const FIB_CHANNEL_LEVELS: number[];
|
|
4
|
+
/** Segment of channel level `level` (AB shifted toward C). */
|
|
5
|
+
export declare function fibChannelSegment(a: Point, b: Point, c: Point, level: number): [Point, Point];
|
|
6
|
+
/**
|
|
7
|
+
* Fibonacci Channel: AB is the base trend line, C sets the channel width;
|
|
8
|
+
* parallel lines sit at Fibonacci fractions of that width.
|
|
9
|
+
*/
|
|
10
|
+
export declare class FibChannelTool extends DrawingBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
type: "fibChannel";
|
|
13
|
+
name: string;
|
|
14
|
+
requiredAnchors: number;
|
|
15
|
+
};
|
|
16
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
17
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=FibChannel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FibChannel.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/FibChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,kBAAkB,UAAiD,CAAC;AAejF,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAM7F;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAAkF;IAE5F,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAqC5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAWhG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
export declare const SPEED_FAN_LEVELS: number[];
|
|
4
|
+
/**
|
|
5
|
+
* Points the fan's rays pass through: price levels along B's vertical,
|
|
6
|
+
* time levels along B's horizontal, and B itself (the 1/1 line).
|
|
7
|
+
*/
|
|
8
|
+
export declare function speedFanTargets(a: Point, b: Point): {
|
|
9
|
+
level: number;
|
|
10
|
+
kind: 'price' | 'time' | 'diagonal';
|
|
11
|
+
point: Point;
|
|
12
|
+
}[];
|
|
13
|
+
/**
|
|
14
|
+
* Fibonacci Speed Resistance Fan: rays from A through Fibonacci fractions of
|
|
15
|
+
* the A→B move, measured both in price and in time.
|
|
16
|
+
*/
|
|
17
|
+
export declare class FibSpeedResistanceFanTool extends DrawingBase {
|
|
18
|
+
descriptor: {
|
|
19
|
+
type: "fibSpeedResistanceFan";
|
|
20
|
+
name: string;
|
|
21
|
+
requiredAnchors: number;
|
|
22
|
+
};
|
|
23
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
24
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=FibSpeedResistanceFan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FibSpeedResistanceFan.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/FibSpeedResistanceFan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,UAAkC,CAAC;AAYhE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAAE,CAS1H;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,WAAW;IACxD,UAAU;;;;MAAoG;IAE9G,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAmC5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAUhG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* A horizontal line that only extends forward in time from its anchor —
|
|
5
|
+
* unlike `horizontalLine`, which spans the full chart width. Useful for
|
|
6
|
+
* marking a level ("support starts here") without implying it held in the
|
|
7
|
+
* past too.
|
|
8
|
+
*/
|
|
9
|
+
export declare class HorizontalRayTool extends DrawingBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
type: "horizontalRay";
|
|
12
|
+
name: string;
|
|
13
|
+
requiredAnchors: number;
|
|
14
|
+
};
|
|
15
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
16
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=HorizontalRay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HorizontalRay.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/HorizontalRay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,UAAU;;;;MAAkF;IAE5F,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAoB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAShG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** The text the info line shows: price change, bars (and time) spanned, angle. */
|
|
4
|
+
export declare function infoLineLines(state: DrawingState, viewport: ViewportState, angleDeg: number): string[];
|
|
5
|
+
/** Trend line with a stats box: price change and %, bars and time spanned, angle. */
|
|
6
|
+
export declare class InfoLineTool extends DrawingBase {
|
|
7
|
+
descriptor: {
|
|
8
|
+
type: "infoLine";
|
|
9
|
+
name: string;
|
|
10
|
+
requiredAnchors: number;
|
|
11
|
+
};
|
|
12
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
13
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=InfoLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InfoLine.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/InfoLine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQtG;AAED,qFAAqF;AACrF,qBAAa,YAAa,SAAQ,WAAW;IAC3C,UAAU;;;;MAAwE;IAElF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAoB5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAMhG"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
1
|
+
import { DrawingDescriptor, DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
2
|
import { DrawingBase } from '../DrawingBase.js';
|
|
3
3
|
export declare class PitchforkTool extends DrawingBase {
|
|
4
|
-
descriptor:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
descriptor: DrawingDescriptor;
|
|
5
|
+
/**
|
|
6
|
+
* Where the median line starts, given pivot A and the first reaction B.
|
|
7
|
+
* Andrews' starts at A; the Schiff variants shift it toward B.
|
|
8
|
+
*/
|
|
9
|
+
protected origin(p0: Point, _p1: Point): Point;
|
|
9
10
|
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
10
11
|
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
11
12
|
}
|
|
13
|
+
/** Schiff Pitchfork: the median starts halfway in price from A to B, at A's time. */
|
|
14
|
+
export declare class SchiffPitchforkTool extends PitchforkTool {
|
|
15
|
+
descriptor: DrawingDescriptor;
|
|
16
|
+
protected origin(p0: Point, p1: Point): Point;
|
|
17
|
+
}
|
|
18
|
+
/** Modified Schiff Pitchfork: the median starts at the midpoint of A and B, in both time and price. */
|
|
19
|
+
export declare class ModifiedSchiffPitchforkTool extends PitchforkTool {
|
|
20
|
+
descriptor: DrawingDescriptor;
|
|
21
|
+
protected origin(p0: Point, p1: Point): Point;
|
|
22
|
+
}
|
|
12
23
|
//# sourceMappingURL=Pitchfork.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pitchfork.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/Pitchfork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Pitchfork.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/Pitchfork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,UAAU,EAAE,iBAAiB,CAAyE;IAEtG;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK;IAI9C,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAgE5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAchG;AAED,qFAAqF;AACrF,qBAAa,mBAAoB,SAAQ,aAAa;IAC3C,UAAU,EAAE,iBAAiB,CAA6E;cAEhG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK;CAGvD;AAED,uGAAuG;AACvG,qBAAa,2BAA4B,SAAQ,aAAa;IACnD,UAAU,EAAE,iBAAiB,CAA8F;cAEjH,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK;CAGvD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** Price Label: a callout pinned to a point showing its price (or custom text). */
|
|
4
|
+
export declare class PriceLabelTool extends DrawingBase {
|
|
5
|
+
descriptor: {
|
|
6
|
+
type: "priceLabel";
|
|
7
|
+
name: string;
|
|
8
|
+
requiredAnchors: number;
|
|
9
|
+
};
|
|
10
|
+
private text;
|
|
11
|
+
private box;
|
|
12
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
13
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=PriceLabel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PriceLabel.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/PriceLabel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,mFAAmF;AACnF,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAA4E;IAEtF,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;IAOX,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IA8B5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAQhG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* TradingView's "Long/Short Position" tool: drag from an entry price to a
|
|
5
|
+
* stop price, and it draws the risk zone between them plus a reward zone of
|
|
6
|
+
* equal width on the far side — sized by a fixed reward:risk ratio — with
|
|
7
|
+
* labels for the $ and % at each level. Direction (long vs short) is
|
|
8
|
+
* inferred from whether the stop anchor sits below or above the entry.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RiskRewardTool extends DrawingBase {
|
|
11
|
+
descriptor: {
|
|
12
|
+
type: "riskReward";
|
|
13
|
+
name: string;
|
|
14
|
+
requiredAnchors: number;
|
|
15
|
+
};
|
|
16
|
+
private geometry;
|
|
17
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
18
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=RiskReward.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RiskReward.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/RiskReward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAAoF;IAE9F,OAAO,CAAC,QAAQ;IAShB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAiD5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAahG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** On-screen angle of A→B in degrees, counter-clockwise from horizontal (up = positive). */
|
|
4
|
+
export declare function screenAngleDeg(a: Point, b: Point): number;
|
|
5
|
+
/**
|
|
6
|
+
* Trend line that shows its on-screen angle: a horizontal reference at the
|
|
7
|
+
* start point, an arc sweeping to the line, and the angle in degrees.
|
|
8
|
+
*/
|
|
9
|
+
export declare class TrendAngleTool extends DrawingBase {
|
|
10
|
+
descriptor: {
|
|
11
|
+
type: "trendAngle";
|
|
12
|
+
name: string;
|
|
13
|
+
requiredAnchors: number;
|
|
14
|
+
};
|
|
15
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
16
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=TrendAngle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrendAngle.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/TrendAngle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,UAAU;;;;MAA4E;IAEtF,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IA0C5G,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAMhG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DrawingManager } from '../DrawingManager.js';
|
|
2
2
|
export { TrendLineTool } from './TrendLine.js';
|
|
3
3
|
export { HorizontalLineTool } from './HorizontalLine.js';
|
|
4
|
+
export { HorizontalRayTool } from './HorizontalRay.js';
|
|
4
5
|
export { VerticalLineTool } from './VerticalLine.js';
|
|
5
6
|
export { RayTool } from './Ray.js';
|
|
6
7
|
export { ExtendedLineTool } from './ExtendedLine.js';
|
|
@@ -23,5 +24,17 @@ export { GannBoxTool } from './GannBox.js';
|
|
|
23
24
|
export { AnchoredVWAPTool } from './AnchoredVWAP.js';
|
|
24
25
|
export { VolumeProfileRangeTool } from './VolumeProfileRange.js';
|
|
25
26
|
export { FibTimeZonesTool } from './FibTimeZones.js';
|
|
27
|
+
export { RiskRewardTool } from './RiskReward.js';
|
|
28
|
+
export { CrossLineTool } from './CrossLine.js';
|
|
29
|
+
export { TrendAngleTool } from './TrendAngle.js';
|
|
30
|
+
export { InfoLineTool } from './InfoLine.js';
|
|
31
|
+
export { FibChannelTool } from './FibChannel.js';
|
|
32
|
+
export { FibSpeedResistanceFanTool } from './FibSpeedResistanceFan.js';
|
|
33
|
+
export { SchiffPitchforkTool, ModifiedSchiffPitchforkTool } from './Pitchfork.js';
|
|
34
|
+
export { XABCDPatternTool, ABCDPatternTool, HeadAndShouldersTool } from './patterns.js';
|
|
35
|
+
export { CircleTool } from './Circle.js';
|
|
36
|
+
export { DateAndPriceRangeTool } from './DateAndPriceRange.js';
|
|
37
|
+
export { CyclicLinesTool } from './CyclicLines.js';
|
|
38
|
+
export { PriceLabelTool } from './PriceLabel.js';
|
|
26
39
|
export declare function registerBuiltInDrawingTools(manager: DrawingManager): void;
|
|
27
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAsC3D,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAyCzE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DrawingState, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
/** Price text at the precision of `ref` (defaults to the price itself). */
|
|
3
|
+
export declare function formatDrawingPrice(price: number, ref?: number): string;
|
|
4
|
+
/** Signed price change with its percentage of `from`, e.g. "+12.50 (+1.25%)". */
|
|
5
|
+
export declare function formatPriceChange(from: number, to: number): string;
|
|
6
|
+
/** Compact duration, e.g. "3d 4h", "45m", "2w 1d". */
|
|
7
|
+
export declare function formatDuration(ms: number): string;
|
|
8
|
+
/** Whether anchors carry real timestamps (vs. legacy bar indices). */
|
|
9
|
+
export declare function hasTimestamps(viewport: ViewportState): boolean;
|
|
10
|
+
/** Whole bars between two anchors on the current timeframe. */
|
|
11
|
+
export declare function barsBetween(state: DrawingState, a: number, b: number, viewport: ViewportState): number;
|
|
12
|
+
/** Time span between two anchors as text, or null when anchors are bar indices. */
|
|
13
|
+
export declare function spanBetween(state: DrawingState, a: number, b: number, viewport: ViewportState): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Multi-line label on a dark rounded box. `(x, y)` is the box's anchor point:
|
|
16
|
+
* `align` picks which horizontal edge/center sits on x, and the box grows
|
|
17
|
+
* upward from y when `above`, downward otherwise. Returns the box rect.
|
|
18
|
+
*/
|
|
19
|
+
export declare function drawLabelBox(ctx: CanvasRenderingContext2D, lines: string[], x: number, y: number, align?: 'left' | 'center' | 'right', above?: boolean): {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
};
|
|
25
|
+
/** Ratio of two price legs, e.g. |BC| / |AB|, as text ("0.618"). */
|
|
26
|
+
export declare function legRatio(state: DrawingState, num: [number, number], den: [number, number]): string;
|
|
27
|
+
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/labels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2BxE,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAQ,GAAG,MAAM,CAErE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAgBjD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAE9D;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAItG;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAG7G;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,MAAM,EAAE,EACf,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,GAAE,MAAM,GAAG,QAAQ,GAAG,OAAkB,EAC7C,KAAK,UAAO,GACX;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBzD;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIlG"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { DrawingState, Point, ViewportState } from '@tradecanvas/commons';
|
|
2
|
+
import { DrawingBase } from '../DrawingBase.js';
|
|
3
|
+
/** A dashed connector between two pattern points labelled with a leg ratio. */
|
|
4
|
+
interface RatioLink {
|
|
5
|
+
from: number;
|
|
6
|
+
to: number;
|
|
7
|
+
num: [number, number];
|
|
8
|
+
den: [number, number];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Shared renderer for point-to-point chart patterns: a polyline through the
|
|
12
|
+
* pivots, point labels, optional translucent triangles, and dashed ratio
|
|
13
|
+
* links (e.g. XB = |AB| / |XA|) as harmonic-pattern traders read them.
|
|
14
|
+
*/
|
|
15
|
+
declare abstract class PatternTool extends DrawingBase {
|
|
16
|
+
protected abstract readonly pointLabels: string[];
|
|
17
|
+
protected readonly ratioLinks: RatioLink[];
|
|
18
|
+
/** Triangles (by anchor index) filled with the drawing's fill color. */
|
|
19
|
+
protected readonly triangles: [number, number, number][];
|
|
20
|
+
render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
|
|
21
|
+
/** Hook for pattern-specific decoration (e.g. a neckline). */
|
|
22
|
+
protected renderExtras(_ctx: CanvasRenderingContext2D, _state: DrawingState, _pts: Point[], _viewport: ViewportState): void;
|
|
23
|
+
private renderTriangles;
|
|
24
|
+
private renderRatioLinks;
|
|
25
|
+
private renderPointLabels;
|
|
26
|
+
hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Harmonic XABCD pattern (Gartley, Bat, Butterfly, Crab…) with its four Fibonacci ratios. */
|
|
29
|
+
export declare class XABCDPatternTool extends PatternTool {
|
|
30
|
+
descriptor: {
|
|
31
|
+
type: "xabcdPattern";
|
|
32
|
+
name: string;
|
|
33
|
+
requiredAnchors: number;
|
|
34
|
+
};
|
|
35
|
+
protected readonly pointLabels: string[];
|
|
36
|
+
protected readonly ratioLinks: RatioLink[];
|
|
37
|
+
protected readonly triangles: [number, number, number][];
|
|
38
|
+
}
|
|
39
|
+
/** ABCD pattern: two equal-ish legs, with the BC retracement and CD projection ratios. */
|
|
40
|
+
export declare class ABCDPatternTool extends PatternTool {
|
|
41
|
+
descriptor: {
|
|
42
|
+
type: "abcdPattern";
|
|
43
|
+
name: string;
|
|
44
|
+
requiredAnchors: number;
|
|
45
|
+
};
|
|
46
|
+
protected readonly pointLabels: string[];
|
|
47
|
+
protected readonly ratioLinks: RatioLink[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Head and Shoulders: seven pivots (start, left shoulder, neck, head, neck,
|
|
51
|
+
* right shoulder, end); the neckline runs through the two neck points.
|
|
52
|
+
*/
|
|
53
|
+
export declare class HeadAndShouldersTool extends PatternTool {
|
|
54
|
+
descriptor: {
|
|
55
|
+
type: "headAndShoulders";
|
|
56
|
+
name: string;
|
|
57
|
+
requiredAnchors: number;
|
|
58
|
+
};
|
|
59
|
+
protected readonly pointLabels: string[];
|
|
60
|
+
protected readonly triangles: [number, number, number][];
|
|
61
|
+
protected renderExtras(ctx: CanvasRenderingContext2D, state: DrawingState, pts: Point[]): void;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/drawings/tools/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,+EAA+E;AAC/E,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvB;AAED;;;;GAIG;AACH,uBAAe,WAAY,SAAQ,WAAW;IAC5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAM;IAChD,wEAAwE;IACxE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAE9D,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAqB5G,8DAA8D;IAC9D,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;IAE3H,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAQhG;AAED,8FAA8F;AAC9F,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,UAAU;;;;MAAgF;IAC1F,SAAS,CAAC,QAAQ,CAAC,WAAW,WAA6B;IAC3D,mBAA4B,UAAU,EAAE,SAAS,EAAE,CAKjD;IACF,mBAA4B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAA0B;CAC5F;AAED,0FAA0F;AAC1F,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,UAAU;;;;MAA8E;IACxF,SAAS,CAAC,QAAQ,CAAC,WAAW,WAAwB;IACtD,mBAA4B,UAAU,EAAE,SAAS,EAAE,CAGjD;CACH;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,UAAU;;;;MAAyF;IACnG,SAAS,CAAC,QAAQ,CAAC,WAAW,WAA+D;IAC7F,mBAA4B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAqC;cAEnF,YAAY,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI;CAiBxG"}
|