@fintatech/fintachart 3.1.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/CHANGELOG.md +14 -0
- package/LICENSE.md +63 -0
- package/README.md +151 -0
- package/THIRD_PARTY_NOTICES.md +38 -0
- package/basic-objects.html +165 -0
- package/css/FintaChart.min.css +1 -0
- package/css/external/jqNumericField.min.css +1 -0
- package/css/external/spectrum.min.css +7 -0
- package/css/external/toastr.min.css +1 -0
- package/custom-indicator.html +209 -0
- package/d.ts/FintaChart.d.ts +24313 -0
- package/d.ts/frameworks/Intl.d.ts +115 -0
- package/d.ts/frameworks/bootstrap.d.ts +128 -0
- package/d.ts/frameworks/bootstrap.v3.datetimepicker.d.ts +10 -0
- package/d.ts/frameworks/detectizr.d.ts +27 -0
- package/d.ts/frameworks/dom-to-image-more.d.ts +17 -0
- package/d.ts/frameworks/html2canvas.d.ts +101 -0
- package/d.ts/frameworks/i18nextXHRBackend.d.ts +42 -0
- package/d.ts/frameworks/jquery-i18next.d.ts +14 -0
- package/d.ts/frameworks/jquery-ui.d.ts +1914 -0
- package/d.ts/frameworks/jquery.d.ts +3779 -0
- package/d.ts/frameworks/jquery.ui.touch-punch.d.ts +12 -0
- package/d.ts/frameworks/moment-node.d.ts +485 -0
- package/d.ts/frameworks/moment.d.ts +10 -0
- package/d.ts/frameworks/tinycolor.d.ts +377 -0
- package/d.ts/frameworks-modified/bootstrap-select.d.ts +18 -0
- package/d.ts/frameworks-modified/i18next.d.ts +148 -0
- package/d.ts/frameworks-modified/jquery.autocolumnlist.d.ts +17 -0
- package/d.ts/frameworks-modified/jquery.resizable.d.ts +20 -0
- package/d.ts/frameworks-modified/spectrum.d.ts +294 -0
- package/d.ts/frameworks-modified/switchery.d.ts +69 -0
- package/d.ts/frameworks-modified/toastr.d.ts +224 -0
- package/data/offline-market-history/EUR_CAD/Day/1.csv +2001 -0
- package/data/offline-market-history/EUR_CAD/Hour/1.csv +1702 -0
- package/data/offline-market-history/EUR_CAD/Hour/4.csv +442 -0
- package/data/offline-market-history/EUR_CAD/Minute/1.csv +2001 -0
- package/data/offline-market-history/EUR_CAD/Minute/15.csv +2001 -0
- package/data/offline-market-history/EUR_CAD/Minute/5.csv +2001 -0
- package/data/offline-market-history/EUR_CAD/Monthly/1.csv +175 -0
- package/data/offline-market-history/EUR_CAD/Weekly/1.csv +752 -0
- package/data/offline-market-history/EUR_CAD/Yearly/1.csv +16 -0
- package/data/offline-market-history/EUR_GBP/Day/1.csv +2001 -0
- package/data/offline-market-history/EUR_GBP/Hour/1.csv +1702 -0
- package/data/offline-market-history/EUR_GBP/Hour/4.csv +442 -0
- package/data/offline-market-history/EUR_GBP/Minute/1.csv +2001 -0
- package/data/offline-market-history/EUR_GBP/Minute/15.csv +2001 -0
- package/data/offline-market-history/EUR_GBP/Minute/5.csv +2001 -0
- package/data/offline-market-history/EUR_GBP/Monthly/1.csv +199 -0
- package/data/offline-market-history/EUR_GBP/Weekly/1.csv +860 -0
- package/data/offline-market-history/EUR_GBP/Yearly/1.csv +18 -0
- package/data/predefined-templates/EMAAndMACDTemplate.json +100 -0
- package/data/predefined-templates/bigTreeTemplate.json +137 -0
- package/data/predefined-templates/multiIndicator.json +136 -0
- package/data/predefined-templates/renkoTemplate.json +50 -0
- package/data/predefined-templates/standartCandleTemplate.json +73 -0
- package/fonts/calibri/calibri.svg +3707 -0
- package/fonts/calibri/calibri.ttf +0 -0
- package/fonts/calibri/calibri.woff +0 -0
- package/fonts/courier-new/courier-new.svg +633 -0
- package/fonts/courier-new/courier-new.ttf +0 -0
- package/fonts/courier-new/courier-new.woff +0 -0
- package/fonts/open-sans-cyrillic/open-sans-cyrillic.svg +475 -0
- package/fonts/open-sans-cyrillic/open-sans-cyrillic.ttf +0 -0
- package/fonts/open-sans-cyrillic/open-sans-cyrillic.woff +0 -0
- package/fonts/open-sans-cyrillic-ext/open-sans-cyrillic-ext.svg +567 -0
- package/fonts/open-sans-cyrillic-ext/open-sans-cyrillic-ext.ttf +0 -0
- package/fonts/open-sans-cyrillic-ext/open-sans-cyrillic-ext.woff +0 -0
- package/fonts/open-sans-greek/open-sans-greek.svg +603 -0
- package/fonts/open-sans-greek/open-sans-greek.ttf +0 -0
- package/fonts/open-sans-greek/open-sans-greek.woff +0 -0
- package/fonts/open-sans-greek-ext/open-sans-greek-ext.svg +42 -0
- package/fonts/open-sans-greek-ext/open-sans-greek-ext.ttf +0 -0
- package/fonts/open-sans-greek-ext/open-sans-greek-ext.woff +0 -0
- package/fonts/open-sans-latin/open-sans-latin.svg +1863 -0
- package/fonts/open-sans-latin/open-sans-latin.ttf +0 -0
- package/fonts/open-sans-latin/open-sans-latin.woff +0 -0
- package/fonts/open-sans-latin-ext/open-sans-latin-ext.svg +1686 -0
- package/fonts/open-sans-latin-ext/open-sans-latin-ext.ttf +0 -0
- package/fonts/open-sans-latin-ext/open-sans-latin-ext.woff +0 -0
- package/fonts/open-sans-vietnamese/open-sans-vietnamese.svg +375 -0
- package/fonts/open-sans-vietnamese/open-sans-vietnamese.ttf +0 -0
- package/fonts/open-sans-vietnamese/open-sans-vietnamese.woff +0 -0
- package/fonts/rubik-medium/Rubik-Medium.svg +8831 -0
- package/fonts/rubik-medium/Rubik-Medium.ttf +0 -0
- package/fonts/rubik-medium/Rubik-Medium.woff +0 -0
- package/fonts/rubik-regular/Rubik-Regular.svg +8885 -0
- package/fonts/rubik-regular/Rubik-Regular.ttf +0 -0
- package/fonts/rubik-regular/Rubik-Regular.woff +0 -0
- package/fonts/source-sans-pro-latin/source-sans-pro-latin.svg +2642 -0
- package/fonts/source-sans-pro-latin/source-sans-pro-latin.ttf +0 -0
- package/fonts/source-sans-pro-latin/source-sans-pro-latin.woff +0 -0
- package/fonts/source-sans-pro-latin-ext/source-sans-pro-latin-ext.svg +1572 -0
- package/fonts/source-sans-pro-latin-ext/source-sans-pro-latin-ext.ttf +0 -0
- package/fonts/source-sans-pro-latin-ext/source-sans-pro-latin-ext.woff +0 -0
- package/fonts/source-sans-pro-vietnamese/source-sans-pro-vietnamese.svg +428 -0
- package/fonts/source-sans-pro-vietnamese/source-sans-pro-vietnamese.ttf +0 -0
- package/fonts/source-sans-pro-vietnamese/source-sans-pro-vietnamese.woff +0 -0
- package/htmldialogs/ChartContextMenu.html +3 -0
- package/htmldialogs/ChartTypeSettingsDialog.html +231 -0
- package/htmldialogs/CheckboxIndicatorParameterControl.html +9 -0
- package/htmldialogs/CompareInstrumentSettings.html +61 -0
- package/htmldialogs/ComparingContextMenu.html +8 -0
- package/htmldialogs/ConfirmDialog.html +28 -0
- package/htmldialogs/DemoModePopup.html +24 -0
- package/htmldialogs/FillPlotStyleControl.html +28 -0
- package/htmldialogs/HotkeysSettings.html +28 -0
- package/htmldialogs/IndicatorContextMenu.html +18 -0
- package/htmldialogs/IndicatorSettingsDialog.html +38 -0
- package/htmldialogs/IndicatorsDialog.html +39 -0
- package/htmldialogs/IndicatorsOverview_en.html +1694 -0
- package/htmldialogs/IndicatorsOverview_ua.html +9 -0
- package/htmldialogs/InstrumentSearchDialog.html +22 -0
- package/htmldialogs/LinePlotStyleControl.html +33 -0
- package/htmldialogs/MainSettings.html +292 -0
- package/htmldialogs/MarketEventPopup.html +27 -0
- package/htmldialogs/MarketEventsSettingsDialog.html +22 -0
- package/htmldialogs/NumericIndicatorParameter.html +8 -0
- package/htmldialogs/OpenChart.html +6 -0
- package/htmldialogs/PatternSettingsControl.html +26 -0
- package/htmldialogs/PatternsIndicatorSettingsDialog.html +30 -0
- package/htmldialogs/PatternsSettingsParameterControl.html +12 -0
- package/htmldialogs/PositionShapeContextMenu.html +9 -0
- package/htmldialogs/QuantityPopup.html +7 -0
- package/htmldialogs/Scrollbar.html +6 -0
- package/htmldialogs/SelectableIndicatorParameter.html +9 -0
- package/htmldialogs/ShapeContextMenu.html +7 -0
- package/htmldialogs/ShapeFibonacciSettingsDialog.html +261 -0
- package/htmldialogs/ShapePositionSettingsDialog.html +351 -0
- package/htmldialogs/ShapeSettingsDialog.html +521 -0
- package/htmldialogs/TimeFrameChangePopup.html +11 -0
- package/htmldialogs/TimeIndicatorParameterControl.html +89 -0
- package/htmldialogs/Toolbar.html +1710 -0
- package/htmldialogs/TooltipView.html +151 -0
- package/htmldialogs/TradingContextMenu.html +2 -0
- package/img/ContextMenuCheckbox.png +0 -0
- package/img/cross-hairs.cur +0 -0
- package/img/eu.png +0 -0
- package/img/favicon/favicon.ico +0 -0
- package/img/fist.cur +0 -0
- package/img/point.cur +0 -0
- package/img/svg-icons/Illustration-License-b.svg +1 -0
- package/img/svg-icons/Illustration-License-w.svg +1 -0
- package/img/svg-icons/abcd-label-pattern.svg +1 -0
- package/img/svg-icons/abcd-pattern.svg +1 -0
- package/img/svg-icons/add.svg +1 -0
- package/img/svg-icons/adjust-OHLC.svg +1 -0
- package/img/svg-icons/adjust-all.svg +1 -0
- package/img/svg-icons/andrews-pitchfork.svg +1 -0
- package/img/svg-icons/arrow-down.svg +1 -0
- package/img/svg-icons/arrow-left.svg +3 -0
- package/img/svg-icons/arrow-right.svg +3 -0
- package/img/svg-icons/arrow-type-type.svg +3 -0
- package/img/svg-icons/arrow-up.svg +1 -0
- package/img/svg-icons/arrow.svg +1 -0
- package/img/svg-icons/balloon.svg +1 -0
- package/img/svg-icons/brand-x.svg +1 -0
- package/img/svg-icons/calculator.svg +15 -0
- package/img/svg-icons/chartType-area.svg +1 -0
- package/img/svg-icons/chartType-bars.svg +1 -0
- package/img/svg-icons/chartType-candles-volume.svg +1 -0
- package/img/svg-icons/chartType-candles.svg +1 -0
- package/img/svg-icons/chartType-colored-bars.svg +1 -0
- package/img/svg-icons/chartType-equi-volume-shadow.svg +1 -0
- package/img/svg-icons/chartType-equi-volume.svg +1 -0
- package/img/svg-icons/chartType-heikin-ashi.svg +1 -0
- package/img/svg-icons/chartType-hollow-candles.svg +1 -0
- package/img/svg-icons/chartType-kagi.svg +1 -0
- package/img/svg-icons/chartType-line-break.svg +1 -0
- package/img/svg-icons/chartType-line.svg +1 -0
- package/img/svg-icons/chartType-point-figure.svg +1 -0
- package/img/svg-icons/chartType-range-bars.svg +1 -0
- package/img/svg-icons/chartType-renko.svg +1 -0
- package/img/svg-icons/chevron-right-double.svg +3 -0
- package/img/svg-icons/chevron.svg +3 -0
- package/img/svg-icons/circle.svg +1 -0
- package/img/svg-icons/close-floating-toolbar.svg +1 -0
- package/img/svg-icons/close-pane.svg +1 -0
- package/img/svg-icons/close-rect.svg +4 -0
- package/img/svg-icons/close-windows.svg +1 -0
- package/img/svg-icons/close.svg +4 -0
- package/img/svg-icons/compare.svg +1 -0
- package/img/svg-icons/copy.svg +1 -0
- package/img/svg-icons/cursorType-arrow-with-labels.svg +1 -0
- package/img/svg-icons/cursorType-arrow.svg +3 -0
- package/img/svg-icons/cursorType-crosshairs.svg +1 -0
- package/img/svg-icons/cursorType-point.svg +1 -0
- package/img/svg-icons/cyclic-lines.svg +1 -0
- package/img/svg-icons/default-screen.svg +11 -0
- package/img/svg-icons/demo-popup-bg.svg +1 -0
- package/img/svg-icons/diamond.svg +1 -0
- package/img/svg-icons/dot.svg +1 -0
- package/img/svg-icons/drag.svg +1 -0
- package/img/svg-icons/elliott-wave-pattern.svg +1 -0
- package/img/svg-icons/ellipse.svg +1 -0
- package/img/svg-icons/error-channel.svg +1 -0
- package/img/svg-icons/export.svg +1 -0
- package/img/svg-icons/extended-line.svg +3 -0
- package/img/svg-icons/fibonacci-arcs.svg +1 -0
- package/img/svg-icons/fibonacci-ellipses.svg +1 -0
- package/img/svg-icons/fibonacci-extensions.svg +1 -0
- package/img/svg-icons/fibonacci-fan.svg +1 -0
- package/img/svg-icons/fibonacci-retracements.svg +1 -0
- package/img/svg-icons/fibonacci-time-zones.svg +1 -0
- package/img/svg-icons/fintatech.svg +1 -0
- package/img/svg-icons/free-hand.svg +1 -0
- package/img/svg-icons/full-screen.svg +11 -0
- package/img/svg-icons/full-windows.svg +12 -0
- package/img/svg-icons/gann-fan.svg +1 -0
- package/img/svg-icons/general-delete.svg +3 -0
- package/img/svg-icons/head-shoulders-pattern.svg +1 -0
- package/img/svg-icons/horizontal-line.svg +1 -0
- package/img/svg-icons/horizontal-ray.svg +3 -0
- package/img/svg-icons/html-code.svg +1 -0
- package/img/svg-icons/image.svg +5 -0
- package/img/svg-icons/images.svg +1 -0
- package/img/svg-icons/in-shape-mode.svg +1 -0
- package/img/svg-icons/insert-indicator.svg +1 -0
- package/img/svg-icons/kings-crown-pattern.svg +1 -0
- package/img/svg-icons/latest-position.svg +1 -0
- package/img/svg-icons/line-segment.svg +1 -0
- package/img/svg-icons/link.svg +5 -0
- package/img/svg-icons/lock.svg +3 -0
- package/img/svg-icons/magnet-mode.svg +1 -0
- package/img/svg-icons/measure.svg +1 -0
- package/img/svg-icons/multiply-link.svg +5 -0
- package/img/svg-icons/note.svg +1 -0
- package/img/svg-icons/number-label-pattern.svg +1 -0
- package/img/svg-icons/open-OHLC-pane.svg +1 -0
- package/img/svg-icons/options.svg +1 -0
- package/img/svg-icons/period.svg +1 -0
- package/img/svg-icons/polygon.svg +1 -0
- package/img/svg-icons/polyline.svg +1 -0
- package/img/svg-icons/position-long.svg +90 -0
- package/img/svg-icons/position-long_og.svg +81 -0
- package/img/svg-icons/position-short.svg +90 -0
- package/img/svg-icons/position-short_og.svg +89 -0
- package/img/svg-icons/quadrant-lines.svg +1 -0
- package/img/svg-icons/raff-regression.svg +1 -0
- package/img/svg-icons/ray.svg +3 -0
- package/img/svg-icons/rectangle.svg +1 -0
- package/img/svg-icons/redo-new.svg +3 -0
- package/img/svg-icons/redo.svg +1 -0
- package/img/svg-icons/remove-all-indicators.svg +1 -0
- package/img/svg-icons/remove-all-shapes.svg +1 -0
- package/img/svg-icons/replay-jump.svg +1 -0
- package/img/svg-icons/replay-pause.svg +1 -0
- package/img/svg-icons/replay-play.svg +1 -0
- package/img/svg-icons/replay-skip-end.svg +1 -0
- package/img/svg-icons/replay-skip-one.svg +1 -0
- package/img/svg-icons/save-as-image.svg +1 -0
- package/img/svg-icons/screenshot.svg +5 -0
- package/img/svg-icons/scroll-bottom.svg +1 -0
- package/img/svg-icons/scroll-left.svg +1 -0
- package/img/svg-icons/scroll-right.svg +1 -0
- package/img/svg-icons/scroll-top.svg +1 -0
- package/img/svg-icons/search.svg +1 -0
- package/img/svg-icons/speed-lines.svg +1 -0
- package/img/svg-icons/square.svg +1 -0
- package/img/svg-icons/star.svg +4 -0
- package/img/svg-icons/stash.svg +4 -0
- package/img/svg-icons/stick-to-bar.svg +1 -0
- package/img/svg-icons/stick-to-close.svg +1 -0
- package/img/svg-icons/stick-to-high.svg +1 -0
- package/img/svg-icons/stick-to-low.svg +1 -0
- package/img/svg-icons/stick-to-open.svg +1 -0
- package/img/svg-icons/sticky-mode-off.svg +1 -0
- package/img/svg-icons/tcdPane-alert-indicator.svg +1 -0
- package/img/svg-icons/tcdPane-close.svg +1 -0
- package/img/svg-icons/tcdPane-down.svg +1 -0
- package/img/svg-icons/tcdPane-expand-closed.svg +1 -0
- package/img/svg-icons/tcdPane-expand.svg +1 -0
- package/img/svg-icons/tcdPane-maximize.svg +1 -0
- package/img/svg-icons/tcdPane-options.svg +1 -0
- package/img/svg-icons/tcdPane-remove-indicator.svg +1 -0
- package/img/svg-icons/tcdPane-restore.svg +1 -0
- package/img/svg-icons/tcdPane-toggle.svg +1 -0
- package/img/svg-icons/tcdPane-up.svg +1 -0
- package/img/svg-icons/template-delete.svg +1 -0
- package/img/svg-icons/template-edit.svg +1 -0
- package/img/svg-icons/template-ok.svg +1 -0
- package/img/svg-icons/template.svg +1 -0
- package/img/svg-icons/text-editor-b.svg +1 -0
- package/img/svg-icons/text-editor-i.svg +1 -0
- package/img/svg-icons/text-editor-u.svg +1 -0
- package/img/svg-icons/text.svg +1 -0
- package/img/svg-icons/tirone-levels.svg +1 -0
- package/img/svg-icons/toggle-shapes.svg +1 -0
- package/img/svg-icons/trade-manager.svg +1 -0
- package/img/svg-icons/trend-angle.svg +1 -0
- package/img/svg-icons/trend-channel.svg +1 -0
- package/img/svg-icons/triangle-pattern.svg +1 -0
- package/img/svg-icons/triangle.svg +1 -0
- package/img/svg-icons/undo-new.svg +3 -0
- package/img/svg-icons/undo.svg +1 -0
- package/img/svg-icons/unlock.svg +3 -0
- package/img/svg-icons/vertical-line.svg +1 -0
- package/img/svg-icons/visibleProfile.svg +1 -0
- package/img/svg-icons/web-link.svg +1 -0
- package/img/svg-icons/x.svg +3 -0
- package/img/svg-icons/xabcd-pattern.svg +1 -0
- package/img/svg-icons/zoom-by-area.svg +1 -0
- package/img/svg-icons/zoom.svg +1 -0
- package/img/usa.png +0 -0
- package/index-dark.html +132 -0
- package/index.html +229 -0
- package/localization/en.json +1646 -0
- package/localization/uk.json +1597 -0
- package/multiple-charts.html +162 -0
- package/package.json +62 -0
- package/scripts/FintaChart.min.js +70 -0
- package/scripts/frameworks/Intl.min.js +4 -0
- package/scripts/frameworks/bootstrap.v3.datetimepicker.min.js +2605 -0
- package/scripts/frameworks/detectizr.min.js +1 -0
- package/scripts/frameworks/dom-to-image-more.min.js +3 -0
- package/scripts/frameworks/i18nextXHRBackend.min.js +1 -0
- package/scripts/frameworks/jquery-i18next.min.js +1 -0
- package/scripts/frameworks/jquery-ui.min.js +8 -0
- package/scripts/frameworks/jquery.min.js +3 -0
- package/scripts/frameworks/jquery.ui.touch-punch.min.js +1 -0
- package/scripts/frameworks/moment.min.js +1216 -0
- package/scripts/frameworks-modified/bootstrap-select.js +1024 -0
- package/scripts/frameworks-modified/i18next.js +2075 -0
- package/scripts/frameworks-modified/jquery.autocolumnlist.js +48 -0
- package/scripts/frameworks-modified/jquery.resizable.js +229 -0
- package/scripts/frameworks-modified/spectrum.js +2279 -0
- package/scripts/frameworks-modified/switchery.js +1957 -0
- package/scripts/frameworks-modified/toastr.js +414 -0
- package/scripts/jsdataadapters/fileDataAdapter.js +129 -0
- package/scripts/jsdataadapters/restDataAdapter.js +149 -0
- package/scripts/jsdataadapters/webSocketDataAdapter.js +114 -0
- package/scripts/miscs/templateFileDataAdapter.js +17 -0
- package/scripts/themes/beetTheme.js +2999 -0
- package/scripts/themes/darkTheme.js +3004 -0
- package/scripts/themes/defaultTheme.js +3095 -0
- package/scripts/themes/fintatechDarkTheme.js +3005 -0
- package/scripts/themes/grayTheme.js +3004 -0
- package/scripts/themes/oliveTheme.js +3004 -0
- package/scripts/themes/orangeTheme.js +3004 -0
- package/scripts/themes/purpleTheme.js +3004 -0
- package/scripts/themes/skyTheme.js +3009 -0
- package/scripts/themes/tealTheme.js +3004 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [3.1.0] - 2026-04-18
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Initial public release of `@fintatech/fintachart`
|
|
13
|
+
|
|
14
|
+
[3.1.0]: https://github.com/fintatech/fintachart/releases/tag/v3.1.0
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Fintatech B.V. (https://fintatech.com)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person or organization
|
|
6
|
+
(the "Licensee") to use this software and associated documentation files
|
|
7
|
+
(the "Software") in any project, whether commercial or non-commercial,
|
|
8
|
+
subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
## 1. Restrictions on Modification
|
|
11
|
+
The Software may not be modified, adapted, reverse-engineered, decompiled,
|
|
12
|
+
or otherwise altered in any form.
|
|
13
|
+
|
|
14
|
+
## 2. Restrictions on Distribution and Sublicensing
|
|
15
|
+
The Software may not be redistributed, sublicensed, resold, or otherwise
|
|
16
|
+
made available to third parties as a standalone product, library, SDK,
|
|
17
|
+
component, or as part of any offering intended for third-party integration
|
|
18
|
+
or development.
|
|
19
|
+
|
|
20
|
+
Serving the Software to end users as part of the Licensee's own hosted
|
|
21
|
+
application or website (e.g., loading the Software in end users' browsers
|
|
22
|
+
when they access the Licensee's platform) is permitted under a valid
|
|
23
|
+
commercial license and is not considered redistribution under this clause.
|
|
24
|
+
|
|
25
|
+
## 3. Notice Requirement
|
|
26
|
+
This copyright notice and permission notice shall be included in all
|
|
27
|
+
copies or substantial portions of the Software.
|
|
28
|
+
|
|
29
|
+
## 4. License Requirement for Deployed Use
|
|
30
|
+
Use of the Software is permitted without a commercial license solely within
|
|
31
|
+
local development environments (e.g., `localhost`, `127.0.0.1`, and loopback
|
|
32
|
+
addresses accessed only by the developer). Any use of the Software in a
|
|
33
|
+
deployed or network-accessible environment, including but not limited to
|
|
34
|
+
production systems, staging environments, internal tools, intranet sites,
|
|
35
|
+
or publicly accessible websites, requires a valid commercial license issued
|
|
36
|
+
by Fintatech B.V.
|
|
37
|
+
|
|
38
|
+
Commercial licenses are issued for specific domains, properties, or
|
|
39
|
+
entities as defined in the license agreement. A single license does not
|
|
40
|
+
extend to unrelated platforms, subsidiaries, or additional domains beyond
|
|
41
|
+
those explicitly covered by the agreement.
|
|
42
|
+
|
|
43
|
+
Commercial licenses may be obtained by contacting **sales@fintatech.com**.
|
|
44
|
+
|
|
45
|
+
## 5. Runtime License Verification
|
|
46
|
+
The Software may include technical measures that automatically verify the
|
|
47
|
+
presence and validity of a commercial license when executed outside of a
|
|
48
|
+
local development environment. By using the Software, the Licensee
|
|
49
|
+
acknowledges and agrees to such verification. Any attempt to disable,
|
|
50
|
+
bypass, circumvent, or interfere with these mechanisms, including any
|
|
51
|
+
modification of license-enforcement logic, is strictly prohibited.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Disclaimer
|
|
56
|
+
|
|
57
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
58
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
59
|
+
FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
60
|
+
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER
|
|
61
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING
|
|
62
|
+
FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
63
|
+
DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://fintatech.com" target="_blank">
|
|
3
|
+
<img width="200" src="https://raw.githubusercontent.com/fintatech/fintachart/master/.github/logo-200x200.svg" alt="FintaChart logo">
|
|
4
|
+
</a>
|
|
5
|
+
|
|
6
|
+
<h1>FintaChart</h1>
|
|
7
|
+
|
|
8
|
+
[](https://www.npmjs.com/package/@fintatech/fintachart)
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
High-performance financial charting component for web applications. Designed for trading platforms, financial dashboards, and any HTML-based project that needs interactive market data visualization.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- **16+ chart types** — Candlestick, OHLC, Heikin Ashi, Renko, Kagi, Line Break, Point & Figure, Hollow Candle, Range Bar, Candle Volume, Equi Volume, Mountain, Line, Area, and more
|
|
16
|
+
- **100+ technical indicators** — RSI, MACD, Bollinger Bands, Ichimoku, EMA, SMA, Stochastics, and the full range of standard analysis tools
|
|
17
|
+
- **Drawing and analysis tools** — Lines, channels, rectangles, circles, ellipses, polygons, freehand, arrows, text and image annotations
|
|
18
|
+
- **Fibonacci tools** — Retracements, Fan, Extensions, Arcs, Ellipses, Time Zones
|
|
19
|
+
- **Trend analysis** — Andrews' Pitchfork, Raff Regression, Error Channel, Gann Fan, Speed Lines, Quadrant Lines, Tirone Levels
|
|
20
|
+
- **Pattern recognition** — Head & Shoulders, ABCD, XABCD, Elliott Wave, Triangle, Kings Crown
|
|
21
|
+
- **Multiple data sources** — File, REST API, and WebSocket adapters with custom datafeed support
|
|
22
|
+
- **10 built-in themes** — Dark, Light, Gray, Olive, Orange, Purple, Sky, Teal, Beet, Fintatech Dark
|
|
23
|
+
- **Multi-chart layouts** — Multiple synchronized charts with shared toolbar
|
|
24
|
+
- **Trading integration** — Orders, alerts, positions, SL/TP with full event system
|
|
25
|
+
- **Calendar events** — Economic calendar overlay on chart
|
|
26
|
+
- **Localization** — English and Ukrainian, extensible
|
|
27
|
+
- **Touch support** — Mobile and tablet ready
|
|
28
|
+
- **State management** — Save/restore workspace, indicators, shapes, templates
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install @fintatech/fintachart
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
### HTML
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<!-- 1. Styles -->
|
|
42
|
+
<link rel="stylesheet" href="node_modules/@fintatech/fintachart/css/external/spectrum.min.css">
|
|
43
|
+
<link rel="stylesheet" href="node_modules/@fintatech/fintachart/css/external/toastr.min.css">
|
|
44
|
+
<link rel="stylesheet" href="node_modules/@fintatech/fintachart/css/external/jqNumericField.min.css">
|
|
45
|
+
<link rel="stylesheet" href="node_modules/@fintatech/fintachart/css/FintaChart.min.css">
|
|
46
|
+
|
|
47
|
+
<!-- 2. Framework dependencies -->
|
|
48
|
+
<script src="node_modules/@fintatech/fintachart/scripts/frameworks/jquery.min.js"></script>
|
|
49
|
+
<script src="node_modules/@fintatech/fintachart/scripts/frameworks/jquery-ui.min.js"></script>
|
|
50
|
+
<script src="node_modules/@fintatech/fintachart/scripts/frameworks/moment.min.js"></script>
|
|
51
|
+
<script src="node_modules/@fintatech/fintachart/scripts/frameworks/Intl.min.js"></script>
|
|
52
|
+
<script src="node_modules/@fintatech/fintachart/scripts/frameworks/i18nextXHRBackend.min.js"></script>
|
|
53
|
+
<script src="node_modules/@fintatech/fintachart/scripts/frameworks/jquery-i18next.min.js"></script>
|
|
54
|
+
|
|
55
|
+
<!-- 3. Main bundle -->
|
|
56
|
+
<script src="node_modules/@fintatech/fintachart/scripts/FintaChart.min.js"></script>
|
|
57
|
+
|
|
58
|
+
<!-- 4. Theme -->
|
|
59
|
+
<script src="node_modules/@fintatech/fintachart/scripts/themes/defaultTheme.js"></script>
|
|
60
|
+
|
|
61
|
+
<div id="chart"></div>
|
|
62
|
+
|
|
63
|
+
<script>
|
|
64
|
+
// 5. Resource paths — must be set before creating the chart
|
|
65
|
+
FintaChart.ResourcePath.localization = 'node_modules/@fintatech/fintachart/localization/';
|
|
66
|
+
FintaChart.ResourcePath.htmlDialogs = 'node_modules/@fintatech/fintachart/htmldialogs/';
|
|
67
|
+
FintaChart.SvgLoader.path = 'node_modules/@fintatech/fintachart/img/svg-icons/';
|
|
68
|
+
|
|
69
|
+
// 6. Create chart
|
|
70
|
+
var chart = new FintaChart.Chart({
|
|
71
|
+
container: '#chart',
|
|
72
|
+
datafeed: myDatafeed,
|
|
73
|
+
instrument: {
|
|
74
|
+
symbol: 'EUR/GBP',
|
|
75
|
+
exchange: 'FOREX',
|
|
76
|
+
tickSize: 0.00001
|
|
77
|
+
},
|
|
78
|
+
timeFrame: { interval: 1, periodicity: FintaChart.Periodicity.HOUR },
|
|
79
|
+
theme: defaultTheme,
|
|
80
|
+
showToolbar: true,
|
|
81
|
+
showScrollbar: true,
|
|
82
|
+
supportedTimeFrames: ['1 Minutes', '5 Minutes', '15 Minutes', '1 Hour', '4 Hours', '1 Day', '1 Week']
|
|
83
|
+
});
|
|
84
|
+
</script>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### React + TypeScript
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
import { useEffect, useRef } from 'react';
|
|
91
|
+
|
|
92
|
+
interface ChartProps {
|
|
93
|
+
instrument: FintaChart.IInstrument;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function Chart({ instrument }: ChartProps) {
|
|
97
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
98
|
+
const chartRef = useRef<FintaChart.Chart | null>(null);
|
|
99
|
+
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (!containerRef.current) return;
|
|
102
|
+
|
|
103
|
+
FintaChart.ResourcePath.localization = 'node_modules/@fintatech/fintachart/localization/';
|
|
104
|
+
FintaChart.ResourcePath.htmlDialogs = 'node_modules/@fintatech/fintachart/htmldialogs/';
|
|
105
|
+
FintaChart.SvgLoader.path = 'node_modules/@fintatech/fintachart/img/svg-icons/';
|
|
106
|
+
|
|
107
|
+
chartRef.current = new FintaChart.Chart({
|
|
108
|
+
container: containerRef.current,
|
|
109
|
+
datafeed: myDatafeed,
|
|
110
|
+
instrument,
|
|
111
|
+
timeFrame: { interval: 1, periodicity: FintaChart.Periodicity.MINUTE },
|
|
112
|
+
theme: defaultTheme,
|
|
113
|
+
showToolbar: true,
|
|
114
|
+
showScrollbar: true,
|
|
115
|
+
supportedTimeFrames: ['1 Minutes', '5 Minutes', '15 Minutes', '1 Hour', '4 Hours', '1 Day']
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
return () => {
|
|
119
|
+
chartRef.current?.dispose();
|
|
120
|
+
chartRef.current = null;
|
|
121
|
+
};
|
|
122
|
+
}, [instrument]);
|
|
123
|
+
|
|
124
|
+
return <div ref={containerRef} style={{ width: '100%', height: '100%' }} />;
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Documentation and Examples
|
|
129
|
+
|
|
130
|
+
Full documentation, API reference, and 14 runnable examples live on GitHub:
|
|
131
|
+
|
|
132
|
+
- **Docs:** https://github.com/fintatech/fintachart/tree/master/docs
|
|
133
|
+
- **Examples:** https://github.com/fintatech/fintachart/tree/master/examples
|
|
134
|
+
- **Repository:** https://github.com/fintatech/fintachart
|
|
135
|
+
|
|
136
|
+
## Browser Compatibility
|
|
137
|
+
|
|
138
|
+
| Browser | Version |
|
|
139
|
+
|---------|---------|
|
|
140
|
+
| Chrome | 29+ |
|
|
141
|
+
| Safari | 9+ |
|
|
142
|
+
| Firefox | 28+ |
|
|
143
|
+
| Opera | 17+ |
|
|
144
|
+
| Edge | 17+ |
|
|
145
|
+
| Android Browser | 5+ |
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
|
|
149
|
+
Copyright (c) Fintatech B.V. All rights reserved.
|
|
150
|
+
|
|
151
|
+
Free to use in local development environments. A commercial license is required for any deployed or network-accessible use. See [LICENSE.md](https://github.com/fintatech/fintachart/tree/master/LICENSE.md) for full terms, or contact **sales@fintatech.com**.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Third-Party Notices
|
|
2
|
+
|
|
3
|
+
Trading Chart Designer includes the following third-party libraries,
|
|
4
|
+
all distributed under the MIT License:
|
|
5
|
+
|
|
6
|
+
| Library | Version | License | URL |
|
|
7
|
+
|---------|---------|---------|-----|
|
|
8
|
+
| jQuery | 3.x | MIT | https://jquery.com |
|
|
9
|
+
| jQuery UI | 1.x | MIT | https://jqueryui.com |
|
|
10
|
+
| jQuery UI Touch Punch | 0.2.3 | MIT | https://github.com/furf/jquery-ui-touch-punch |
|
|
11
|
+
| Moment.js | 2.x | MIT | https://momentjs.com |
|
|
12
|
+
| Intl.js | 1.x | MIT | https://github.com/nicubarbaros/Intl.js |
|
|
13
|
+
| Detectizr | 2.x | MIT | https://github.com/nicubarbaros/detectizr |
|
|
14
|
+
| dom-to-image-more | 3.x | MIT | https://github.com/1904labs/dom-to-image-more |
|
|
15
|
+
| i18next XHR Backend | 3.x | MIT | https://github.com/i18next/i18next-xhr-backend |
|
|
16
|
+
| jquery-i18next | 1.x | MIT | https://github.com/i18next/jquery-i18next |
|
|
17
|
+
| Bootstrap 3 Datetimepicker | 4.x | MIT | https://github.com/Eonasdan/bootstrap-datetimepicker |
|
|
18
|
+
|
|
19
|
+
## MIT License
|
|
20
|
+
|
|
21
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
22
|
+
a copy of this software and associated documentation files (the
|
|
23
|
+
"Software"), to deal in the Software without restriction, including
|
|
24
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
25
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
26
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
27
|
+
the following conditions:
|
|
28
|
+
|
|
29
|
+
The above copyright notice and this permission notice shall be
|
|
30
|
+
included in all copies or substantial portions of the Software.
|
|
31
|
+
|
|
32
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
33
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
34
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
35
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
36
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
37
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
38
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
<!DOCTYPE HTML>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>FintaChart Web & Mobile - Demo</title>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
8
|
+
|
|
9
|
+
<link rel="apple-touch-icon-precomposed" href="img/favicon/favicon.ico">
|
|
10
|
+
<link rel="shortcut icon" href="img/favicon/favicon.ico">
|
|
11
|
+
|
|
12
|
+
<link rel="stylesheet" href="css/external/spectrum.min.css">
|
|
13
|
+
<link rel="stylesheet" href="css/external/toastr.min.css">
|
|
14
|
+
<link rel="stylesheet" href="css/external/jqNumericField.min.css">
|
|
15
|
+
<link rel="stylesheet" href="css/FintaChart.min.css">
|
|
16
|
+
|
|
17
|
+
<script src="scripts/frameworks/jquery.min.js"></script>
|
|
18
|
+
<script src="scripts/frameworks/jquery-ui.min.js"></script>
|
|
19
|
+
<script src="scripts/frameworks/Intl.min.js"></script>
|
|
20
|
+
<script src="scripts/frameworks/moment.min.js"></script>
|
|
21
|
+
<script src="scripts/frameworks/detectizr.min.js"></script>
|
|
22
|
+
<script src="scripts/frameworks/dom-to-image-more.min.js"></script>
|
|
23
|
+
<script src="scripts/frameworks/i18nextXHRBackend.min.js"></script>
|
|
24
|
+
<script src="scripts/frameworks/jquery-i18next.min.js"></script>
|
|
25
|
+
<script src="scripts/frameworks/jquery.ui.touch-punch.min.js"></script>
|
|
26
|
+
<script src="scripts/FintaChart.min.js"></script>
|
|
27
|
+
<script src="scripts/jsdataadapters/fileDataAdapter.js"></script>
|
|
28
|
+
<script src="scripts/jsdataadapters/restDataAdapter.js"></script>
|
|
29
|
+
<script src="scripts/jsdataadapters/webSocketDataAdapter.js"></script>
|
|
30
|
+
<script src="scripts/themes/darkTheme.js"></script>
|
|
31
|
+
<script src="scripts/themes/beetTheme.js"></script>
|
|
32
|
+
<script src="scripts/themes/defaultTheme.js"></script>
|
|
33
|
+
<script src="scripts/themes/grayTheme.js"></script>
|
|
34
|
+
<script src="scripts/themes/oliveTheme.js"></script>
|
|
35
|
+
<script src="scripts/themes/orangeTheme.js"></script>
|
|
36
|
+
<script src="scripts/themes/purpleTheme.js"></script>
|
|
37
|
+
<script src="scripts/themes/skyTheme.js"></script>
|
|
38
|
+
<script src="scripts/themes/tealTheme.js"></script>
|
|
39
|
+
<script src="scripts/themes/fintatechDarkTheme.js"></script>
|
|
40
|
+
<script src="scripts/miscs/templateFileDataAdapter.js"></script>
|
|
41
|
+
|
|
42
|
+
<style>
|
|
43
|
+
html,
|
|
44
|
+
body {
|
|
45
|
+
height: 100%;
|
|
46
|
+
margin: 0;
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#chartContainer {
|
|
51
|
+
width: 100%;
|
|
52
|
+
height: 100%;
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
55
|
+
</head>
|
|
56
|
+
|
|
57
|
+
<body id="tcdBody">
|
|
58
|
+
<div id="chartContainer"></div>
|
|
59
|
+
<script>
|
|
60
|
+
FintaChart.ResourcePath.localization = 'localization/';
|
|
61
|
+
const datafeed = fileDatafeed;
|
|
62
|
+
|
|
63
|
+
$(function () {
|
|
64
|
+
datafeed.init().then(df => {
|
|
65
|
+
let config = {
|
|
66
|
+
chartContainer: '#chartContainer',
|
|
67
|
+
width: '100%',
|
|
68
|
+
height: '100%',
|
|
69
|
+
theme: getTheme(),
|
|
70
|
+
datafeed: df,
|
|
71
|
+
templateDataProvider: templatesDummyDataProvider,
|
|
72
|
+
instrument: {
|
|
73
|
+
symbol: "EUR/GBP",
|
|
74
|
+
exchange: "FOREX",
|
|
75
|
+
company: "",
|
|
76
|
+
tickSize: 0.00001
|
|
77
|
+
},
|
|
78
|
+
supportedTimeFrames: ['1 Minute', '5 Minutes', '15 Minutes', '1 Hour',
|
|
79
|
+
'4 Hours'/*, '1 Day', '1 Month', '1 Year'*/
|
|
80
|
+
]
|
|
81
|
+
};
|
|
82
|
+
const chart = window.globalChart = $(config.chartContainer).FintaChart(config);
|
|
83
|
+
|
|
84
|
+
drawBasicObjects(chart)
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
function getTheme() {
|
|
88
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
89
|
+
const themeName = urlParams.get('theme') || '';
|
|
90
|
+
|
|
91
|
+
switch (themeName.toLowerCase()) {
|
|
92
|
+
case 'fintatech':
|
|
93
|
+
return fintatechDarkTheme;
|
|
94
|
+
case 'dark':
|
|
95
|
+
return darkTheme;
|
|
96
|
+
case 'beet':
|
|
97
|
+
return beetTheme;
|
|
98
|
+
case 'gray':
|
|
99
|
+
return grayTheme;
|
|
100
|
+
case 'olive':
|
|
101
|
+
return oliveTheme;
|
|
102
|
+
case 'orange':
|
|
103
|
+
return orangeTheme;
|
|
104
|
+
case 'purple':
|
|
105
|
+
return purpleTheme;
|
|
106
|
+
case 'sky':
|
|
107
|
+
return skyTheme;
|
|
108
|
+
case 'teal':
|
|
109
|
+
return tealTheme;
|
|
110
|
+
default:
|
|
111
|
+
return defaultTheme;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function drawBasicObjects(chart) {
|
|
116
|
+
const buyDate = new Date(2018, 8, 20, 5, 44);
|
|
117
|
+
const buyPrice = 0.8872;
|
|
118
|
+
const sellDate = new Date(2018, 9, 4, 5, 59);
|
|
119
|
+
const sellPrice = 0.88470;
|
|
120
|
+
const shapes = [];
|
|
121
|
+
|
|
122
|
+
shapes.push(generateUpArrow(buyDate, buyPrice));
|
|
123
|
+
shapes.push(generateDownArrow(sellDate, sellPrice));
|
|
124
|
+
shapes.push(generateLine(buyDate, buyPrice, sellDate, sellPrice));
|
|
125
|
+
|
|
126
|
+
chart.primaryPane.addShapes(shapes);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function generateLine(startDate, startValue, endDate, endValue) {
|
|
130
|
+
const lineSegment = new FintaChart.LineSegmentShape();
|
|
131
|
+
lineSegment.points[0].date = startDate;
|
|
132
|
+
lineSegment.points[0].value = startValue;
|
|
133
|
+
lineSegment.appendVisualDataPoint(new FintaChart.DataPoint({
|
|
134
|
+
date: endDate,
|
|
135
|
+
value: endValue,
|
|
136
|
+
}));
|
|
137
|
+
lineSegment.locked = true;
|
|
138
|
+
|
|
139
|
+
return lineSegment;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function generateUpArrow(date, price) {
|
|
143
|
+
const arrowUp = new FintaChart.ArrowUpShape();
|
|
144
|
+
arrowUp.points[0].date = date;
|
|
145
|
+
arrowUp.points[0].value = price;
|
|
146
|
+
arrowUp.tooltip.text = `BUY @ ${price}`;
|
|
147
|
+
arrowUp.locked = true;
|
|
148
|
+
|
|
149
|
+
return arrowUp;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function generateDownArrow(date, price) {
|
|
153
|
+
const arrowDown = new FintaChart.ArrowDownShape();
|
|
154
|
+
arrowDown.points[0].date = date;
|
|
155
|
+
arrowDown.points[0].value = price;
|
|
156
|
+
arrowDown.tooltip.text = `SELL @ ${price}`;
|
|
157
|
+
arrowDown.locked = true;
|
|
158
|
+
|
|
159
|
+
return arrowDown;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
</script>
|
|
163
|
+
</body>
|
|
164
|
+
|
|
165
|
+
</html>
|