diff --git a/angular/src/app/app.component.ts b/angular/src/app/app.component.ts index bf1ca0d..23b77f2 100644 --- a/angular/src/app/app.component.ts +++ b/angular/src/app/app.component.ts @@ -62,6 +62,12 @@ export class AppComponent { ] }, + { + id: '41', name: 'Chart', url: '', subItems: [ + { id: '19', name: 'Smart Stock Forecasting', route: '/stockForecasting' }, + ] + }, + { id: '10', name: 'Kanban', subItems: [ { id: '/kanban/sentiment-analysis/', name: 'Smart Recommendation' }, diff --git a/angular/src/app/app.routes.ts b/angular/src/app/app.routes.ts index ea89a2c..c0a8eb9 100644 --- a/angular/src/app/app.routes.ts +++ b/angular/src/app/app.routes.ts @@ -16,6 +16,7 @@ import {imageEditorRoutes} from './image-editor'; import { documentRoutes } from './document-editor'; import { SmartRichTextEditor } from './rich-text-editor/smart-rich-text-editor.component'; import { AdaptiveDataStructureComponent } from './treegrid/adaptive-data-structure/adaptive-data-structure.component'; +import { StockForecastComponent } from './chart/stockForecasting/stockForecast.component'; export const routes: Routes = [ { path: '',component: SmartTextArea @@ -45,6 +46,9 @@ export const routes: Routes = [ { path: 'smart-treegrid', component: AdaptiveDataStructureComponent }, +{ + path: 'stockForecasting', component: StockForecastComponent +}, ...sheetRoutes,...queryRoutes,...imageEditorRoutes,...documentRoutes, ]; @NgModule({ diff --git a/angular/src/app/chart/data/amzn-data.json b/angular/src/app/chart/data/amzn-data.json new file mode 100644 index 0000000..afdbe95 --- /dev/null +++ b/angular/src/app/chart/data/amzn-data.json @@ -0,0 +1,1829 @@ +[ + { + "Date": "2024-07-01", + "Open": 192.19, + "High": 192.9, + "Low": 191.49, + "Close": 192.09 + }, + { + "Date": "2024-07-02", + "Open": 190.43, + "High": 190.85, + "Low": 189.69, + "Close": 190.34 + }, + { + "Date": "2024-07-03", + "Open": 192.96, + "High": 193.18, + "Low": 191.23, + "Close": 192.87 + }, + { + "Date": "2024-07-04", + "Open": 195.7, + "High": 198.88, + "Low": 195.46, + "Close": 198.11 + }, + { + "Date": "2024-07-05", + "Open": 197.2, + "High": 200.88, + "Low": 193.9, + "Close": 194.67 + }, + { + "Date": "2024-07-08", + "Open": 190.88, + "High": 192.6, + "Low": 190.19, + "Close": 191.82 + }, + { + "Date": "2024-07-09", + "Open": 194.89, + "High": 197.87, + "Low": 192.26, + "Close": 194.36 + }, + { + "Date": "2024-07-10", + "Open": 190.99, + "High": 192.37, + "Low": 189.83, + "Close": 191.04 + }, + { + "Date": "2024-07-11", + "Open": 194.27, + "High": 196.85, + "Low": 191.88, + "Close": 193.23 + }, + { + "Date": "2024-07-12", + "Open": 191.67, + "High": 193.12, + "Low": 188.07, + "Close": 190.86 + }, + { + "Date": "2024-07-15", + "Open": 192.59, + "High": 192.73, + "Low": 191.99, + "Close": 192.57 + }, + { + "Date": "2024-07-16", + "Open": 193.34, + "High": 195.1, + "Low": 192.36, + "Close": 193.96 + }, + { + "Date": "2024-07-17", + "Open": 194.46, + "High": 195.2, + "Low": 193.46, + "Close": 194.16 + }, + { + "Date": "2024-07-18", + "Open": 196.32, + "High": 198.22, + "Low": 194.28, + "Close": 196.39 + }, + { + "Date": "2024-07-19", + "Open": 199.01, + "High": 201.2, + "Low": 198.41, + "Close": 198.68 + }, + { + "Date": "2024-07-22", + "Open": 198.64, + "High": 199.98, + "Low": 197.48, + "Close": 197.93 + }, + { + "Date": "2024-07-23", + "Open": 199.45, + "High": 202.09, + "Low": 198.77, + "Close": 199.35 + }, + { + "Date": "2024-07-24", + "Open": 202.32, + "High": 202.98, + "Low": 198.69, + "Close": 201.41 + }, + { + "Date": "2024-07-25", + "Open": 204.2, + "High": 204.73, + "Low": 201.08, + "Close": 203.53 + }, + { + "Date": "2024-07-26", + "Open": 206.69, + "High": 207.5, + "Low": 203.42, + "Close": 204.02 + }, + { + "Date": "2024-07-29", + "Open": 201.51, + "High": 203.13, + "Low": 198.05, + "Close": 202.99 + }, + { + "Date": "2024-07-30", + "Open": 203.27, + "High": 205.79, + "Low": 201.22, + "Close": 202.57 + }, + { + "Date": "2024-07-31", + "Open": 214.69, + "High": 214.78, + "Low": 213.21, + "Close": 214.04 + }, + { + "Date": "2024-08-01", + "Open": 208.66, + "High": 210.44, + "Low": 208.19, + "Close": 209.46 + }, + { + "Date": "2024-08-02", + "Open": 209.26, + "High": 209.86, + "Low": 207.57, + "Close": 208.31 + }, + { + "Date": "2024-08-05", + "Open": 205.62, + "High": 206.82, + "Low": 205.5, + "Close": 206.54 + }, + { + "Date": "2024-08-06", + "Open": 206.32, + "High": 206.84, + "Low": 206.0, + "Close": 206.72 + }, + { + "Date": "2024-08-07", + "Open": 205.79, + "High": 206.03, + "Low": 205.1, + "Close": 205.97 + }, + { + "Date": "2024-08-08", + "Open": 207.89, + "High": 210.01, + "Low": 204.93, + "Close": 208.97 + }, + { + "Date": "2024-08-09", + "Open": 205.51, + "High": 206.31, + "Low": 202.09, + "Close": 204.19 + }, + { + "Date": "2024-08-12", + "Open": 203.98, + "High": 204.0, + "Low": 201.04, + "Close": 203.99 + }, + { + "Date": "2024-08-13", + "Open": 206.41, + "High": 207.58, + "Low": 204.61, + "Close": 207.38 + }, + { + "Date": "2024-08-14", + "Open": 208.28, + "High": 208.69, + "Low": 207.82, + "Close": 207.83 + }, + { + "Date": "2024-08-15", + "Open": 209.35, + "High": 210.26, + "Low": 205.57, + "Close": 208.55 + }, + { + "Date": "2024-08-16", + "Open": 208.34, + "High": 212.07, + "Low": 204.61, + "Close": 209.24 + }, + { + "Date": "2024-08-19", + "Open": 220.26, + "High": 220.85, + "Low": 219.53, + "Close": 220.1 + }, + { + "Date": "2024-08-20", + "Open": 218.45, + "High": 219.96, + "Low": 218.0, + "Close": 219.01 + }, + { + "Date": "2024-08-21", + "Open": 216.92, + "High": 217.62, + "Low": 215.93, + "Close": 216.22 + }, + { + "Date": "2024-08-22", + "Open": 216.61, + "High": 217.0, + "Low": 215.1, + "Close": 215.98 + }, + { + "Date": "2024-08-23", + "Open": 216.54, + "High": 217.42, + "Low": 215.69, + "Close": 216.38 + }, + { + "Date": "2024-08-26", + "Open": 215.55, + "High": 216.05, + "Low": 214.14, + "Close": 215.1 + }, + { + "Date": "2024-08-27", + "Open": 218.7, + "High": 219.12, + "Low": 217.8, + "Close": 218.41 + }, + { + "Date": "2024-08-28", + "Open": 220.42, + "High": 221.68, + "Low": 219.76, + "Close": 221.38 + }, + { + "Date": "2024-08-29", + "Open": 217.49, + "High": 218.53, + "Low": 217.06, + "Close": 217.91 + }, + { + "Date": "2024-08-30", + "Open": 218.01, + "High": 219.04, + "Low": 217.44, + "Close": 218.74 + }, + { + "Date": "2024-09-02", + "Open": 219.12, + "High": 222.26, + "Low": 215.9, + "Close": 221.34 + }, + { + "Date": "2024-09-03", + "Open": 220.74, + "High": 224.84, + "Low": 218.47, + "Close": 221.51 + }, + { + "Date": "2024-09-04", + "Open": 220.55, + "High": 223.45, + "Low": 219.76, + "Close": 222.13 + }, + { + "Date": "2024-09-05", + "Open": 220.15, + "High": 220.71, + "Low": 218.92, + "Close": 220.47 + }, + { + "Date": "2024-09-06", + "Open": 218.6, + "High": 220.56, + "Low": 217.74, + "Close": 218.16 + }, + { + "Date": "2024-09-09", + "Open": 214.35, + "High": 217.2, + "Low": 210.95, + "Close": 211.85 + }, + { + "Date": "2024-09-10", + "Open": 209.42, + "High": 210.5, + "Low": 209.07, + "Close": 209.12 + }, + { + "Date": "2024-09-11", + "Open": 207.41, + "High": 208.47, + "Low": 204.12, + "Close": 206.97 + }, + { + "Date": "2024-09-12", + "Open": 204.14, + "High": 205.98, + "Low": 200.22, + "Close": 201.97 + }, + { + "Date": "2024-09-13", + "Open": 201.24, + "High": 205.15, + "Low": 200.33, + "Close": 201.03 + }, + { + "Date": "2024-09-16", + "Open": 199.11, + "High": 199.39, + "Low": 195.31, + "Close": 198.86 + }, + { + "Date": "2024-09-17", + "Open": 196.76, + "High": 199.76, + "Low": 193.67, + "Close": 198.32 + }, + { + "Date": "2024-09-18", + "Open": 194.53, + "High": 195.14, + "Low": 192.88, + "Close": 194.31 + }, + { + "Date": "2024-09-19", + "Open": 192.02, + "High": 195.09, + "Low": 191.11, + "Close": 191.26 + }, + { + "Date": "2024-09-20", + "Open": 187.81, + "High": 189.19, + "Low": 186.3, + "Close": 186.64 + }, + { + "Date": "2024-09-23", + "Open": 184.36, + "High": 187.13, + "Low": 182.15, + "Close": 183.64 + }, + { + "Date": "2024-09-24", + "Open": 182.18, + "High": 184.64, + "Low": 179.59, + "Close": 181.42 + }, + { + "Date": "2024-09-25", + "Open": 184.19, + "High": 184.25, + "Low": 180.86, + "Close": 182.16 + }, + { + "Date": "2024-09-26", + "Open": 179.79, + "High": 180.58, + "Low": 179.64, + "Close": 180.06 + }, + { + "Date": "2024-09-27", + "Open": 183.16, + "High": 185.58, + "Low": 180.75, + "Close": 183.72 + }, + { + "Date": "2024-09-30", + "Open": 187.33, + "High": 187.71, + "Low": 183.86, + "Close": 187.22 + }, + { + "Date": "2024-10-01", + "Open": 188.65, + "High": 188.75, + "Low": 187.8, + "Close": 187.84 + }, + { + "Date": "2024-10-02", + "Open": 186.21, + "High": 186.78, + "Low": 183.75, + "Close": 184.39 + }, + { + "Date": "2024-10-03", + "Open": 187.18, + "High": 190.08, + "Low": 185.05, + "Close": 187.32 + }, + { + "Date": "2024-10-04", + "Open": 184.08, + "High": 186.25, + "Low": 180.59, + "Close": 182.53 + }, + { + "Date": "2024-10-07", + "Open": 179.66, + "High": 182.99, + "Low": 176.27, + "Close": 180.66 + }, + { + "Date": "2024-10-08", + "Open": 182.76, + "High": 186.4, + "Low": 179.53, + "Close": 184.99 + }, + { + "Date": "2024-10-09", + "Open": 184.5, + "High": 186.52, + "Low": 181.11, + "Close": 186.42 + }, + { + "Date": "2024-10-10", + "Open": 187.48, + "High": 189.39, + "Low": 186.48, + "Close": 187.78 + }, + { + "Date": "2024-10-11", + "Open": 191.06, + "High": 194.69, + "Low": 190.55, + "Close": 193.48 + }, + { + "Date": "2024-10-14", + "Open": 193.98, + "High": 196.02, + "Low": 192.42, + "Close": 192.83 + }, + { + "Date": "2024-10-15", + "Open": 189.99, + "High": 191.31, + "Low": 186.61, + "Close": 189.98 + }, + { + "Date": "2024-10-16", + "Open": 188.25, + "High": 188.94, + "Low": 187.39, + "Close": 187.46 + }, + { + "Date": "2024-10-17", + "Open": 189.99, + "High": 190.44, + "Low": 189.92, + "Close": 190.16 + }, + { + "Date": "2024-10-18", + "Open": 193.75, + "High": 196.45, + "Low": 192.38, + "Close": 195.2 + }, + { + "Date": "2024-10-21", + "Open": 196.39, + "High": 200.25, + "Low": 195.65, + "Close": 196.27 + }, + { + "Date": "2024-10-22", + "Open": 193.59, + "High": 195.98, + "Low": 193.26, + "Close": 194.4 + }, + { + "Date": "2024-10-23", + "Open": 191.6, + "High": 194.19, + "Low": 190.19, + "Close": 193.23 + }, + { + "Date": "2024-10-24", + "Open": 191.61, + "High": 191.68, + "Low": 189.06, + "Close": 189.12 + }, + { + "Date": "2024-10-25", + "Open": 188.53, + "High": 190.95, + "Low": 187.83, + "Close": 190.24 + }, + { + "Date": "2024-10-28", + "Open": 190.78, + "High": 190.85, + "Low": 190.03, + "Close": 190.68 + }, + { + "Date": "2024-10-29", + "Open": 192.5, + "High": 192.63, + "Low": 189.37, + "Close": 192.45 + }, + { + "Date": "2024-10-30", + "Open": 195.2, + "High": 196.64, + "Low": 192.47, + "Close": 193.05 + }, + { + "Date": "2024-10-31", + "Open": 195.96, + "High": 199.34, + "Low": 193.96, + "Close": 197.35 + }, + { + "Date": "2024-11-01", + "Open": 195.71, + "High": 197.28, + "Low": 192.66, + "Close": 195.82 + }, + { + "Date": "2024-11-04", + "Open": 196.1, + "High": 197.4, + "Low": 193.82, + "Close": 195.77 + }, + { + "Date": "2024-11-05", + "Open": 194.6, + "High": 194.79, + "Low": 194.02, + "Close": 194.53 + }, + { + "Date": "2024-11-06", + "Open": 191.0, + "High": 193.86, + "Low": 189.85, + "Close": 192.58 + }, + { + "Date": "2024-11-07", + "Open": 189.1, + "High": 190.47, + "Low": 188.36, + "Close": 189.17 + }, + { + "Date": "2024-11-08", + "Open": 187.13, + "High": 188.9, + "Low": 184.56, + "Close": 185.4 + }, + { + "Date": "2024-11-11", + "Open": 186.41, + "High": 190.01, + "Low": 185.6, + "Close": 189.86 + }, + { + "Date": "2024-11-12", + "Open": 191.36, + "High": 191.42, + "Low": 191.18, + "Close": 191.35 + }, + { + "Date": "2024-11-13", + "Open": 194.67, + "High": 198.53, + "Low": 191.8, + "Close": 193.42 + }, + { + "Date": "2024-11-14", + "Open": 197.25, + "High": 198.59, + "Low": 195.02, + "Close": 196.06 + }, + { + "Date": "2024-11-15", + "Open": 199.47, + "High": 201.98, + "Low": 195.49, + "Close": 198.1 + }, + { + "Date": "2024-11-18", + "Open": 198.79, + "High": 200.55, + "Low": 195.52, + "Close": 199.53 + }, + { + "Date": "2024-11-19", + "Open": 198.33, + "High": 199.06, + "Low": 197.8, + "Close": 198.08 + }, + { + "Date": "2024-11-20", + "Open": 197.7, + "High": 199.95, + "Low": 196.06, + "Close": 198.09 + }, + { + "Date": "2024-11-21", + "Open": 196.88, + "High": 197.63, + "Low": 196.7, + "Close": 197.27 + }, + { + "Date": "2024-11-22", + "Open": 194.57, + "High": 195.2, + "Low": 191.02, + "Close": 193.02 + }, + { + "Date": "2024-11-25", + "Open": 189.27, + "High": 190.92, + "Low": 188.07, + "Close": 189.39 + }, + { + "Date": "2024-11-26", + "Open": 187.09, + "High": 188.12, + "Low": 186.13, + "Close": 187.32 + }, + { + "Date": "2024-11-27", + "Open": 186.73, + "High": 188.27, + "Low": 183.88, + "Close": 186.22 + }, + { + "Date": "2024-11-28", + "Open": 186.66, + "High": 190.04, + "Low": 182.98, + "Close": 189.97 + }, + { + "Date": "2024-11-29", + "Open": 191.89, + "High": 194.08, + "Low": 191.07, + "Close": 193.31 + }, + { + "Date": "2024-12-02", + "Open": 190.06, + "High": 190.25, + "Low": 187.75, + "Close": 188.71 + }, + { + "Date": "2024-12-03", + "Open": 188.97, + "High": 189.8, + "Low": 188.38, + "Close": 189.78 + }, + { + "Date": "2024-12-04", + "Open": 192.27, + "High": 195.81, + "Low": 191.38, + "Close": 195.26 + }, + { + "Date": "2024-12-05", + "Open": 191.95, + "High": 193.78, + "Low": 188.66, + "Close": 191.23 + }, + { + "Date": "2024-12-06", + "Open": 194.02, + "High": 196.79, + "Low": 191.51, + "Close": 193.49 + }, + { + "Date": "2024-12-09", + "Open": 196.7, + "High": 199.49, + "Low": 195.09, + "Close": 195.64 + }, + { + "Date": "2024-12-10", + "Open": 194.77, + "High": 196.67, + "Low": 192.89, + "Close": 195.91 + }, + { + "Date": "2024-12-11", + "Open": 194.98, + "High": 198.15, + "Low": 192.08, + "Close": 192.86 + }, + { + "Date": "2024-12-12", + "Open": 192.9, + "High": 195.34, + "Low": 189.5, + "Close": 190.89 + }, + { + "Date": "2024-12-13", + "Open": 193.27, + "High": 193.35, + "Low": 190.87, + "Close": 191.32 + }, + { + "Date": "2024-12-16", + "Open": 193.34, + "High": 193.73, + "Low": 189.73, + "Close": 190.55 + }, + { + "Date": "2024-12-17", + "Open": 189.68, + "High": 193.18, + "Low": 186.14, + "Close": 187.61 + }, + { + "Date": "2024-12-18", + "Open": 184.81, + "High": 187.6, + "Low": 183.76, + "Close": 187.12 + }, + { + "Date": "2024-12-19", + "Open": 189.94, + "High": 193.17, + "Low": 188.73, + "Close": 189.54 + }, + { + "Date": "2024-12-20", + "Open": 191.52, + "High": 192.12, + "Low": 188.86, + "Close": 190.69 + }, + { + "Date": "2024-12-23", + "Open": 188.2, + "High": 190.33, + "Low": 185.65, + "Close": 189.03 + }, + { + "Date": "2024-12-24", + "Open": 189.97, + "High": 190.99, + "Low": 186.23, + "Close": 189.82 + }, + { + "Date": "2024-12-25", + "Open": 189.41, + "High": 189.62, + "Low": 187.56, + "Close": 189.47 + }, + { + "Date": "2024-12-26", + "Open": 192.06, + "High": 192.92, + "Low": 188.35, + "Close": 189.02 + }, + { + "Date": "2024-12-27", + "Open": 186.58, + "High": 188.72, + "Low": 184.74, + "Close": 187.08 + }, + { + "Date": "2024-12-30", + "Open": 189.41, + "High": 192.12, + "Low": 187.98, + "Close": 190.09 + }, + { + "Date": "2024-12-31", + "Open": 192.13, + "High": 194.13, + "Low": 189.28, + "Close": 191.55 + }, + { + "Date": "2025-01-01", + "Open": 191.2, + "High": 193.81, + "Low": 190.1, + "Close": 191.68 + }, + { + "Date": "2025-01-02", + "Open": 188.0, + "High": 190.58, + "Low": 185.8, + "Close": 187.84 + }, + { + "Date": "2025-01-03", + "Open": 184.94, + "High": 188.34, + "Low": 182.09, + "Close": 187.13 + }, + { + "Date": "2025-01-06", + "Open": 186.96, + "High": 187.37, + "Low": 185.26, + "Close": 185.76 + }, + { + "Date": "2025-01-07", + "Open": 184.81, + "High": 187.11, + "Low": 181.22, + "Close": 183.96 + }, + { + "Date": "2025-01-08", + "Open": 187.46, + "High": 189.82, + "Low": 184.69, + "Close": 185.39 + }, + { + "Date": "2025-01-09", + "Open": 185.28, + "High": 186.48, + "Low": 182.28, + "Close": 186.45 + }, + { + "Date": "2025-01-10", + "Open": 189.6, + "High": 192.09, + "Low": 187.7, + "Close": 188.59 + }, + { + "Date": "2025-01-13", + "Open": 190.5, + "High": 192.25, + "Low": 188.59, + "Close": 191.56 + }, + { + "Date": "2025-01-14", + "Open": 190.87, + "High": 192.38, + "Low": 189.85, + "Close": 190.37 + }, + { + "Date": "2025-01-15", + "Open": 192.4, + "High": 192.71, + "Low": 189.79, + "Close": 190.67 + }, + { + "Date": "2025-01-16", + "Open": 191.37, + "High": 193.49, + "Low": 190.47, + "Close": 191.98 + }, + { + "Date": "2025-01-17", + "Open": 195.65, + "High": 195.73, + "Low": 194.55, + "Close": 194.57 + }, + { + "Date": "2025-01-20", + "Open": 196.03, + "High": 197.75, + "Low": 193.92, + "Close": 196.32 + }, + { + "Date": "2025-01-21", + "Open": 195.26, + "High": 197.99, + "Low": 192.95, + "Close": 193.96 + }, + { + "Date": "2025-01-22", + "Open": 194.56, + "High": 195.19, + "Low": 193.74, + "Close": 195.09 + }, + { + "Date": "2025-01-23", + "Open": 194.8, + "High": 195.29, + "Low": 193.59, + "Close": 194.8 + }, + { + "Date": "2025-01-24", + "Open": 194.71, + "High": 196.74, + "Low": 194.28, + "Close": 196.02 + }, + { + "Date": "2025-01-27", + "Open": 195.27, + "High": 196.04, + "Low": 192.61, + "Close": 194.22 + }, + { + "Date": "2025-01-28", + "Open": 196.06, + "High": 199.1, + "Low": 192.26, + "Close": 195.15 + }, + { + "Date": "2025-01-29", + "Open": 193.13, + "High": 193.8, + "Low": 192.23, + "Close": 193.04 + }, + { + "Date": "2025-01-30", + "Open": 194.52, + "High": 197.86, + "Low": 193.59, + "Close": 194.45 + }, + { + "Date": "2025-01-31", + "Open": 197.99, + "High": 199.06, + "Low": 196.81, + "Close": 196.94 + }, + { + "Date": "2025-02-03", + "Open": 196.51, + "High": 200.41, + "Low": 195.5, + "Close": 200.12 + }, + { + "Date": "2025-02-04", + "Open": 200.87, + "High": 203.0, + "Low": 197.66, + "Close": 199.47 + }, + { + "Date": "2025-02-05", + "Open": 200.9, + "High": 203.92, + "Low": 200.64, + "Close": 201.25 + }, + { + "Date": "2025-02-06", + "Open": 197.93, + "High": 200.72, + "Low": 195.59, + "Close": 199.07 + }, + { + "Date": "2025-02-07", + "Open": 197.64, + "High": 197.92, + "Low": 194.88, + "Close": 195.31 + }, + { + "Date": "2025-02-10", + "Open": 193.4, + "High": 195.13, + "Low": 193.1, + "Close": 193.45 + }, + { + "Date": "2025-02-11", + "Open": 195.24, + "High": 195.72, + "Low": 194.97, + "Close": 195.68 + }, + { + "Date": "2025-02-12", + "Open": 197.99, + "High": 200.15, + "Low": 196.64, + "Close": 197.67 + }, + { + "Date": "2025-02-13", + "Open": 200.35, + "High": 202.8, + "Low": 197.77, + "Close": 200.36 + }, + { + "Date": "2025-02-14", + "Open": 202.5, + "High": 203.28, + "Low": 200.92, + "Close": 201.61 + }, + { + "Date": "2025-02-17", + "Open": 202.19, + "High": 203.2, + "Low": 198.23, + "Close": 203.16 + }, + { + "Date": "2025-02-18", + "Open": 201.78, + "High": 202.59, + "Low": 198.35, + "Close": 200.95 + }, + { + "Date": "2025-02-19", + "Open": 197.84, + "High": 200.44, + "Low": 194.78, + "Close": 198.81 + }, + { + "Date": "2025-02-20", + "Open": 197.35, + "High": 199.67, + "Low": 197.32, + "Close": 197.85 + }, + { + "Date": "2025-02-21", + "Open": 201.6, + "High": 202.21, + "Low": 197.95, + "Close": 198.49 + }, + { + "Date": "2025-02-24", + "Open": 198.12, + "High": 199.48, + "Low": 194.53, + "Close": 194.94 + }, + { + "Date": "2025-02-25", + "Open": 198.54, + "High": 201.16, + "Low": 196.12, + "Close": 199.04 + }, + { + "Date": "2025-02-26", + "Open": 199.24, + "High": 201.2, + "Low": 197.42, + "Close": 199.3 + }, + { + "Date": "2025-02-27", + "Open": 198.09, + "High": 200.08, + "Low": 197.34, + "Close": 199.98 + }, + { + "Date": "2025-02-28", + "Open": 196.19, + "High": 198.79, + "Low": 192.44, + "Close": 193.75 + }, + { + "Date": "2025-03-03", + "Open": 190.71, + "High": 192.19, + "Low": 189.7, + "Close": 192.02 + }, + { + "Date": "2025-03-04", + "Open": 188.55, + "High": 189.71, + "Low": 185.24, + "Close": 185.68 + }, + { + "Date": "2025-03-05", + "Open": 188.34, + "High": 191.18, + "Low": 185.09, + "Close": 186.68 + }, + { + "Date": "2025-03-06", + "Open": 188.94, + "High": 191.64, + "Low": 186.93, + "Close": 190.76 + }, + { + "Date": "2025-03-07", + "Open": 186.96, + "High": 189.67, + "Low": 186.35, + "Close": 188.76 + }, + { + "Date": "2025-03-10", + "Open": 188.08, + "High": 190.01, + "Low": 184.45, + "Close": 188.09 + }, + { + "Date": "2025-03-11", + "Open": 184.38, + "High": 187.34, + "Low": 181.96, + "Close": 186.02 + }, + { + "Date": "2025-03-12", + "Open": 188.31, + "High": 190.35, + "Low": 187.27, + "Close": 189.34 + }, + { + "Date": "2025-03-13", + "Open": 187.9, + "High": 191.49, + "Low": 186.94, + "Close": 191.21 + }, + { + "Date": "2025-03-14", + "Open": 194.0, + "High": 194.05, + "Low": 191.15, + "Close": 191.25 + }, + { + "Date": "2025-03-17", + "Open": 190.23, + "High": 192.58, + "Low": 187.41, + "Close": 189.36 + }, + { + "Date": "2025-03-18", + "Open": 187.86, + "High": 190.87, + "Low": 184.83, + "Close": 186.75 + }, + { + "Date": "2025-03-19", + "Open": 188.11, + "High": 189.74, + "Low": 187.99, + "Close": 188.33 + }, + { + "Date": "2025-03-20", + "Open": 189.83, + "High": 191.59, + "Low": 187.47, + "Close": 189.65 + }, + { + "Date": "2025-03-21", + "Open": 189.5, + "High": 191.04, + "Low": 188.55, + "Close": 190.91 + }, + { + "Date": "2025-03-24", + "Open": 187.76, + "High": 187.87, + "Low": 186.22, + "Close": 186.66 + }, + { + "Date": "2025-03-25", + "Open": 185.86, + "High": 188.35, + "Low": 184.76, + "Close": 186.33 + }, + { + "Date": "2025-03-26", + "Open": 188.92, + "High": 192.13, + "Low": 187.26, + "Close": 190.52 + }, + { + "Date": "2025-03-27", + "Open": 187.73, + "High": 190.94, + "Low": 184.35, + "Close": 188.07 + }, + { + "Date": "2025-03-28", + "Open": 190.09, + "High": 191.87, + "Low": 189.81, + "Close": 190.76 + }, + { + "Date": "2025-03-31", + "Open": 191.16, + "High": 194.32, + "Low": 189.5, + "Close": 192.15 + }, + { + "Date": "2025-04-01", + "Open": 191.3, + "High": 193.89, + "Low": 189.82, + "Close": 190.23 + }, + { + "Date": "2025-04-02", + "Open": 189.23, + "High": 191.67, + "Low": 185.46, + "Close": 188.48 + }, + { + "Date": "2025-04-03", + "Open": 188.84, + "High": 189.28, + "Low": 185.68, + "Close": 188.02 + }, + { + "Date": "2025-04-04", + "Open": 190.86, + "High": 191.66, + "Low": 187.81, + "Close": 188.6 + }, + { + "Date": "2025-04-07", + "Open": 192.34, + "High": 192.76, + "Low": 189.23, + "Close": 189.28 + }, + { + "Date": "2025-04-08", + "Open": 189.05, + "High": 189.96, + "Low": 185.34, + "Close": 185.78 + }, + { + "Date": "2025-04-09", + "Open": 185.49, + "High": 186.5, + "Low": 184.83, + "Close": 185.56 + }, + { + "Date": "2025-04-10", + "Open": 183.37, + "High": 184.43, + "Low": 181.95, + "Close": 183.73 + }, + { + "Date": "2025-04-11", + "Open": 185.13, + "High": 187.46, + "Low": 181.93, + "Close": 185.33 + }, + { + "Date": "2025-04-14", + "Open": 187.6, + "High": 190.27, + "Low": 185.51, + "Close": 189.95 + }, + { + "Date": "2025-04-15", + "Open": 190.88, + "High": 192.97, + "Low": 189.63, + "Close": 189.77 + }, + { + "Date": "2025-04-16", + "Open": 188.61, + "High": 190.9, + "Low": 184.9, + "Close": 189.62 + }, + { + "Date": "2025-04-17", + "Open": 186.83, + "High": 188.31, + "Low": 185.75, + "Close": 188.21 + }, + { + "Date": "2025-04-18", + "Open": 186.04, + "High": 187.81, + "Low": 184.15, + "Close": 186.6 + }, + { + "Date": "2025-04-21", + "Open": 189.18, + "High": 192.56, + "Low": 187.6, + "Close": 188.35 + }, + { + "Date": "2025-04-22", + "Open": 187.13, + "High": 190.76, + "Low": 184.98, + "Close": 185.83 + }, + { + "Date": "2025-04-23", + "Open": 186.47, + "High": 188.85, + "Low": 183.38, + "Close": 187.23 + }, + { + "Date": "2025-04-24", + "Open": 185.73, + "High": 187.7, + "Low": 183.64, + "Close": 187.69 + }, + { + "Date": "2025-04-25", + "Open": 189.65, + "High": 192.07, + "Low": 187.21, + "Close": 189.75 + }, + { + "Date": "2025-04-28", + "Open": 193.47, + "High": 193.87, + "Low": 193.21, + "Close": 193.78 + }, + { + "Date": "2025-04-29", + "Open": 193.54, + "High": 195.51, + "Low": 192.22, + "Close": 193.62 + }, + { + "Date": "2025-04-30", + "Open": 191.5, + "High": 192.72, + "Low": 190.41, + "Close": 190.9 + }, + { + "Date": "2025-05-01", + "Open": 192.24, + "High": 193.01, + "Low": 190.3, + "Close": 191.79 + }, + { + "Date": "2025-05-02", + "Open": 194.01, + "High": 196.64, + "Low": 192.33, + "Close": 195.35 + }, + { + "Date": "2025-05-05", + "Open": 197.69, + "High": 199.7, + "Low": 195.4, + "Close": 197.83 + }, + { + "Date": "2025-05-06", + "Open": 199.14, + "High": 202.89, + "Low": 198.53, + "Close": 201.23 + }, + { + "Date": "2025-05-07", + "Open": 198.75, + "High": 200.37, + "Low": 197.53, + "Close": 197.61 + }, + { + "Date": "2025-05-08", + "Open": 197.85, + "High": 199.24, + "Low": 197.76, + "Close": 198.39 + }, + { + "Date": "2025-05-09", + "Open": 201.13, + "High": 201.43, + "Low": 197.67, + "Close": 200.76 + }, + { + "Date": "2025-05-12", + "Open": 204.11, + "High": 205.45, + "Low": 201.65, + "Close": 203.74 + }, + { + "Date": "2025-05-13", + "Open": 199.88, + "High": 203.56, + "Low": 199.68, + "Close": 203.56 + }, + { + "Date": "2025-05-14", + "Open": 201.28, + "High": 201.93, + "Low": 199.91, + "Close": 201.15 + }, + { + "Date": "2025-05-15", + "Open": 202.73, + "High": 202.81, + "Low": 199.58, + "Close": 202.36 + }, + { + "Date": "2025-05-16", + "Open": 199.21, + "High": 200.9, + "Low": 198.57, + "Close": 198.67 + }, + { + "Date": "2025-05-19", + "Open": 200.23, + "High": 202.05, + "Low": 199.73, + "Close": 201.91 + }, + { + "Date": "2025-05-20", + "Open": 197.93, + "High": 201.53, + "Low": 194.8, + "Close": 198.84 + }, + { + "Date": "2025-05-21", + "Open": 202.61, + "High": 202.75, + "Low": 199.63, + "Close": 199.92 + }, + { + "Date": "2025-05-22", + "Open": 197.65, + "High": 199.18, + "Low": 195.77, + "Close": 197.07 + }, + { + "Date": "2025-05-23", + "Open": 196.25, + "High": 200.11, + "Low": 194.25, + "Close": 198.89 + }, + { + "Date": "2025-05-26", + "Open": 198.76, + "High": 201.5, + "Low": 195.7, + "Close": 200.12 + }, + { + "Date": "2025-05-27", + "Open": 203.56, + "High": 205.91, + "Low": 201.23, + "Close": 205.48 + }, + { + "Date": "2025-05-28", + "Open": 205.67, + "High": 206.43, + "Low": 201.91, + "Close": 204.41 + }, + { + "Date": "2025-05-29", + "Open": 206.86, + "High": 207.2, + "Low": 204.17, + "Close": 207.08 + }, + { + "Date": "2025-05-30", + "Open": 210.74, + "High": 213.69, + "Low": 207.95, + "Close": 210.41 + }, + { + "Date": "2025-06-02", + "Open": 206.73, + "High": 208.0, + "Low": 206.48, + "Close": 207.99 + }, + { + "Date": "2025-06-03", + "Open": 208.64, + "High": 209.48, + "Low": 207.25, + "Close": 208.92 + }, + { + "Date": "2025-06-04", + "Open": 210.59, + "High": 214.67, + "Low": 209.45, + "Close": 212.58 + }, + { + "Date": "2025-06-05", + "Open": 213.38, + "High": 215.6, + "Low": 211.92, + "Close": 215.17 + }, + { + "Date": "2025-06-06", + "Open": 219.46, + "High": 223.49, + "Low": 217.62, + "Close": 219.74 + }, + { + "Date": "2025-06-09", + "Open": 221.38, + "High": 224.98, + "Low": 219.12, + "Close": 221.56 + }, + { + "Date": "2025-06-10", + "Open": 223.59, + "High": 224.61, + "Low": 221.75, + "Close": 222.67 + }, + { + "Date": "2025-06-11", + "Open": 225.79, + "High": 228.61, + "Low": 222.57, + "Close": 225.86 + }, + { + "Date": "2025-06-12", + "Open": 225.06, + "High": 228.81, + "Low": 224.42, + "Close": 224.88 + }, + { + "Date": "2025-06-13", + "Open": 222.65, + "High": 223.66, + "Low": 221.0, + "Close": 221.64 + }, + { + "Date": "2025-06-16", + "Open": 220.44, + "High": 224.6, + "Low": 217.53, + "Close": 221.15 + }, + { + "Date": "2025-06-17", + "Open": 223.78, + "High": 224.78, + "Low": 219.9, + "Close": 220.36 + }, + { + "Date": "2025-06-18", + "Open": 220.9, + "High": 224.65, + "Low": 220.56, + "Close": 220.67 + }, + { + "Date": "2025-06-19", + "Open": 222.72, + "High": 226.72, + "Low": 222.49, + "Close": 224.24 + }, + { + "Date": "2025-06-20", + "Open": 227.64, + "High": 231.94, + "Low": 223.7, + "Close": 228.93 + }, + { + "Date": "2025-06-23", + "Open": 224.53, + "High": 226.19, + "Low": 220.62, + "Close": 220.96 + }, + { + "Date": "2025-06-24", + "Open": 223.74, + "High": 228.12, + "Low": 222.5, + "Close": 222.54 + }, + { + "Date": "2025-06-25", + "Open": 221.04, + "High": 221.12, + "Low": 219.05, + "Close": 219.11 + }, + { + "Date": "2025-06-26", + "Open": 219.3, + "High": 223.46, + "Low": 217.06, + "Close": 217.25 + }, + { + "Date": "2025-06-27", + "Open": 219.77, + "High": 221.14, + "Low": 216.28, + "Close": 218.01 + }, + { + "Date": "2025-06-30", + "Open": 222.01, + "High": 223.18, + "Low": 217.87, + "Close": 222.27 + } +] \ No newline at end of file diff --git a/angular/src/app/chart/data/goog-data.json b/angular/src/app/chart/data/goog-data.json new file mode 100644 index 0000000..8020787 --- /dev/null +++ b/angular/src/app/chart/data/goog-data.json @@ -0,0 +1,1766 @@ +[ + { + "Date": "2024-07-01", + "Open": 182.76, + "High": 182.93, + "Low": 180.89, + "Close": 181.03 + }, + { + "Date": "2024-07-02", + "Open": 181.55, + "High": 183.05, + "Low": 180.46, + "Close": 182.3 + }, + { + "Date": "2024-07-03", + "Open": 183.21, + "High": 184.23, + "Low": 182.08, + "Close": 182.48 + }, + { + "Date": "2024-07-04", + "Open": 181.46, + "High": 182.33, + "Low": 181.17, + "Close": 182.01 + }, + { + "Date": "2024-07-05", + "Open": 182.45, + "High": 182.62, + "Low": 181.51, + "Close": 182.3 + }, + { + "Date": "2024-07-08", + "Open": 182.28, + "High": 183.21, + "Low": 180.64, + "Close": 183.18 + }, + { + "Date": "2024-07-09", + "Open": 183.77, + "High": 185.5, + "Low": 183.27, + "Close": 184.72 + }, + { + "Date": "2024-07-10", + "Open": 183.81, + "High": 184.51, + "Low": 183.24, + "Close": 183.37 + }, + { + "Date": "2024-07-11", + "Open": 182.33, + "High": 183.18, + "Low": 181.1, + "Close": 182.08 + }, + { + "Date": "2024-07-12", + "Open": 182.46, + "High": 183.11, + "Low": 182.01, + "Close": 182.93 + }, + { + "Date": "2024-07-15", + "Open": 181.92, + "High": 182.7, + "Low": 181.0, + "Close": 181.32 + }, + { + "Date": "2024-07-16", + "Open": 179.87, + "High": 181.27, + "Low": 178.86, + "Close": 180.89 + }, + { + "Date": "2024-07-17", + "Open": 180.69, + "High": 181.92, + "Low": 180.57, + "Close": 181.31 + }, + { + "Date": "2024-07-18", + "Open": 180.07, + "High": 181.29, + "Low": 178.68, + "Close": 179.83 + }, + { + "Date": "2024-07-19", + "Open": 179.95, + "High": 181.33, + "Low": 179.41, + "Close": 181.06 + }, + { + "Date": "2024-07-22", + "Open": 181.66, + "High": 183.16, + "Low": 180.45, + "Close": 180.69 + }, + { + "Date": "2024-07-23", + "Open": 179.54, + "High": 180.07, + "Low": 179.19, + "Close": 179.94 + }, + { + "Date": "2024-07-24", + "Open": 180.77, + "High": 180.95, + "Low": 179.69, + "Close": 180.68 + }, + { + "Date": "2024-07-25", + "Open": 182.07, + "High": 182.42, + "Low": 180.36, + "Close": 181.19 + }, + { + "Date": "2024-07-26", + "Open": 181.49, + "High": 182.47, + "Low": 180.38, + "Close": 180.55 + }, + { + "Date": "2024-07-29", + "Open": 179.17, + "High": 179.44, + "Low": 178.41, + "Close": 178.48 + }, + { + "Date": "2024-07-30", + "Open": 178.4, + "High": 178.58, + "Low": 177.48, + "Close": 178.49 + }, + { + "Date": "2024-07-31", + "Open": 179.36, + "High": 181.33, + "Low": 179.25, + "Close": 180.07 + }, + { + "Date": "2024-08-01", + "Open": 179.38, + "High": 179.68, + "Low": 177.78, + "Close": 178.19 + }, + { + "Date": "2024-08-02", + "Open": 179.54, + "High": 180.55, + "Low": 179.24, + "Close": 180.54 + }, + { + "Date": "2024-08-05", + "Open": 179.56, + "High": 179.71, + "Low": 179.21, + "Close": 179.48 + }, + { + "Date": "2024-08-06", + "Open": 180.14, + "High": 181.08, + "Low": 178.94, + "Close": 180.78 + }, + { + "Date": "2024-08-07", + "Open": 179.8, + "High": 181.44, + "Low": 177.88, + "Close": 180.21 + }, + { + "Date": "2024-08-08", + "Open": 178.72, + "High": 179.69, + "Low": 177.55, + "Close": 179.18 + }, + { + "Date": "2024-08-09", + "Open": 179.32, + "High": 180.65, + "Low": 179.02, + "Close": 180.6 + }, + { + "Date": "2024-08-12", + "Open": 181.35, + "High": 182.2, + "Low": 180.41, + "Close": 180.84 + }, + { + "Date": "2024-08-13", + "Open": 182.31, + "High": 184.13, + "Low": 180.81, + "Close": 180.82 + }, + { + "Date": "2024-08-14", + "Open": 181.88, + "High": 183.16, + "Low": 181.46, + "Close": 182.32 + }, + { + "Date": "2024-08-15", + "Open": 180.82, + "High": 182.16, + "Low": 179.01, + "Close": 181.79 + }, + { + "Date": "2024-08-16", + "Open": 182.04, + "High": 182.76, + "Low": 180.81, + "Close": 182.45 + }, + { + "Date": "2024-08-19", + "Open": 182.32, + "High": 184.01, + "Low": 181.31, + "Close": 182.04 + }, + { + "Date": "2024-08-20", + "Open": 181.98, + "High": 183.81, + "Low": 181.47, + "Close": 182.61 + }, + { + "Date": "2024-08-21", + "Open": 182.5, + "High": 184.25, + "Low": 181.96, + "Close": 182.09 + }, + { + "Date": "2024-08-22", + "Open": 182.61, + "High": 184.05, + "Low": 181.94, + "Close": 182.99 + }, + { + "Date": "2024-08-23", + "Open": 182.66, + "High": 182.88, + "Low": 182.39, + "Close": 182.7 + }, + { + "Date": "2024-08-26", + "Open": 183.55, + "High": 185.32, + "Low": 181.74, + "Close": 181.86 + }, + { + "Date": "2024-08-27", + "Open": 183.25, + "High": 184.56, + "Low": 181.28, + "Close": 183.05 + }, + { + "Date": "2024-08-28", + "Open": 181.75, + "High": 183.67, + "Low": 181.12, + "Close": 182.28 + }, + { + "Date": "2024-08-29", + "Open": 183.4, + "High": 184.53, + "Low": 181.8, + "Close": 182.69 + }, + { + "Date": "2024-08-30", + "Open": 183.24, + "High": 184.61, + "Low": 181.85, + "Close": 182.99 + }, + { + "Date": "2024-09-02", + "Open": 183.46, + "High": 185.46, + "Low": 182.49, + "Close": 183.47 + }, + { + "Date": "2024-09-03", + "Open": 182.47, + "High": 183.49, + "Low": 181.06, + "Close": 181.79 + }, + { + "Date": "2024-09-04", + "Open": 180.39, + "High": 181.93, + "Low": 179.37, + "Close": 181.74 + }, + { + "Date": "2024-09-05", + "Open": 182.33, + "High": 182.55, + "Low": 180.7, + "Close": 182.32 + }, + { + "Date": "2024-09-06", + "Open": 181.43, + "High": 182.24, + "Low": 179.63, + "Close": 179.85 + }, + { + "Date": "2024-09-09", + "Open": 180.11, + "High": 181.7, + "Low": 179.89, + "Close": 180.82 + }, + { + "Date": "2024-09-10", + "Open": 180.89, + "High": 181.72, + "Low": 179.72, + "Close": 180.47 + }, + { + "Date": "2024-09-11", + "Open": 179.11, + "High": 180.67, + "Low": 177.61, + "Close": 179.79 + }, + { + "Date": "2024-09-12", + "Open": 180.47, + "High": 181.77, + "Low": 179.81, + "Close": 181.56 + }, + { + "Date": "2024-09-13", + "Open": 180.58, + "High": 181.82, + "Low": 179.17, + "Close": 180.64 + }, + { + "Date": "2024-09-16", + "Open": 180.39, + "High": 182.2, + "Low": 179.07, + "Close": 180.01 + }, + { + "Date": "2024-09-17", + "Open": 180.64, + "High": 182.37, + "Low": 178.85, + "Close": 179.66 + }, + { + "Date": "2024-09-18", + "Open": 178.25, + "High": 179.98, + "Low": 176.72, + "Close": 178.9 + }, + { + "Date": "2024-09-19", + "Open": 177.58, + "High": 178.15, + "Low": 176.06, + "Close": 177.66 + }, + { + "Date": "2024-09-20", + "Open": 177.31, + "High": 178.49, + "Low": 176.84, + "Close": 177.81 + }, + { + "Date": "2024-09-23", + "Open": 178.8, + "High": 180.77, + "Low": 177.04, + "Close": 179.58 + }, + { + "Date": "2024-09-24", + "Open": 180.48, + "High": 182.28, + "Low": 179.7, + "Close": 181.32 + }, + { + "Date": "2024-09-25", + "Open": 182.04, + "High": 183.17, + "Low": 181.17, + "Close": 182.66 + }, + { + "Date": "2024-09-26", + "Open": 181.66, + "High": 182.08, + "Low": 180.64, + "Close": 181.79 + }, + { + "Date": "2024-09-27", + "Open": 181.88, + "High": 183.8, + "Low": 179.93, + "Close": 180.1 + }, + { + "Date": "2024-09-30", + "Open": 179.87, + "High": 180.15, + "Low": 178.31, + "Close": 179.02 + }, + { + "Date": "2024-10-01", + "Open": 178.74, + "High": 179.04, + "Low": 177.16, + "Close": 178.06 + }, + { + "Date": "2024-10-02", + "Open": 176.6, + "High": 177.13, + "Low": 175.72, + "Close": 176.24 + }, + { + "Date": "2024-10-03", + "Open": 176.42, + "High": 177.53, + "Low": 175.13, + "Close": 176.82 + }, + { + "Date": "2024-10-04", + "Open": 176.11, + "High": 176.24, + "Low": 174.34, + "Close": 175.98 + }, + { + "Date": "2024-10-07", + "Open": 176.93, + "High": 177.52, + "Low": 176.24, + "Close": 176.6 + }, + { + "Date": "2024-10-08", + "Open": 177.06, + "High": 178.91, + "Low": 176.88, + "Close": 178.1 + }, + { + "Date": "2024-10-09", + "Open": 177.53, + "High": 177.69, + "Low": 177.23, + "Close": 177.47 + }, + { + "Date": "2024-10-10", + "Open": 178.81, + "High": 179.42, + "Low": 177.33, + "Close": 178.27 + }, + { + "Date": "2024-10-11", + "Open": 178.7, + "High": 180.63, + "Low": 177.07, + "Close": 180.04 + }, + { + "Date": "2024-10-14", + "Open": 181.24, + "High": 182.38, + "Low": 179.84, + "Close": 180.09 + }, + { + "Date": "2024-10-15", + "Open": 181.43, + "High": 181.95, + "Low": 180.64, + "Close": 181.36 + }, + { + "Date": "2024-10-16", + "Open": 182.64, + "High": 183.53, + "Low": 181.74, + "Close": 183.03 + }, + { + "Date": "2024-10-17", + "Open": 183.87, + "High": 184.1, + "Low": 183.64, + "Close": 183.67 + }, + { + "Date": "2024-10-18", + "Open": 184.55, + "High": 185.66, + "Low": 183.57, + "Close": 184.99 + }, + { + "Date": "2024-10-21", + "Open": 184.97, + "High": 186.91, + "Low": 184.38, + "Close": 184.87 + }, + { + "Date": "2024-10-22", + "Open": 185.59, + "High": 187.25, + "Low": 185.11, + "Close": 187.13 + }, + { + "Date": "2024-10-23", + "Open": 188.39, + "High": 189.05, + "Low": 187.91, + "Close": 188.13 + }, + { + "Date": "2024-10-24", + "Open": 186.99, + "High": 188.52, + "Low": 185.59, + "Close": 186.56 + }, + { + "Date": "2024-10-25", + "Open": 185.86, + "High": 186.6, + "Low": 184.37, + "Close": 184.78 + }, + { + "Date": "2024-10-28", + "Open": 184.55, + "High": 185.28, + "Low": 184.36, + "Close": 185.15 + }, + { + "Date": "2024-10-29", + "Open": 186.11, + "High": 186.6, + "Low": 185.37, + "Close": 186.26 + }, + { + "Date": "2024-10-30", + "Open": 187.5, + "High": 188.25, + "Low": 186.65, + "Close": 187.99 + }, + { + "Date": "2024-10-31", + "Open": 186.58, + "High": 187.79, + "Low": 185.11, + "Close": 186.28 + }, + { + "Date": "2024-11-01", + "Open": 187.29, + "High": 188.14, + "Low": 185.36, + "Close": 186.37 + }, + { + "Date": "2024-11-04", + "Open": 185.49, + "High": 186.18, + "Low": 183.88, + "Close": 185.86 + }, + { + "Date": "2024-11-05", + "Open": 186.0, + "High": 187.18, + "Low": 185.75, + "Close": 186.18 + }, + { + "Date": "2024-11-06", + "Open": 186.47, + "High": 188.35, + "Low": 185.97, + "Close": 186.04 + }, + { + "Date": "2024-11-07", + "Open": 185.9, + "High": 187.46, + "Low": 184.28, + "Close": 186.14 + }, + { + "Date": "2024-11-08", + "Open": 185.14, + "High": 185.58, + "Low": 184.41, + "Close": 185.02 + }, + { + "Date": "2024-11-11", + "Open": 183.57, + "High": 184.98, + "Low": 183.22, + "Close": 184.67 + }, + { + "Date": "2024-11-12", + "Open": 185.93, + "High": 186.79, + "Low": 184.41, + "Close": 185.88 + }, + { + "Date": "2024-11-13", + "Open": 187.22, + "High": 187.72, + "Low": 187.02, + "Close": 187.56 + }, + { + "Date": "2024-11-14", + "Open": 187.66, + "High": 189.41, + "Low": 185.97, + "Close": 186.45 + }, + { + "Date": "2024-11-15", + "Open": 185.0, + "High": 186.21, + "Low": 184.75, + "Close": 185.03 + }, + { + "Date": "2024-11-18", + "Open": 184.09, + "High": 184.97, + "Low": 182.75, + "Close": 183.55 + }, + { + "Date": "2024-11-19", + "Open": 182.84, + "High": 183.95, + "Low": 181.32, + "Close": 183.38 + }, + { + "Date": "2024-11-20", + "Open": 182.19, + "High": 183.31, + "Low": 182.06, + "Close": 183.16 + }, + { + "Date": "2024-11-21", + "Open": 183.52, + "High": 184.02, + "Low": 181.93, + "Close": 183.31 + }, + { + "Date": "2024-11-22", + "Open": 184.65, + "High": 186.2, + "Low": 183.88, + "Close": 184.26 + }, + { + "Date": "2024-11-25", + "Open": 184.54, + "High": 184.94, + "Low": 184.42, + "Close": 184.86 + }, + { + "Date": "2024-11-26", + "Open": 185.82, + "High": 187.13, + "Low": 184.93, + "Close": 186.04 + }, + { + "Date": "2024-11-27", + "Open": 186.59, + "High": 188.51, + "Low": 184.65, + "Close": 187.8 + }, + { + "Date": "2024-11-28", + "Open": 187.69, + "High": 189.66, + "Low": 186.96, + "Close": 188.79 + }, + { + "Date": "2024-11-29", + "Open": 190.0, + "High": 190.96, + "Low": 188.47, + "Close": 189.71 + }, + { + "Date": "2024-12-02", + "Open": 188.23, + "High": 189.55, + "Low": 187.21, + "Close": 187.87 + }, + { + "Date": "2024-12-03", + "Open": 187.11, + "High": 188.3, + "Low": 185.48, + "Close": 188.18 + }, + { + "Date": "2024-12-04", + "Open": 188.78, + "High": 189.88, + "Low": 187.21, + "Close": 189.69 + }, + { + "Date": "2024-12-05", + "Open": 190.77, + "High": 192.17, + "Low": 189.11, + "Close": 191.24 + }, + { + "Date": "2024-12-06", + "Open": 190.11, + "High": 190.81, + "Low": 188.68, + "Close": 189.15 + }, + { + "Date": "2024-12-09", + "Open": 189.16, + "High": 189.48, + "Low": 188.61, + "Close": 189.31 + }, + { + "Date": "2024-12-10", + "Open": 189.42, + "High": 190.84, + "Low": 187.53, + "Close": 188.73 + }, + { + "Date": "2024-12-11", + "Open": 188.93, + "High": 190.37, + "Low": 187.84, + "Close": 188.13 + }, + { + "Date": "2024-12-12", + "Open": 187.05, + "High": 188.09, + "Low": 185.88, + "Close": 186.9 + }, + { + "Date": "2024-12-13", + "Open": 185.67, + "High": 186.75, + "Low": 184.62, + "Close": 186.64 + }, + { + "Date": "2024-12-16", + "Open": 186.76, + "High": 187.47, + "Low": 185.74, + "Close": 187.11 + }, + { + "Date": "2024-12-17", + "Open": 186.07, + "High": 187.55, + "Low": 184.12, + "Close": 187.52 + }, + { + "Date": "2024-12-18", + "Open": 187.59, + "High": 188.3, + "Low": 186.18, + "Close": 188.09 + }, + { + "Date": "2024-12-19", + "Open": 189.25, + "High": 190.13, + "Low": 188.69, + "Close": 189.03 + }, + { + "Date": "2024-12-20", + "Open": 187.91, + "High": 188.24, + "Low": 186.3, + "Close": 186.5 + }, + { + "Date": "2024-12-23", + "Open": 185.52, + "High": 187.42, + "Low": 184.88, + "Close": 186.85 + }, + { + "Date": "2024-12-24", + "Open": 185.49, + "High": 186.04, + "Low": 184.3, + "Close": 184.78 + }, + { + "Date": "2024-12-25", + "Open": 184.98, + "High": 186.0, + "Low": 183.72, + "Close": 184.27 + }, + { + "Date": "2024-12-26", + "Open": 185.23, + "High": 185.76, + "Low": 184.48, + "Close": 185.58 + }, + { + "Date": "2024-12-27", + "Open": 184.76, + "High": 185.69, + "Low": 183.19, + "Close": 183.96 + }, + { + "Date": "2024-12-30", + "Open": 183.31, + "High": 184.85, + "Low": 182.97, + "Close": 183.74 + }, + { + "Date": "2024-12-31", + "Open": 185.14, + "High": 186.61, + "Low": 184.77, + "Close": 185.68 + }, + { + "Date": "2025-01-01", + "Open": 184.42, + "High": 185.4, + "Low": 182.54, + "Close": 183.3 + }, + { + "Date": "2025-01-02", + "Open": 182.67, + "High": 184.46, + "Low": 181.97, + "Close": 183.53 + }, + { + "Date": "2025-01-03", + "Open": 184.96, + "High": 185.16, + "Low": 184.64, + "Close": 185.14 + }, + { + "Date": "2025-01-06", + "Open": 184.6, + "High": 185.47, + "Low": 183.36, + "Close": 185.45 + }, + { + "Date": "2025-01-07", + "Open": 184.05, + "High": 184.63, + "Low": 182.7, + "Close": 184.07 + }, + { + "Date": "2025-01-08", + "Open": 184.48, + "High": 184.68, + "Low": 183.96, + "Close": 184.03 + }, + { + "Date": "2025-01-09", + "Open": 185.22, + "High": 185.44, + "Low": 183.62, + "Close": 184.39 + }, + { + "Date": "2025-01-10", + "Open": 183.46, + "High": 183.62, + "Low": 182.59, + "Close": 182.87 + }, + { + "Date": "2025-01-13", + "Open": 183.98, + "High": 184.83, + "Low": 183.06, + "Close": 184.5 + }, + { + "Date": "2025-01-14", + "Open": 183.93, + "High": 184.31, + "Low": 183.74, + "Close": 184.14 + }, + { + "Date": "2025-01-15", + "Open": 182.97, + "High": 184.23, + "Low": 182.03, + "Close": 183.05 + }, + { + "Date": "2025-01-16", + "Open": 183.7, + "High": 184.46, + "Low": 183.5, + "Close": 183.57 + }, + { + "Date": "2025-01-17", + "Open": 182.76, + "High": 184.69, + "Low": 182.0, + "Close": 184.4 + }, + { + "Date": "2025-01-20", + "Open": 184.63, + "High": 186.41, + "Low": 183.01, + "Close": 183.91 + }, + { + "Date": "2025-01-21", + "Open": 184.32, + "High": 185.36, + "Low": 182.86, + "Close": 183.6 + }, + { + "Date": "2025-01-22", + "Open": 182.94, + "High": 184.4, + "Low": 182.79, + "Close": 183.05 + }, + { + "Date": "2025-01-23", + "Open": 184.13, + "High": 186.0, + "Low": 182.77, + "Close": 183.77 + }, + { + "Date": "2025-01-24", + "Open": 182.45, + "High": 183.33, + "Low": 181.75, + "Close": 183.05 + }, + { + "Date": "2025-01-27", + "Open": 182.14, + "High": 183.1, + "Low": 181.75, + "Close": 182.49 + }, + { + "Date": "2025-01-28", + "Open": 181.43, + "High": 182.17, + "Low": 181.1, + "Close": 181.17 + }, + { + "Date": "2025-01-29", + "Open": 180.34, + "High": 181.02, + "Low": 179.78, + "Close": 180.87 + }, + { + "Date": "2025-01-30", + "Open": 180.27, + "High": 181.21, + "Low": 178.44, + "Close": 180.24 + }, + { + "Date": "2025-01-31", + "Open": 180.62, + "High": 182.53, + "Low": 179.72, + "Close": 181.02 + }, + { + "Date": "2025-02-03", + "Open": 180.48, + "High": 182.1, + "Low": 178.82, + "Close": 179.33 + }, + { + "Date": "2025-02-04", + "Open": 180.41, + "High": 180.6, + "Low": 179.28, + "Close": 179.8 + }, + { + "Date": "2025-02-05", + "Open": 180.85, + "High": 182.13, + "Low": 179.1, + "Close": 181.27 + }, + { + "Date": "2025-02-06", + "Open": 180.22, + "High": 181.29, + "Low": 178.28, + "Close": 178.73 + }, + { + "Date": "2025-02-07", + "Open": 178.17, + "High": 178.62, + "Low": 176.75, + "Close": 177.76 + }, + { + "Date": "2025-02-10", + "Open": 178.0, + "High": 178.79, + "Low": 176.36, + "Close": 178.58 + }, + { + "Date": "2025-02-11", + "Open": 177.4, + "High": 177.75, + "Low": 175.89, + "Close": 177.55 + }, + { + "Date": "2025-02-12", + "Open": 176.08, + "High": 176.38, + "Low": 174.73, + "Close": 174.94 + }, + { + "Date": "2025-02-13", + "Open": 176.36, + "High": 176.88, + "Low": 174.88, + "Close": 175.86 + }, + { + "Date": "2025-02-14", + "Open": 175.05, + "High": 176.79, + "Low": 174.39, + "Close": 175.81 + }, + { + "Date": "2025-02-17", + "Open": 174.91, + "High": 176.7, + "Low": 174.28, + "Close": 175.54 + }, + { + "Date": "2025-02-18", + "Open": 175.38, + "High": 176.73, + "Low": 174.44, + "Close": 174.73 + }, + { + "Date": "2025-02-19", + "Open": 174.36, + "High": 175.48, + "Low": 172.79, + "Close": 174.17 + }, + { + "Date": "2025-02-20", + "Open": 173.46, + "High": 173.83, + "Low": 172.1, + "Close": 172.75 + }, + { + "Date": "2025-02-21", + "Open": 172.46, + "High": 173.11, + "Low": 171.23, + "Close": 172.68 + }, + { + "Date": "2025-02-24", + "Open": 171.42, + "High": 171.87, + "Low": 169.51, + "Close": 170.55 + }, + { + "Date": "2025-02-25", + "Open": 169.72, + "High": 171.57, + "Low": 168.09, + "Close": 170.72 + }, + { + "Date": "2025-02-26", + "Open": 171.15, + "High": 172.25, + "Low": 169.73, + "Close": 172.19 + }, + { + "Date": "2025-02-27", + "Open": 171.46, + "High": 173.1, + "Low": 170.34, + "Close": 170.54 + }, + { + "Date": "2025-02-28", + "Open": 169.55, + "High": 169.82, + "Low": 167.91, + "Close": 168.12 + }, + { + "Date": "2025-03-03", + "Open": 167.68, + "High": 168.04, + "Low": 166.8, + "Close": 167.91 + }, + { + "Date": "2025-03-04", + "Open": 168.45, + "High": 168.94, + "Low": 168.28, + "Close": 168.66 + }, + { + "Date": "2025-03-05", + "Open": 169.21, + "High": 170.15, + "Low": 168.76, + "Close": 168.99 + }, + { + "Date": "2025-03-06", + "Open": 167.65, + "High": 167.76, + "Low": 166.61, + "Close": 167.06 + }, + { + "Date": "2025-03-07", + "Open": 166.73, + "High": 167.7, + "Low": 165.43, + "Close": 166.0 + }, + { + "Date": "2025-03-10", + "Open": 165.87, + "High": 167.24, + "Low": 165.39, + "Close": 167.12 + }, + { + "Date": "2025-03-11", + "Open": 168.44, + "High": 170.25, + "Low": 166.69, + "Close": 167.19 + }, + { + "Date": "2025-03-12", + "Open": 168.52, + "High": 169.66, + "Low": 167.15, + "Close": 168.58 + }, + { + "Date": "2025-03-13", + "Open": 168.74, + "High": 170.55, + "Low": 168.1, + "Close": 168.54 + }, + { + "Date": "2025-03-14", + "Open": 168.37, + "High": 169.58, + "Low": 167.88, + "Close": 168.97 + }, + { + "Date": "2025-03-17", + "Open": 170.32, + "High": 171.27, + "Low": 169.63, + "Close": 170.58 + }, + { + "Date": "2025-03-18", + "Open": 169.88, + "High": 170.62, + "Low": 169.23, + "Close": 169.37 + }, + { + "Date": "2025-03-19", + "Open": 170.32, + "High": 170.62, + "Low": 169.27, + "Close": 169.43 + }, + { + "Date": "2025-03-20", + "Open": 170.76, + "High": 171.12, + "Low": 169.08, + "Close": 170.27 + }, + { + "Date": "2025-03-21", + "Open": 171.13, + "High": 171.41, + "Low": 169.93, + "Close": 171.19 + }, + { + "Date": "2025-03-24", + "Open": 170.54, + "High": 171.13, + "Low": 169.5, + "Close": 170.76 + }, + { + "Date": "2025-03-25", + "Open": 169.98, + "High": 171.84, + "Low": 169.68, + "Close": 170.44 + }, + { + "Date": "2025-03-26", + "Open": 169.27, + "High": 170.28, + "Low": 168.47, + "Close": 170.02 + }, + { + "Date": "2025-03-27", + "Open": 170.6, + "High": 171.65, + "Low": 168.82, + "Close": 169.69 + }, + { + "Date": "2025-03-28", + "Open": 169.68, + "High": 171.36, + "Low": 167.75, + "Close": 169.72 + }, + { + "Date": "2025-03-31", + "Open": 168.65, + "High": 170.29, + "Low": 167.51, + "Close": 168.64 + }, + { + "Date": "2025-04-01", + "Open": 170.01, + "High": 170.38, + "Low": 169.9, + "Close": 170.29 + }, + { + "Date": "2025-04-02", + "Open": 171.5, + "High": 172.67, + "Low": 169.56, + "Close": 169.76 + }, + { + "Date": "2025-04-03", + "Open": 170.16, + "High": 170.69, + "Low": 168.29, + "Close": 170.5 + }, + { + "Date": "2025-04-04", + "Open": 170.25, + "High": 170.66, + "Low": 168.44, + "Close": 169.83 + }, + { + "Date": "2025-04-07", + "Open": 168.54, + "High": 169.76, + "Low": 166.66, + "Close": 167.64 + }, + { + "Date": "2025-04-08", + "Open": 167.16, + "High": 168.22, + "Low": 166.25, + "Close": 167.83 + }, + { + "Date": "2025-04-09", + "Open": 168.03, + "High": 168.33, + "Low": 167.79, + "Close": 167.94 + }, + { + "Date": "2025-04-10", + "Open": 169.09, + "High": 169.48, + "Low": 168.1, + "Close": 168.37 + }, + { + "Date": "2025-04-11", + "Open": 168.61, + "High": 168.97, + "Low": 167.83, + "Close": 168.61 + }, + { + "Date": "2025-04-14", + "Open": 169.97, + "High": 171.12, + "Low": 169.49, + "Close": 169.86 + }, + { + "Date": "2025-04-15", + "Open": 169.2, + "High": 170.0, + "Low": 167.33, + "Close": 168.28 + }, + { + "Date": "2025-04-16", + "Open": 168.12, + "High": 170.12, + "Low": 167.23, + "Close": 169.19 + }, + { + "Date": "2025-04-17", + "Open": 168.6, + "High": 169.43, + "Low": 167.44, + "Close": 168.29 + }, + { + "Date": "2025-04-18", + "Open": 168.94, + "High": 170.82, + "Low": 167.65, + "Close": 169.73 + }, + { + "Date": "2025-04-21", + "Open": 169.61, + "High": 170.29, + "Low": 168.66, + "Close": 169.85 + }, + { + "Date": "2025-04-22", + "Open": 170.37, + "High": 170.86, + "Low": 170.09, + "Close": 170.32 + }, + { + "Date": "2025-04-23", + "Open": 170.64, + "High": 170.96, + "Low": 169.44, + "Close": 169.65 + }, + { + "Date": "2025-04-24", + "Open": 168.62, + "High": 169.46, + "Low": 168.34, + "Close": 168.8 + }, + { + "Date": "2025-04-25", + "Open": 167.44, + "High": 167.82, + "Low": 165.81, + "Close": 166.25 + }, + { + "Date": "2025-04-28", + "Open": 165.72, + "High": 166.3, + "Low": 164.27, + "Close": 165.25 + }, + { + "Date": "2025-04-29", + "Open": 166.09, + "High": 167.47, + "Low": 164.77, + "Close": 166.96 + }, + { + "Date": "2025-04-30", + "Open": 166.06, + "High": 166.82, + "Low": 164.11, + "Close": 166.76 + }, + { + "Date": "2025-05-01", + "Open": 166.67, + "High": 168.42, + "Low": 164.95, + "Close": 165.04 + }, + { + "Date": "2025-05-02", + "Open": 163.83, + "High": 165.01, + "Low": 163.58, + "Close": 164.78 + }, + { + "Date": "2025-05-05", + "Open": 165.68, + "High": 166.42, + "Low": 164.25, + "Close": 166.03 + }, + { + "Date": "2025-05-06", + "Open": 164.97, + "High": 166.45, + "Low": 164.22, + "Close": 165.75 + }, + { + "Date": "2025-05-07", + "Open": 166.37, + "High": 167.26, + "Low": 165.77, + "Close": 166.69 + }, + { + "Date": "2025-05-08", + "Open": 165.5, + "High": 166.22, + "Low": 165.03, + "Close": 165.03 + }, + { + "Date": "2025-05-09", + "Open": 163.6, + "High": 163.74, + "Low": 162.1, + "Close": 162.41 + }, + { + "Date": "2025-05-12", + "Open": 161.51, + "High": 161.87, + "Low": 160.77, + "Close": 161.12 + }, + { + "Date": "2025-05-13", + "Open": 160.2, + "High": 160.65, + "Low": 159.1, + "Close": 160.22 + }, + { + "Date": "2025-05-14", + "Open": 161.25, + "High": 162.03, + "Low": 159.96, + "Close": 160.24 + }, + { + "Date": "2025-05-15", + "Open": 160.22, + "High": 160.62, + "Low": 158.41, + "Close": 160.23 + }, + { + "Date": "2025-05-16", + "Open": 159.65, + "High": 159.81, + "Low": 158.72, + "Close": 159.06 + }, + { + "Date": "2025-05-19", + "Open": 159.21, + "High": 159.8, + "Low": 159.03, + "Close": 159.59 + }, + { + "Date": "2025-05-20", + "Open": 159.37, + "High": 160.79, + "Low": 158.58, + "Close": 159.82 + }, + { + "Date": "2025-05-21", + "Open": 161.05, + "High": 162.95, + "Low": 159.44, + "Close": 161.81 + }, + { + "Date": "2025-05-22", + "Open": 162.62, + "High": 163.48, + "Low": 161.0, + "Close": 161.56 + }, + { + "Date": "2025-05-23", + "Open": 160.74, + "High": 161.34, + "Low": 160.34, + "Close": 160.58 + }, + { + "Date": "2025-05-26", + "Open": 160.4, + "High": 161.4, + "Low": 159.11, + "Close": 159.51 + }, + { + "Date": "2025-05-27", + "Open": 158.12, + "High": 159.57, + "Low": 156.54, + "Close": 157.8 + }, + { + "Date": "2025-05-28", + "Open": 158.21, + "High": 158.4, + "Low": 157.2, + "Close": 157.28 + }, + { + "Date": "2025-05-29", + "Open": 157.63, + "High": 158.39, + "Low": 157.0, + "Close": 158.02 + }, + { + "Date": "2025-05-30", + "Open": 158.64, + "High": 158.88, + "Low": 158.23, + "Close": 158.32 + }, + { + "Date": "2025-06-02", + "Open": 157.06, + "High": 158.06, + "Low": 155.14, + "Close": 155.46 + }, + { + "Date": "2025-06-03", + "Open": 154.59, + "High": 154.8, + "Low": 153.1, + "Close": 154.46 + }, + { + "Date": "2025-06-04", + "Open": 153.0, + "High": 154.63, + "Low": 152.45, + "Close": 153.32 + }, + { + "Date": "2025-06-05", + "Open": 153.08, + "High": 154.63, + "Low": 151.71, + "Close": 153.65 + }, + { + "Date": "2025-06-06", + "Open": 154.77, + "High": 155.87, + "Low": 152.78, + "Close": 155.64 + }, + { + "Date": "2025-06-09", + "Open": 156.92, + "High": 157.31, + "Low": 154.93, + "Close": 154.93 + }, + { + "Date": "2025-06-10", + "Open": 155.23, + "High": 155.88, + "Low": 155.11, + "Close": 155.14 + }, + { + "Date": "2025-06-11", + "Open": 155.76, + "High": 156.46, + "Low": 155.26, + "Close": 156.04 + }, + { + "Date": "2025-06-12", + "Open": 154.9, + "High": 156.28, + "Low": 154.31, + "Close": 154.74 + }, + { + "Date": "2025-06-13", + "Open": 153.53, + "High": 155.1, + "Low": 151.9, + "Close": 152.24 + }, + { + "Date": "2025-06-16", + "Open": 153.29, + "High": 155.19, + "Low": 151.43, + "Close": 154.65 + }, + { + "Date": "2025-06-17", + "Open": 154.22, + "High": 155.39, + "Low": 152.76, + "Close": 152.83 + } +] \ No newline at end of file diff --git a/angular/src/app/chart/data/msft-data.json b/angular/src/app/chart/data/msft-data.json new file mode 100644 index 0000000..df9e7d5 --- /dev/null +++ b/angular/src/app/chart/data/msft-data.json @@ -0,0 +1,2250 @@ +[ + { + "date": "2024-06-03", + "open": 128.65, + "high": 129.66, + "low": 128.35, + "close": 129.24, + "volume": 17862294 + }, + { + "date": "2024-06-04", + "open": 130.53, + "high": 131.76, + "low": 129.24, + "close": 129.83, + "volume": 24622730 + }, + { + "date": "2024-06-05", + "open": 130.91, + "high": 132.21, + "low": 130.08, + "close": 130.74, + "volume": 25324954 + }, + { + "date": "2024-06-06", + "open": 131.34, + "high": 132.23, + "low": 128.97, + "close": 130.0, + "volume": 23487603 + }, + { + "date": "2024-06-07", + "open": 130.56, + "high": 131.17, + "low": 128.8, + "close": 129.5, + "volume": 34692706 + }, + { + "date": "2024-06-10", + "open": 128.47, + "high": 129.87, + "low": 127.16, + "close": 127.4, + "volume": 32653028 + }, + { + "date": "2024-06-11", + "open": 128.07, + "high": 129.44, + "low": 126.32, + "close": 126.32, + "volume": 32027251 + }, + { + "date": "2024-06-12", + "open": 124.48, + "high": 124.66, + "low": 123.33, + "close": 123.67, + "volume": 34268108 + }, + { + "date": "2024-06-13", + "open": 123.91, + "high": 125.58, + "low": 123.75, + "close": 124.29, + "volume": 23048223 + }, + { + "date": "2024-06-14", + "open": 124.78, + "high": 126.13, + "low": 123.45, + "close": 125.31, + "volume": 23055870 + }, + { + "date": "2024-06-17", + "open": 124.45, + "high": 125.68, + "low": 123.59, + "close": 124.71, + "volume": 29045496 + }, + { + "date": "2024-06-18", + "open": 126.08, + "high": 127.11, + "low": 125.33, + "close": 126.28, + "volume": 26792047 + }, + { + "date": "2024-06-19", + "open": 125.73, + "high": 126.56, + "low": 124.7, + "close": 124.85, + "volume": 21305157 + }, + { + "date": "2024-06-20", + "open": 123.77, + "high": 125.62, + "low": 122.49, + "close": 124.35, + "volume": 19580719 + }, + { + "date": "2024-06-21", + "open": 125.51, + "high": 126.96, + "low": 125.01, + "close": 125.75, + "volume": 24613573 + }, + { + "date": "2024-06-24", + "open": 125.12, + "high": 127.23, + "low": 123.74, + "close": 127.04, + "volume": 32520284 + }, + { + "date": "2024-06-25", + "open": 128.39, + "high": 129.29, + "low": 127.41, + "close": 128.85, + "volume": 18300998 + }, + { + "date": "2024-06-26", + "open": 129.78, + "high": 132.32, + "low": 128.59, + "close": 131.14, + "volume": 26021558 + }, + { + "date": "2024-06-27", + "open": 132.42, + "high": 134.6, + "low": 131.22, + "close": 134.17, + "volume": 33118380 + }, + { + "date": "2024-06-28", + "open": 135.82, + "high": 135.95, + "low": 134.44, + "close": 135.04, + "volume": 20578150 + }, + { + "date": "2024-07-01", + "open": 134.78, + "high": 135.83, + "low": 134.04, + "close": 135.33, + "volume": 29493376 + }, + { + "date": "2024-07-02", + "open": 135.09, + "high": 136.51, + "low": 134.41, + "close": 136.39, + "volume": 33915486 + }, + { + "date": "2024-07-03", + "open": 136.24, + "high": 137.11, + "low": 134.64, + "close": 135.68, + "volume": 15498134 + }, + { + "date": "2024-07-04", + "open": 135.49, + "high": 137.8, + "low": 134.09, + "close": 136.7, + "volume": 33539877 + }, + { + "date": "2024-07-05", + "open": 137.13, + "high": 138.05, + "low": 135.93, + "close": 136.53, + "volume": 33779876 + }, + { + "date": "2024-07-08", + "open": 135.49, + "high": 137.61, + "low": 134.21, + "close": 136.26, + "volume": 23678455 + }, + { + "date": "2024-07-09", + "open": 135.48, + "high": 136.69, + "low": 135.35, + "close": 136.05, + "volume": 21438913 + }, + { + "date": "2024-07-10", + "open": 136.39, + "high": 137.98, + "low": 135.28, + "close": 137.87, + "volume": 31211658 + }, + { + "date": "2024-07-11", + "open": 137.74, + "high": 140.42, + "low": 137.3, + "close": 139.13, + "volume": 24963524 + }, + { + "date": "2024-07-12", + "open": 139.14, + "high": 140.05, + "low": 136.58, + "close": 137.73, + "volume": 25765620 + }, + { + "date": "2024-07-15", + "open": 137.12, + "high": 137.81, + "low": 135.58, + "close": 135.96, + "volume": 15243350 + }, + { + "date": "2024-07-16", + "open": 137.53, + "high": 137.96, + "low": 134.8, + "close": 135.81, + "volume": 25110655 + }, + { + "date": "2024-07-17", + "open": 135.83, + "high": 138.44, + "low": 134.58, + "close": 137.81, + "volume": 15002463 + }, + { + "date": "2024-07-18", + "open": 139.28, + "high": 140.36, + "low": 137.94, + "close": 139.22, + "volume": 30749505 + }, + { + "date": "2024-07-19", + "open": 139.27, + "high": 140.22, + "low": 137.99, + "close": 139.55, + "volume": 34672175 + }, + { + "date": "2024-07-22", + "open": 138.07, + "high": 138.74, + "low": 135.44, + "close": 136.94, + "volume": 17070231 + }, + { + "date": "2024-07-23", + "open": 137.43, + "high": 138.4, + "low": 136.15, + "close": 138.22, + "volume": 21556726 + }, + { + "date": "2024-07-24", + "open": 138.36, + "high": 139.84, + "low": 136.77, + "close": 137.04, + "volume": 30374245 + }, + { + "date": "2024-07-25", + "open": 138.54, + "high": 141.77, + "low": 137.14, + "close": 140.43, + "volume": 27146889 + }, + { + "date": "2024-07-26", + "open": 141.2, + "high": 143.4, + "low": 140.96, + "close": 142.61, + "volume": 29767082 + }, + { + "date": "2024-07-29", + "open": 140.98, + "high": 142.11, + "low": 139.93, + "close": 141.84, + "volume": 28548940 + }, + { + "date": "2024-07-30", + "open": 140.09, + "high": 141.54, + "low": 137.37, + "close": 138.83, + "volume": 19603793 + }, + { + "date": "2024-07-31", + "open": 138.79, + "high": 142.01, + "low": 137.49, + "close": 140.58, + "volume": 32595609 + }, + { + "date": "2024-08-01", + "open": 140.12, + "high": 140.35, + "low": 139.36, + "close": 139.82, + "volume": 30833184 + }, + { + "date": "2024-08-02", + "open": 138.98, + "high": 139.61, + "low": 138.14, + "close": 138.7, + "volume": 34637773 + }, + { + "date": "2024-08-05", + "open": 137.61, + "high": 138.24, + "low": 136.56, + "close": 137.84, + "volume": 20616414 + }, + { + "date": "2024-08-06", + "open": 136.82, + "high": 138.22, + "low": 135.37, + "close": 138.14, + "volume": 26759990 + }, + { + "date": "2024-08-07", + "open": 137.44, + "high": 139.99, + "low": 136.35, + "close": 139.1, + "volume": 31323601 + }, + { + "date": "2024-08-08", + "open": 139.76, + "high": 141.58, + "low": 138.38, + "close": 140.27, + "volume": 17379822 + }, + { + "date": "2024-08-09", + "open": 141.32, + "high": 144.67, + "low": 139.83, + "close": 143.2, + "volume": 24804819 + }, + { + "date": "2024-08-12", + "open": 142.24, + "high": 145.09, + "low": 141.74, + "close": 144.16, + "volume": 26169440 + }, + { + "date": "2024-08-13", + "open": 142.75, + "high": 143.45, + "low": 142.5, + "close": 142.78, + "volume": 21468022 + }, + { + "date": "2024-08-14", + "open": 142.17, + "high": 142.58, + "low": 141.09, + "close": 141.42, + "volume": 20561453 + }, + { + "date": "2024-08-15", + "open": 140.54, + "high": 140.85, + "low": 138.74, + "close": 139.35, + "volume": 20312759 + }, + { + "date": "2024-08-16", + "open": 140.28, + "high": 140.94, + "low": 139.13, + "close": 140.36, + "volume": 29188629 + }, + { + "date": "2024-08-19", + "open": 141.79, + "high": 142.96, + "low": 141.19, + "close": 142.33, + "volume": 17162676 + }, + { + "date": "2024-08-20", + "open": 141.37, + "high": 142.64, + "low": 140.15, + "close": 141.8, + "volume": 21685590 + }, + { + "date": "2024-08-21", + "open": 143.3, + "high": 143.93, + "low": 140.13, + "close": 141.51, + "volume": 34902453 + }, + { + "date": "2024-08-22", + "open": 140.72, + "high": 143.22, + "low": 139.63, + "close": 142.52, + "volume": 20215861 + }, + { + "date": "2024-08-23", + "open": 140.87, + "high": 142.2, + "low": 139.23, + "close": 140.42, + "volume": 16901066 + }, + { + "date": "2024-08-26", + "open": 142.05, + "high": 143.41, + "low": 139.14, + "close": 140.36, + "volume": 15455830 + }, + { + "date": "2024-08-27", + "open": 141.93, + "high": 143.02, + "low": 139.44, + "close": 140.82, + "volume": 29134729 + }, + { + "date": "2024-08-28", + "open": 141.0, + "high": 142.24, + "low": 139.81, + "close": 141.37, + "volume": 18931084 + }, + { + "date": "2024-08-29", + "open": 143.15, + "high": 143.97, + "low": 142.06, + "close": 143.67, + "volume": 26983909 + }, + { + "date": "2024-08-30", + "open": 143.51, + "high": 144.39, + "low": 142.17, + "close": 143.85, + "volume": 27470681 + }, + { + "date": "2024-09-02", + "open": 143.95, + "high": 145.3, + "low": 143.21, + "close": 144.99, + "volume": 16377021 + }, + { + "date": "2024-09-03", + "open": 143.48, + "high": 144.1, + "low": 143.21, + "close": 143.48, + "volume": 30114642 + }, + { + "date": "2024-09-04", + "open": 143.24, + "high": 143.89, + "low": 141.98, + "close": 143.08, + "volume": 15951636 + }, + { + "date": "2024-09-05", + "open": 143.07, + "high": 143.68, + "low": 140.68, + "close": 141.52, + "volume": 18956749 + }, + { + "date": "2024-09-06", + "open": 139.95, + "high": 141.71, + "low": 138.73, + "close": 141.05, + "volume": 20778573 + }, + { + "date": "2024-09-09", + "open": 140.99, + "high": 142.3, + "low": 139.66, + "close": 141.29, + "volume": 18880515 + }, + { + "date": "2024-09-10", + "open": 139.86, + "high": 141.22, + "low": 136.91, + "close": 138.09, + "volume": 33889288 + }, + { + "date": "2024-09-11", + "open": 137.93, + "high": 139.25, + "low": 137.0, + "close": 138.25, + "volume": 34617435 + }, + { + "date": "2024-09-12", + "open": 139.23, + "high": 140.95, + "low": 139.21, + "close": 140.26, + "volume": 32973215 + }, + { + "date": "2024-09-13", + "open": 139.43, + "high": 140.79, + "low": 136.74, + "close": 137.8, + "volume": 17343332 + }, + { + "date": "2024-09-16", + "open": 136.03, + "high": 136.07, + "low": 134.4, + "close": 134.99, + "volume": 26515100 + }, + { + "date": "2024-09-17", + "open": 136.44, + "high": 138.29, + "low": 135.44, + "close": 137.46, + "volume": 21305151 + }, + { + "date": "2024-09-18", + "open": 136.14, + "high": 137.11, + "low": 132.92, + "close": 134.17, + "volume": 34234417 + }, + { + "date": "2024-09-19", + "open": 132.33, + "high": 132.57, + "low": 130.64, + "close": 131.12, + "volume": 31105943 + }, + { + "date": "2024-09-20", + "open": 132.78, + "high": 133.87, + "low": 130.04, + "close": 131.1, + "volume": 30303814 + }, + { + "date": "2024-09-23", + "open": 132.95, + "high": 134.64, + "low": 131.76, + "close": 134.11, + "volume": 30133341 + }, + { + "date": "2024-09-24", + "open": 132.91, + "high": 133.14, + "low": 131.47, + "close": 131.57, + "volume": 34349363 + }, + { + "date": "2024-09-25", + "open": 130.61, + "high": 131.16, + "low": 130.34, + "close": 130.48, + "volume": 19155772 + }, + { + "date": "2024-09-26", + "open": 132.21, + "high": 133.65, + "low": 129.15, + "close": 130.6, + "volume": 30895866 + }, + { + "date": "2024-09-27", + "open": 128.96, + "high": 129.98, + "low": 127.64, + "close": 129.49, + "volume": 18776052 + }, + { + "date": "2024-09-30", + "open": 127.69, + "high": 128.0, + "low": 127.05, + "close": 127.19, + "volume": 29103808 + }, + { + "date": "2024-10-01", + "open": 126.57, + "high": 129.71, + "low": 126.03, + "close": 128.32, + "volume": 28980142 + }, + { + "date": "2024-10-02", + "open": 130.07, + "high": 132.02, + "low": 129.51, + "close": 131.88, + "volume": 27641199 + }, + { + "date": "2024-10-03", + "open": 131.63, + "high": 134.0, + "low": 130.48, + "close": 132.64, + "volume": 32079114 + }, + { + "date": "2024-10-04", + "open": 131.17, + "high": 131.27, + "low": 129.23, + "close": 130.66, + "volume": 30712620 + }, + { + "date": "2024-10-07", + "open": 132.49, + "high": 133.04, + "low": 132.15, + "close": 132.89, + "volume": 20238644 + }, + { + "date": "2024-10-08", + "open": 132.49, + "high": 132.95, + "low": 130.17, + "close": 130.79, + "volume": 32171498 + }, + { + "date": "2024-10-09", + "open": 129.22, + "high": 130.32, + "low": 128.28, + "close": 129.43, + "volume": 15898294 + }, + { + "date": "2024-10-10", + "open": 127.68, + "high": 129.98, + "low": 126.58, + "close": 129.56, + "volume": 19550544 + }, + { + "date": "2024-10-11", + "open": 131.29, + "high": 132.09, + "low": 130.14, + "close": 132.08, + "volume": 26428099 + }, + { + "date": "2024-10-14", + "open": 131.51, + "high": 132.85, + "low": 131.08, + "close": 131.15, + "volume": 34213903 + }, + { + "date": "2024-10-15", + "open": 132.0, + "high": 132.87, + "low": 129.91, + "close": 130.39, + "volume": 30702138 + }, + { + "date": "2024-10-16", + "open": 130.0, + "high": 130.54, + "low": 128.85, + "close": 130.16, + "volume": 32559064 + }, + { + "date": "2024-10-17", + "open": 132.0, + "high": 132.13, + "low": 129.23, + "close": 130.03, + "volume": 31203347 + }, + { + "date": "2024-10-18", + "open": 131.01, + "high": 131.41, + "low": 130.62, + "close": 131.21, + "volume": 22481402 + }, + { + "date": "2024-10-21", + "open": 129.46, + "high": 130.69, + "low": 127.1, + "close": 128.22, + "volume": 29324309 + }, + { + "date": "2024-10-22", + "open": 127.02, + "high": 127.79, + "low": 125.67, + "close": 127.53, + "volume": 16812712 + }, + { + "date": "2024-10-23", + "open": 127.28, + "high": 128.61, + "low": 124.86, + "close": 125.56, + "volume": 34819235 + }, + { + "date": "2024-10-24", + "open": 125.65, + "high": 126.87, + "low": 125.08, + "close": 125.21, + "volume": 19219721 + }, + { + "date": "2024-10-25", + "open": 124.14, + "high": 124.89, + "low": 122.51, + "close": 123.02, + "volume": 19110801 + }, + { + "date": "2024-10-28", + "open": 121.34, + "high": 124.77, + "low": 120.15, + "close": 123.31, + "volume": 15839672 + }, + { + "date": "2024-10-29", + "open": 123.22, + "high": 125.14, + "low": 122.85, + "close": 124.96, + "volume": 16661740 + }, + { + "date": "2024-10-30", + "open": 126.81, + "high": 127.53, + "low": 126.29, + "close": 127.06, + "volume": 25666222 + }, + { + "date": "2024-10-31", + "open": 125.72, + "high": 126.55, + "low": 124.46, + "close": 125.43, + "volume": 18798381 + }, + { + "date": "2024-11-01", + "open": 124.96, + "high": 126.09, + "low": 123.14, + "close": 123.22, + "volume": 27325862 + }, + { + "date": "2024-11-04", + "open": 123.09, + "high": 124.27, + "low": 121.85, + "close": 122.57, + "volume": 20260264 + }, + { + "date": "2024-11-05", + "open": 124.39, + "high": 124.87, + "low": 123.4, + "close": 124.03, + "volume": 22875328 + }, + { + "date": "2024-11-06", + "open": 122.5, + "high": 123.97, + "low": 121.78, + "close": 121.82, + "volume": 21024422 + }, + { + "date": "2024-11-07", + "open": 122.17, + "high": 123.51, + "low": 121.02, + "close": 122.76, + "volume": 30914942 + }, + { + "date": "2024-11-08", + "open": 123.24, + "high": 124.41, + "low": 121.99, + "close": 123.67, + "volume": 16433080 + }, + { + "date": "2024-11-11", + "open": 125.63, + "high": 125.96, + "low": 123.51, + "close": 124.38, + "volume": 24848264 + }, + { + "date": "2024-11-12", + "open": 125.07, + "high": 125.1, + "low": 123.33, + "close": 123.87, + "volume": 21430428 + }, + { + "date": "2024-11-13", + "open": 124.17, + "high": 126.79, + "low": 122.85, + "close": 125.93, + "volume": 28435747 + }, + { + "date": "2024-11-14", + "open": 126.25, + "high": 126.57, + "low": 125.71, + "close": 126.47, + "volume": 27477476 + }, + { + "date": "2024-11-15", + "open": 126.07, + "high": 127.46, + "low": 125.97, + "close": 127.02, + "volume": 27868832 + }, + { + "date": "2024-11-18", + "open": 128.12, + "high": 128.17, + "low": 126.71, + "close": 127.09, + "volume": 31143198 + }, + { + "date": "2024-11-19", + "open": 125.91, + "high": 126.05, + "low": 123.34, + "close": 124.28, + "volume": 31226660 + }, + { + "date": "2024-11-20", + "open": 124.96, + "high": 126.33, + "low": 123.32, + "close": 124.44, + "volume": 30722838 + }, + { + "date": "2024-11-21", + "open": 124.02, + "high": 126.31, + "low": 123.51, + "close": 125.56, + "volume": 33490495 + }, + { + "date": "2024-11-22", + "open": 125.83, + "high": 127.07, + "low": 123.64, + "close": 125.03, + "volume": 16158385 + }, + { + "date": "2024-11-25", + "open": 125.75, + "high": 126.3, + "low": 124.4, + "close": 126.02, + "volume": 21994792 + }, + { + "date": "2024-11-26", + "open": 126.31, + "high": 127.46, + "low": 125.88, + "close": 126.49, + "volume": 26482684 + }, + { + "date": "2024-11-27", + "open": 125.06, + "high": 126.42, + "low": 123.43, + "close": 124.18, + "volume": 24555794 + }, + { + "date": "2024-11-28", + "open": 125.52, + "high": 125.74, + "low": 124.3, + "close": 124.89, + "volume": 27312658 + }, + { + "date": "2024-11-29", + "open": 123.83, + "high": 125.61, + "low": 122.58, + "close": 124.67, + "volume": 22902138 + }, + { + "date": "2024-12-02", + "open": 124.72, + "high": 126.31, + "low": 124.55, + "close": 124.99, + "volume": 15373263 + }, + { + "date": "2024-12-03", + "open": 125.71, + "high": 125.98, + "low": 124.64, + "close": 125.66, + "volume": 23915293 + }, + { + "date": "2024-12-04", + "open": 125.22, + "high": 125.74, + "low": 122.63, + "close": 123.42, + "volume": 18333714 + }, + { + "date": "2024-12-05", + "open": 123.71, + "high": 124.6, + "low": 123.58, + "close": 124.27, + "volume": 33604827 + }, + { + "date": "2024-12-06", + "open": 122.57, + "high": 123.69, + "low": 120.67, + "close": 121.77, + "volume": 30695264 + }, + { + "date": "2024-12-09", + "open": 122.31, + "high": 123.6, + "low": 120.81, + "close": 122.04, + "volume": 31939910 + }, + { + "date": "2024-12-10", + "open": 122.95, + "high": 124.32, + "low": 122.7, + "close": 123.63, + "volume": 23256643 + }, + { + "date": "2024-12-11", + "open": 122.75, + "high": 124.29, + "low": 122.31, + "close": 123.48, + "volume": 32533280 + }, + { + "date": "2024-12-12", + "open": 121.98, + "high": 123.26, + "low": 121.39, + "close": 122.77, + "volume": 18394506 + }, + { + "date": "2024-12-13", + "open": 121.45, + "high": 121.89, + "low": 118.53, + "close": 119.52, + "volume": 33419620 + }, + { + "date": "2024-12-16", + "open": 117.72, + "high": 118.72, + "low": 117.5, + "close": 118.19, + "volume": 25110812 + }, + { + "date": "2024-12-17", + "open": 116.51, + "high": 117.86, + "low": 115.45, + "close": 117.25, + "volume": 30124815 + }, + { + "date": "2024-12-18", + "open": 119.0, + "high": 119.58, + "low": 118.28, + "close": 119.33, + "volume": 20620680 + }, + { + "date": "2024-12-19", + "open": 117.99, + "high": 119.01, + "low": 115.48, + "close": 116.01, + "volume": 16988674 + }, + { + "date": "2024-12-20", + "open": 117.52, + "high": 120.61, + "low": 116.97, + "close": 119.21, + "volume": 34735302 + }, + { + "date": "2024-12-23", + "open": 117.22, + "high": 119.03, + "low": 116.42, + "close": 118.29, + "volume": 24797175 + }, + { + "date": "2024-12-24", + "open": 117.32, + "high": 118.19, + "low": 116.63, + "close": 117.71, + "volume": 18514639 + }, + { + "date": "2024-12-25", + "open": 116.69, + "high": 118.35, + "low": 115.45, + "close": 117.01, + "volume": 33423232 + }, + { + "date": "2024-12-26", + "open": 117.47, + "high": 118.26, + "low": 115.86, + "close": 116.88, + "volume": 15578643 + }, + { + "date": "2024-12-27", + "open": 118.43, + "high": 119.55, + "low": 118.03, + "close": 118.6, + "volume": 24026144 + }, + { + "date": "2024-12-30", + "open": 120.56, + "high": 120.79, + "low": 119.94, + "close": 120.43, + "volume": 25248054 + }, + { + "date": "2024-12-31", + "open": 118.9, + "high": 119.77, + "low": 117.47, + "close": 119.24, + "volume": 21552040 + }, + { + "date": "2025-01-01", + "open": 117.83, + "high": 119.25, + "low": 116.28, + "close": 117.2, + "volume": 25540411 + }, + { + "date": "2025-01-02", + "open": 118.54, + "high": 119.92, + "low": 116.55, + "close": 117.85, + "volume": 22357156 + }, + { + "date": "2025-01-03", + "open": 117.05, + "high": 117.08, + "low": 115.06, + "close": 115.3, + "volume": 24344019 + }, + { + "date": "2025-01-06", + "open": 115.6, + "high": 117.13, + "low": 114.91, + "close": 115.81, + "volume": 27198651 + }, + { + "date": "2025-01-07", + "open": 117.38, + "high": 118.66, + "low": 116.31, + "close": 118.47, + "volume": 29987976 + }, + { + "date": "2025-01-08", + "open": 117.57, + "high": 119.77, + "low": 117.4, + "close": 118.79, + "volume": 16296644 + }, + { + "date": "2025-01-09", + "open": 117.79, + "high": 120.05, + "low": 117.47, + "close": 119.48, + "volume": 26732931 + }, + { + "date": "2025-01-10", + "open": 119.9, + "high": 121.38, + "low": 118.2, + "close": 118.4, + "volume": 17515705 + }, + { + "date": "2025-01-13", + "open": 118.78, + "high": 119.28, + "low": 116.24, + "close": 117.17, + "volume": 32705979 + }, + { + "date": "2025-01-14", + "open": 118.99, + "high": 119.92, + "low": 117.79, + "close": 117.84, + "volume": 31338194 + }, + { + "date": "2025-01-15", + "open": 119.28, + "high": 120.83, + "low": 118.16, + "close": 120.19, + "volume": 18295452 + }, + { + "date": "2025-01-16", + "open": 121.19, + "high": 122.69, + "low": 120.15, + "close": 120.31, + "volume": 27969858 + }, + { + "date": "2025-01-17", + "open": 118.65, + "high": 121.0, + "low": 117.61, + "close": 120.53, + "volume": 24063647 + }, + { + "date": "2025-01-20", + "open": 119.83, + "high": 121.39, + "low": 118.88, + "close": 121.1, + "volume": 16540061 + }, + { + "date": "2025-01-21", + "open": 121.25, + "high": 122.18, + "low": 120.6, + "close": 120.91, + "volume": 32147496 + }, + { + "date": "2025-01-22", + "open": 119.58, + "high": 120.32, + "low": 118.95, + "close": 119.21, + "volume": 28053255 + }, + { + "date": "2025-01-23", + "open": 118.71, + "high": 119.74, + "low": 118.63, + "close": 119.56, + "volume": 21001764 + }, + { + "date": "2025-01-24", + "open": 118.3, + "high": 119.27, + "low": 116.35, + "close": 117.23, + "volume": 15914851 + }, + { + "date": "2025-01-27", + "open": 118.49, + "high": 120.21, + "low": 117.15, + "close": 119.07, + "volume": 21419389 + }, + { + "date": "2025-01-28", + "open": 120.55, + "high": 122.16, + "low": 119.25, + "close": 121.31, + "volume": 25124665 + }, + { + "date": "2025-01-29", + "open": 120.51, + "high": 120.99, + "low": 119.19, + "close": 119.23, + "volume": 17414723 + }, + { + "date": "2025-01-30", + "open": 118.6, + "high": 120.26, + "low": 118.17, + "close": 120.06, + "volume": 19711866 + }, + { + "date": "2025-01-31", + "open": 121.97, + "high": 123.33, + "low": 119.79, + "close": 120.64, + "volume": 18757027 + }, + { + "date": "2025-02-03", + "open": 122.27, + "high": 125.04, + "low": 121.53, + "close": 124.0, + "volume": 31642702 + }, + { + "date": "2025-02-04", + "open": 122.5, + "high": 123.89, + "low": 121.72, + "close": 123.85, + "volume": 33864097 + }, + { + "date": "2025-02-05", + "open": 124.34, + "high": 125.77, + "low": 123.52, + "close": 124.79, + "volume": 25819707 + }, + { + "date": "2025-02-06", + "open": 123.37, + "high": 125.77, + "low": 122.65, + "close": 124.75, + "volume": 28098738 + }, + { + "date": "2025-02-07", + "open": 123.02, + "high": 123.97, + "low": 121.35, + "close": 122.45, + "volume": 29040373 + }, + { + "date": "2025-02-10", + "open": 123.19, + "high": 124.29, + "low": 121.74, + "close": 123.75, + "volume": 34942081 + }, + { + "date": "2025-02-11", + "open": 123.74, + "high": 126.51, + "low": 122.45, + "close": 125.62, + "volume": 33081888 + }, + { + "date": "2025-02-12", + "open": 124.17, + "high": 125.4, + "low": 123.29, + "close": 123.57, + "volume": 25853072 + }, + { + "date": "2025-02-13", + "open": 123.65, + "high": 125.35, + "low": 122.28, + "close": 124.28, + "volume": 23729724 + }, + { + "date": "2025-02-14", + "open": 125.34, + "high": 127.42, + "low": 124.64, + "close": 126.5, + "volume": 30837487 + }, + { + "date": "2025-02-17", + "open": 125.36, + "high": 127.28, + "low": 124.44, + "close": 126.5, + "volume": 26351503 + }, + { + "date": "2025-02-18", + "open": 126.49, + "high": 127.22, + "low": 125.02, + "close": 126.53, + "volume": 17992270 + }, + { + "date": "2025-02-19", + "open": 126.09, + "high": 129.13, + "low": 126.06, + "close": 127.74, + "volume": 21889982 + }, + { + "date": "2025-02-20", + "open": 127.52, + "high": 129.59, + "low": 126.63, + "close": 128.3, + "volume": 24890884 + }, + { + "date": "2025-02-21", + "open": 128.01, + "high": 130.58, + "low": 127.88, + "close": 129.81, + "volume": 34498420 + }, + { + "date": "2025-02-24", + "open": 130.15, + "high": 132.39, + "low": 129.88, + "close": 131.42, + "volume": 34777473 + }, + { + "date": "2025-02-25", + "open": 130.44, + "high": 131.62, + "low": 129.83, + "close": 129.99, + "volume": 15850199 + }, + { + "date": "2025-02-26", + "open": 131.73, + "high": 134.16, + "low": 130.29, + "close": 133.73, + "volume": 18135695 + }, + { + "date": "2025-02-27", + "open": 135.6, + "high": 135.92, + "low": 132.34, + "close": 133.76, + "volume": 28513643 + }, + { + "date": "2025-02-28", + "open": 134.43, + "high": 134.8, + "low": 133.56, + "close": 134.68, + "volume": 25118050 + }, + { + "date": "2025-03-03", + "open": 133.2, + "high": 134.82, + "low": 132.2, + "close": 133.88, + "volume": 32773249 + }, + { + "date": "2025-03-04", + "open": 135.74, + "high": 136.29, + "low": 133.53, + "close": 134.29, + "volume": 22180371 + }, + { + "date": "2025-03-05", + "open": 134.92, + "high": 135.26, + "low": 133.05, + "close": 133.91, + "volume": 26386495 + }, + { + "date": "2025-03-06", + "open": 131.96, + "high": 134.12, + "low": 130.78, + "close": 133.28, + "volume": 32350290 + }, + { + "date": "2025-03-07", + "open": 134.05, + "high": 135.29, + "low": 133.51, + "close": 133.6, + "volume": 21341470 + }, + { + "date": "2025-03-10", + "open": 134.46, + "high": 134.7, + "low": 132.69, + "close": 133.8, + "volume": 27793008 + }, + { + "date": "2025-03-11", + "open": 131.84, + "high": 132.8, + "low": 130.9, + "close": 131.78, + "volume": 27094177 + }, + { + "date": "2025-03-12", + "open": 131.21, + "high": 132.5, + "low": 130.23, + "close": 131.39, + "volume": 30366000 + }, + { + "date": "2025-03-13", + "open": 131.87, + "high": 133.48, + "low": 131.6, + "close": 133.23, + "volume": 20062512 + }, + { + "date": "2025-03-14", + "open": 134.19, + "high": 135.96, + "low": 133.97, + "close": 135.67, + "volume": 34683657 + }, + { + "date": "2025-03-17", + "open": 135.59, + "high": 135.6, + "low": 133.04, + "close": 134.28, + "volume": 34228107 + }, + { + "date": "2025-03-18", + "open": 133.43, + "high": 134.77, + "low": 133.28, + "close": 134.09, + "volume": 24265877 + }, + { + "date": "2025-03-19", + "open": 133.14, + "high": 133.74, + "low": 130.39, + "close": 131.53, + "volume": 25200210 + }, + { + "date": "2025-03-20", + "open": 132.41, + "high": 133.22, + "low": 130.97, + "close": 131.68, + "volume": 18361166 + }, + { + "date": "2025-03-21", + "open": 130.08, + "high": 130.88, + "low": 128.94, + "close": 129.87, + "volume": 16009961 + }, + { + "date": "2025-03-24", + "open": 129.91, + "high": 130.25, + "low": 127.95, + "close": 127.99, + "volume": 19206392 + }, + { + "date": "2025-03-25", + "open": 128.58, + "high": 130.43, + "low": 127.89, + "close": 129.15, + "volume": 24449865 + }, + { + "date": "2025-03-26", + "open": 128.92, + "high": 129.39, + "low": 127.26, + "close": 128.71, + "volume": 33798767 + }, + { + "date": "2025-03-27", + "open": 128.81, + "high": 131.19, + "low": 127.7, + "close": 129.71, + "volume": 31923362 + }, + { + "date": "2025-03-28", + "open": 130.44, + "high": 131.93, + "low": 129.7, + "close": 130.06, + "volume": 34147897 + }, + { + "date": "2025-03-31", + "open": 129.84, + "high": 130.01, + "low": 128.36, + "close": 129.69, + "volume": 30723263 + }, + { + "date": "2025-04-01", + "open": 130.36, + "high": 130.57, + "low": 130.02, + "close": 130.26, + "volume": 27422992 + }, + { + "date": "2025-04-02", + "open": 128.92, + "high": 130.15, + "low": 126.0, + "close": 127.45, + "volume": 28908132 + }, + { + "date": "2025-04-03", + "open": 128.19, + "high": 130.72, + "low": 126.99, + "close": 130.16, + "volume": 19856065 + }, + { + "date": "2025-04-04", + "open": 128.22, + "high": 128.26, + "low": 127.02, + "close": 127.08, + "volume": 22714931 + }, + { + "date": "2025-04-07", + "open": 126.25, + "high": 129.46, + "low": 125.73, + "close": 128.15, + "volume": 19043909 + }, + { + "date": "2025-04-08", + "open": 129.79, + "high": 129.88, + "low": 127.36, + "close": 128.21, + "volume": 18290669 + }, + { + "date": "2025-04-09", + "open": 129.17, + "high": 131.34, + "low": 127.68, + "close": 129.9, + "volume": 21191582 + }, + { + "date": "2025-04-10", + "open": 128.5, + "high": 129.16, + "low": 126.57, + "close": 127.57, + "volume": 22916007 + }, + { + "date": "2025-04-11", + "open": 126.66, + "high": 129.95, + "low": 125.37, + "close": 128.55, + "volume": 20965788 + }, + { + "date": "2025-04-14", + "open": 128.97, + "high": 129.4, + "low": 127.46, + "close": 128.69, + "volume": 16902671 + }, + { + "date": "2025-04-15", + "open": 127.84, + "high": 129.26, + "low": 126.91, + "close": 128.55, + "volume": 24931434 + }, + { + "date": "2025-04-16", + "open": 126.59, + "high": 126.83, + "low": 124.69, + "close": 125.53, + "volume": 19214847 + }, + { + "date": "2025-04-17", + "open": 125.87, + "high": 126.46, + "low": 124.37, + "close": 124.71, + "volume": 27525252 + }, + { + "date": "2025-04-18", + "open": 123.47, + "high": 124.03, + "low": 122.99, + "close": 123.52, + "volume": 18070391 + }, + { + "date": "2025-04-21", + "open": 123.45, + "high": 125.75, + "low": 122.05, + "close": 124.54, + "volume": 24543657 + }, + { + "date": "2025-04-22", + "open": 124.06, + "high": 126.49, + "low": 123.6, + "close": 125.0, + "volume": 29288758 + }, + { + "date": "2025-04-23", + "open": 123.66, + "high": 125.8, + "low": 122.96, + "close": 125.36, + "volume": 19050845 + }, + { + "date": "2025-04-24", + "open": 127.07, + "high": 129.1, + "low": 126.83, + "close": 128.22, + "volume": 15953744 + }, + { + "date": "2025-04-25", + "open": 128.47, + "high": 129.05, + "low": 125.18, + "close": 126.54, + "volume": 22887813 + }, + { + "date": "2025-04-28", + "open": 127.62, + "high": 128.22, + "low": 125.62, + "close": 125.87, + "volume": 28251118 + }, + { + "date": "2025-04-29", + "open": 126.3, + "high": 128.96, + "low": 126.1, + "close": 127.83, + "volume": 32261419 + }, + { + "date": "2025-04-30", + "open": 127.36, + "high": 127.49, + "low": 126.93, + "close": 127.26, + "volume": 28377198 + }, + { + "date": "2025-05-01", + "open": 126.53, + "high": 127.49, + "low": 124.79, + "close": 124.91, + "volume": 20628182 + }, + { + "date": "2025-05-02", + "open": 125.96, + "high": 128.71, + "low": 124.76, + "close": 127.82, + "volume": 30787376 + }, + { + "date": "2025-05-05", + "open": 126.94, + "high": 127.66, + "low": 124.41, + "close": 125.74, + "volume": 32013880 + }, + { + "date": "2025-05-06", + "open": 124.48, + "high": 125.4, + "low": 122.86, + "close": 123.23, + "volume": 23927227 + }, + { + "date": "2025-05-07", + "open": 122.57, + "high": 124.98, + "low": 121.53, + "close": 124.23, + "volume": 28467879 + }, + { + "date": "2025-05-08", + "open": 125.03, + "high": 126.03, + "low": 123.96, + "close": 125.78, + "volume": 15388205 + }, + { + "date": "2025-05-09", + "open": 125.65, + "high": 127.27, + "low": 125.45, + "close": 126.43, + "volume": 32425175 + }, + { + "date": "2025-05-12", + "open": 126.97, + "high": 128.46, + "low": 125.85, + "close": 125.96, + "volume": 16928843 + }, + { + "date": "2025-05-13", + "open": 124.91, + "high": 126.72, + "low": 124.63, + "close": 126.51, + "volume": 15874631 + }, + { + "date": "2025-05-14", + "open": 126.26, + "high": 127.75, + "low": 125.65, + "close": 126.16, + "volume": 24607489 + }, + { + "date": "2025-05-15", + "open": 127.28, + "high": 127.44, + "low": 124.32, + "close": 125.81, + "volume": 24351526 + }, + { + "date": "2025-05-16", + "open": 126.24, + "high": 126.76, + "low": 125.0, + "close": 126.46, + "volume": 18640260 + }, + { + "date": "2025-05-19", + "open": 127.0, + "high": 127.82, + "low": 125.67, + "close": 127.18, + "volume": 26324200 + }, + { + "date": "2025-05-20", + "open": 128.42, + "high": 129.35, + "low": 127.53, + "close": 129.01, + "volume": 21845718 + }, + { + "date": "2025-05-21", + "open": 130.31, + "high": 131.56, + "low": 129.31, + "close": 131.45, + "volume": 26502001 + }, + { + "date": "2025-05-22", + "open": 132.9, + "high": 135.37, + "low": 132.48, + "close": 134.86, + "volume": 19986070 + }, + { + "date": "2025-05-23", + "open": 135.76, + "high": 136.85, + "low": 134.15, + "close": 135.61, + "volume": 25948691 + }, + { + "date": "2025-05-26", + "open": 134.19, + "high": 134.77, + "low": 132.95, + "close": 134.09, + "volume": 21914025 + }, + { + "date": "2025-05-27", + "open": 134.96, + "high": 136.43, + "low": 134.14, + "close": 135.86, + "volume": 34233432 + }, + { + "date": "2025-05-28", + "open": 137.44, + "high": 137.46, + "low": 134.11, + "close": 135.6, + "volume": 21915419 + }, + { + "date": "2025-05-29", + "open": 134.35, + "high": 135.1, + "low": 133.36, + "close": 134.4, + "volume": 20669194 + }, + { + "date": "2025-05-30", + "open": 132.62, + "high": 134.11, + "low": 131.28, + "close": 134.01, + "volume": 31117143 + }, + { + "date": "2025-06-02", + "open": 134.06, + "high": 135.37, + "low": 134.04, + "close": 134.91, + "volume": 25539340 + }, + { + "date": "2025-06-03", + "open": 136.79, + "high": 137.74, + "low": 135.18, + "close": 135.88, + "volume": 31287593 + }, + { + "date": "2025-06-04", + "open": 137.82, + "high": 139.98, + "low": 137.12, + "close": 139.7, + "volume": 26078491 + }, + { + "date": "2025-06-05", + "open": 141.08, + "high": 141.88, + "low": 140.49, + "close": 141.73, + "volume": 27840058 + }, + { + "date": "2025-06-06", + "open": 142.56, + "high": 144.41, + "low": 141.7, + "close": 144.2, + "volume": 24221004 + }, + { + "date": "2025-06-09", + "open": 143.06, + "high": 143.25, + "low": 141.59, + "close": 142.02, + "volume": 17342327 + }, + { + "date": "2025-06-10", + "open": 142.86, + "high": 145.44, + "low": 141.56, + "close": 144.81, + "volume": 34984655 + }, + { + "date": "2025-06-11", + "open": 144.3, + "high": 145.19, + "low": 143.44, + "close": 144.4, + "volume": 27617618 + }, + { + "date": "2025-06-12", + "open": 143.4, + "high": 144.74, + "low": 142.0, + "close": 144.49, + "volume": 34164315 + }, + { + "date": "2025-06-13", + "open": 143.25, + "high": 145.71, + "low": 143.2, + "close": 145.23, + "volume": 27528769 + }, + { + "date": "2025-06-16", + "open": 143.58, + "high": 145.03, + "low": 142.34, + "close": 142.97, + "volume": 34224718 + }, + { + "date": "2025-06-17", + "open": 143.9, + "high": 144.83, + "low": 143.78, + "close": 143.93, + "volume": 15350520 + }, + { + "date": "2025-06-18", + "open": 144.26, + "high": 145.8, + "low": 144.22, + "close": 145.31, + "volume": 27993603 + }, + { + "date": "2025-06-19", + "open": 144.22, + "high": 145.04, + "low": 143.67, + "close": 144.33, + "volume": 25138772 + }, + { + "date": "2025-06-20", + "open": 145.21, + "high": 145.53, + "low": 144.09, + "close": 144.84, + "volume": 23457398 + }, + { + "date": "2025-06-23", + "open": 143.01, + "high": 143.66, + "low": 142.95, + "close": 143.41, + "volume": 19753695 + }, + { + "date": "2025-06-24", + "open": 141.64, + "high": 143.19, + "low": 140.22, + "close": 142.03, + "volume": 25819750 + }, + { + "date": "2025-06-25", + "open": 141.73, + "high": 143.1, + "low": 140.34, + "close": 141.66, + "volume": 34193217 + }, + { + "date": "2025-06-26", + "open": 140.83, + "high": 140.87, + "low": 138.3, + "close": 139.6, + "volume": 18343664 + }, + { + "date": "2025-06-27", + "open": 137.89, + "high": 140.13, + "low": 136.83, + "close": 138.76, + "volume": 20323148 + }, + { + "date": "2025-06-30", + "open": 140.11, + "high": 140.57, + "low": 137.57, + "close": 138.35, + "volume": 25628026 + } +] \ No newline at end of file diff --git a/angular/src/app/chart/data/tsla-data.json b/angular/src/app/chart/data/tsla-data.json new file mode 100644 index 0000000..b0da1fc --- /dev/null +++ b/angular/src/app/chart/data/tsla-data.json @@ -0,0 +1,1766 @@ +[ + { + "Date": "2024-07-01", + "Open": 195.66, + "High": 195.82, + "Low": 193.84, + "Close": 193.86 + }, + { + "Date": "2024-07-02", + "Open": 193.54, + "High": 193.87, + "Low": 192.46, + "Close": 192.55 + }, + { + "Date": "2024-07-03", + "Open": 193.06, + "High": 193.17, + "Low": 192.71, + "Close": 192.81 + }, + { + "Date": "2024-07-04", + "Open": 194.47, + "High": 195.45, + "Low": 192.64, + "Close": 195.38 + }, + { + "Date": "2024-07-05", + "Open": 197.01, + "High": 197.21, + "Low": 195.16, + "Close": 195.7 + }, + { + "Date": "2024-07-08", + "Open": 194.47, + "High": 196.23, + "Low": 193.01, + "Close": 195.24 + }, + { + "Date": "2024-07-09", + "Open": 194.28, + "High": 194.8, + "Low": 192.46, + "Close": 193.87 + }, + { + "Date": "2024-07-10", + "Open": 192.4, + "High": 194.3, + "Low": 192.29, + "Close": 193.74 + }, + { + "Date": "2024-07-11", + "Open": 195.05, + "High": 196.03, + "Low": 193.28, + "Close": 193.54 + }, + { + "Date": "2024-07-12", + "Open": 192.99, + "High": 193.79, + "Low": 191.7, + "Close": 191.97 + }, + { + "Date": "2024-07-15", + "Open": 190.34, + "High": 190.51, + "Low": 188.47, + "Close": 189.21 + }, + { + "Date": "2024-07-16", + "Open": 189.93, + "High": 190.33, + "Low": 188.1, + "Close": 189.98 + }, + { + "Date": "2024-07-17", + "Open": 188.65, + "High": 188.92, + "Low": 187.77, + "Close": 188.45 + }, + { + "Date": "2024-07-18", + "Open": 188.27, + "High": 189.07, + "Low": 186.78, + "Close": 186.95 + }, + { + "Date": "2024-07-19", + "Open": 186.35, + "High": 188.13, + "Low": 184.46, + "Close": 186.47 + }, + { + "Date": "2024-07-22", + "Open": 185.91, + "High": 186.34, + "Low": 184.89, + "Close": 185.64 + }, + { + "Date": "2024-07-23", + "Open": 184.99, + "High": 185.48, + "Low": 183.15, + "Close": 184.34 + }, + { + "Date": "2024-07-24", + "Open": 183.49, + "High": 183.49, + "Low": 182.74, + "Close": 182.75 + }, + { + "Date": "2024-07-25", + "Open": 184.73, + "High": 185.05, + "Low": 183.16, + "Close": 183.41 + }, + { + "Date": "2024-07-26", + "Open": 184.89, + "High": 186.59, + "Low": 183.44, + "Close": 186.16 + }, + { + "Date": "2024-07-29", + "Open": 184.85, + "High": 186.63, + "Low": 184.52, + "Close": 185.09 + }, + { + "Date": "2024-07-30", + "Open": 183.31, + "High": 184.75, + "Low": 182.73, + "Close": 184.16 + }, + { + "Date": "2024-07-31", + "Open": 185.26, + "High": 185.75, + "Low": 184.33, + "Close": 185.42 + }, + { + "Date": "2024-08-01", + "Open": 184.56, + "High": 185.42, + "Low": 184.46, + "Close": 184.85 + }, + { + "Date": "2024-08-02", + "Open": 186.46, + "High": 188.11, + "Low": 185.82, + "Close": 187.76 + }, + { + "Date": "2024-08-05", + "Open": 188.43, + "High": 190.37, + "Low": 186.47, + "Close": 187.08 + }, + { + "Date": "2024-08-06", + "Open": 188.09, + "High": 189.71, + "Low": 186.7, + "Close": 188.21 + }, + { + "Date": "2024-08-07", + "Open": 189.42, + "High": 191.01, + "Low": 188.7, + "Close": 190.54 + }, + { + "Date": "2024-08-08", + "Open": 191.55, + "High": 191.8, + "Low": 191.17, + "Close": 191.74 + }, + { + "Date": "2024-08-09", + "Open": 191.07, + "High": 192.23, + "Low": 189.36, + "Close": 191.35 + }, + { + "Date": "2024-08-12", + "Open": 192.98, + "High": 194.2, + "Low": 191.88, + "Close": 192.1 + }, + { + "Date": "2024-08-13", + "Open": 191.4, + "High": 192.95, + "Low": 190.37, + "Close": 192.92 + }, + { + "Date": "2024-08-14", + "Open": 193.41, + "High": 194.71, + "Low": 193.24, + "Close": 194.66 + }, + { + "Date": "2024-08-15", + "Open": 192.87, + "High": 194.07, + "Low": 191.97, + "Close": 192.37 + }, + { + "Date": "2024-08-16", + "Open": 192.73, + "High": 194.0, + "Low": 191.06, + "Close": 191.11 + }, + { + "Date": "2024-08-19", + "Open": 189.48, + "High": 189.67, + "Low": 188.61, + "Close": 189.65 + }, + { + "Date": "2024-08-20", + "Open": 190.6, + "High": 191.19, + "Low": 189.29, + "Close": 190.11 + }, + { + "Date": "2024-08-21", + "Open": 191.5, + "High": 192.53, + "Low": 190.21, + "Close": 190.37 + }, + { + "Date": "2024-08-22", + "Open": 191.04, + "High": 191.5, + "Low": 189.48, + "Close": 191.33 + }, + { + "Date": "2024-08-23", + "Open": 191.47, + "High": 191.49, + "Low": 190.22, + "Close": 190.41 + }, + { + "Date": "2024-08-26", + "Open": 192.19, + "High": 193.05, + "Low": 190.63, + "Close": 191.18 + }, + { + "Date": "2024-08-27", + "Open": 189.78, + "High": 191.53, + "Low": 188.75, + "Close": 188.89 + }, + { + "Date": "2024-08-28", + "Open": 188.02, + "High": 189.69, + "Low": 186.35, + "Close": 187.56 + }, + { + "Date": "2024-08-29", + "Open": 185.82, + "High": 186.41, + "Low": 183.98, + "Close": 185.49 + }, + { + "Date": "2024-08-30", + "Open": 185.03, + "High": 185.53, + "Low": 184.58, + "Close": 185.2 + }, + { + "Date": "2024-09-02", + "Open": 184.49, + "High": 184.49, + "Low": 184.19, + "Close": 184.39 + }, + { + "Date": "2024-09-03", + "Open": 184.67, + "High": 185.21, + "Low": 184.02, + "Close": 184.21 + }, + { + "Date": "2024-09-04", + "Open": 185.63, + "High": 185.86, + "Low": 185.62, + "Close": 185.65 + }, + { + "Date": "2024-09-05", + "Open": 186.12, + "High": 187.17, + "Low": 185.38, + "Close": 186.7 + }, + { + "Date": "2024-09-06", + "Open": 187.26, + "High": 187.39, + "Low": 185.47, + "Close": 185.73 + }, + { + "Date": "2024-09-09", + "Open": 187.61, + "High": 189.53, + "Low": 186.6, + "Close": 186.97 + }, + { + "Date": "2024-09-10", + "Open": 185.28, + "High": 185.91, + "Low": 183.77, + "Close": 183.79 + }, + { + "Date": "2024-09-11", + "Open": 182.37, + "High": 182.42, + "Low": 182.05, + "Close": 182.32 + }, + { + "Date": "2024-09-12", + "Open": 182.2, + "High": 183.2, + "Low": 181.85, + "Close": 182.82 + }, + { + "Date": "2024-09-13", + "Open": 181.13, + "High": 181.47, + "Low": 180.91, + "Close": 181.38 + }, + { + "Date": "2024-09-16", + "Open": 181.95, + "High": 183.37, + "Low": 181.41, + "Close": 182.18 + }, + { + "Date": "2024-09-17", + "Open": 181.12, + "High": 182.67, + "Low": 179.76, + "Close": 180.47 + }, + { + "Date": "2024-09-18", + "Open": 179.96, + "High": 180.57, + "Low": 179.63, + "Close": 180.49 + }, + { + "Date": "2024-09-19", + "Open": 182.48, + "High": 184.27, + "Low": 181.04, + "Close": 181.67 + }, + { + "Date": "2024-09-20", + "Open": 183.14, + "High": 184.14, + "Low": 183.06, + "Close": 184.1 + }, + { + "Date": "2024-09-23", + "Open": 185.02, + "High": 185.51, + "Low": 183.19, + "Close": 185.18 + }, + { + "Date": "2024-09-24", + "Open": 184.77, + "High": 185.25, + "Low": 183.16, + "Close": 184.64 + }, + { + "Date": "2024-09-25", + "Open": 184.45, + "High": 185.46, + "Low": 184.29, + "Close": 184.47 + }, + { + "Date": "2024-09-26", + "Open": 183.99, + "High": 185.17, + "Low": 182.9, + "Close": 183.26 + }, + { + "Date": "2024-09-27", + "Open": 182.65, + "High": 183.76, + "Low": 180.99, + "Close": 183.32 + }, + { + "Date": "2024-09-30", + "Open": 182.52, + "High": 184.48, + "Low": 182.48, + "Close": 183.74 + }, + { + "Date": "2024-10-01", + "Open": 183.67, + "High": 185.11, + "Low": 182.29, + "Close": 183.1 + }, + { + "Date": "2024-10-02", + "Open": 181.28, + "High": 181.81, + "Low": 180.99, + "Close": 181.72 + }, + { + "Date": "2024-10-03", + "Open": 183.16, + "High": 183.46, + "Low": 181.86, + "Close": 182.58 + }, + { + "Date": "2024-10-04", + "Open": 183.46, + "High": 184.67, + "Low": 182.35, + "Close": 183.94 + }, + { + "Date": "2024-10-07", + "Open": 183.82, + "High": 185.45, + "Low": 181.87, + "Close": 184.19 + }, + { + "Date": "2024-10-08", + "Open": 185.96, + "High": 187.79, + "Low": 185.22, + "Close": 185.49 + }, + { + "Date": "2024-10-09", + "Open": 184.88, + "High": 184.95, + "Low": 183.85, + "Close": 184.06 + }, + { + "Date": "2024-10-10", + "Open": 182.43, + "High": 183.61, + "Low": 182.33, + "Close": 182.83 + }, + { + "Date": "2024-10-11", + "Open": 183.67, + "High": 184.3, + "Low": 183.36, + "Close": 183.72 + }, + { + "Date": "2024-10-14", + "Open": 185.63, + "High": 187.5, + "Low": 185.03, + "Close": 186.45 + }, + { + "Date": "2024-10-15", + "Open": 184.73, + "High": 185.32, + "Low": 184.25, + "Close": 184.94 + }, + { + "Date": "2024-10-16", + "Open": 186.52, + "High": 187.92, + "Low": 186.34, + "Close": 186.97 + }, + { + "Date": "2024-10-17", + "Open": 188.82, + "High": 189.36, + "Low": 188.3, + "Close": 189.28 + }, + { + "Date": "2024-10-18", + "Open": 187.6, + "High": 188.86, + "Low": 187.24, + "Close": 187.35 + }, + { + "Date": "2024-10-21", + "Open": 188.62, + "High": 188.97, + "Low": 186.73, + "Close": 186.99 + }, + { + "Date": "2024-10-22", + "Open": 186.85, + "High": 187.14, + "Low": 185.83, + "Close": 186.51 + }, + { + "Date": "2024-10-23", + "Open": 187.86, + "High": 188.1, + "Low": 186.43, + "Close": 187.71 + }, + { + "Date": "2024-10-24", + "Open": 186.19, + "High": 186.44, + "Low": 185.14, + "Close": 185.59 + }, + { + "Date": "2024-10-25", + "Open": 184.74, + "High": 185.53, + "Low": 183.75, + "Close": 185.34 + }, + { + "Date": "2024-10-28", + "Open": 186.81, + "High": 188.37, + "Low": 186.63, + "Close": 186.79 + }, + { + "Date": "2024-10-29", + "Open": 186.02, + "High": 187.27, + "Low": 185.59, + "Close": 185.8 + }, + { + "Date": "2024-10-30", + "Open": 183.85, + "High": 185.2, + "Low": 182.76, + "Close": 184.74 + }, + { + "Date": "2024-10-31", + "Open": 185.51, + "High": 186.83, + "Low": 184.31, + "Close": 186.29 + }, + { + "Date": "2024-11-01", + "Open": 186.1, + "High": 188.02, + "Low": 184.11, + "Close": 186.12 + }, + { + "Date": "2024-11-04", + "Open": 187.28, + "High": 187.73, + "Low": 186.07, + "Close": 186.7 + }, + { + "Date": "2024-11-05", + "Open": 185.94, + "High": 186.09, + "Low": 185.87, + "Close": 186.06 + }, + { + "Date": "2024-11-06", + "Open": 187.97, + "High": 189.29, + "Low": 187.41, + "Close": 188.76 + }, + { + "Date": "2024-11-07", + "Open": 187.22, + "High": 188.11, + "Low": 186.53, + "Close": 187.99 + }, + { + "Date": "2024-11-08", + "Open": 186.19, + "High": 187.91, + "Low": 185.03, + "Close": 186.65 + }, + { + "Date": "2024-11-11", + "Open": 185.91, + "High": 187.61, + "Low": 185.85, + "Close": 187.25 + }, + { + "Date": "2024-11-12", + "Open": 187.22, + "High": 187.45, + "Low": 187.02, + "Close": 187.19 + }, + { + "Date": "2024-11-13", + "Open": 189.12, + "High": 189.37, + "Low": 188.37, + "Close": 188.77 + }, + { + "Date": "2024-11-14", + "Open": 188.14, + "High": 188.84, + "Low": 187.98, + "Close": 188.0 + }, + { + "Date": "2024-11-15", + "Open": 186.66, + "High": 188.54, + "Low": 185.12, + "Close": 187.31 + }, + { + "Date": "2024-11-18", + "Open": 186.52, + "High": 188.11, + "Low": 185.21, + "Close": 186.46 + }, + { + "Date": "2024-11-19", + "Open": 187.18, + "High": 188.3, + "Low": 186.35, + "Close": 187.41 + }, + { + "Date": "2024-11-20", + "Open": 186.14, + "High": 186.53, + "Low": 185.59, + "Close": 186.44 + }, + { + "Date": "2024-11-21", + "Open": 186.36, + "High": 187.64, + "Low": 185.42, + "Close": 187.19 + }, + { + "Date": "2024-11-22", + "Open": 185.85, + "High": 186.91, + "Low": 185.04, + "Close": 186.76 + }, + { + "Date": "2024-11-25", + "Open": 187.81, + "High": 188.54, + "Low": 187.66, + "Close": 187.91 + }, + { + "Date": "2024-11-26", + "Open": 187.42, + "High": 188.86, + "Low": 186.32, + "Close": 186.84 + }, + { + "Date": "2024-11-27", + "Open": 185.81, + "High": 186.6, + "Low": 184.96, + "Close": 184.97 + }, + { + "Date": "2024-11-28", + "Open": 183.02, + "High": 183.53, + "Low": 181.04, + "Close": 183.19 + }, + { + "Date": "2024-11-29", + "Open": 182.96, + "High": 184.58, + "Low": 181.53, + "Close": 183.92 + }, + { + "Date": "2024-12-02", + "Open": 185.24, + "High": 186.47, + "Low": 183.93, + "Close": 185.47 + }, + { + "Date": "2024-12-03", + "Open": 186.99, + "High": 187.19, + "Low": 186.48, + "Close": 187.08 + }, + { + "Date": "2024-12-04", + "Open": 187.2, + "High": 188.46, + "Low": 186.92, + "Close": 187.09 + }, + { + "Date": "2024-12-05", + "Open": 187.91, + "High": 187.96, + "Low": 186.32, + "Close": 187.84 + }, + { + "Date": "2024-12-06", + "Open": 188.22, + "High": 189.15, + "Low": 188.18, + "Close": 189.07 + }, + { + "Date": "2024-12-09", + "Open": 189.84, + "High": 190.87, + "Low": 189.34, + "Close": 189.68 + }, + { + "Date": "2024-12-10", + "Open": 188.63, + "High": 188.97, + "Low": 188.13, + "Close": 188.71 + }, + { + "Date": "2024-12-11", + "Open": 190.52, + "High": 192.05, + "Low": 190.5, + "Close": 191.41 + }, + { + "Date": "2024-12-12", + "Open": 193.23, + "High": 193.26, + "Low": 191.72, + "Close": 191.97 + }, + { + "Date": "2024-12-13", + "Open": 193.65, + "High": 194.62, + "Low": 193.13, + "Close": 193.25 + }, + { + "Date": "2024-12-16", + "Open": 194.02, + "High": 194.96, + "Low": 192.67, + "Close": 194.53 + }, + { + "Date": "2024-12-17", + "Open": 195.17, + "High": 196.46, + "Low": 193.96, + "Close": 194.86 + }, + { + "Date": "2024-12-18", + "Open": 195.74, + "High": 197.71, + "Low": 194.45, + "Close": 195.52 + }, + { + "Date": "2024-12-19", + "Open": 197.34, + "High": 198.14, + "Low": 195.82, + "Close": 197.66 + }, + { + "Date": "2024-12-20", + "Open": 195.84, + "High": 196.87, + "Low": 195.17, + "Close": 196.66 + }, + { + "Date": "2024-12-23", + "Open": 195.6, + "High": 197.45, + "Low": 194.58, + "Close": 196.73 + }, + { + "Date": "2024-12-24", + "Open": 195.22, + "High": 195.45, + "Low": 194.98, + "Close": 195.33 + }, + { + "Date": "2024-12-25", + "Open": 197.24, + "High": 198.3, + "Low": 196.44, + "Close": 196.72 + }, + { + "Date": "2024-12-26", + "Open": 197.82, + "High": 197.94, + "Low": 196.01, + "Close": 197.9 + }, + { + "Date": "2024-12-27", + "Open": 197.57, + "High": 198.09, + "Low": 195.95, + "Close": 196.75 + }, + { + "Date": "2024-12-30", + "Open": 195.06, + "High": 196.38, + "Low": 193.09, + "Close": 193.41 + }, + { + "Date": "2024-12-31", + "Open": 193.53, + "High": 194.26, + "Low": 192.13, + "Close": 192.3 + }, + { + "Date": "2025-01-01", + "Open": 190.38, + "High": 191.1, + "Low": 189.02, + "Close": 189.31 + }, + { + "Date": "2025-01-02", + "Open": 188.98, + "High": 189.05, + "Low": 187.3, + "Close": 188.03 + }, + { + "Date": "2025-01-03", + "Open": 187.74, + "High": 187.81, + "Low": 187.22, + "Close": 187.55 + }, + { + "Date": "2025-01-06", + "Open": 186.09, + "High": 187.14, + "Low": 185.52, + "Close": 186.66 + }, + { + "Date": "2025-01-07", + "Open": 186.16, + "High": 188.01, + "Low": 185.81, + "Close": 187.76 + }, + { + "Date": "2025-01-08", + "Open": 188.28, + "High": 188.85, + "Low": 187.06, + "Close": 187.32 + }, + { + "Date": "2025-01-09", + "Open": 187.65, + "High": 189.42, + "Low": 187.23, + "Close": 188.99 + }, + { + "Date": "2025-01-10", + "Open": 188.68, + "High": 190.2, + "Low": 186.71, + "Close": 189.95 + }, + { + "Date": "2025-01-13", + "Open": 189.19, + "High": 189.35, + "Low": 188.07, + "Close": 189.22 + }, + { + "Date": "2025-01-14", + "Open": 188.09, + "High": 189.68, + "Low": 187.77, + "Close": 188.92 + }, + { + "Date": "2025-01-15", + "Open": 188.84, + "High": 190.76, + "Low": 187.79, + "Close": 189.05 + }, + { + "Date": "2025-01-16", + "Open": 190.87, + "High": 191.81, + "Low": 190.07, + "Close": 191.13 + }, + { + "Date": "2025-01-17", + "Open": 191.0, + "High": 192.4, + "Low": 189.38, + "Close": 191.28 + }, + { + "Date": "2025-01-20", + "Open": 189.67, + "High": 190.07, + "Low": 189.32, + "Close": 189.81 + }, + { + "Date": "2025-01-21", + "Open": 189.37, + "High": 190.71, + "Low": 188.05, + "Close": 188.89 + }, + { + "Date": "2025-01-22", + "Open": 188.01, + "High": 189.31, + "Low": 186.59, + "Close": 187.2 + }, + { + "Date": "2025-01-23", + "Open": 187.45, + "High": 188.25, + "Low": 186.99, + "Close": 187.91 + }, + { + "Date": "2025-01-24", + "Open": 187.36, + "High": 187.55, + "Low": 186.89, + "Close": 187.43 + }, + { + "Date": "2025-01-27", + "Open": 187.43, + "High": 187.56, + "Low": 186.49, + "Close": 186.5 + }, + { + "Date": "2025-01-28", + "Open": 188.4, + "High": 189.15, + "Low": 187.29, + "Close": 188.28 + }, + { + "Date": "2025-01-29", + "Open": 189.36, + "High": 189.64, + "Low": 189.25, + "Close": 189.6 + }, + { + "Date": "2025-01-30", + "Open": 190.83, + "High": 192.32, + "Low": 189.02, + "Close": 189.09 + }, + { + "Date": "2025-01-31", + "Open": 190.72, + "High": 191.82, + "Low": 190.59, + "Close": 191.13 + }, + { + "Date": "2025-02-03", + "Open": 193.03, + "High": 194.31, + "Low": 191.75, + "Close": 193.04 + }, + { + "Date": "2025-02-04", + "Open": 194.85, + "High": 194.97, + "Low": 194.33, + "Close": 194.61 + }, + { + "Date": "2025-02-05", + "Open": 194.15, + "High": 194.31, + "Low": 193.1, + "Close": 193.53 + }, + { + "Date": "2025-02-06", + "Open": 192.71, + "High": 193.71, + "Low": 192.3, + "Close": 192.42 + }, + { + "Date": "2025-02-07", + "Open": 193.56, + "High": 195.06, + "Low": 192.39, + "Close": 194.3 + }, + { + "Date": "2025-02-10", + "Open": 194.13, + "High": 195.49, + "Low": 193.23, + "Close": 194.15 + }, + { + "Date": "2025-02-11", + "Open": 193.87, + "High": 194.28, + "Low": 191.88, + "Close": 193.85 + }, + { + "Date": "2025-02-12", + "Open": 194.08, + "High": 194.92, + "Low": 193.29, + "Close": 194.37 + }, + { + "Date": "2025-02-13", + "Open": 195.95, + "High": 196.12, + "Low": 194.59, + "Close": 194.76 + }, + { + "Date": "2025-02-14", + "Open": 196.67, + "High": 197.2, + "Low": 195.87, + "Close": 197.07 + }, + { + "Date": "2025-02-17", + "Open": 197.8, + "High": 198.45, + "Low": 197.39, + "Close": 198.1 + }, + { + "Date": "2025-02-18", + "Open": 196.5, + "High": 196.53, + "Low": 196.42, + "Close": 196.49 + }, + { + "Date": "2025-02-19", + "Open": 198.21, + "High": 199.98, + "Low": 196.75, + "Close": 199.62 + }, + { + "Date": "2025-02-20", + "Open": 199.75, + "High": 200.36, + "Low": 198.57, + "Close": 199.63 + }, + { + "Date": "2025-02-21", + "Open": 197.92, + "High": 199.83, + "Low": 195.96, + "Close": 196.73 + }, + { + "Date": "2025-02-24", + "Open": 197.58, + "High": 198.27, + "Low": 196.56, + "Close": 197.9 + }, + { + "Date": "2025-02-25", + "Open": 199.68, + "High": 199.99, + "Low": 199.67, + "Close": 199.96 + }, + { + "Date": "2025-02-26", + "Open": 200.89, + "High": 202.56, + "Low": 200.44, + "Close": 201.75 + }, + { + "Date": "2025-02-27", + "Open": 203.12, + "High": 204.07, + "Low": 202.32, + "Close": 203.07 + }, + { + "Date": "2025-02-28", + "Open": 203.29, + "High": 204.58, + "Low": 201.8, + "Close": 203.09 + }, + { + "Date": "2025-03-03", + "Open": 204.76, + "High": 205.95, + "Low": 204.23, + "Close": 205.26 + }, + { + "Date": "2025-03-04", + "Open": 205.83, + "High": 206.98, + "Low": 205.09, + "Close": 205.66 + }, + { + "Date": "2025-03-05", + "Open": 206.2, + "High": 207.54, + "Low": 204.63, + "Close": 206.57 + }, + { + "Date": "2025-03-06", + "Open": 204.69, + "High": 205.3, + "Low": 204.17, + "Close": 205.09 + }, + { + "Date": "2025-03-07", + "Open": 203.85, + "High": 204.63, + "Low": 202.53, + "Close": 204.25 + }, + { + "Date": "2025-03-10", + "Open": 206.23, + "High": 207.04, + "Low": 204.61, + "Close": 206.76 + }, + { + "Date": "2025-03-11", + "Open": 205.49, + "High": 205.94, + "Low": 203.95, + "Close": 205.46 + }, + { + "Date": "2025-03-12", + "Open": 203.83, + "High": 204.1, + "Low": 203.11, + "Close": 204.04 + }, + { + "Date": "2025-03-13", + "Open": 203.66, + "High": 205.08, + "Low": 203.03, + "Close": 203.39 + }, + { + "Date": "2025-03-14", + "Open": 203.25, + "High": 203.33, + "Low": 202.56, + "Close": 202.58 + }, + { + "Date": "2025-03-17", + "Open": 203.82, + "High": 205.4, + "Low": 203.6, + "Close": 204.42 + }, + { + "Date": "2025-03-18", + "Open": 204.05, + "High": 204.1, + "Low": 203.78, + "Close": 203.93 + }, + { + "Date": "2025-03-19", + "Open": 204.4, + "High": 205.85, + "Low": 203.03, + "Close": 203.06 + }, + { + "Date": "2025-03-20", + "Open": 203.74, + "High": 203.82, + "Low": 203.11, + "Close": 203.66 + }, + { + "Date": "2025-03-21", + "Open": 205.41, + "High": 206.08, + "Low": 203.65, + "Close": 205.55 + }, + { + "Date": "2025-03-24", + "Open": 204.87, + "High": 206.03, + "Low": 204.11, + "Close": 205.9 + }, + { + "Date": "2025-03-25", + "Open": 206.51, + "High": 208.2, + "Low": 205.47, + "Close": 205.93 + }, + { + "Date": "2025-03-26", + "Open": 207.88, + "High": 209.87, + "Low": 206.21, + "Close": 208.94 + }, + { + "Date": "2025-03-27", + "Open": 208.24, + "High": 208.93, + "Low": 206.62, + "Close": 207.73 + }, + { + "Date": "2025-03-28", + "Open": 205.85, + "High": 206.28, + "Low": 205.57, + "Close": 205.58 + }, + { + "Date": "2025-03-31", + "Open": 206.61, + "High": 206.68, + "Low": 205.31, + "Close": 205.47 + }, + { + "Date": "2025-04-01", + "Open": 206.32, + "High": 207.32, + "Low": 205.77, + "Close": 206.75 + }, + { + "Date": "2025-04-02", + "Open": 205.13, + "High": 205.3, + "Low": 204.89, + "Close": 205.03 + }, + { + "Date": "2025-04-03", + "Open": 204.62, + "High": 205.7, + "Low": 203.28, + "Close": 205.57 + }, + { + "Date": "2025-04-04", + "Open": 206.18, + "High": 207.23, + "Low": 204.98, + "Close": 206.03 + }, + { + "Date": "2025-04-07", + "Open": 207.74, + "High": 209.45, + "Low": 206.4, + "Close": 207.66 + }, + { + "Date": "2025-04-08", + "Open": 208.98, + "High": 209.29, + "Low": 207.81, + "Close": 209.03 + }, + { + "Date": "2025-04-09", + "Open": 207.83, + "High": 208.36, + "Low": 206.36, + "Close": 207.32 + }, + { + "Date": "2025-04-10", + "Open": 208.76, + "High": 209.78, + "Low": 208.08, + "Close": 209.55 + }, + { + "Date": "2025-04-11", + "Open": 211.32, + "High": 212.24, + "Low": 210.25, + "Close": 210.52 + }, + { + "Date": "2025-04-14", + "Open": 209.02, + "High": 209.1, + "Low": 208.82, + "Close": 208.9 + }, + { + "Date": "2025-04-15", + "Open": 208.19, + "High": 210.07, + "Low": 207.67, + "Close": 208.02 + }, + { + "Date": "2025-04-16", + "Open": 206.89, + "High": 206.91, + "Low": 206.49, + "Close": 206.57 + }, + { + "Date": "2025-04-17", + "Open": 207.69, + "High": 208.0, + "Low": 207.09, + "Close": 207.9 + }, + { + "Date": "2025-04-18", + "Open": 209.08, + "High": 210.92, + "Low": 208.09, + "Close": 209.23 + }, + { + "Date": "2025-04-21", + "Open": 207.32, + "High": 208.94, + "Low": 206.62, + "Close": 206.91 + }, + { + "Date": "2025-04-22", + "Open": 205.61, + "High": 207.41, + "Low": 203.83, + "Close": 206.05 + }, + { + "Date": "2025-04-23", + "Open": 205.79, + "High": 207.41, + "Low": 204.24, + "Close": 205.61 + }, + { + "Date": "2025-04-24", + "Open": 206.83, + "High": 207.27, + "Low": 206.48, + "Close": 206.77 + }, + { + "Date": "2025-04-25", + "Open": 208.7, + "High": 209.27, + "Low": 206.81, + "Close": 208.95 + }, + { + "Date": "2025-04-28", + "Open": 207.78, + "High": 208.79, + "Low": 206.42, + "Close": 207.66 + }, + { + "Date": "2025-04-29", + "Open": 207.19, + "High": 208.82, + "Low": 206.03, + "Close": 206.85 + }, + { + "Date": "2025-04-30", + "Open": 205.48, + "High": 207.14, + "Low": 203.65, + "Close": 205.97 + }, + { + "Date": "2025-05-01", + "Open": 207.46, + "High": 207.8, + "Low": 206.95, + "Close": 207.71 + }, + { + "Date": "2025-05-02", + "Open": 208.69, + "High": 210.44, + "Low": 208.09, + "Close": 208.85 + }, + { + "Date": "2025-05-05", + "Open": 206.89, + "High": 207.54, + "Low": 205.18, + "Close": 207.0 + }, + { + "Date": "2025-05-06", + "Open": 206.09, + "High": 206.99, + "Low": 205.08, + "Close": 206.5 + }, + { + "Date": "2025-05-07", + "Open": 207.6, + "High": 208.61, + "Low": 207.34, + "Close": 207.56 + }, + { + "Date": "2025-05-08", + "Open": 207.25, + "High": 208.68, + "Low": 206.94, + "Close": 208.42 + }, + { + "Date": "2025-05-09", + "Open": 210.13, + "High": 210.97, + "Low": 208.81, + "Close": 209.58 + }, + { + "Date": "2025-05-12", + "Open": 209.39, + "High": 211.16, + "Low": 208.3, + "Close": 208.59 + }, + { + "Date": "2025-05-13", + "Open": 207.77, + "High": 209.75, + "Low": 206.92, + "Close": 208.67 + }, + { + "Date": "2025-05-14", + "Open": 206.79, + "High": 208.59, + "Low": 206.41, + "Close": 206.84 + }, + { + "Date": "2025-05-15", + "Open": 206.3, + "High": 207.25, + "Low": 205.95, + "Close": 206.8 + }, + { + "Date": "2025-05-16", + "Open": 207.51, + "High": 207.67, + "Low": 207.46, + "Close": 207.53 + }, + { + "Date": "2025-05-19", + "Open": 206.48, + "High": 207.63, + "Low": 205.08, + "Close": 205.61 + }, + { + "Date": "2025-05-20", + "Open": 203.94, + "High": 204.3, + "Low": 203.02, + "Close": 204.24 + }, + { + "Date": "2025-05-21", + "Open": 205.51, + "High": 206.12, + "Low": 203.69, + "Close": 204.55 + }, + { + "Date": "2025-05-22", + "Open": 206.54, + "High": 207.86, + "Low": 205.79, + "Close": 207.52 + }, + { + "Date": "2025-05-23", + "Open": 206.62, + "High": 206.83, + "Low": 205.6, + "Close": 206.41 + }, + { + "Date": "2025-05-26", + "Open": 205.45, + "High": 206.31, + "Low": 205.24, + "Close": 206.04 + }, + { + "Date": "2025-05-27", + "Open": 205.84, + "High": 207.09, + "Low": 204.75, + "Close": 205.78 + }, + { + "Date": "2025-05-28", + "Open": 203.97, + "High": 204.23, + "Low": 203.95, + "Close": 204.23 + }, + { + "Date": "2025-05-29", + "Open": 202.26, + "High": 203.82, + "Low": 201.83, + "Close": 203.49 + }, + { + "Date": "2025-05-30", + "Open": 201.88, + "High": 203.77, + "Low": 199.91, + "Close": 201.62 + }, + { + "Date": "2025-06-02", + "Open": 201.67, + "High": 202.33, + "Low": 200.18, + "Close": 201.65 + }, + { + "Date": "2025-06-03", + "Open": 200.18, + "High": 202.16, + "Low": 198.46, + "Close": 200.46 + }, + { + "Date": "2025-06-04", + "Open": 199.98, + "High": 201.84, + "Low": 198.49, + "Close": 199.42 + }, + { + "Date": "2025-06-05", + "Open": 199.6, + "High": 201.07, + "Low": 199.46, + "Close": 200.74 + }, + { + "Date": "2025-06-06", + "Open": 202.07, + "High": 203.96, + "Low": 200.85, + "Close": 203.31 + }, + { + "Date": "2025-06-09", + "Open": 202.02, + "High": 203.92, + "Low": 200.35, + "Close": 202.19 + }, + { + "Date": "2025-06-10", + "Open": 200.88, + "High": 202.7, + "Low": 199.06, + "Close": 200.81 + }, + { + "Date": "2025-06-11", + "Open": 198.92, + "High": 199.22, + "Low": 198.67, + "Close": 198.98 + }, + { + "Date": "2025-06-12", + "Open": 200.04, + "High": 200.28, + "Low": 198.93, + "Close": 200.03 + }, + { + "Date": "2025-06-13", + "Open": 199.54, + "High": 199.56, + "Low": 199.37, + "Close": 199.46 + }, + { + "Date": "2025-06-16", + "Open": 200.74, + "High": 201.1, + "Low": 199.3, + "Close": 199.31 + }, + { + "Date": "2025-06-17", + "Open": 200.32, + "High": 202.23, + "Low": 198.89, + "Close": 201.73 + } +] \ No newline at end of file diff --git a/angular/src/app/chart/image/amazon.png b/angular/src/app/chart/image/amazon.png new file mode 100644 index 0000000..2805452 Binary files /dev/null and b/angular/src/app/chart/image/amazon.png differ diff --git a/angular/src/app/chart/image/google.png b/angular/src/app/chart/image/google.png new file mode 100644 index 0000000..2509038 Binary files /dev/null and b/angular/src/app/chart/image/google.png differ diff --git a/angular/src/app/chart/image/microsoft.png b/angular/src/app/chart/image/microsoft.png new file mode 100644 index 0000000..60dc2d4 Binary files /dev/null and b/angular/src/app/chart/image/microsoft.png differ diff --git a/angular/src/app/chart/image/tesla.png b/angular/src/app/chart/image/tesla.png new file mode 100644 index 0000000..5fc6954 Binary files /dev/null and b/angular/src/app/chart/image/tesla.png differ diff --git a/angular/src/app/chart/stockForecasting/stockForecast.component.css b/angular/src/app/chart/stockForecasting/stockForecast.component.css new file mode 100644 index 0000000..76fcf9c --- /dev/null +++ b/angular/src/app/chart/stockForecasting/stockForecast.component.css @@ -0,0 +1,153 @@ +.para { + padding-top: 5px; +} + +.stock-info { + display: flex; + align-items: flex-start; + gap: 16px; + margin-left: 10px; + padding: 5px; +} + +.price { + font-size: 20px; + font-weight: bold; + padding-right: 2px; +} + +.e-dropdown { + padding: 5px 10px; + display: flex; + align-items: center; + gap: 8px; + width: 100%; +} + +.e-dropdown option { + display: flex; + align-items: center; + gap: 8px; +} + +[data-icon] { + position: relative; + padding-left: 25px; +} + +[data-icon]::before { + content: ''; + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 20px; + height: 20px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +[data-icon="e-logo-msft"]::before { + background-image: url('../image/microsoft.png'); +} + +[data-icon="e-logo-goog"]::before { + background-image: url('../image/google.png'); +} + +[data-icon="e-logo-amzn"]::before { + background-image: url('../image/amazon.png'); +} + +[data-icon="e-logo-tsla"]::before { + background-image: url('../image/tesla.png'); +} + +.control-section { + display: flex; + flex-direction: column; +} + +.sidebar { + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px; +} + +.stock-selection { + padding: 5px; +} + +.main-content { + flex-grow: 1; + display: flex; + flex-direction: column; +} + +.control-bar { + display: flex; + justify-content: space-between; + padding: 10px 20px; +} + +.range-buttons .e-btn-group { + display: flex; + gap: 10px; +} + +.chart-controls { + display: flex; + align-items: center; + gap: 10px; +} + +.chart-container { + position: relative; + flex-grow: 1; +} + +#chartWrapper { + height: 100%; +} + +#stock-change { + margin: 0; +} + +.chart-action-button { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + background-color: #6f16ef; + border: none; + border-radius: 8px; + cursor: pointer; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + padding: 0; +} + +.chart-action-button:hover { + background-color: #5811c9; +} + +.chart-action-button .e-btn-icon.e-icons { + color: #fff; + font-size: 20px; +} + +.chart-spinner-overlay { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: none; +} + +.chart-spinner-overlay .e-spinner { + width: 20px; + height: 20px; +} \ No newline at end of file diff --git a/angular/src/app/chart/stockForecasting/stockForecast.component.html b/angular/src/app/chart/stockForecasting/stockForecast.component.html new file mode 100644 index 0000000..816f16a --- /dev/null +++ b/angular/src/app/chart/stockForecasting/stockForecast.component.html @@ -0,0 +1,55 @@ +
+ +
+
+
+
+ + + +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+ + + + + + +
+
+
\ No newline at end of file diff --git a/angular/src/app/chart/stockForecasting/stockForecast.component.ts b/angular/src/app/chart/stockForecasting/stockForecast.component.ts new file mode 100644 index 0000000..3ae481a --- /dev/null +++ b/angular/src/app/chart/stockForecasting/stockForecast.component.ts @@ -0,0 +1,254 @@ +import { Component, ViewChild, AfterViewInit } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { CommonModule } from '@angular/common'; +import { ChartModule, ChartComponent, CandleSeriesService, LineSeriesService, HiloOpenCloseSeriesService, DateTimeService, CrosshairService, TooltipService, LegendService } from '@syncfusion/ej2-angular-charts'; +import { ButtonModule } from '@syncfusion/ej2-angular-buttons'; +import msftData from '../data/msft-data.json'; +import googData from '../data/goog-data.json'; +import amznData from '../data/amzn-data.json'; +import tslaData from '../data/tsla-data.json'; + +interface StockInfo { + symbol: string; + text: string; + close: number; + change: number; + percentChange: number; +} + +interface ChartPoint { + date: Date; + high: number; + low: number; + open: number; + close: number; +} + +@Component({ + selector: 'app-stock-forecast', + templateUrl: './stockForecast.component.html', + styleUrls: ['./stockForecast.component.css'], + standalone: true, + imports: [CommonModule, FormsModule, ChartModule, ButtonModule], + providers: [CandleSeriesService, LineSeriesService, HiloOpenCloseSeriesService, DateTimeService, CrosshairService, TooltipService, LegendService] +}) +export class StockForecastComponent implements AfterViewInit { + @ViewChild('chart', { static: true }) chartObject!: ChartComponent; + + selectedSymbol: string = 'MSFT'; + selectedSeriesType: string = 'Candle'; + selectedRange: number = 3; + chartData: ChartPoint[] = []; + stripStartDate: Date = new Date(); + stripEndDate: Date = new Date(); + selectedStockInfo: StockInfo = this.getDefaultStockInfo('MSFT'); + isSpinnerVisible: boolean = false; + + stocks = [ + { symbol: 'MSFT', text: 'Microsoft Corp', icon: '../image/microsoft.png' }, + { symbol: 'GOOG', text: 'Alphabet Inc', icon: '../image/google.png' }, + { symbol: 'AMZN', text: 'Amazon Inc', icon: '../image/amazon.png' }, + { symbol: 'TSLA', text: 'Tesla Inc', icon: '../image/tesla.png' } + ]; + + seriesOptions: string[] = ['Candle', 'Line', 'HiloOpenClose']; + + public primaryXAxis = { + valueType: 'DateTime', + labelFormat: 'MMM yyyy', + crosshairTooltip: { enable: true }, + majorGridLines: { width: 0 }, + stripLines: [{ start: this.stripStartDate, end: this.stripEndDate, color: '#E0E0E0' }] + }; + + public primaryYAxis = { + rangePadding: 'None', + labelFormat: 'n0', + lineStyle: { width: 0 }, + majorTickLines: { width: 0 } + }; + + public legendSettings = { visible: false }; + public tooltip = { enable: true, shared: true, header: '' }; + public crosshair = { enable: true, lineType: 'Vertical' }; + public chartArea = { border: { width: 0 } }; + public width = '100%'; + public theme: string = this.getTheme(); + + ngAfterViewInit(): void { + this.loadChartData(); + } + + private getTheme(): string { + const mode = window.location.href.includes('dark') ? 'Dark' : 'Light'; + return `Material${mode}`; + } + + public onChartLoad(args: any): void { + args.chart.theme = this.getTheme(); + } + + private getDefaultStockInfo(symbol: string): StockInfo { + switch (symbol) { + case 'MSFT': + return { symbol: 'MSFT', text: 'Microsoft Corp', close: 138.35, change: -2.0, percentChange: -0.22 }; + case 'GOOG': + return { symbol: 'GOOG', text: 'Alphabet Inc', close: 152.83, change: -2.0, percentChange: -0.22 }; + case 'AMZN': + return { symbol: 'AMZN', text: 'Amazon Inc', close: 222.27, change: -2.0, percentChange: -0.22 }; + case 'TSLA': + return { symbol: 'TSLA', text: 'Tesla Inc', close: 201.73, change: -2.0, percentChange: -0.22 }; + default: + return { symbol, text: '', close: 0.0, change: 0.0, percentChange: 0.0 }; + } + } + + private loadChartData(): void { + try { + let json: any[] = []; + if (this.selectedSymbol === 'GOOG') { + json = googData; + } else if (this.selectedSymbol === 'AMZN') { + json = amznData; + } else if (this.selectedSymbol === 'TSLA') { + json = tslaData; + } else { + json = msftData; + this.selectedSymbol = 'MSFT'; + } + + if (!json || json.length === 0) { + console.warn(`No data found for symbol: ${this.selectedSymbol}`); + this.chartData = []; + this.renderChart(); + return; + } + + const allData: ChartPoint[] = json.map((d: any) => ({ + date: new Date(d.date || d.Date), + high: Number(d.high ?? d.High), + low: Number(d.low ?? d.Low), + open: Number(d.open ?? d.Open), + close: Number(d.close ?? d.Close) + })); + + this.chartData = this.filterChartData(allData, this.selectedRange); + this.renderChart(); + this.updateStockInfoDisplay(); + } catch (error) { + console.error('Error loading chart data:', error); + this.chartData = []; + this.renderChart(); + } + } + + private filterChartData(allData: ChartPoint[], months: number): ChartPoint[] { + if (allData.length) { + this.stripStartDate = allData[0].date; + this.stripEndDate = allData[allData.length - 1].date; + } else { + this.stripStartDate = this.stripEndDate = new Date(); + } + const latestDate = new Date(Math.max(...allData.map(p => p.date.getTime()))); + const cutoffDate = new Date(latestDate); + const intendedMonth = latestDate.getMonth() - months + 1; + cutoffDate.setMonth(intendedMonth); + if (cutoffDate.getMonth() !== intendedMonth) { + cutoffDate.setDate(0); + } + return allData.filter(p => p.date >= cutoffDate).sort((a, b) => a.date.getTime() - b.date.getTime()); + } + + public renderChart(): void { + if (this.chartObject) { + this.chartObject.series = [{ + dataSource: this.chartData, + xName: 'date', + type: this.selectedSeriesType as 'Candle' | 'Line' | 'HiloOpenClose', + name: this.selectedStockInfo.text, + high: this.selectedSeriesType !== 'Line' ? 'high' : undefined, + low: this.selectedSeriesType !== 'Line' ? 'low' : undefined, + open: this.selectedSeriesType !== 'Line' ? 'open' : undefined, + close: this.selectedSeriesType !== 'Line' ? 'close' : undefined, + yName: this.selectedSeriesType === 'Line' ? 'close' : undefined, + bearFillColor: this.selectedSeriesType === 'Candle' ? '#2ecd71' : undefined, + bullFillColor: this.selectedSeriesType === 'Candle' ? '#e74c3d' : undefined + }]; + this.chartObject.primaryXAxis.stripLines = [{ + start: this.stripStartDate, + end: this.stripEndDate, + color: '#E0E0E0' + }]; + this.chartObject.refresh(); + } + } + + public updateStockInfoDisplay(): void { + this.selectedStockInfo = this.getDefaultStockInfo(this.selectedSymbol); + } + + public onStockChange(): void { + this.loadChartData(); + } + + public onRangeChange(months: number): void { + this.selectedRange = months; + this.loadChartData(); + } + + public async onAIAssistClick(): Promise { + this.isSpinnerVisible = true; + try { + const prompt = this.generatePrompt(this.chartData); + const response = await this.getAzureChatAIRequest({ messages: [{ role: 'user', content: prompt }] }); + if (response) { + const processed = this.convertAIResponseToChartData(response, this.chartData); + if (processed.length > 0) { + this.chartData = [...this.chartData, ...processed]; + this.renderChart(); + } + } else { + console.error('AI response is null'); + } + } catch (err) { + console.error('Error during AI processing:', err); + } finally { + setTimeout(() => (this.isSpinnerVisible = false), 1000); + } + } + + private generatePrompt(historicalData: ChartPoint[]): string { + const lastDate = historicalData.length > 0 ? historicalData[historicalData.length - 1].date : new Date(); + const startDate = new Date(lastDate); + startDate.setDate(lastDate.getDate() + 1); + let prompt = `Generate 35 realistic financial data points suitable for candlestick, OHLC, and line charts in ':' format. Use the following format for each row: yyyy-MM-dd:High:Low:Open:Close\nStart from ${startDate.toISOString().split('T')[0]} and increment by 1 day for each row.\n`; + historicalData.forEach(data => { + prompt += `${data.date.toISOString().split('T')[0]}:${data.high}:${data.low}:${data.open}:${data.close}\n`; + }); + prompt += `\n### STRICT OUTPUT REQUIREMENTS ###\n- Generate EXACTLY 35 rows of data.\n- Each row must be in the format: yyyy-MM-dd:High:Low:Open:Close.\n- The predictions must include a natural mix of both upward and downward trends.\n- NO missing or duplicate dates.\n- NO extra text, explanations, or labels—just raw data.\n- Ensure that each day's values are **realistic** and follow stock market behavior.`; + return prompt; + } + + private convertAIResponseToChartData(response: string, originalData: ChartPoint[]): ChartPoint[] { + const rows = response.split('\n').filter(row => row.trim().length > 0); + const processedData: ChartPoint[] = []; + for (const row of rows) { + const parts = row.split(':'); + if (parts.length < 5) continue; + const dateStr = parts[0].trim(); + const date = new Date(dateStr); + if (isNaN(date.getTime())) continue; + const high = parseFloat(parts[1].trim()) || 0; + const low = parseFloat(parts[2].trim()) || 0; + const open = parseFloat(parts[3].trim()) || 0; + const close = parseFloat(parts[4].trim()) || 0; + processedData.push({ date, high, low, open, close }); + } + return processedData; + } + + private async getAzureChatAIRequest(data: { messages: { role: string; content: string }[] }): Promise { + console.log('API call placeholder - implement with real endpoint and key', data); + return null; + } +} \ No newline at end of file diff --git a/react/src/ai-components/chart/data/amzn-data.json b/react/src/ai-components/chart/data/amzn-data.json new file mode 100644 index 0000000..afdbe95 --- /dev/null +++ b/react/src/ai-components/chart/data/amzn-data.json @@ -0,0 +1,1829 @@ +[ + { + "Date": "2024-07-01", + "Open": 192.19, + "High": 192.9, + "Low": 191.49, + "Close": 192.09 + }, + { + "Date": "2024-07-02", + "Open": 190.43, + "High": 190.85, + "Low": 189.69, + "Close": 190.34 + }, + { + "Date": "2024-07-03", + "Open": 192.96, + "High": 193.18, + "Low": 191.23, + "Close": 192.87 + }, + { + "Date": "2024-07-04", + "Open": 195.7, + "High": 198.88, + "Low": 195.46, + "Close": 198.11 + }, + { + "Date": "2024-07-05", + "Open": 197.2, + "High": 200.88, + "Low": 193.9, + "Close": 194.67 + }, + { + "Date": "2024-07-08", + "Open": 190.88, + "High": 192.6, + "Low": 190.19, + "Close": 191.82 + }, + { + "Date": "2024-07-09", + "Open": 194.89, + "High": 197.87, + "Low": 192.26, + "Close": 194.36 + }, + { + "Date": "2024-07-10", + "Open": 190.99, + "High": 192.37, + "Low": 189.83, + "Close": 191.04 + }, + { + "Date": "2024-07-11", + "Open": 194.27, + "High": 196.85, + "Low": 191.88, + "Close": 193.23 + }, + { + "Date": "2024-07-12", + "Open": 191.67, + "High": 193.12, + "Low": 188.07, + "Close": 190.86 + }, + { + "Date": "2024-07-15", + "Open": 192.59, + "High": 192.73, + "Low": 191.99, + "Close": 192.57 + }, + { + "Date": "2024-07-16", + "Open": 193.34, + "High": 195.1, + "Low": 192.36, + "Close": 193.96 + }, + { + "Date": "2024-07-17", + "Open": 194.46, + "High": 195.2, + "Low": 193.46, + "Close": 194.16 + }, + { + "Date": "2024-07-18", + "Open": 196.32, + "High": 198.22, + "Low": 194.28, + "Close": 196.39 + }, + { + "Date": "2024-07-19", + "Open": 199.01, + "High": 201.2, + "Low": 198.41, + "Close": 198.68 + }, + { + "Date": "2024-07-22", + "Open": 198.64, + "High": 199.98, + "Low": 197.48, + "Close": 197.93 + }, + { + "Date": "2024-07-23", + "Open": 199.45, + "High": 202.09, + "Low": 198.77, + "Close": 199.35 + }, + { + "Date": "2024-07-24", + "Open": 202.32, + "High": 202.98, + "Low": 198.69, + "Close": 201.41 + }, + { + "Date": "2024-07-25", + "Open": 204.2, + "High": 204.73, + "Low": 201.08, + "Close": 203.53 + }, + { + "Date": "2024-07-26", + "Open": 206.69, + "High": 207.5, + "Low": 203.42, + "Close": 204.02 + }, + { + "Date": "2024-07-29", + "Open": 201.51, + "High": 203.13, + "Low": 198.05, + "Close": 202.99 + }, + { + "Date": "2024-07-30", + "Open": 203.27, + "High": 205.79, + "Low": 201.22, + "Close": 202.57 + }, + { + "Date": "2024-07-31", + "Open": 214.69, + "High": 214.78, + "Low": 213.21, + "Close": 214.04 + }, + { + "Date": "2024-08-01", + "Open": 208.66, + "High": 210.44, + "Low": 208.19, + "Close": 209.46 + }, + { + "Date": "2024-08-02", + "Open": 209.26, + "High": 209.86, + "Low": 207.57, + "Close": 208.31 + }, + { + "Date": "2024-08-05", + "Open": 205.62, + "High": 206.82, + "Low": 205.5, + "Close": 206.54 + }, + { + "Date": "2024-08-06", + "Open": 206.32, + "High": 206.84, + "Low": 206.0, + "Close": 206.72 + }, + { + "Date": "2024-08-07", + "Open": 205.79, + "High": 206.03, + "Low": 205.1, + "Close": 205.97 + }, + { + "Date": "2024-08-08", + "Open": 207.89, + "High": 210.01, + "Low": 204.93, + "Close": 208.97 + }, + { + "Date": "2024-08-09", + "Open": 205.51, + "High": 206.31, + "Low": 202.09, + "Close": 204.19 + }, + { + "Date": "2024-08-12", + "Open": 203.98, + "High": 204.0, + "Low": 201.04, + "Close": 203.99 + }, + { + "Date": "2024-08-13", + "Open": 206.41, + "High": 207.58, + "Low": 204.61, + "Close": 207.38 + }, + { + "Date": "2024-08-14", + "Open": 208.28, + "High": 208.69, + "Low": 207.82, + "Close": 207.83 + }, + { + "Date": "2024-08-15", + "Open": 209.35, + "High": 210.26, + "Low": 205.57, + "Close": 208.55 + }, + { + "Date": "2024-08-16", + "Open": 208.34, + "High": 212.07, + "Low": 204.61, + "Close": 209.24 + }, + { + "Date": "2024-08-19", + "Open": 220.26, + "High": 220.85, + "Low": 219.53, + "Close": 220.1 + }, + { + "Date": "2024-08-20", + "Open": 218.45, + "High": 219.96, + "Low": 218.0, + "Close": 219.01 + }, + { + "Date": "2024-08-21", + "Open": 216.92, + "High": 217.62, + "Low": 215.93, + "Close": 216.22 + }, + { + "Date": "2024-08-22", + "Open": 216.61, + "High": 217.0, + "Low": 215.1, + "Close": 215.98 + }, + { + "Date": "2024-08-23", + "Open": 216.54, + "High": 217.42, + "Low": 215.69, + "Close": 216.38 + }, + { + "Date": "2024-08-26", + "Open": 215.55, + "High": 216.05, + "Low": 214.14, + "Close": 215.1 + }, + { + "Date": "2024-08-27", + "Open": 218.7, + "High": 219.12, + "Low": 217.8, + "Close": 218.41 + }, + { + "Date": "2024-08-28", + "Open": 220.42, + "High": 221.68, + "Low": 219.76, + "Close": 221.38 + }, + { + "Date": "2024-08-29", + "Open": 217.49, + "High": 218.53, + "Low": 217.06, + "Close": 217.91 + }, + { + "Date": "2024-08-30", + "Open": 218.01, + "High": 219.04, + "Low": 217.44, + "Close": 218.74 + }, + { + "Date": "2024-09-02", + "Open": 219.12, + "High": 222.26, + "Low": 215.9, + "Close": 221.34 + }, + { + "Date": "2024-09-03", + "Open": 220.74, + "High": 224.84, + "Low": 218.47, + "Close": 221.51 + }, + { + "Date": "2024-09-04", + "Open": 220.55, + "High": 223.45, + "Low": 219.76, + "Close": 222.13 + }, + { + "Date": "2024-09-05", + "Open": 220.15, + "High": 220.71, + "Low": 218.92, + "Close": 220.47 + }, + { + "Date": "2024-09-06", + "Open": 218.6, + "High": 220.56, + "Low": 217.74, + "Close": 218.16 + }, + { + "Date": "2024-09-09", + "Open": 214.35, + "High": 217.2, + "Low": 210.95, + "Close": 211.85 + }, + { + "Date": "2024-09-10", + "Open": 209.42, + "High": 210.5, + "Low": 209.07, + "Close": 209.12 + }, + { + "Date": "2024-09-11", + "Open": 207.41, + "High": 208.47, + "Low": 204.12, + "Close": 206.97 + }, + { + "Date": "2024-09-12", + "Open": 204.14, + "High": 205.98, + "Low": 200.22, + "Close": 201.97 + }, + { + "Date": "2024-09-13", + "Open": 201.24, + "High": 205.15, + "Low": 200.33, + "Close": 201.03 + }, + { + "Date": "2024-09-16", + "Open": 199.11, + "High": 199.39, + "Low": 195.31, + "Close": 198.86 + }, + { + "Date": "2024-09-17", + "Open": 196.76, + "High": 199.76, + "Low": 193.67, + "Close": 198.32 + }, + { + "Date": "2024-09-18", + "Open": 194.53, + "High": 195.14, + "Low": 192.88, + "Close": 194.31 + }, + { + "Date": "2024-09-19", + "Open": 192.02, + "High": 195.09, + "Low": 191.11, + "Close": 191.26 + }, + { + "Date": "2024-09-20", + "Open": 187.81, + "High": 189.19, + "Low": 186.3, + "Close": 186.64 + }, + { + "Date": "2024-09-23", + "Open": 184.36, + "High": 187.13, + "Low": 182.15, + "Close": 183.64 + }, + { + "Date": "2024-09-24", + "Open": 182.18, + "High": 184.64, + "Low": 179.59, + "Close": 181.42 + }, + { + "Date": "2024-09-25", + "Open": 184.19, + "High": 184.25, + "Low": 180.86, + "Close": 182.16 + }, + { + "Date": "2024-09-26", + "Open": 179.79, + "High": 180.58, + "Low": 179.64, + "Close": 180.06 + }, + { + "Date": "2024-09-27", + "Open": 183.16, + "High": 185.58, + "Low": 180.75, + "Close": 183.72 + }, + { + "Date": "2024-09-30", + "Open": 187.33, + "High": 187.71, + "Low": 183.86, + "Close": 187.22 + }, + { + "Date": "2024-10-01", + "Open": 188.65, + "High": 188.75, + "Low": 187.8, + "Close": 187.84 + }, + { + "Date": "2024-10-02", + "Open": 186.21, + "High": 186.78, + "Low": 183.75, + "Close": 184.39 + }, + { + "Date": "2024-10-03", + "Open": 187.18, + "High": 190.08, + "Low": 185.05, + "Close": 187.32 + }, + { + "Date": "2024-10-04", + "Open": 184.08, + "High": 186.25, + "Low": 180.59, + "Close": 182.53 + }, + { + "Date": "2024-10-07", + "Open": 179.66, + "High": 182.99, + "Low": 176.27, + "Close": 180.66 + }, + { + "Date": "2024-10-08", + "Open": 182.76, + "High": 186.4, + "Low": 179.53, + "Close": 184.99 + }, + { + "Date": "2024-10-09", + "Open": 184.5, + "High": 186.52, + "Low": 181.11, + "Close": 186.42 + }, + { + "Date": "2024-10-10", + "Open": 187.48, + "High": 189.39, + "Low": 186.48, + "Close": 187.78 + }, + { + "Date": "2024-10-11", + "Open": 191.06, + "High": 194.69, + "Low": 190.55, + "Close": 193.48 + }, + { + "Date": "2024-10-14", + "Open": 193.98, + "High": 196.02, + "Low": 192.42, + "Close": 192.83 + }, + { + "Date": "2024-10-15", + "Open": 189.99, + "High": 191.31, + "Low": 186.61, + "Close": 189.98 + }, + { + "Date": "2024-10-16", + "Open": 188.25, + "High": 188.94, + "Low": 187.39, + "Close": 187.46 + }, + { + "Date": "2024-10-17", + "Open": 189.99, + "High": 190.44, + "Low": 189.92, + "Close": 190.16 + }, + { + "Date": "2024-10-18", + "Open": 193.75, + "High": 196.45, + "Low": 192.38, + "Close": 195.2 + }, + { + "Date": "2024-10-21", + "Open": 196.39, + "High": 200.25, + "Low": 195.65, + "Close": 196.27 + }, + { + "Date": "2024-10-22", + "Open": 193.59, + "High": 195.98, + "Low": 193.26, + "Close": 194.4 + }, + { + "Date": "2024-10-23", + "Open": 191.6, + "High": 194.19, + "Low": 190.19, + "Close": 193.23 + }, + { + "Date": "2024-10-24", + "Open": 191.61, + "High": 191.68, + "Low": 189.06, + "Close": 189.12 + }, + { + "Date": "2024-10-25", + "Open": 188.53, + "High": 190.95, + "Low": 187.83, + "Close": 190.24 + }, + { + "Date": "2024-10-28", + "Open": 190.78, + "High": 190.85, + "Low": 190.03, + "Close": 190.68 + }, + { + "Date": "2024-10-29", + "Open": 192.5, + "High": 192.63, + "Low": 189.37, + "Close": 192.45 + }, + { + "Date": "2024-10-30", + "Open": 195.2, + "High": 196.64, + "Low": 192.47, + "Close": 193.05 + }, + { + "Date": "2024-10-31", + "Open": 195.96, + "High": 199.34, + "Low": 193.96, + "Close": 197.35 + }, + { + "Date": "2024-11-01", + "Open": 195.71, + "High": 197.28, + "Low": 192.66, + "Close": 195.82 + }, + { + "Date": "2024-11-04", + "Open": 196.1, + "High": 197.4, + "Low": 193.82, + "Close": 195.77 + }, + { + "Date": "2024-11-05", + "Open": 194.6, + "High": 194.79, + "Low": 194.02, + "Close": 194.53 + }, + { + "Date": "2024-11-06", + "Open": 191.0, + "High": 193.86, + "Low": 189.85, + "Close": 192.58 + }, + { + "Date": "2024-11-07", + "Open": 189.1, + "High": 190.47, + "Low": 188.36, + "Close": 189.17 + }, + { + "Date": "2024-11-08", + "Open": 187.13, + "High": 188.9, + "Low": 184.56, + "Close": 185.4 + }, + { + "Date": "2024-11-11", + "Open": 186.41, + "High": 190.01, + "Low": 185.6, + "Close": 189.86 + }, + { + "Date": "2024-11-12", + "Open": 191.36, + "High": 191.42, + "Low": 191.18, + "Close": 191.35 + }, + { + "Date": "2024-11-13", + "Open": 194.67, + "High": 198.53, + "Low": 191.8, + "Close": 193.42 + }, + { + "Date": "2024-11-14", + "Open": 197.25, + "High": 198.59, + "Low": 195.02, + "Close": 196.06 + }, + { + "Date": "2024-11-15", + "Open": 199.47, + "High": 201.98, + "Low": 195.49, + "Close": 198.1 + }, + { + "Date": "2024-11-18", + "Open": 198.79, + "High": 200.55, + "Low": 195.52, + "Close": 199.53 + }, + { + "Date": "2024-11-19", + "Open": 198.33, + "High": 199.06, + "Low": 197.8, + "Close": 198.08 + }, + { + "Date": "2024-11-20", + "Open": 197.7, + "High": 199.95, + "Low": 196.06, + "Close": 198.09 + }, + { + "Date": "2024-11-21", + "Open": 196.88, + "High": 197.63, + "Low": 196.7, + "Close": 197.27 + }, + { + "Date": "2024-11-22", + "Open": 194.57, + "High": 195.2, + "Low": 191.02, + "Close": 193.02 + }, + { + "Date": "2024-11-25", + "Open": 189.27, + "High": 190.92, + "Low": 188.07, + "Close": 189.39 + }, + { + "Date": "2024-11-26", + "Open": 187.09, + "High": 188.12, + "Low": 186.13, + "Close": 187.32 + }, + { + "Date": "2024-11-27", + "Open": 186.73, + "High": 188.27, + "Low": 183.88, + "Close": 186.22 + }, + { + "Date": "2024-11-28", + "Open": 186.66, + "High": 190.04, + "Low": 182.98, + "Close": 189.97 + }, + { + "Date": "2024-11-29", + "Open": 191.89, + "High": 194.08, + "Low": 191.07, + "Close": 193.31 + }, + { + "Date": "2024-12-02", + "Open": 190.06, + "High": 190.25, + "Low": 187.75, + "Close": 188.71 + }, + { + "Date": "2024-12-03", + "Open": 188.97, + "High": 189.8, + "Low": 188.38, + "Close": 189.78 + }, + { + "Date": "2024-12-04", + "Open": 192.27, + "High": 195.81, + "Low": 191.38, + "Close": 195.26 + }, + { + "Date": "2024-12-05", + "Open": 191.95, + "High": 193.78, + "Low": 188.66, + "Close": 191.23 + }, + { + "Date": "2024-12-06", + "Open": 194.02, + "High": 196.79, + "Low": 191.51, + "Close": 193.49 + }, + { + "Date": "2024-12-09", + "Open": 196.7, + "High": 199.49, + "Low": 195.09, + "Close": 195.64 + }, + { + "Date": "2024-12-10", + "Open": 194.77, + "High": 196.67, + "Low": 192.89, + "Close": 195.91 + }, + { + "Date": "2024-12-11", + "Open": 194.98, + "High": 198.15, + "Low": 192.08, + "Close": 192.86 + }, + { + "Date": "2024-12-12", + "Open": 192.9, + "High": 195.34, + "Low": 189.5, + "Close": 190.89 + }, + { + "Date": "2024-12-13", + "Open": 193.27, + "High": 193.35, + "Low": 190.87, + "Close": 191.32 + }, + { + "Date": "2024-12-16", + "Open": 193.34, + "High": 193.73, + "Low": 189.73, + "Close": 190.55 + }, + { + "Date": "2024-12-17", + "Open": 189.68, + "High": 193.18, + "Low": 186.14, + "Close": 187.61 + }, + { + "Date": "2024-12-18", + "Open": 184.81, + "High": 187.6, + "Low": 183.76, + "Close": 187.12 + }, + { + "Date": "2024-12-19", + "Open": 189.94, + "High": 193.17, + "Low": 188.73, + "Close": 189.54 + }, + { + "Date": "2024-12-20", + "Open": 191.52, + "High": 192.12, + "Low": 188.86, + "Close": 190.69 + }, + { + "Date": "2024-12-23", + "Open": 188.2, + "High": 190.33, + "Low": 185.65, + "Close": 189.03 + }, + { + "Date": "2024-12-24", + "Open": 189.97, + "High": 190.99, + "Low": 186.23, + "Close": 189.82 + }, + { + "Date": "2024-12-25", + "Open": 189.41, + "High": 189.62, + "Low": 187.56, + "Close": 189.47 + }, + { + "Date": "2024-12-26", + "Open": 192.06, + "High": 192.92, + "Low": 188.35, + "Close": 189.02 + }, + { + "Date": "2024-12-27", + "Open": 186.58, + "High": 188.72, + "Low": 184.74, + "Close": 187.08 + }, + { + "Date": "2024-12-30", + "Open": 189.41, + "High": 192.12, + "Low": 187.98, + "Close": 190.09 + }, + { + "Date": "2024-12-31", + "Open": 192.13, + "High": 194.13, + "Low": 189.28, + "Close": 191.55 + }, + { + "Date": "2025-01-01", + "Open": 191.2, + "High": 193.81, + "Low": 190.1, + "Close": 191.68 + }, + { + "Date": "2025-01-02", + "Open": 188.0, + "High": 190.58, + "Low": 185.8, + "Close": 187.84 + }, + { + "Date": "2025-01-03", + "Open": 184.94, + "High": 188.34, + "Low": 182.09, + "Close": 187.13 + }, + { + "Date": "2025-01-06", + "Open": 186.96, + "High": 187.37, + "Low": 185.26, + "Close": 185.76 + }, + { + "Date": "2025-01-07", + "Open": 184.81, + "High": 187.11, + "Low": 181.22, + "Close": 183.96 + }, + { + "Date": "2025-01-08", + "Open": 187.46, + "High": 189.82, + "Low": 184.69, + "Close": 185.39 + }, + { + "Date": "2025-01-09", + "Open": 185.28, + "High": 186.48, + "Low": 182.28, + "Close": 186.45 + }, + { + "Date": "2025-01-10", + "Open": 189.6, + "High": 192.09, + "Low": 187.7, + "Close": 188.59 + }, + { + "Date": "2025-01-13", + "Open": 190.5, + "High": 192.25, + "Low": 188.59, + "Close": 191.56 + }, + { + "Date": "2025-01-14", + "Open": 190.87, + "High": 192.38, + "Low": 189.85, + "Close": 190.37 + }, + { + "Date": "2025-01-15", + "Open": 192.4, + "High": 192.71, + "Low": 189.79, + "Close": 190.67 + }, + { + "Date": "2025-01-16", + "Open": 191.37, + "High": 193.49, + "Low": 190.47, + "Close": 191.98 + }, + { + "Date": "2025-01-17", + "Open": 195.65, + "High": 195.73, + "Low": 194.55, + "Close": 194.57 + }, + { + "Date": "2025-01-20", + "Open": 196.03, + "High": 197.75, + "Low": 193.92, + "Close": 196.32 + }, + { + "Date": "2025-01-21", + "Open": 195.26, + "High": 197.99, + "Low": 192.95, + "Close": 193.96 + }, + { + "Date": "2025-01-22", + "Open": 194.56, + "High": 195.19, + "Low": 193.74, + "Close": 195.09 + }, + { + "Date": "2025-01-23", + "Open": 194.8, + "High": 195.29, + "Low": 193.59, + "Close": 194.8 + }, + { + "Date": "2025-01-24", + "Open": 194.71, + "High": 196.74, + "Low": 194.28, + "Close": 196.02 + }, + { + "Date": "2025-01-27", + "Open": 195.27, + "High": 196.04, + "Low": 192.61, + "Close": 194.22 + }, + { + "Date": "2025-01-28", + "Open": 196.06, + "High": 199.1, + "Low": 192.26, + "Close": 195.15 + }, + { + "Date": "2025-01-29", + "Open": 193.13, + "High": 193.8, + "Low": 192.23, + "Close": 193.04 + }, + { + "Date": "2025-01-30", + "Open": 194.52, + "High": 197.86, + "Low": 193.59, + "Close": 194.45 + }, + { + "Date": "2025-01-31", + "Open": 197.99, + "High": 199.06, + "Low": 196.81, + "Close": 196.94 + }, + { + "Date": "2025-02-03", + "Open": 196.51, + "High": 200.41, + "Low": 195.5, + "Close": 200.12 + }, + { + "Date": "2025-02-04", + "Open": 200.87, + "High": 203.0, + "Low": 197.66, + "Close": 199.47 + }, + { + "Date": "2025-02-05", + "Open": 200.9, + "High": 203.92, + "Low": 200.64, + "Close": 201.25 + }, + { + "Date": "2025-02-06", + "Open": 197.93, + "High": 200.72, + "Low": 195.59, + "Close": 199.07 + }, + { + "Date": "2025-02-07", + "Open": 197.64, + "High": 197.92, + "Low": 194.88, + "Close": 195.31 + }, + { + "Date": "2025-02-10", + "Open": 193.4, + "High": 195.13, + "Low": 193.1, + "Close": 193.45 + }, + { + "Date": "2025-02-11", + "Open": 195.24, + "High": 195.72, + "Low": 194.97, + "Close": 195.68 + }, + { + "Date": "2025-02-12", + "Open": 197.99, + "High": 200.15, + "Low": 196.64, + "Close": 197.67 + }, + { + "Date": "2025-02-13", + "Open": 200.35, + "High": 202.8, + "Low": 197.77, + "Close": 200.36 + }, + { + "Date": "2025-02-14", + "Open": 202.5, + "High": 203.28, + "Low": 200.92, + "Close": 201.61 + }, + { + "Date": "2025-02-17", + "Open": 202.19, + "High": 203.2, + "Low": 198.23, + "Close": 203.16 + }, + { + "Date": "2025-02-18", + "Open": 201.78, + "High": 202.59, + "Low": 198.35, + "Close": 200.95 + }, + { + "Date": "2025-02-19", + "Open": 197.84, + "High": 200.44, + "Low": 194.78, + "Close": 198.81 + }, + { + "Date": "2025-02-20", + "Open": 197.35, + "High": 199.67, + "Low": 197.32, + "Close": 197.85 + }, + { + "Date": "2025-02-21", + "Open": 201.6, + "High": 202.21, + "Low": 197.95, + "Close": 198.49 + }, + { + "Date": "2025-02-24", + "Open": 198.12, + "High": 199.48, + "Low": 194.53, + "Close": 194.94 + }, + { + "Date": "2025-02-25", + "Open": 198.54, + "High": 201.16, + "Low": 196.12, + "Close": 199.04 + }, + { + "Date": "2025-02-26", + "Open": 199.24, + "High": 201.2, + "Low": 197.42, + "Close": 199.3 + }, + { + "Date": "2025-02-27", + "Open": 198.09, + "High": 200.08, + "Low": 197.34, + "Close": 199.98 + }, + { + "Date": "2025-02-28", + "Open": 196.19, + "High": 198.79, + "Low": 192.44, + "Close": 193.75 + }, + { + "Date": "2025-03-03", + "Open": 190.71, + "High": 192.19, + "Low": 189.7, + "Close": 192.02 + }, + { + "Date": "2025-03-04", + "Open": 188.55, + "High": 189.71, + "Low": 185.24, + "Close": 185.68 + }, + { + "Date": "2025-03-05", + "Open": 188.34, + "High": 191.18, + "Low": 185.09, + "Close": 186.68 + }, + { + "Date": "2025-03-06", + "Open": 188.94, + "High": 191.64, + "Low": 186.93, + "Close": 190.76 + }, + { + "Date": "2025-03-07", + "Open": 186.96, + "High": 189.67, + "Low": 186.35, + "Close": 188.76 + }, + { + "Date": "2025-03-10", + "Open": 188.08, + "High": 190.01, + "Low": 184.45, + "Close": 188.09 + }, + { + "Date": "2025-03-11", + "Open": 184.38, + "High": 187.34, + "Low": 181.96, + "Close": 186.02 + }, + { + "Date": "2025-03-12", + "Open": 188.31, + "High": 190.35, + "Low": 187.27, + "Close": 189.34 + }, + { + "Date": "2025-03-13", + "Open": 187.9, + "High": 191.49, + "Low": 186.94, + "Close": 191.21 + }, + { + "Date": "2025-03-14", + "Open": 194.0, + "High": 194.05, + "Low": 191.15, + "Close": 191.25 + }, + { + "Date": "2025-03-17", + "Open": 190.23, + "High": 192.58, + "Low": 187.41, + "Close": 189.36 + }, + { + "Date": "2025-03-18", + "Open": 187.86, + "High": 190.87, + "Low": 184.83, + "Close": 186.75 + }, + { + "Date": "2025-03-19", + "Open": 188.11, + "High": 189.74, + "Low": 187.99, + "Close": 188.33 + }, + { + "Date": "2025-03-20", + "Open": 189.83, + "High": 191.59, + "Low": 187.47, + "Close": 189.65 + }, + { + "Date": "2025-03-21", + "Open": 189.5, + "High": 191.04, + "Low": 188.55, + "Close": 190.91 + }, + { + "Date": "2025-03-24", + "Open": 187.76, + "High": 187.87, + "Low": 186.22, + "Close": 186.66 + }, + { + "Date": "2025-03-25", + "Open": 185.86, + "High": 188.35, + "Low": 184.76, + "Close": 186.33 + }, + { + "Date": "2025-03-26", + "Open": 188.92, + "High": 192.13, + "Low": 187.26, + "Close": 190.52 + }, + { + "Date": "2025-03-27", + "Open": 187.73, + "High": 190.94, + "Low": 184.35, + "Close": 188.07 + }, + { + "Date": "2025-03-28", + "Open": 190.09, + "High": 191.87, + "Low": 189.81, + "Close": 190.76 + }, + { + "Date": "2025-03-31", + "Open": 191.16, + "High": 194.32, + "Low": 189.5, + "Close": 192.15 + }, + { + "Date": "2025-04-01", + "Open": 191.3, + "High": 193.89, + "Low": 189.82, + "Close": 190.23 + }, + { + "Date": "2025-04-02", + "Open": 189.23, + "High": 191.67, + "Low": 185.46, + "Close": 188.48 + }, + { + "Date": "2025-04-03", + "Open": 188.84, + "High": 189.28, + "Low": 185.68, + "Close": 188.02 + }, + { + "Date": "2025-04-04", + "Open": 190.86, + "High": 191.66, + "Low": 187.81, + "Close": 188.6 + }, + { + "Date": "2025-04-07", + "Open": 192.34, + "High": 192.76, + "Low": 189.23, + "Close": 189.28 + }, + { + "Date": "2025-04-08", + "Open": 189.05, + "High": 189.96, + "Low": 185.34, + "Close": 185.78 + }, + { + "Date": "2025-04-09", + "Open": 185.49, + "High": 186.5, + "Low": 184.83, + "Close": 185.56 + }, + { + "Date": "2025-04-10", + "Open": 183.37, + "High": 184.43, + "Low": 181.95, + "Close": 183.73 + }, + { + "Date": "2025-04-11", + "Open": 185.13, + "High": 187.46, + "Low": 181.93, + "Close": 185.33 + }, + { + "Date": "2025-04-14", + "Open": 187.6, + "High": 190.27, + "Low": 185.51, + "Close": 189.95 + }, + { + "Date": "2025-04-15", + "Open": 190.88, + "High": 192.97, + "Low": 189.63, + "Close": 189.77 + }, + { + "Date": "2025-04-16", + "Open": 188.61, + "High": 190.9, + "Low": 184.9, + "Close": 189.62 + }, + { + "Date": "2025-04-17", + "Open": 186.83, + "High": 188.31, + "Low": 185.75, + "Close": 188.21 + }, + { + "Date": "2025-04-18", + "Open": 186.04, + "High": 187.81, + "Low": 184.15, + "Close": 186.6 + }, + { + "Date": "2025-04-21", + "Open": 189.18, + "High": 192.56, + "Low": 187.6, + "Close": 188.35 + }, + { + "Date": "2025-04-22", + "Open": 187.13, + "High": 190.76, + "Low": 184.98, + "Close": 185.83 + }, + { + "Date": "2025-04-23", + "Open": 186.47, + "High": 188.85, + "Low": 183.38, + "Close": 187.23 + }, + { + "Date": "2025-04-24", + "Open": 185.73, + "High": 187.7, + "Low": 183.64, + "Close": 187.69 + }, + { + "Date": "2025-04-25", + "Open": 189.65, + "High": 192.07, + "Low": 187.21, + "Close": 189.75 + }, + { + "Date": "2025-04-28", + "Open": 193.47, + "High": 193.87, + "Low": 193.21, + "Close": 193.78 + }, + { + "Date": "2025-04-29", + "Open": 193.54, + "High": 195.51, + "Low": 192.22, + "Close": 193.62 + }, + { + "Date": "2025-04-30", + "Open": 191.5, + "High": 192.72, + "Low": 190.41, + "Close": 190.9 + }, + { + "Date": "2025-05-01", + "Open": 192.24, + "High": 193.01, + "Low": 190.3, + "Close": 191.79 + }, + { + "Date": "2025-05-02", + "Open": 194.01, + "High": 196.64, + "Low": 192.33, + "Close": 195.35 + }, + { + "Date": "2025-05-05", + "Open": 197.69, + "High": 199.7, + "Low": 195.4, + "Close": 197.83 + }, + { + "Date": "2025-05-06", + "Open": 199.14, + "High": 202.89, + "Low": 198.53, + "Close": 201.23 + }, + { + "Date": "2025-05-07", + "Open": 198.75, + "High": 200.37, + "Low": 197.53, + "Close": 197.61 + }, + { + "Date": "2025-05-08", + "Open": 197.85, + "High": 199.24, + "Low": 197.76, + "Close": 198.39 + }, + { + "Date": "2025-05-09", + "Open": 201.13, + "High": 201.43, + "Low": 197.67, + "Close": 200.76 + }, + { + "Date": "2025-05-12", + "Open": 204.11, + "High": 205.45, + "Low": 201.65, + "Close": 203.74 + }, + { + "Date": "2025-05-13", + "Open": 199.88, + "High": 203.56, + "Low": 199.68, + "Close": 203.56 + }, + { + "Date": "2025-05-14", + "Open": 201.28, + "High": 201.93, + "Low": 199.91, + "Close": 201.15 + }, + { + "Date": "2025-05-15", + "Open": 202.73, + "High": 202.81, + "Low": 199.58, + "Close": 202.36 + }, + { + "Date": "2025-05-16", + "Open": 199.21, + "High": 200.9, + "Low": 198.57, + "Close": 198.67 + }, + { + "Date": "2025-05-19", + "Open": 200.23, + "High": 202.05, + "Low": 199.73, + "Close": 201.91 + }, + { + "Date": "2025-05-20", + "Open": 197.93, + "High": 201.53, + "Low": 194.8, + "Close": 198.84 + }, + { + "Date": "2025-05-21", + "Open": 202.61, + "High": 202.75, + "Low": 199.63, + "Close": 199.92 + }, + { + "Date": "2025-05-22", + "Open": 197.65, + "High": 199.18, + "Low": 195.77, + "Close": 197.07 + }, + { + "Date": "2025-05-23", + "Open": 196.25, + "High": 200.11, + "Low": 194.25, + "Close": 198.89 + }, + { + "Date": "2025-05-26", + "Open": 198.76, + "High": 201.5, + "Low": 195.7, + "Close": 200.12 + }, + { + "Date": "2025-05-27", + "Open": 203.56, + "High": 205.91, + "Low": 201.23, + "Close": 205.48 + }, + { + "Date": "2025-05-28", + "Open": 205.67, + "High": 206.43, + "Low": 201.91, + "Close": 204.41 + }, + { + "Date": "2025-05-29", + "Open": 206.86, + "High": 207.2, + "Low": 204.17, + "Close": 207.08 + }, + { + "Date": "2025-05-30", + "Open": 210.74, + "High": 213.69, + "Low": 207.95, + "Close": 210.41 + }, + { + "Date": "2025-06-02", + "Open": 206.73, + "High": 208.0, + "Low": 206.48, + "Close": 207.99 + }, + { + "Date": "2025-06-03", + "Open": 208.64, + "High": 209.48, + "Low": 207.25, + "Close": 208.92 + }, + { + "Date": "2025-06-04", + "Open": 210.59, + "High": 214.67, + "Low": 209.45, + "Close": 212.58 + }, + { + "Date": "2025-06-05", + "Open": 213.38, + "High": 215.6, + "Low": 211.92, + "Close": 215.17 + }, + { + "Date": "2025-06-06", + "Open": 219.46, + "High": 223.49, + "Low": 217.62, + "Close": 219.74 + }, + { + "Date": "2025-06-09", + "Open": 221.38, + "High": 224.98, + "Low": 219.12, + "Close": 221.56 + }, + { + "Date": "2025-06-10", + "Open": 223.59, + "High": 224.61, + "Low": 221.75, + "Close": 222.67 + }, + { + "Date": "2025-06-11", + "Open": 225.79, + "High": 228.61, + "Low": 222.57, + "Close": 225.86 + }, + { + "Date": "2025-06-12", + "Open": 225.06, + "High": 228.81, + "Low": 224.42, + "Close": 224.88 + }, + { + "Date": "2025-06-13", + "Open": 222.65, + "High": 223.66, + "Low": 221.0, + "Close": 221.64 + }, + { + "Date": "2025-06-16", + "Open": 220.44, + "High": 224.6, + "Low": 217.53, + "Close": 221.15 + }, + { + "Date": "2025-06-17", + "Open": 223.78, + "High": 224.78, + "Low": 219.9, + "Close": 220.36 + }, + { + "Date": "2025-06-18", + "Open": 220.9, + "High": 224.65, + "Low": 220.56, + "Close": 220.67 + }, + { + "Date": "2025-06-19", + "Open": 222.72, + "High": 226.72, + "Low": 222.49, + "Close": 224.24 + }, + { + "Date": "2025-06-20", + "Open": 227.64, + "High": 231.94, + "Low": 223.7, + "Close": 228.93 + }, + { + "Date": "2025-06-23", + "Open": 224.53, + "High": 226.19, + "Low": 220.62, + "Close": 220.96 + }, + { + "Date": "2025-06-24", + "Open": 223.74, + "High": 228.12, + "Low": 222.5, + "Close": 222.54 + }, + { + "Date": "2025-06-25", + "Open": 221.04, + "High": 221.12, + "Low": 219.05, + "Close": 219.11 + }, + { + "Date": "2025-06-26", + "Open": 219.3, + "High": 223.46, + "Low": 217.06, + "Close": 217.25 + }, + { + "Date": "2025-06-27", + "Open": 219.77, + "High": 221.14, + "Low": 216.28, + "Close": 218.01 + }, + { + "Date": "2025-06-30", + "Open": 222.01, + "High": 223.18, + "Low": 217.87, + "Close": 222.27 + } +] \ No newline at end of file diff --git a/react/src/ai-components/chart/data/goog-data.json b/react/src/ai-components/chart/data/goog-data.json new file mode 100644 index 0000000..8020787 --- /dev/null +++ b/react/src/ai-components/chart/data/goog-data.json @@ -0,0 +1,1766 @@ +[ + { + "Date": "2024-07-01", + "Open": 182.76, + "High": 182.93, + "Low": 180.89, + "Close": 181.03 + }, + { + "Date": "2024-07-02", + "Open": 181.55, + "High": 183.05, + "Low": 180.46, + "Close": 182.3 + }, + { + "Date": "2024-07-03", + "Open": 183.21, + "High": 184.23, + "Low": 182.08, + "Close": 182.48 + }, + { + "Date": "2024-07-04", + "Open": 181.46, + "High": 182.33, + "Low": 181.17, + "Close": 182.01 + }, + { + "Date": "2024-07-05", + "Open": 182.45, + "High": 182.62, + "Low": 181.51, + "Close": 182.3 + }, + { + "Date": "2024-07-08", + "Open": 182.28, + "High": 183.21, + "Low": 180.64, + "Close": 183.18 + }, + { + "Date": "2024-07-09", + "Open": 183.77, + "High": 185.5, + "Low": 183.27, + "Close": 184.72 + }, + { + "Date": "2024-07-10", + "Open": 183.81, + "High": 184.51, + "Low": 183.24, + "Close": 183.37 + }, + { + "Date": "2024-07-11", + "Open": 182.33, + "High": 183.18, + "Low": 181.1, + "Close": 182.08 + }, + { + "Date": "2024-07-12", + "Open": 182.46, + "High": 183.11, + "Low": 182.01, + "Close": 182.93 + }, + { + "Date": "2024-07-15", + "Open": 181.92, + "High": 182.7, + "Low": 181.0, + "Close": 181.32 + }, + { + "Date": "2024-07-16", + "Open": 179.87, + "High": 181.27, + "Low": 178.86, + "Close": 180.89 + }, + { + "Date": "2024-07-17", + "Open": 180.69, + "High": 181.92, + "Low": 180.57, + "Close": 181.31 + }, + { + "Date": "2024-07-18", + "Open": 180.07, + "High": 181.29, + "Low": 178.68, + "Close": 179.83 + }, + { + "Date": "2024-07-19", + "Open": 179.95, + "High": 181.33, + "Low": 179.41, + "Close": 181.06 + }, + { + "Date": "2024-07-22", + "Open": 181.66, + "High": 183.16, + "Low": 180.45, + "Close": 180.69 + }, + { + "Date": "2024-07-23", + "Open": 179.54, + "High": 180.07, + "Low": 179.19, + "Close": 179.94 + }, + { + "Date": "2024-07-24", + "Open": 180.77, + "High": 180.95, + "Low": 179.69, + "Close": 180.68 + }, + { + "Date": "2024-07-25", + "Open": 182.07, + "High": 182.42, + "Low": 180.36, + "Close": 181.19 + }, + { + "Date": "2024-07-26", + "Open": 181.49, + "High": 182.47, + "Low": 180.38, + "Close": 180.55 + }, + { + "Date": "2024-07-29", + "Open": 179.17, + "High": 179.44, + "Low": 178.41, + "Close": 178.48 + }, + { + "Date": "2024-07-30", + "Open": 178.4, + "High": 178.58, + "Low": 177.48, + "Close": 178.49 + }, + { + "Date": "2024-07-31", + "Open": 179.36, + "High": 181.33, + "Low": 179.25, + "Close": 180.07 + }, + { + "Date": "2024-08-01", + "Open": 179.38, + "High": 179.68, + "Low": 177.78, + "Close": 178.19 + }, + { + "Date": "2024-08-02", + "Open": 179.54, + "High": 180.55, + "Low": 179.24, + "Close": 180.54 + }, + { + "Date": "2024-08-05", + "Open": 179.56, + "High": 179.71, + "Low": 179.21, + "Close": 179.48 + }, + { + "Date": "2024-08-06", + "Open": 180.14, + "High": 181.08, + "Low": 178.94, + "Close": 180.78 + }, + { + "Date": "2024-08-07", + "Open": 179.8, + "High": 181.44, + "Low": 177.88, + "Close": 180.21 + }, + { + "Date": "2024-08-08", + "Open": 178.72, + "High": 179.69, + "Low": 177.55, + "Close": 179.18 + }, + { + "Date": "2024-08-09", + "Open": 179.32, + "High": 180.65, + "Low": 179.02, + "Close": 180.6 + }, + { + "Date": "2024-08-12", + "Open": 181.35, + "High": 182.2, + "Low": 180.41, + "Close": 180.84 + }, + { + "Date": "2024-08-13", + "Open": 182.31, + "High": 184.13, + "Low": 180.81, + "Close": 180.82 + }, + { + "Date": "2024-08-14", + "Open": 181.88, + "High": 183.16, + "Low": 181.46, + "Close": 182.32 + }, + { + "Date": "2024-08-15", + "Open": 180.82, + "High": 182.16, + "Low": 179.01, + "Close": 181.79 + }, + { + "Date": "2024-08-16", + "Open": 182.04, + "High": 182.76, + "Low": 180.81, + "Close": 182.45 + }, + { + "Date": "2024-08-19", + "Open": 182.32, + "High": 184.01, + "Low": 181.31, + "Close": 182.04 + }, + { + "Date": "2024-08-20", + "Open": 181.98, + "High": 183.81, + "Low": 181.47, + "Close": 182.61 + }, + { + "Date": "2024-08-21", + "Open": 182.5, + "High": 184.25, + "Low": 181.96, + "Close": 182.09 + }, + { + "Date": "2024-08-22", + "Open": 182.61, + "High": 184.05, + "Low": 181.94, + "Close": 182.99 + }, + { + "Date": "2024-08-23", + "Open": 182.66, + "High": 182.88, + "Low": 182.39, + "Close": 182.7 + }, + { + "Date": "2024-08-26", + "Open": 183.55, + "High": 185.32, + "Low": 181.74, + "Close": 181.86 + }, + { + "Date": "2024-08-27", + "Open": 183.25, + "High": 184.56, + "Low": 181.28, + "Close": 183.05 + }, + { + "Date": "2024-08-28", + "Open": 181.75, + "High": 183.67, + "Low": 181.12, + "Close": 182.28 + }, + { + "Date": "2024-08-29", + "Open": 183.4, + "High": 184.53, + "Low": 181.8, + "Close": 182.69 + }, + { + "Date": "2024-08-30", + "Open": 183.24, + "High": 184.61, + "Low": 181.85, + "Close": 182.99 + }, + { + "Date": "2024-09-02", + "Open": 183.46, + "High": 185.46, + "Low": 182.49, + "Close": 183.47 + }, + { + "Date": "2024-09-03", + "Open": 182.47, + "High": 183.49, + "Low": 181.06, + "Close": 181.79 + }, + { + "Date": "2024-09-04", + "Open": 180.39, + "High": 181.93, + "Low": 179.37, + "Close": 181.74 + }, + { + "Date": "2024-09-05", + "Open": 182.33, + "High": 182.55, + "Low": 180.7, + "Close": 182.32 + }, + { + "Date": "2024-09-06", + "Open": 181.43, + "High": 182.24, + "Low": 179.63, + "Close": 179.85 + }, + { + "Date": "2024-09-09", + "Open": 180.11, + "High": 181.7, + "Low": 179.89, + "Close": 180.82 + }, + { + "Date": "2024-09-10", + "Open": 180.89, + "High": 181.72, + "Low": 179.72, + "Close": 180.47 + }, + { + "Date": "2024-09-11", + "Open": 179.11, + "High": 180.67, + "Low": 177.61, + "Close": 179.79 + }, + { + "Date": "2024-09-12", + "Open": 180.47, + "High": 181.77, + "Low": 179.81, + "Close": 181.56 + }, + { + "Date": "2024-09-13", + "Open": 180.58, + "High": 181.82, + "Low": 179.17, + "Close": 180.64 + }, + { + "Date": "2024-09-16", + "Open": 180.39, + "High": 182.2, + "Low": 179.07, + "Close": 180.01 + }, + { + "Date": "2024-09-17", + "Open": 180.64, + "High": 182.37, + "Low": 178.85, + "Close": 179.66 + }, + { + "Date": "2024-09-18", + "Open": 178.25, + "High": 179.98, + "Low": 176.72, + "Close": 178.9 + }, + { + "Date": "2024-09-19", + "Open": 177.58, + "High": 178.15, + "Low": 176.06, + "Close": 177.66 + }, + { + "Date": "2024-09-20", + "Open": 177.31, + "High": 178.49, + "Low": 176.84, + "Close": 177.81 + }, + { + "Date": "2024-09-23", + "Open": 178.8, + "High": 180.77, + "Low": 177.04, + "Close": 179.58 + }, + { + "Date": "2024-09-24", + "Open": 180.48, + "High": 182.28, + "Low": 179.7, + "Close": 181.32 + }, + { + "Date": "2024-09-25", + "Open": 182.04, + "High": 183.17, + "Low": 181.17, + "Close": 182.66 + }, + { + "Date": "2024-09-26", + "Open": 181.66, + "High": 182.08, + "Low": 180.64, + "Close": 181.79 + }, + { + "Date": "2024-09-27", + "Open": 181.88, + "High": 183.8, + "Low": 179.93, + "Close": 180.1 + }, + { + "Date": "2024-09-30", + "Open": 179.87, + "High": 180.15, + "Low": 178.31, + "Close": 179.02 + }, + { + "Date": "2024-10-01", + "Open": 178.74, + "High": 179.04, + "Low": 177.16, + "Close": 178.06 + }, + { + "Date": "2024-10-02", + "Open": 176.6, + "High": 177.13, + "Low": 175.72, + "Close": 176.24 + }, + { + "Date": "2024-10-03", + "Open": 176.42, + "High": 177.53, + "Low": 175.13, + "Close": 176.82 + }, + { + "Date": "2024-10-04", + "Open": 176.11, + "High": 176.24, + "Low": 174.34, + "Close": 175.98 + }, + { + "Date": "2024-10-07", + "Open": 176.93, + "High": 177.52, + "Low": 176.24, + "Close": 176.6 + }, + { + "Date": "2024-10-08", + "Open": 177.06, + "High": 178.91, + "Low": 176.88, + "Close": 178.1 + }, + { + "Date": "2024-10-09", + "Open": 177.53, + "High": 177.69, + "Low": 177.23, + "Close": 177.47 + }, + { + "Date": "2024-10-10", + "Open": 178.81, + "High": 179.42, + "Low": 177.33, + "Close": 178.27 + }, + { + "Date": "2024-10-11", + "Open": 178.7, + "High": 180.63, + "Low": 177.07, + "Close": 180.04 + }, + { + "Date": "2024-10-14", + "Open": 181.24, + "High": 182.38, + "Low": 179.84, + "Close": 180.09 + }, + { + "Date": "2024-10-15", + "Open": 181.43, + "High": 181.95, + "Low": 180.64, + "Close": 181.36 + }, + { + "Date": "2024-10-16", + "Open": 182.64, + "High": 183.53, + "Low": 181.74, + "Close": 183.03 + }, + { + "Date": "2024-10-17", + "Open": 183.87, + "High": 184.1, + "Low": 183.64, + "Close": 183.67 + }, + { + "Date": "2024-10-18", + "Open": 184.55, + "High": 185.66, + "Low": 183.57, + "Close": 184.99 + }, + { + "Date": "2024-10-21", + "Open": 184.97, + "High": 186.91, + "Low": 184.38, + "Close": 184.87 + }, + { + "Date": "2024-10-22", + "Open": 185.59, + "High": 187.25, + "Low": 185.11, + "Close": 187.13 + }, + { + "Date": "2024-10-23", + "Open": 188.39, + "High": 189.05, + "Low": 187.91, + "Close": 188.13 + }, + { + "Date": "2024-10-24", + "Open": 186.99, + "High": 188.52, + "Low": 185.59, + "Close": 186.56 + }, + { + "Date": "2024-10-25", + "Open": 185.86, + "High": 186.6, + "Low": 184.37, + "Close": 184.78 + }, + { + "Date": "2024-10-28", + "Open": 184.55, + "High": 185.28, + "Low": 184.36, + "Close": 185.15 + }, + { + "Date": "2024-10-29", + "Open": 186.11, + "High": 186.6, + "Low": 185.37, + "Close": 186.26 + }, + { + "Date": "2024-10-30", + "Open": 187.5, + "High": 188.25, + "Low": 186.65, + "Close": 187.99 + }, + { + "Date": "2024-10-31", + "Open": 186.58, + "High": 187.79, + "Low": 185.11, + "Close": 186.28 + }, + { + "Date": "2024-11-01", + "Open": 187.29, + "High": 188.14, + "Low": 185.36, + "Close": 186.37 + }, + { + "Date": "2024-11-04", + "Open": 185.49, + "High": 186.18, + "Low": 183.88, + "Close": 185.86 + }, + { + "Date": "2024-11-05", + "Open": 186.0, + "High": 187.18, + "Low": 185.75, + "Close": 186.18 + }, + { + "Date": "2024-11-06", + "Open": 186.47, + "High": 188.35, + "Low": 185.97, + "Close": 186.04 + }, + { + "Date": "2024-11-07", + "Open": 185.9, + "High": 187.46, + "Low": 184.28, + "Close": 186.14 + }, + { + "Date": "2024-11-08", + "Open": 185.14, + "High": 185.58, + "Low": 184.41, + "Close": 185.02 + }, + { + "Date": "2024-11-11", + "Open": 183.57, + "High": 184.98, + "Low": 183.22, + "Close": 184.67 + }, + { + "Date": "2024-11-12", + "Open": 185.93, + "High": 186.79, + "Low": 184.41, + "Close": 185.88 + }, + { + "Date": "2024-11-13", + "Open": 187.22, + "High": 187.72, + "Low": 187.02, + "Close": 187.56 + }, + { + "Date": "2024-11-14", + "Open": 187.66, + "High": 189.41, + "Low": 185.97, + "Close": 186.45 + }, + { + "Date": "2024-11-15", + "Open": 185.0, + "High": 186.21, + "Low": 184.75, + "Close": 185.03 + }, + { + "Date": "2024-11-18", + "Open": 184.09, + "High": 184.97, + "Low": 182.75, + "Close": 183.55 + }, + { + "Date": "2024-11-19", + "Open": 182.84, + "High": 183.95, + "Low": 181.32, + "Close": 183.38 + }, + { + "Date": "2024-11-20", + "Open": 182.19, + "High": 183.31, + "Low": 182.06, + "Close": 183.16 + }, + { + "Date": "2024-11-21", + "Open": 183.52, + "High": 184.02, + "Low": 181.93, + "Close": 183.31 + }, + { + "Date": "2024-11-22", + "Open": 184.65, + "High": 186.2, + "Low": 183.88, + "Close": 184.26 + }, + { + "Date": "2024-11-25", + "Open": 184.54, + "High": 184.94, + "Low": 184.42, + "Close": 184.86 + }, + { + "Date": "2024-11-26", + "Open": 185.82, + "High": 187.13, + "Low": 184.93, + "Close": 186.04 + }, + { + "Date": "2024-11-27", + "Open": 186.59, + "High": 188.51, + "Low": 184.65, + "Close": 187.8 + }, + { + "Date": "2024-11-28", + "Open": 187.69, + "High": 189.66, + "Low": 186.96, + "Close": 188.79 + }, + { + "Date": "2024-11-29", + "Open": 190.0, + "High": 190.96, + "Low": 188.47, + "Close": 189.71 + }, + { + "Date": "2024-12-02", + "Open": 188.23, + "High": 189.55, + "Low": 187.21, + "Close": 187.87 + }, + { + "Date": "2024-12-03", + "Open": 187.11, + "High": 188.3, + "Low": 185.48, + "Close": 188.18 + }, + { + "Date": "2024-12-04", + "Open": 188.78, + "High": 189.88, + "Low": 187.21, + "Close": 189.69 + }, + { + "Date": "2024-12-05", + "Open": 190.77, + "High": 192.17, + "Low": 189.11, + "Close": 191.24 + }, + { + "Date": "2024-12-06", + "Open": 190.11, + "High": 190.81, + "Low": 188.68, + "Close": 189.15 + }, + { + "Date": "2024-12-09", + "Open": 189.16, + "High": 189.48, + "Low": 188.61, + "Close": 189.31 + }, + { + "Date": "2024-12-10", + "Open": 189.42, + "High": 190.84, + "Low": 187.53, + "Close": 188.73 + }, + { + "Date": "2024-12-11", + "Open": 188.93, + "High": 190.37, + "Low": 187.84, + "Close": 188.13 + }, + { + "Date": "2024-12-12", + "Open": 187.05, + "High": 188.09, + "Low": 185.88, + "Close": 186.9 + }, + { + "Date": "2024-12-13", + "Open": 185.67, + "High": 186.75, + "Low": 184.62, + "Close": 186.64 + }, + { + "Date": "2024-12-16", + "Open": 186.76, + "High": 187.47, + "Low": 185.74, + "Close": 187.11 + }, + { + "Date": "2024-12-17", + "Open": 186.07, + "High": 187.55, + "Low": 184.12, + "Close": 187.52 + }, + { + "Date": "2024-12-18", + "Open": 187.59, + "High": 188.3, + "Low": 186.18, + "Close": 188.09 + }, + { + "Date": "2024-12-19", + "Open": 189.25, + "High": 190.13, + "Low": 188.69, + "Close": 189.03 + }, + { + "Date": "2024-12-20", + "Open": 187.91, + "High": 188.24, + "Low": 186.3, + "Close": 186.5 + }, + { + "Date": "2024-12-23", + "Open": 185.52, + "High": 187.42, + "Low": 184.88, + "Close": 186.85 + }, + { + "Date": "2024-12-24", + "Open": 185.49, + "High": 186.04, + "Low": 184.3, + "Close": 184.78 + }, + { + "Date": "2024-12-25", + "Open": 184.98, + "High": 186.0, + "Low": 183.72, + "Close": 184.27 + }, + { + "Date": "2024-12-26", + "Open": 185.23, + "High": 185.76, + "Low": 184.48, + "Close": 185.58 + }, + { + "Date": "2024-12-27", + "Open": 184.76, + "High": 185.69, + "Low": 183.19, + "Close": 183.96 + }, + { + "Date": "2024-12-30", + "Open": 183.31, + "High": 184.85, + "Low": 182.97, + "Close": 183.74 + }, + { + "Date": "2024-12-31", + "Open": 185.14, + "High": 186.61, + "Low": 184.77, + "Close": 185.68 + }, + { + "Date": "2025-01-01", + "Open": 184.42, + "High": 185.4, + "Low": 182.54, + "Close": 183.3 + }, + { + "Date": "2025-01-02", + "Open": 182.67, + "High": 184.46, + "Low": 181.97, + "Close": 183.53 + }, + { + "Date": "2025-01-03", + "Open": 184.96, + "High": 185.16, + "Low": 184.64, + "Close": 185.14 + }, + { + "Date": "2025-01-06", + "Open": 184.6, + "High": 185.47, + "Low": 183.36, + "Close": 185.45 + }, + { + "Date": "2025-01-07", + "Open": 184.05, + "High": 184.63, + "Low": 182.7, + "Close": 184.07 + }, + { + "Date": "2025-01-08", + "Open": 184.48, + "High": 184.68, + "Low": 183.96, + "Close": 184.03 + }, + { + "Date": "2025-01-09", + "Open": 185.22, + "High": 185.44, + "Low": 183.62, + "Close": 184.39 + }, + { + "Date": "2025-01-10", + "Open": 183.46, + "High": 183.62, + "Low": 182.59, + "Close": 182.87 + }, + { + "Date": "2025-01-13", + "Open": 183.98, + "High": 184.83, + "Low": 183.06, + "Close": 184.5 + }, + { + "Date": "2025-01-14", + "Open": 183.93, + "High": 184.31, + "Low": 183.74, + "Close": 184.14 + }, + { + "Date": "2025-01-15", + "Open": 182.97, + "High": 184.23, + "Low": 182.03, + "Close": 183.05 + }, + { + "Date": "2025-01-16", + "Open": 183.7, + "High": 184.46, + "Low": 183.5, + "Close": 183.57 + }, + { + "Date": "2025-01-17", + "Open": 182.76, + "High": 184.69, + "Low": 182.0, + "Close": 184.4 + }, + { + "Date": "2025-01-20", + "Open": 184.63, + "High": 186.41, + "Low": 183.01, + "Close": 183.91 + }, + { + "Date": "2025-01-21", + "Open": 184.32, + "High": 185.36, + "Low": 182.86, + "Close": 183.6 + }, + { + "Date": "2025-01-22", + "Open": 182.94, + "High": 184.4, + "Low": 182.79, + "Close": 183.05 + }, + { + "Date": "2025-01-23", + "Open": 184.13, + "High": 186.0, + "Low": 182.77, + "Close": 183.77 + }, + { + "Date": "2025-01-24", + "Open": 182.45, + "High": 183.33, + "Low": 181.75, + "Close": 183.05 + }, + { + "Date": "2025-01-27", + "Open": 182.14, + "High": 183.1, + "Low": 181.75, + "Close": 182.49 + }, + { + "Date": "2025-01-28", + "Open": 181.43, + "High": 182.17, + "Low": 181.1, + "Close": 181.17 + }, + { + "Date": "2025-01-29", + "Open": 180.34, + "High": 181.02, + "Low": 179.78, + "Close": 180.87 + }, + { + "Date": "2025-01-30", + "Open": 180.27, + "High": 181.21, + "Low": 178.44, + "Close": 180.24 + }, + { + "Date": "2025-01-31", + "Open": 180.62, + "High": 182.53, + "Low": 179.72, + "Close": 181.02 + }, + { + "Date": "2025-02-03", + "Open": 180.48, + "High": 182.1, + "Low": 178.82, + "Close": 179.33 + }, + { + "Date": "2025-02-04", + "Open": 180.41, + "High": 180.6, + "Low": 179.28, + "Close": 179.8 + }, + { + "Date": "2025-02-05", + "Open": 180.85, + "High": 182.13, + "Low": 179.1, + "Close": 181.27 + }, + { + "Date": "2025-02-06", + "Open": 180.22, + "High": 181.29, + "Low": 178.28, + "Close": 178.73 + }, + { + "Date": "2025-02-07", + "Open": 178.17, + "High": 178.62, + "Low": 176.75, + "Close": 177.76 + }, + { + "Date": "2025-02-10", + "Open": 178.0, + "High": 178.79, + "Low": 176.36, + "Close": 178.58 + }, + { + "Date": "2025-02-11", + "Open": 177.4, + "High": 177.75, + "Low": 175.89, + "Close": 177.55 + }, + { + "Date": "2025-02-12", + "Open": 176.08, + "High": 176.38, + "Low": 174.73, + "Close": 174.94 + }, + { + "Date": "2025-02-13", + "Open": 176.36, + "High": 176.88, + "Low": 174.88, + "Close": 175.86 + }, + { + "Date": "2025-02-14", + "Open": 175.05, + "High": 176.79, + "Low": 174.39, + "Close": 175.81 + }, + { + "Date": "2025-02-17", + "Open": 174.91, + "High": 176.7, + "Low": 174.28, + "Close": 175.54 + }, + { + "Date": "2025-02-18", + "Open": 175.38, + "High": 176.73, + "Low": 174.44, + "Close": 174.73 + }, + { + "Date": "2025-02-19", + "Open": 174.36, + "High": 175.48, + "Low": 172.79, + "Close": 174.17 + }, + { + "Date": "2025-02-20", + "Open": 173.46, + "High": 173.83, + "Low": 172.1, + "Close": 172.75 + }, + { + "Date": "2025-02-21", + "Open": 172.46, + "High": 173.11, + "Low": 171.23, + "Close": 172.68 + }, + { + "Date": "2025-02-24", + "Open": 171.42, + "High": 171.87, + "Low": 169.51, + "Close": 170.55 + }, + { + "Date": "2025-02-25", + "Open": 169.72, + "High": 171.57, + "Low": 168.09, + "Close": 170.72 + }, + { + "Date": "2025-02-26", + "Open": 171.15, + "High": 172.25, + "Low": 169.73, + "Close": 172.19 + }, + { + "Date": "2025-02-27", + "Open": 171.46, + "High": 173.1, + "Low": 170.34, + "Close": 170.54 + }, + { + "Date": "2025-02-28", + "Open": 169.55, + "High": 169.82, + "Low": 167.91, + "Close": 168.12 + }, + { + "Date": "2025-03-03", + "Open": 167.68, + "High": 168.04, + "Low": 166.8, + "Close": 167.91 + }, + { + "Date": "2025-03-04", + "Open": 168.45, + "High": 168.94, + "Low": 168.28, + "Close": 168.66 + }, + { + "Date": "2025-03-05", + "Open": 169.21, + "High": 170.15, + "Low": 168.76, + "Close": 168.99 + }, + { + "Date": "2025-03-06", + "Open": 167.65, + "High": 167.76, + "Low": 166.61, + "Close": 167.06 + }, + { + "Date": "2025-03-07", + "Open": 166.73, + "High": 167.7, + "Low": 165.43, + "Close": 166.0 + }, + { + "Date": "2025-03-10", + "Open": 165.87, + "High": 167.24, + "Low": 165.39, + "Close": 167.12 + }, + { + "Date": "2025-03-11", + "Open": 168.44, + "High": 170.25, + "Low": 166.69, + "Close": 167.19 + }, + { + "Date": "2025-03-12", + "Open": 168.52, + "High": 169.66, + "Low": 167.15, + "Close": 168.58 + }, + { + "Date": "2025-03-13", + "Open": 168.74, + "High": 170.55, + "Low": 168.1, + "Close": 168.54 + }, + { + "Date": "2025-03-14", + "Open": 168.37, + "High": 169.58, + "Low": 167.88, + "Close": 168.97 + }, + { + "Date": "2025-03-17", + "Open": 170.32, + "High": 171.27, + "Low": 169.63, + "Close": 170.58 + }, + { + "Date": "2025-03-18", + "Open": 169.88, + "High": 170.62, + "Low": 169.23, + "Close": 169.37 + }, + { + "Date": "2025-03-19", + "Open": 170.32, + "High": 170.62, + "Low": 169.27, + "Close": 169.43 + }, + { + "Date": "2025-03-20", + "Open": 170.76, + "High": 171.12, + "Low": 169.08, + "Close": 170.27 + }, + { + "Date": "2025-03-21", + "Open": 171.13, + "High": 171.41, + "Low": 169.93, + "Close": 171.19 + }, + { + "Date": "2025-03-24", + "Open": 170.54, + "High": 171.13, + "Low": 169.5, + "Close": 170.76 + }, + { + "Date": "2025-03-25", + "Open": 169.98, + "High": 171.84, + "Low": 169.68, + "Close": 170.44 + }, + { + "Date": "2025-03-26", + "Open": 169.27, + "High": 170.28, + "Low": 168.47, + "Close": 170.02 + }, + { + "Date": "2025-03-27", + "Open": 170.6, + "High": 171.65, + "Low": 168.82, + "Close": 169.69 + }, + { + "Date": "2025-03-28", + "Open": 169.68, + "High": 171.36, + "Low": 167.75, + "Close": 169.72 + }, + { + "Date": "2025-03-31", + "Open": 168.65, + "High": 170.29, + "Low": 167.51, + "Close": 168.64 + }, + { + "Date": "2025-04-01", + "Open": 170.01, + "High": 170.38, + "Low": 169.9, + "Close": 170.29 + }, + { + "Date": "2025-04-02", + "Open": 171.5, + "High": 172.67, + "Low": 169.56, + "Close": 169.76 + }, + { + "Date": "2025-04-03", + "Open": 170.16, + "High": 170.69, + "Low": 168.29, + "Close": 170.5 + }, + { + "Date": "2025-04-04", + "Open": 170.25, + "High": 170.66, + "Low": 168.44, + "Close": 169.83 + }, + { + "Date": "2025-04-07", + "Open": 168.54, + "High": 169.76, + "Low": 166.66, + "Close": 167.64 + }, + { + "Date": "2025-04-08", + "Open": 167.16, + "High": 168.22, + "Low": 166.25, + "Close": 167.83 + }, + { + "Date": "2025-04-09", + "Open": 168.03, + "High": 168.33, + "Low": 167.79, + "Close": 167.94 + }, + { + "Date": "2025-04-10", + "Open": 169.09, + "High": 169.48, + "Low": 168.1, + "Close": 168.37 + }, + { + "Date": "2025-04-11", + "Open": 168.61, + "High": 168.97, + "Low": 167.83, + "Close": 168.61 + }, + { + "Date": "2025-04-14", + "Open": 169.97, + "High": 171.12, + "Low": 169.49, + "Close": 169.86 + }, + { + "Date": "2025-04-15", + "Open": 169.2, + "High": 170.0, + "Low": 167.33, + "Close": 168.28 + }, + { + "Date": "2025-04-16", + "Open": 168.12, + "High": 170.12, + "Low": 167.23, + "Close": 169.19 + }, + { + "Date": "2025-04-17", + "Open": 168.6, + "High": 169.43, + "Low": 167.44, + "Close": 168.29 + }, + { + "Date": "2025-04-18", + "Open": 168.94, + "High": 170.82, + "Low": 167.65, + "Close": 169.73 + }, + { + "Date": "2025-04-21", + "Open": 169.61, + "High": 170.29, + "Low": 168.66, + "Close": 169.85 + }, + { + "Date": "2025-04-22", + "Open": 170.37, + "High": 170.86, + "Low": 170.09, + "Close": 170.32 + }, + { + "Date": "2025-04-23", + "Open": 170.64, + "High": 170.96, + "Low": 169.44, + "Close": 169.65 + }, + { + "Date": "2025-04-24", + "Open": 168.62, + "High": 169.46, + "Low": 168.34, + "Close": 168.8 + }, + { + "Date": "2025-04-25", + "Open": 167.44, + "High": 167.82, + "Low": 165.81, + "Close": 166.25 + }, + { + "Date": "2025-04-28", + "Open": 165.72, + "High": 166.3, + "Low": 164.27, + "Close": 165.25 + }, + { + "Date": "2025-04-29", + "Open": 166.09, + "High": 167.47, + "Low": 164.77, + "Close": 166.96 + }, + { + "Date": "2025-04-30", + "Open": 166.06, + "High": 166.82, + "Low": 164.11, + "Close": 166.76 + }, + { + "Date": "2025-05-01", + "Open": 166.67, + "High": 168.42, + "Low": 164.95, + "Close": 165.04 + }, + { + "Date": "2025-05-02", + "Open": 163.83, + "High": 165.01, + "Low": 163.58, + "Close": 164.78 + }, + { + "Date": "2025-05-05", + "Open": 165.68, + "High": 166.42, + "Low": 164.25, + "Close": 166.03 + }, + { + "Date": "2025-05-06", + "Open": 164.97, + "High": 166.45, + "Low": 164.22, + "Close": 165.75 + }, + { + "Date": "2025-05-07", + "Open": 166.37, + "High": 167.26, + "Low": 165.77, + "Close": 166.69 + }, + { + "Date": "2025-05-08", + "Open": 165.5, + "High": 166.22, + "Low": 165.03, + "Close": 165.03 + }, + { + "Date": "2025-05-09", + "Open": 163.6, + "High": 163.74, + "Low": 162.1, + "Close": 162.41 + }, + { + "Date": "2025-05-12", + "Open": 161.51, + "High": 161.87, + "Low": 160.77, + "Close": 161.12 + }, + { + "Date": "2025-05-13", + "Open": 160.2, + "High": 160.65, + "Low": 159.1, + "Close": 160.22 + }, + { + "Date": "2025-05-14", + "Open": 161.25, + "High": 162.03, + "Low": 159.96, + "Close": 160.24 + }, + { + "Date": "2025-05-15", + "Open": 160.22, + "High": 160.62, + "Low": 158.41, + "Close": 160.23 + }, + { + "Date": "2025-05-16", + "Open": 159.65, + "High": 159.81, + "Low": 158.72, + "Close": 159.06 + }, + { + "Date": "2025-05-19", + "Open": 159.21, + "High": 159.8, + "Low": 159.03, + "Close": 159.59 + }, + { + "Date": "2025-05-20", + "Open": 159.37, + "High": 160.79, + "Low": 158.58, + "Close": 159.82 + }, + { + "Date": "2025-05-21", + "Open": 161.05, + "High": 162.95, + "Low": 159.44, + "Close": 161.81 + }, + { + "Date": "2025-05-22", + "Open": 162.62, + "High": 163.48, + "Low": 161.0, + "Close": 161.56 + }, + { + "Date": "2025-05-23", + "Open": 160.74, + "High": 161.34, + "Low": 160.34, + "Close": 160.58 + }, + { + "Date": "2025-05-26", + "Open": 160.4, + "High": 161.4, + "Low": 159.11, + "Close": 159.51 + }, + { + "Date": "2025-05-27", + "Open": 158.12, + "High": 159.57, + "Low": 156.54, + "Close": 157.8 + }, + { + "Date": "2025-05-28", + "Open": 158.21, + "High": 158.4, + "Low": 157.2, + "Close": 157.28 + }, + { + "Date": "2025-05-29", + "Open": 157.63, + "High": 158.39, + "Low": 157.0, + "Close": 158.02 + }, + { + "Date": "2025-05-30", + "Open": 158.64, + "High": 158.88, + "Low": 158.23, + "Close": 158.32 + }, + { + "Date": "2025-06-02", + "Open": 157.06, + "High": 158.06, + "Low": 155.14, + "Close": 155.46 + }, + { + "Date": "2025-06-03", + "Open": 154.59, + "High": 154.8, + "Low": 153.1, + "Close": 154.46 + }, + { + "Date": "2025-06-04", + "Open": 153.0, + "High": 154.63, + "Low": 152.45, + "Close": 153.32 + }, + { + "Date": "2025-06-05", + "Open": 153.08, + "High": 154.63, + "Low": 151.71, + "Close": 153.65 + }, + { + "Date": "2025-06-06", + "Open": 154.77, + "High": 155.87, + "Low": 152.78, + "Close": 155.64 + }, + { + "Date": "2025-06-09", + "Open": 156.92, + "High": 157.31, + "Low": 154.93, + "Close": 154.93 + }, + { + "Date": "2025-06-10", + "Open": 155.23, + "High": 155.88, + "Low": 155.11, + "Close": 155.14 + }, + { + "Date": "2025-06-11", + "Open": 155.76, + "High": 156.46, + "Low": 155.26, + "Close": 156.04 + }, + { + "Date": "2025-06-12", + "Open": 154.9, + "High": 156.28, + "Low": 154.31, + "Close": 154.74 + }, + { + "Date": "2025-06-13", + "Open": 153.53, + "High": 155.1, + "Low": 151.9, + "Close": 152.24 + }, + { + "Date": "2025-06-16", + "Open": 153.29, + "High": 155.19, + "Low": 151.43, + "Close": 154.65 + }, + { + "Date": "2025-06-17", + "Open": 154.22, + "High": 155.39, + "Low": 152.76, + "Close": 152.83 + } +] \ No newline at end of file diff --git a/react/src/ai-components/chart/data/msft-data.json b/react/src/ai-components/chart/data/msft-data.json new file mode 100644 index 0000000..df9e7d5 --- /dev/null +++ b/react/src/ai-components/chart/data/msft-data.json @@ -0,0 +1,2250 @@ +[ + { + "date": "2024-06-03", + "open": 128.65, + "high": 129.66, + "low": 128.35, + "close": 129.24, + "volume": 17862294 + }, + { + "date": "2024-06-04", + "open": 130.53, + "high": 131.76, + "low": 129.24, + "close": 129.83, + "volume": 24622730 + }, + { + "date": "2024-06-05", + "open": 130.91, + "high": 132.21, + "low": 130.08, + "close": 130.74, + "volume": 25324954 + }, + { + "date": "2024-06-06", + "open": 131.34, + "high": 132.23, + "low": 128.97, + "close": 130.0, + "volume": 23487603 + }, + { + "date": "2024-06-07", + "open": 130.56, + "high": 131.17, + "low": 128.8, + "close": 129.5, + "volume": 34692706 + }, + { + "date": "2024-06-10", + "open": 128.47, + "high": 129.87, + "low": 127.16, + "close": 127.4, + "volume": 32653028 + }, + { + "date": "2024-06-11", + "open": 128.07, + "high": 129.44, + "low": 126.32, + "close": 126.32, + "volume": 32027251 + }, + { + "date": "2024-06-12", + "open": 124.48, + "high": 124.66, + "low": 123.33, + "close": 123.67, + "volume": 34268108 + }, + { + "date": "2024-06-13", + "open": 123.91, + "high": 125.58, + "low": 123.75, + "close": 124.29, + "volume": 23048223 + }, + { + "date": "2024-06-14", + "open": 124.78, + "high": 126.13, + "low": 123.45, + "close": 125.31, + "volume": 23055870 + }, + { + "date": "2024-06-17", + "open": 124.45, + "high": 125.68, + "low": 123.59, + "close": 124.71, + "volume": 29045496 + }, + { + "date": "2024-06-18", + "open": 126.08, + "high": 127.11, + "low": 125.33, + "close": 126.28, + "volume": 26792047 + }, + { + "date": "2024-06-19", + "open": 125.73, + "high": 126.56, + "low": 124.7, + "close": 124.85, + "volume": 21305157 + }, + { + "date": "2024-06-20", + "open": 123.77, + "high": 125.62, + "low": 122.49, + "close": 124.35, + "volume": 19580719 + }, + { + "date": "2024-06-21", + "open": 125.51, + "high": 126.96, + "low": 125.01, + "close": 125.75, + "volume": 24613573 + }, + { + "date": "2024-06-24", + "open": 125.12, + "high": 127.23, + "low": 123.74, + "close": 127.04, + "volume": 32520284 + }, + { + "date": "2024-06-25", + "open": 128.39, + "high": 129.29, + "low": 127.41, + "close": 128.85, + "volume": 18300998 + }, + { + "date": "2024-06-26", + "open": 129.78, + "high": 132.32, + "low": 128.59, + "close": 131.14, + "volume": 26021558 + }, + { + "date": "2024-06-27", + "open": 132.42, + "high": 134.6, + "low": 131.22, + "close": 134.17, + "volume": 33118380 + }, + { + "date": "2024-06-28", + "open": 135.82, + "high": 135.95, + "low": 134.44, + "close": 135.04, + "volume": 20578150 + }, + { + "date": "2024-07-01", + "open": 134.78, + "high": 135.83, + "low": 134.04, + "close": 135.33, + "volume": 29493376 + }, + { + "date": "2024-07-02", + "open": 135.09, + "high": 136.51, + "low": 134.41, + "close": 136.39, + "volume": 33915486 + }, + { + "date": "2024-07-03", + "open": 136.24, + "high": 137.11, + "low": 134.64, + "close": 135.68, + "volume": 15498134 + }, + { + "date": "2024-07-04", + "open": 135.49, + "high": 137.8, + "low": 134.09, + "close": 136.7, + "volume": 33539877 + }, + { + "date": "2024-07-05", + "open": 137.13, + "high": 138.05, + "low": 135.93, + "close": 136.53, + "volume": 33779876 + }, + { + "date": "2024-07-08", + "open": 135.49, + "high": 137.61, + "low": 134.21, + "close": 136.26, + "volume": 23678455 + }, + { + "date": "2024-07-09", + "open": 135.48, + "high": 136.69, + "low": 135.35, + "close": 136.05, + "volume": 21438913 + }, + { + "date": "2024-07-10", + "open": 136.39, + "high": 137.98, + "low": 135.28, + "close": 137.87, + "volume": 31211658 + }, + { + "date": "2024-07-11", + "open": 137.74, + "high": 140.42, + "low": 137.3, + "close": 139.13, + "volume": 24963524 + }, + { + "date": "2024-07-12", + "open": 139.14, + "high": 140.05, + "low": 136.58, + "close": 137.73, + "volume": 25765620 + }, + { + "date": "2024-07-15", + "open": 137.12, + "high": 137.81, + "low": 135.58, + "close": 135.96, + "volume": 15243350 + }, + { + "date": "2024-07-16", + "open": 137.53, + "high": 137.96, + "low": 134.8, + "close": 135.81, + "volume": 25110655 + }, + { + "date": "2024-07-17", + "open": 135.83, + "high": 138.44, + "low": 134.58, + "close": 137.81, + "volume": 15002463 + }, + { + "date": "2024-07-18", + "open": 139.28, + "high": 140.36, + "low": 137.94, + "close": 139.22, + "volume": 30749505 + }, + { + "date": "2024-07-19", + "open": 139.27, + "high": 140.22, + "low": 137.99, + "close": 139.55, + "volume": 34672175 + }, + { + "date": "2024-07-22", + "open": 138.07, + "high": 138.74, + "low": 135.44, + "close": 136.94, + "volume": 17070231 + }, + { + "date": "2024-07-23", + "open": 137.43, + "high": 138.4, + "low": 136.15, + "close": 138.22, + "volume": 21556726 + }, + { + "date": "2024-07-24", + "open": 138.36, + "high": 139.84, + "low": 136.77, + "close": 137.04, + "volume": 30374245 + }, + { + "date": "2024-07-25", + "open": 138.54, + "high": 141.77, + "low": 137.14, + "close": 140.43, + "volume": 27146889 + }, + { + "date": "2024-07-26", + "open": 141.2, + "high": 143.4, + "low": 140.96, + "close": 142.61, + "volume": 29767082 + }, + { + "date": "2024-07-29", + "open": 140.98, + "high": 142.11, + "low": 139.93, + "close": 141.84, + "volume": 28548940 + }, + { + "date": "2024-07-30", + "open": 140.09, + "high": 141.54, + "low": 137.37, + "close": 138.83, + "volume": 19603793 + }, + { + "date": "2024-07-31", + "open": 138.79, + "high": 142.01, + "low": 137.49, + "close": 140.58, + "volume": 32595609 + }, + { + "date": "2024-08-01", + "open": 140.12, + "high": 140.35, + "low": 139.36, + "close": 139.82, + "volume": 30833184 + }, + { + "date": "2024-08-02", + "open": 138.98, + "high": 139.61, + "low": 138.14, + "close": 138.7, + "volume": 34637773 + }, + { + "date": "2024-08-05", + "open": 137.61, + "high": 138.24, + "low": 136.56, + "close": 137.84, + "volume": 20616414 + }, + { + "date": "2024-08-06", + "open": 136.82, + "high": 138.22, + "low": 135.37, + "close": 138.14, + "volume": 26759990 + }, + { + "date": "2024-08-07", + "open": 137.44, + "high": 139.99, + "low": 136.35, + "close": 139.1, + "volume": 31323601 + }, + { + "date": "2024-08-08", + "open": 139.76, + "high": 141.58, + "low": 138.38, + "close": 140.27, + "volume": 17379822 + }, + { + "date": "2024-08-09", + "open": 141.32, + "high": 144.67, + "low": 139.83, + "close": 143.2, + "volume": 24804819 + }, + { + "date": "2024-08-12", + "open": 142.24, + "high": 145.09, + "low": 141.74, + "close": 144.16, + "volume": 26169440 + }, + { + "date": "2024-08-13", + "open": 142.75, + "high": 143.45, + "low": 142.5, + "close": 142.78, + "volume": 21468022 + }, + { + "date": "2024-08-14", + "open": 142.17, + "high": 142.58, + "low": 141.09, + "close": 141.42, + "volume": 20561453 + }, + { + "date": "2024-08-15", + "open": 140.54, + "high": 140.85, + "low": 138.74, + "close": 139.35, + "volume": 20312759 + }, + { + "date": "2024-08-16", + "open": 140.28, + "high": 140.94, + "low": 139.13, + "close": 140.36, + "volume": 29188629 + }, + { + "date": "2024-08-19", + "open": 141.79, + "high": 142.96, + "low": 141.19, + "close": 142.33, + "volume": 17162676 + }, + { + "date": "2024-08-20", + "open": 141.37, + "high": 142.64, + "low": 140.15, + "close": 141.8, + "volume": 21685590 + }, + { + "date": "2024-08-21", + "open": 143.3, + "high": 143.93, + "low": 140.13, + "close": 141.51, + "volume": 34902453 + }, + { + "date": "2024-08-22", + "open": 140.72, + "high": 143.22, + "low": 139.63, + "close": 142.52, + "volume": 20215861 + }, + { + "date": "2024-08-23", + "open": 140.87, + "high": 142.2, + "low": 139.23, + "close": 140.42, + "volume": 16901066 + }, + { + "date": "2024-08-26", + "open": 142.05, + "high": 143.41, + "low": 139.14, + "close": 140.36, + "volume": 15455830 + }, + { + "date": "2024-08-27", + "open": 141.93, + "high": 143.02, + "low": 139.44, + "close": 140.82, + "volume": 29134729 + }, + { + "date": "2024-08-28", + "open": 141.0, + "high": 142.24, + "low": 139.81, + "close": 141.37, + "volume": 18931084 + }, + { + "date": "2024-08-29", + "open": 143.15, + "high": 143.97, + "low": 142.06, + "close": 143.67, + "volume": 26983909 + }, + { + "date": "2024-08-30", + "open": 143.51, + "high": 144.39, + "low": 142.17, + "close": 143.85, + "volume": 27470681 + }, + { + "date": "2024-09-02", + "open": 143.95, + "high": 145.3, + "low": 143.21, + "close": 144.99, + "volume": 16377021 + }, + { + "date": "2024-09-03", + "open": 143.48, + "high": 144.1, + "low": 143.21, + "close": 143.48, + "volume": 30114642 + }, + { + "date": "2024-09-04", + "open": 143.24, + "high": 143.89, + "low": 141.98, + "close": 143.08, + "volume": 15951636 + }, + { + "date": "2024-09-05", + "open": 143.07, + "high": 143.68, + "low": 140.68, + "close": 141.52, + "volume": 18956749 + }, + { + "date": "2024-09-06", + "open": 139.95, + "high": 141.71, + "low": 138.73, + "close": 141.05, + "volume": 20778573 + }, + { + "date": "2024-09-09", + "open": 140.99, + "high": 142.3, + "low": 139.66, + "close": 141.29, + "volume": 18880515 + }, + { + "date": "2024-09-10", + "open": 139.86, + "high": 141.22, + "low": 136.91, + "close": 138.09, + "volume": 33889288 + }, + { + "date": "2024-09-11", + "open": 137.93, + "high": 139.25, + "low": 137.0, + "close": 138.25, + "volume": 34617435 + }, + { + "date": "2024-09-12", + "open": 139.23, + "high": 140.95, + "low": 139.21, + "close": 140.26, + "volume": 32973215 + }, + { + "date": "2024-09-13", + "open": 139.43, + "high": 140.79, + "low": 136.74, + "close": 137.8, + "volume": 17343332 + }, + { + "date": "2024-09-16", + "open": 136.03, + "high": 136.07, + "low": 134.4, + "close": 134.99, + "volume": 26515100 + }, + { + "date": "2024-09-17", + "open": 136.44, + "high": 138.29, + "low": 135.44, + "close": 137.46, + "volume": 21305151 + }, + { + "date": "2024-09-18", + "open": 136.14, + "high": 137.11, + "low": 132.92, + "close": 134.17, + "volume": 34234417 + }, + { + "date": "2024-09-19", + "open": 132.33, + "high": 132.57, + "low": 130.64, + "close": 131.12, + "volume": 31105943 + }, + { + "date": "2024-09-20", + "open": 132.78, + "high": 133.87, + "low": 130.04, + "close": 131.1, + "volume": 30303814 + }, + { + "date": "2024-09-23", + "open": 132.95, + "high": 134.64, + "low": 131.76, + "close": 134.11, + "volume": 30133341 + }, + { + "date": "2024-09-24", + "open": 132.91, + "high": 133.14, + "low": 131.47, + "close": 131.57, + "volume": 34349363 + }, + { + "date": "2024-09-25", + "open": 130.61, + "high": 131.16, + "low": 130.34, + "close": 130.48, + "volume": 19155772 + }, + { + "date": "2024-09-26", + "open": 132.21, + "high": 133.65, + "low": 129.15, + "close": 130.6, + "volume": 30895866 + }, + { + "date": "2024-09-27", + "open": 128.96, + "high": 129.98, + "low": 127.64, + "close": 129.49, + "volume": 18776052 + }, + { + "date": "2024-09-30", + "open": 127.69, + "high": 128.0, + "low": 127.05, + "close": 127.19, + "volume": 29103808 + }, + { + "date": "2024-10-01", + "open": 126.57, + "high": 129.71, + "low": 126.03, + "close": 128.32, + "volume": 28980142 + }, + { + "date": "2024-10-02", + "open": 130.07, + "high": 132.02, + "low": 129.51, + "close": 131.88, + "volume": 27641199 + }, + { + "date": "2024-10-03", + "open": 131.63, + "high": 134.0, + "low": 130.48, + "close": 132.64, + "volume": 32079114 + }, + { + "date": "2024-10-04", + "open": 131.17, + "high": 131.27, + "low": 129.23, + "close": 130.66, + "volume": 30712620 + }, + { + "date": "2024-10-07", + "open": 132.49, + "high": 133.04, + "low": 132.15, + "close": 132.89, + "volume": 20238644 + }, + { + "date": "2024-10-08", + "open": 132.49, + "high": 132.95, + "low": 130.17, + "close": 130.79, + "volume": 32171498 + }, + { + "date": "2024-10-09", + "open": 129.22, + "high": 130.32, + "low": 128.28, + "close": 129.43, + "volume": 15898294 + }, + { + "date": "2024-10-10", + "open": 127.68, + "high": 129.98, + "low": 126.58, + "close": 129.56, + "volume": 19550544 + }, + { + "date": "2024-10-11", + "open": 131.29, + "high": 132.09, + "low": 130.14, + "close": 132.08, + "volume": 26428099 + }, + { + "date": "2024-10-14", + "open": 131.51, + "high": 132.85, + "low": 131.08, + "close": 131.15, + "volume": 34213903 + }, + { + "date": "2024-10-15", + "open": 132.0, + "high": 132.87, + "low": 129.91, + "close": 130.39, + "volume": 30702138 + }, + { + "date": "2024-10-16", + "open": 130.0, + "high": 130.54, + "low": 128.85, + "close": 130.16, + "volume": 32559064 + }, + { + "date": "2024-10-17", + "open": 132.0, + "high": 132.13, + "low": 129.23, + "close": 130.03, + "volume": 31203347 + }, + { + "date": "2024-10-18", + "open": 131.01, + "high": 131.41, + "low": 130.62, + "close": 131.21, + "volume": 22481402 + }, + { + "date": "2024-10-21", + "open": 129.46, + "high": 130.69, + "low": 127.1, + "close": 128.22, + "volume": 29324309 + }, + { + "date": "2024-10-22", + "open": 127.02, + "high": 127.79, + "low": 125.67, + "close": 127.53, + "volume": 16812712 + }, + { + "date": "2024-10-23", + "open": 127.28, + "high": 128.61, + "low": 124.86, + "close": 125.56, + "volume": 34819235 + }, + { + "date": "2024-10-24", + "open": 125.65, + "high": 126.87, + "low": 125.08, + "close": 125.21, + "volume": 19219721 + }, + { + "date": "2024-10-25", + "open": 124.14, + "high": 124.89, + "low": 122.51, + "close": 123.02, + "volume": 19110801 + }, + { + "date": "2024-10-28", + "open": 121.34, + "high": 124.77, + "low": 120.15, + "close": 123.31, + "volume": 15839672 + }, + { + "date": "2024-10-29", + "open": 123.22, + "high": 125.14, + "low": 122.85, + "close": 124.96, + "volume": 16661740 + }, + { + "date": "2024-10-30", + "open": 126.81, + "high": 127.53, + "low": 126.29, + "close": 127.06, + "volume": 25666222 + }, + { + "date": "2024-10-31", + "open": 125.72, + "high": 126.55, + "low": 124.46, + "close": 125.43, + "volume": 18798381 + }, + { + "date": "2024-11-01", + "open": 124.96, + "high": 126.09, + "low": 123.14, + "close": 123.22, + "volume": 27325862 + }, + { + "date": "2024-11-04", + "open": 123.09, + "high": 124.27, + "low": 121.85, + "close": 122.57, + "volume": 20260264 + }, + { + "date": "2024-11-05", + "open": 124.39, + "high": 124.87, + "low": 123.4, + "close": 124.03, + "volume": 22875328 + }, + { + "date": "2024-11-06", + "open": 122.5, + "high": 123.97, + "low": 121.78, + "close": 121.82, + "volume": 21024422 + }, + { + "date": "2024-11-07", + "open": 122.17, + "high": 123.51, + "low": 121.02, + "close": 122.76, + "volume": 30914942 + }, + { + "date": "2024-11-08", + "open": 123.24, + "high": 124.41, + "low": 121.99, + "close": 123.67, + "volume": 16433080 + }, + { + "date": "2024-11-11", + "open": 125.63, + "high": 125.96, + "low": 123.51, + "close": 124.38, + "volume": 24848264 + }, + { + "date": "2024-11-12", + "open": 125.07, + "high": 125.1, + "low": 123.33, + "close": 123.87, + "volume": 21430428 + }, + { + "date": "2024-11-13", + "open": 124.17, + "high": 126.79, + "low": 122.85, + "close": 125.93, + "volume": 28435747 + }, + { + "date": "2024-11-14", + "open": 126.25, + "high": 126.57, + "low": 125.71, + "close": 126.47, + "volume": 27477476 + }, + { + "date": "2024-11-15", + "open": 126.07, + "high": 127.46, + "low": 125.97, + "close": 127.02, + "volume": 27868832 + }, + { + "date": "2024-11-18", + "open": 128.12, + "high": 128.17, + "low": 126.71, + "close": 127.09, + "volume": 31143198 + }, + { + "date": "2024-11-19", + "open": 125.91, + "high": 126.05, + "low": 123.34, + "close": 124.28, + "volume": 31226660 + }, + { + "date": "2024-11-20", + "open": 124.96, + "high": 126.33, + "low": 123.32, + "close": 124.44, + "volume": 30722838 + }, + { + "date": "2024-11-21", + "open": 124.02, + "high": 126.31, + "low": 123.51, + "close": 125.56, + "volume": 33490495 + }, + { + "date": "2024-11-22", + "open": 125.83, + "high": 127.07, + "low": 123.64, + "close": 125.03, + "volume": 16158385 + }, + { + "date": "2024-11-25", + "open": 125.75, + "high": 126.3, + "low": 124.4, + "close": 126.02, + "volume": 21994792 + }, + { + "date": "2024-11-26", + "open": 126.31, + "high": 127.46, + "low": 125.88, + "close": 126.49, + "volume": 26482684 + }, + { + "date": "2024-11-27", + "open": 125.06, + "high": 126.42, + "low": 123.43, + "close": 124.18, + "volume": 24555794 + }, + { + "date": "2024-11-28", + "open": 125.52, + "high": 125.74, + "low": 124.3, + "close": 124.89, + "volume": 27312658 + }, + { + "date": "2024-11-29", + "open": 123.83, + "high": 125.61, + "low": 122.58, + "close": 124.67, + "volume": 22902138 + }, + { + "date": "2024-12-02", + "open": 124.72, + "high": 126.31, + "low": 124.55, + "close": 124.99, + "volume": 15373263 + }, + { + "date": "2024-12-03", + "open": 125.71, + "high": 125.98, + "low": 124.64, + "close": 125.66, + "volume": 23915293 + }, + { + "date": "2024-12-04", + "open": 125.22, + "high": 125.74, + "low": 122.63, + "close": 123.42, + "volume": 18333714 + }, + { + "date": "2024-12-05", + "open": 123.71, + "high": 124.6, + "low": 123.58, + "close": 124.27, + "volume": 33604827 + }, + { + "date": "2024-12-06", + "open": 122.57, + "high": 123.69, + "low": 120.67, + "close": 121.77, + "volume": 30695264 + }, + { + "date": "2024-12-09", + "open": 122.31, + "high": 123.6, + "low": 120.81, + "close": 122.04, + "volume": 31939910 + }, + { + "date": "2024-12-10", + "open": 122.95, + "high": 124.32, + "low": 122.7, + "close": 123.63, + "volume": 23256643 + }, + { + "date": "2024-12-11", + "open": 122.75, + "high": 124.29, + "low": 122.31, + "close": 123.48, + "volume": 32533280 + }, + { + "date": "2024-12-12", + "open": 121.98, + "high": 123.26, + "low": 121.39, + "close": 122.77, + "volume": 18394506 + }, + { + "date": "2024-12-13", + "open": 121.45, + "high": 121.89, + "low": 118.53, + "close": 119.52, + "volume": 33419620 + }, + { + "date": "2024-12-16", + "open": 117.72, + "high": 118.72, + "low": 117.5, + "close": 118.19, + "volume": 25110812 + }, + { + "date": "2024-12-17", + "open": 116.51, + "high": 117.86, + "low": 115.45, + "close": 117.25, + "volume": 30124815 + }, + { + "date": "2024-12-18", + "open": 119.0, + "high": 119.58, + "low": 118.28, + "close": 119.33, + "volume": 20620680 + }, + { + "date": "2024-12-19", + "open": 117.99, + "high": 119.01, + "low": 115.48, + "close": 116.01, + "volume": 16988674 + }, + { + "date": "2024-12-20", + "open": 117.52, + "high": 120.61, + "low": 116.97, + "close": 119.21, + "volume": 34735302 + }, + { + "date": "2024-12-23", + "open": 117.22, + "high": 119.03, + "low": 116.42, + "close": 118.29, + "volume": 24797175 + }, + { + "date": "2024-12-24", + "open": 117.32, + "high": 118.19, + "low": 116.63, + "close": 117.71, + "volume": 18514639 + }, + { + "date": "2024-12-25", + "open": 116.69, + "high": 118.35, + "low": 115.45, + "close": 117.01, + "volume": 33423232 + }, + { + "date": "2024-12-26", + "open": 117.47, + "high": 118.26, + "low": 115.86, + "close": 116.88, + "volume": 15578643 + }, + { + "date": "2024-12-27", + "open": 118.43, + "high": 119.55, + "low": 118.03, + "close": 118.6, + "volume": 24026144 + }, + { + "date": "2024-12-30", + "open": 120.56, + "high": 120.79, + "low": 119.94, + "close": 120.43, + "volume": 25248054 + }, + { + "date": "2024-12-31", + "open": 118.9, + "high": 119.77, + "low": 117.47, + "close": 119.24, + "volume": 21552040 + }, + { + "date": "2025-01-01", + "open": 117.83, + "high": 119.25, + "low": 116.28, + "close": 117.2, + "volume": 25540411 + }, + { + "date": "2025-01-02", + "open": 118.54, + "high": 119.92, + "low": 116.55, + "close": 117.85, + "volume": 22357156 + }, + { + "date": "2025-01-03", + "open": 117.05, + "high": 117.08, + "low": 115.06, + "close": 115.3, + "volume": 24344019 + }, + { + "date": "2025-01-06", + "open": 115.6, + "high": 117.13, + "low": 114.91, + "close": 115.81, + "volume": 27198651 + }, + { + "date": "2025-01-07", + "open": 117.38, + "high": 118.66, + "low": 116.31, + "close": 118.47, + "volume": 29987976 + }, + { + "date": "2025-01-08", + "open": 117.57, + "high": 119.77, + "low": 117.4, + "close": 118.79, + "volume": 16296644 + }, + { + "date": "2025-01-09", + "open": 117.79, + "high": 120.05, + "low": 117.47, + "close": 119.48, + "volume": 26732931 + }, + { + "date": "2025-01-10", + "open": 119.9, + "high": 121.38, + "low": 118.2, + "close": 118.4, + "volume": 17515705 + }, + { + "date": "2025-01-13", + "open": 118.78, + "high": 119.28, + "low": 116.24, + "close": 117.17, + "volume": 32705979 + }, + { + "date": "2025-01-14", + "open": 118.99, + "high": 119.92, + "low": 117.79, + "close": 117.84, + "volume": 31338194 + }, + { + "date": "2025-01-15", + "open": 119.28, + "high": 120.83, + "low": 118.16, + "close": 120.19, + "volume": 18295452 + }, + { + "date": "2025-01-16", + "open": 121.19, + "high": 122.69, + "low": 120.15, + "close": 120.31, + "volume": 27969858 + }, + { + "date": "2025-01-17", + "open": 118.65, + "high": 121.0, + "low": 117.61, + "close": 120.53, + "volume": 24063647 + }, + { + "date": "2025-01-20", + "open": 119.83, + "high": 121.39, + "low": 118.88, + "close": 121.1, + "volume": 16540061 + }, + { + "date": "2025-01-21", + "open": 121.25, + "high": 122.18, + "low": 120.6, + "close": 120.91, + "volume": 32147496 + }, + { + "date": "2025-01-22", + "open": 119.58, + "high": 120.32, + "low": 118.95, + "close": 119.21, + "volume": 28053255 + }, + { + "date": "2025-01-23", + "open": 118.71, + "high": 119.74, + "low": 118.63, + "close": 119.56, + "volume": 21001764 + }, + { + "date": "2025-01-24", + "open": 118.3, + "high": 119.27, + "low": 116.35, + "close": 117.23, + "volume": 15914851 + }, + { + "date": "2025-01-27", + "open": 118.49, + "high": 120.21, + "low": 117.15, + "close": 119.07, + "volume": 21419389 + }, + { + "date": "2025-01-28", + "open": 120.55, + "high": 122.16, + "low": 119.25, + "close": 121.31, + "volume": 25124665 + }, + { + "date": "2025-01-29", + "open": 120.51, + "high": 120.99, + "low": 119.19, + "close": 119.23, + "volume": 17414723 + }, + { + "date": "2025-01-30", + "open": 118.6, + "high": 120.26, + "low": 118.17, + "close": 120.06, + "volume": 19711866 + }, + { + "date": "2025-01-31", + "open": 121.97, + "high": 123.33, + "low": 119.79, + "close": 120.64, + "volume": 18757027 + }, + { + "date": "2025-02-03", + "open": 122.27, + "high": 125.04, + "low": 121.53, + "close": 124.0, + "volume": 31642702 + }, + { + "date": "2025-02-04", + "open": 122.5, + "high": 123.89, + "low": 121.72, + "close": 123.85, + "volume": 33864097 + }, + { + "date": "2025-02-05", + "open": 124.34, + "high": 125.77, + "low": 123.52, + "close": 124.79, + "volume": 25819707 + }, + { + "date": "2025-02-06", + "open": 123.37, + "high": 125.77, + "low": 122.65, + "close": 124.75, + "volume": 28098738 + }, + { + "date": "2025-02-07", + "open": 123.02, + "high": 123.97, + "low": 121.35, + "close": 122.45, + "volume": 29040373 + }, + { + "date": "2025-02-10", + "open": 123.19, + "high": 124.29, + "low": 121.74, + "close": 123.75, + "volume": 34942081 + }, + { + "date": "2025-02-11", + "open": 123.74, + "high": 126.51, + "low": 122.45, + "close": 125.62, + "volume": 33081888 + }, + { + "date": "2025-02-12", + "open": 124.17, + "high": 125.4, + "low": 123.29, + "close": 123.57, + "volume": 25853072 + }, + { + "date": "2025-02-13", + "open": 123.65, + "high": 125.35, + "low": 122.28, + "close": 124.28, + "volume": 23729724 + }, + { + "date": "2025-02-14", + "open": 125.34, + "high": 127.42, + "low": 124.64, + "close": 126.5, + "volume": 30837487 + }, + { + "date": "2025-02-17", + "open": 125.36, + "high": 127.28, + "low": 124.44, + "close": 126.5, + "volume": 26351503 + }, + { + "date": "2025-02-18", + "open": 126.49, + "high": 127.22, + "low": 125.02, + "close": 126.53, + "volume": 17992270 + }, + { + "date": "2025-02-19", + "open": 126.09, + "high": 129.13, + "low": 126.06, + "close": 127.74, + "volume": 21889982 + }, + { + "date": "2025-02-20", + "open": 127.52, + "high": 129.59, + "low": 126.63, + "close": 128.3, + "volume": 24890884 + }, + { + "date": "2025-02-21", + "open": 128.01, + "high": 130.58, + "low": 127.88, + "close": 129.81, + "volume": 34498420 + }, + { + "date": "2025-02-24", + "open": 130.15, + "high": 132.39, + "low": 129.88, + "close": 131.42, + "volume": 34777473 + }, + { + "date": "2025-02-25", + "open": 130.44, + "high": 131.62, + "low": 129.83, + "close": 129.99, + "volume": 15850199 + }, + { + "date": "2025-02-26", + "open": 131.73, + "high": 134.16, + "low": 130.29, + "close": 133.73, + "volume": 18135695 + }, + { + "date": "2025-02-27", + "open": 135.6, + "high": 135.92, + "low": 132.34, + "close": 133.76, + "volume": 28513643 + }, + { + "date": "2025-02-28", + "open": 134.43, + "high": 134.8, + "low": 133.56, + "close": 134.68, + "volume": 25118050 + }, + { + "date": "2025-03-03", + "open": 133.2, + "high": 134.82, + "low": 132.2, + "close": 133.88, + "volume": 32773249 + }, + { + "date": "2025-03-04", + "open": 135.74, + "high": 136.29, + "low": 133.53, + "close": 134.29, + "volume": 22180371 + }, + { + "date": "2025-03-05", + "open": 134.92, + "high": 135.26, + "low": 133.05, + "close": 133.91, + "volume": 26386495 + }, + { + "date": "2025-03-06", + "open": 131.96, + "high": 134.12, + "low": 130.78, + "close": 133.28, + "volume": 32350290 + }, + { + "date": "2025-03-07", + "open": 134.05, + "high": 135.29, + "low": 133.51, + "close": 133.6, + "volume": 21341470 + }, + { + "date": "2025-03-10", + "open": 134.46, + "high": 134.7, + "low": 132.69, + "close": 133.8, + "volume": 27793008 + }, + { + "date": "2025-03-11", + "open": 131.84, + "high": 132.8, + "low": 130.9, + "close": 131.78, + "volume": 27094177 + }, + { + "date": "2025-03-12", + "open": 131.21, + "high": 132.5, + "low": 130.23, + "close": 131.39, + "volume": 30366000 + }, + { + "date": "2025-03-13", + "open": 131.87, + "high": 133.48, + "low": 131.6, + "close": 133.23, + "volume": 20062512 + }, + { + "date": "2025-03-14", + "open": 134.19, + "high": 135.96, + "low": 133.97, + "close": 135.67, + "volume": 34683657 + }, + { + "date": "2025-03-17", + "open": 135.59, + "high": 135.6, + "low": 133.04, + "close": 134.28, + "volume": 34228107 + }, + { + "date": "2025-03-18", + "open": 133.43, + "high": 134.77, + "low": 133.28, + "close": 134.09, + "volume": 24265877 + }, + { + "date": "2025-03-19", + "open": 133.14, + "high": 133.74, + "low": 130.39, + "close": 131.53, + "volume": 25200210 + }, + { + "date": "2025-03-20", + "open": 132.41, + "high": 133.22, + "low": 130.97, + "close": 131.68, + "volume": 18361166 + }, + { + "date": "2025-03-21", + "open": 130.08, + "high": 130.88, + "low": 128.94, + "close": 129.87, + "volume": 16009961 + }, + { + "date": "2025-03-24", + "open": 129.91, + "high": 130.25, + "low": 127.95, + "close": 127.99, + "volume": 19206392 + }, + { + "date": "2025-03-25", + "open": 128.58, + "high": 130.43, + "low": 127.89, + "close": 129.15, + "volume": 24449865 + }, + { + "date": "2025-03-26", + "open": 128.92, + "high": 129.39, + "low": 127.26, + "close": 128.71, + "volume": 33798767 + }, + { + "date": "2025-03-27", + "open": 128.81, + "high": 131.19, + "low": 127.7, + "close": 129.71, + "volume": 31923362 + }, + { + "date": "2025-03-28", + "open": 130.44, + "high": 131.93, + "low": 129.7, + "close": 130.06, + "volume": 34147897 + }, + { + "date": "2025-03-31", + "open": 129.84, + "high": 130.01, + "low": 128.36, + "close": 129.69, + "volume": 30723263 + }, + { + "date": "2025-04-01", + "open": 130.36, + "high": 130.57, + "low": 130.02, + "close": 130.26, + "volume": 27422992 + }, + { + "date": "2025-04-02", + "open": 128.92, + "high": 130.15, + "low": 126.0, + "close": 127.45, + "volume": 28908132 + }, + { + "date": "2025-04-03", + "open": 128.19, + "high": 130.72, + "low": 126.99, + "close": 130.16, + "volume": 19856065 + }, + { + "date": "2025-04-04", + "open": 128.22, + "high": 128.26, + "low": 127.02, + "close": 127.08, + "volume": 22714931 + }, + { + "date": "2025-04-07", + "open": 126.25, + "high": 129.46, + "low": 125.73, + "close": 128.15, + "volume": 19043909 + }, + { + "date": "2025-04-08", + "open": 129.79, + "high": 129.88, + "low": 127.36, + "close": 128.21, + "volume": 18290669 + }, + { + "date": "2025-04-09", + "open": 129.17, + "high": 131.34, + "low": 127.68, + "close": 129.9, + "volume": 21191582 + }, + { + "date": "2025-04-10", + "open": 128.5, + "high": 129.16, + "low": 126.57, + "close": 127.57, + "volume": 22916007 + }, + { + "date": "2025-04-11", + "open": 126.66, + "high": 129.95, + "low": 125.37, + "close": 128.55, + "volume": 20965788 + }, + { + "date": "2025-04-14", + "open": 128.97, + "high": 129.4, + "low": 127.46, + "close": 128.69, + "volume": 16902671 + }, + { + "date": "2025-04-15", + "open": 127.84, + "high": 129.26, + "low": 126.91, + "close": 128.55, + "volume": 24931434 + }, + { + "date": "2025-04-16", + "open": 126.59, + "high": 126.83, + "low": 124.69, + "close": 125.53, + "volume": 19214847 + }, + { + "date": "2025-04-17", + "open": 125.87, + "high": 126.46, + "low": 124.37, + "close": 124.71, + "volume": 27525252 + }, + { + "date": "2025-04-18", + "open": 123.47, + "high": 124.03, + "low": 122.99, + "close": 123.52, + "volume": 18070391 + }, + { + "date": "2025-04-21", + "open": 123.45, + "high": 125.75, + "low": 122.05, + "close": 124.54, + "volume": 24543657 + }, + { + "date": "2025-04-22", + "open": 124.06, + "high": 126.49, + "low": 123.6, + "close": 125.0, + "volume": 29288758 + }, + { + "date": "2025-04-23", + "open": 123.66, + "high": 125.8, + "low": 122.96, + "close": 125.36, + "volume": 19050845 + }, + { + "date": "2025-04-24", + "open": 127.07, + "high": 129.1, + "low": 126.83, + "close": 128.22, + "volume": 15953744 + }, + { + "date": "2025-04-25", + "open": 128.47, + "high": 129.05, + "low": 125.18, + "close": 126.54, + "volume": 22887813 + }, + { + "date": "2025-04-28", + "open": 127.62, + "high": 128.22, + "low": 125.62, + "close": 125.87, + "volume": 28251118 + }, + { + "date": "2025-04-29", + "open": 126.3, + "high": 128.96, + "low": 126.1, + "close": 127.83, + "volume": 32261419 + }, + { + "date": "2025-04-30", + "open": 127.36, + "high": 127.49, + "low": 126.93, + "close": 127.26, + "volume": 28377198 + }, + { + "date": "2025-05-01", + "open": 126.53, + "high": 127.49, + "low": 124.79, + "close": 124.91, + "volume": 20628182 + }, + { + "date": "2025-05-02", + "open": 125.96, + "high": 128.71, + "low": 124.76, + "close": 127.82, + "volume": 30787376 + }, + { + "date": "2025-05-05", + "open": 126.94, + "high": 127.66, + "low": 124.41, + "close": 125.74, + "volume": 32013880 + }, + { + "date": "2025-05-06", + "open": 124.48, + "high": 125.4, + "low": 122.86, + "close": 123.23, + "volume": 23927227 + }, + { + "date": "2025-05-07", + "open": 122.57, + "high": 124.98, + "low": 121.53, + "close": 124.23, + "volume": 28467879 + }, + { + "date": "2025-05-08", + "open": 125.03, + "high": 126.03, + "low": 123.96, + "close": 125.78, + "volume": 15388205 + }, + { + "date": "2025-05-09", + "open": 125.65, + "high": 127.27, + "low": 125.45, + "close": 126.43, + "volume": 32425175 + }, + { + "date": "2025-05-12", + "open": 126.97, + "high": 128.46, + "low": 125.85, + "close": 125.96, + "volume": 16928843 + }, + { + "date": "2025-05-13", + "open": 124.91, + "high": 126.72, + "low": 124.63, + "close": 126.51, + "volume": 15874631 + }, + { + "date": "2025-05-14", + "open": 126.26, + "high": 127.75, + "low": 125.65, + "close": 126.16, + "volume": 24607489 + }, + { + "date": "2025-05-15", + "open": 127.28, + "high": 127.44, + "low": 124.32, + "close": 125.81, + "volume": 24351526 + }, + { + "date": "2025-05-16", + "open": 126.24, + "high": 126.76, + "low": 125.0, + "close": 126.46, + "volume": 18640260 + }, + { + "date": "2025-05-19", + "open": 127.0, + "high": 127.82, + "low": 125.67, + "close": 127.18, + "volume": 26324200 + }, + { + "date": "2025-05-20", + "open": 128.42, + "high": 129.35, + "low": 127.53, + "close": 129.01, + "volume": 21845718 + }, + { + "date": "2025-05-21", + "open": 130.31, + "high": 131.56, + "low": 129.31, + "close": 131.45, + "volume": 26502001 + }, + { + "date": "2025-05-22", + "open": 132.9, + "high": 135.37, + "low": 132.48, + "close": 134.86, + "volume": 19986070 + }, + { + "date": "2025-05-23", + "open": 135.76, + "high": 136.85, + "low": 134.15, + "close": 135.61, + "volume": 25948691 + }, + { + "date": "2025-05-26", + "open": 134.19, + "high": 134.77, + "low": 132.95, + "close": 134.09, + "volume": 21914025 + }, + { + "date": "2025-05-27", + "open": 134.96, + "high": 136.43, + "low": 134.14, + "close": 135.86, + "volume": 34233432 + }, + { + "date": "2025-05-28", + "open": 137.44, + "high": 137.46, + "low": 134.11, + "close": 135.6, + "volume": 21915419 + }, + { + "date": "2025-05-29", + "open": 134.35, + "high": 135.1, + "low": 133.36, + "close": 134.4, + "volume": 20669194 + }, + { + "date": "2025-05-30", + "open": 132.62, + "high": 134.11, + "low": 131.28, + "close": 134.01, + "volume": 31117143 + }, + { + "date": "2025-06-02", + "open": 134.06, + "high": 135.37, + "low": 134.04, + "close": 134.91, + "volume": 25539340 + }, + { + "date": "2025-06-03", + "open": 136.79, + "high": 137.74, + "low": 135.18, + "close": 135.88, + "volume": 31287593 + }, + { + "date": "2025-06-04", + "open": 137.82, + "high": 139.98, + "low": 137.12, + "close": 139.7, + "volume": 26078491 + }, + { + "date": "2025-06-05", + "open": 141.08, + "high": 141.88, + "low": 140.49, + "close": 141.73, + "volume": 27840058 + }, + { + "date": "2025-06-06", + "open": 142.56, + "high": 144.41, + "low": 141.7, + "close": 144.2, + "volume": 24221004 + }, + { + "date": "2025-06-09", + "open": 143.06, + "high": 143.25, + "low": 141.59, + "close": 142.02, + "volume": 17342327 + }, + { + "date": "2025-06-10", + "open": 142.86, + "high": 145.44, + "low": 141.56, + "close": 144.81, + "volume": 34984655 + }, + { + "date": "2025-06-11", + "open": 144.3, + "high": 145.19, + "low": 143.44, + "close": 144.4, + "volume": 27617618 + }, + { + "date": "2025-06-12", + "open": 143.4, + "high": 144.74, + "low": 142.0, + "close": 144.49, + "volume": 34164315 + }, + { + "date": "2025-06-13", + "open": 143.25, + "high": 145.71, + "low": 143.2, + "close": 145.23, + "volume": 27528769 + }, + { + "date": "2025-06-16", + "open": 143.58, + "high": 145.03, + "low": 142.34, + "close": 142.97, + "volume": 34224718 + }, + { + "date": "2025-06-17", + "open": 143.9, + "high": 144.83, + "low": 143.78, + "close": 143.93, + "volume": 15350520 + }, + { + "date": "2025-06-18", + "open": 144.26, + "high": 145.8, + "low": 144.22, + "close": 145.31, + "volume": 27993603 + }, + { + "date": "2025-06-19", + "open": 144.22, + "high": 145.04, + "low": 143.67, + "close": 144.33, + "volume": 25138772 + }, + { + "date": "2025-06-20", + "open": 145.21, + "high": 145.53, + "low": 144.09, + "close": 144.84, + "volume": 23457398 + }, + { + "date": "2025-06-23", + "open": 143.01, + "high": 143.66, + "low": 142.95, + "close": 143.41, + "volume": 19753695 + }, + { + "date": "2025-06-24", + "open": 141.64, + "high": 143.19, + "low": 140.22, + "close": 142.03, + "volume": 25819750 + }, + { + "date": "2025-06-25", + "open": 141.73, + "high": 143.1, + "low": 140.34, + "close": 141.66, + "volume": 34193217 + }, + { + "date": "2025-06-26", + "open": 140.83, + "high": 140.87, + "low": 138.3, + "close": 139.6, + "volume": 18343664 + }, + { + "date": "2025-06-27", + "open": 137.89, + "high": 140.13, + "low": 136.83, + "close": 138.76, + "volume": 20323148 + }, + { + "date": "2025-06-30", + "open": 140.11, + "high": 140.57, + "low": 137.57, + "close": 138.35, + "volume": 25628026 + } +] \ No newline at end of file diff --git a/react/src/ai-components/chart/data/tsla-data.json b/react/src/ai-components/chart/data/tsla-data.json new file mode 100644 index 0000000..b0da1fc --- /dev/null +++ b/react/src/ai-components/chart/data/tsla-data.json @@ -0,0 +1,1766 @@ +[ + { + "Date": "2024-07-01", + "Open": 195.66, + "High": 195.82, + "Low": 193.84, + "Close": 193.86 + }, + { + "Date": "2024-07-02", + "Open": 193.54, + "High": 193.87, + "Low": 192.46, + "Close": 192.55 + }, + { + "Date": "2024-07-03", + "Open": 193.06, + "High": 193.17, + "Low": 192.71, + "Close": 192.81 + }, + { + "Date": "2024-07-04", + "Open": 194.47, + "High": 195.45, + "Low": 192.64, + "Close": 195.38 + }, + { + "Date": "2024-07-05", + "Open": 197.01, + "High": 197.21, + "Low": 195.16, + "Close": 195.7 + }, + { + "Date": "2024-07-08", + "Open": 194.47, + "High": 196.23, + "Low": 193.01, + "Close": 195.24 + }, + { + "Date": "2024-07-09", + "Open": 194.28, + "High": 194.8, + "Low": 192.46, + "Close": 193.87 + }, + { + "Date": "2024-07-10", + "Open": 192.4, + "High": 194.3, + "Low": 192.29, + "Close": 193.74 + }, + { + "Date": "2024-07-11", + "Open": 195.05, + "High": 196.03, + "Low": 193.28, + "Close": 193.54 + }, + { + "Date": "2024-07-12", + "Open": 192.99, + "High": 193.79, + "Low": 191.7, + "Close": 191.97 + }, + { + "Date": "2024-07-15", + "Open": 190.34, + "High": 190.51, + "Low": 188.47, + "Close": 189.21 + }, + { + "Date": "2024-07-16", + "Open": 189.93, + "High": 190.33, + "Low": 188.1, + "Close": 189.98 + }, + { + "Date": "2024-07-17", + "Open": 188.65, + "High": 188.92, + "Low": 187.77, + "Close": 188.45 + }, + { + "Date": "2024-07-18", + "Open": 188.27, + "High": 189.07, + "Low": 186.78, + "Close": 186.95 + }, + { + "Date": "2024-07-19", + "Open": 186.35, + "High": 188.13, + "Low": 184.46, + "Close": 186.47 + }, + { + "Date": "2024-07-22", + "Open": 185.91, + "High": 186.34, + "Low": 184.89, + "Close": 185.64 + }, + { + "Date": "2024-07-23", + "Open": 184.99, + "High": 185.48, + "Low": 183.15, + "Close": 184.34 + }, + { + "Date": "2024-07-24", + "Open": 183.49, + "High": 183.49, + "Low": 182.74, + "Close": 182.75 + }, + { + "Date": "2024-07-25", + "Open": 184.73, + "High": 185.05, + "Low": 183.16, + "Close": 183.41 + }, + { + "Date": "2024-07-26", + "Open": 184.89, + "High": 186.59, + "Low": 183.44, + "Close": 186.16 + }, + { + "Date": "2024-07-29", + "Open": 184.85, + "High": 186.63, + "Low": 184.52, + "Close": 185.09 + }, + { + "Date": "2024-07-30", + "Open": 183.31, + "High": 184.75, + "Low": 182.73, + "Close": 184.16 + }, + { + "Date": "2024-07-31", + "Open": 185.26, + "High": 185.75, + "Low": 184.33, + "Close": 185.42 + }, + { + "Date": "2024-08-01", + "Open": 184.56, + "High": 185.42, + "Low": 184.46, + "Close": 184.85 + }, + { + "Date": "2024-08-02", + "Open": 186.46, + "High": 188.11, + "Low": 185.82, + "Close": 187.76 + }, + { + "Date": "2024-08-05", + "Open": 188.43, + "High": 190.37, + "Low": 186.47, + "Close": 187.08 + }, + { + "Date": "2024-08-06", + "Open": 188.09, + "High": 189.71, + "Low": 186.7, + "Close": 188.21 + }, + { + "Date": "2024-08-07", + "Open": 189.42, + "High": 191.01, + "Low": 188.7, + "Close": 190.54 + }, + { + "Date": "2024-08-08", + "Open": 191.55, + "High": 191.8, + "Low": 191.17, + "Close": 191.74 + }, + { + "Date": "2024-08-09", + "Open": 191.07, + "High": 192.23, + "Low": 189.36, + "Close": 191.35 + }, + { + "Date": "2024-08-12", + "Open": 192.98, + "High": 194.2, + "Low": 191.88, + "Close": 192.1 + }, + { + "Date": "2024-08-13", + "Open": 191.4, + "High": 192.95, + "Low": 190.37, + "Close": 192.92 + }, + { + "Date": "2024-08-14", + "Open": 193.41, + "High": 194.71, + "Low": 193.24, + "Close": 194.66 + }, + { + "Date": "2024-08-15", + "Open": 192.87, + "High": 194.07, + "Low": 191.97, + "Close": 192.37 + }, + { + "Date": "2024-08-16", + "Open": 192.73, + "High": 194.0, + "Low": 191.06, + "Close": 191.11 + }, + { + "Date": "2024-08-19", + "Open": 189.48, + "High": 189.67, + "Low": 188.61, + "Close": 189.65 + }, + { + "Date": "2024-08-20", + "Open": 190.6, + "High": 191.19, + "Low": 189.29, + "Close": 190.11 + }, + { + "Date": "2024-08-21", + "Open": 191.5, + "High": 192.53, + "Low": 190.21, + "Close": 190.37 + }, + { + "Date": "2024-08-22", + "Open": 191.04, + "High": 191.5, + "Low": 189.48, + "Close": 191.33 + }, + { + "Date": "2024-08-23", + "Open": 191.47, + "High": 191.49, + "Low": 190.22, + "Close": 190.41 + }, + { + "Date": "2024-08-26", + "Open": 192.19, + "High": 193.05, + "Low": 190.63, + "Close": 191.18 + }, + { + "Date": "2024-08-27", + "Open": 189.78, + "High": 191.53, + "Low": 188.75, + "Close": 188.89 + }, + { + "Date": "2024-08-28", + "Open": 188.02, + "High": 189.69, + "Low": 186.35, + "Close": 187.56 + }, + { + "Date": "2024-08-29", + "Open": 185.82, + "High": 186.41, + "Low": 183.98, + "Close": 185.49 + }, + { + "Date": "2024-08-30", + "Open": 185.03, + "High": 185.53, + "Low": 184.58, + "Close": 185.2 + }, + { + "Date": "2024-09-02", + "Open": 184.49, + "High": 184.49, + "Low": 184.19, + "Close": 184.39 + }, + { + "Date": "2024-09-03", + "Open": 184.67, + "High": 185.21, + "Low": 184.02, + "Close": 184.21 + }, + { + "Date": "2024-09-04", + "Open": 185.63, + "High": 185.86, + "Low": 185.62, + "Close": 185.65 + }, + { + "Date": "2024-09-05", + "Open": 186.12, + "High": 187.17, + "Low": 185.38, + "Close": 186.7 + }, + { + "Date": "2024-09-06", + "Open": 187.26, + "High": 187.39, + "Low": 185.47, + "Close": 185.73 + }, + { + "Date": "2024-09-09", + "Open": 187.61, + "High": 189.53, + "Low": 186.6, + "Close": 186.97 + }, + { + "Date": "2024-09-10", + "Open": 185.28, + "High": 185.91, + "Low": 183.77, + "Close": 183.79 + }, + { + "Date": "2024-09-11", + "Open": 182.37, + "High": 182.42, + "Low": 182.05, + "Close": 182.32 + }, + { + "Date": "2024-09-12", + "Open": 182.2, + "High": 183.2, + "Low": 181.85, + "Close": 182.82 + }, + { + "Date": "2024-09-13", + "Open": 181.13, + "High": 181.47, + "Low": 180.91, + "Close": 181.38 + }, + { + "Date": "2024-09-16", + "Open": 181.95, + "High": 183.37, + "Low": 181.41, + "Close": 182.18 + }, + { + "Date": "2024-09-17", + "Open": 181.12, + "High": 182.67, + "Low": 179.76, + "Close": 180.47 + }, + { + "Date": "2024-09-18", + "Open": 179.96, + "High": 180.57, + "Low": 179.63, + "Close": 180.49 + }, + { + "Date": "2024-09-19", + "Open": 182.48, + "High": 184.27, + "Low": 181.04, + "Close": 181.67 + }, + { + "Date": "2024-09-20", + "Open": 183.14, + "High": 184.14, + "Low": 183.06, + "Close": 184.1 + }, + { + "Date": "2024-09-23", + "Open": 185.02, + "High": 185.51, + "Low": 183.19, + "Close": 185.18 + }, + { + "Date": "2024-09-24", + "Open": 184.77, + "High": 185.25, + "Low": 183.16, + "Close": 184.64 + }, + { + "Date": "2024-09-25", + "Open": 184.45, + "High": 185.46, + "Low": 184.29, + "Close": 184.47 + }, + { + "Date": "2024-09-26", + "Open": 183.99, + "High": 185.17, + "Low": 182.9, + "Close": 183.26 + }, + { + "Date": "2024-09-27", + "Open": 182.65, + "High": 183.76, + "Low": 180.99, + "Close": 183.32 + }, + { + "Date": "2024-09-30", + "Open": 182.52, + "High": 184.48, + "Low": 182.48, + "Close": 183.74 + }, + { + "Date": "2024-10-01", + "Open": 183.67, + "High": 185.11, + "Low": 182.29, + "Close": 183.1 + }, + { + "Date": "2024-10-02", + "Open": 181.28, + "High": 181.81, + "Low": 180.99, + "Close": 181.72 + }, + { + "Date": "2024-10-03", + "Open": 183.16, + "High": 183.46, + "Low": 181.86, + "Close": 182.58 + }, + { + "Date": "2024-10-04", + "Open": 183.46, + "High": 184.67, + "Low": 182.35, + "Close": 183.94 + }, + { + "Date": "2024-10-07", + "Open": 183.82, + "High": 185.45, + "Low": 181.87, + "Close": 184.19 + }, + { + "Date": "2024-10-08", + "Open": 185.96, + "High": 187.79, + "Low": 185.22, + "Close": 185.49 + }, + { + "Date": "2024-10-09", + "Open": 184.88, + "High": 184.95, + "Low": 183.85, + "Close": 184.06 + }, + { + "Date": "2024-10-10", + "Open": 182.43, + "High": 183.61, + "Low": 182.33, + "Close": 182.83 + }, + { + "Date": "2024-10-11", + "Open": 183.67, + "High": 184.3, + "Low": 183.36, + "Close": 183.72 + }, + { + "Date": "2024-10-14", + "Open": 185.63, + "High": 187.5, + "Low": 185.03, + "Close": 186.45 + }, + { + "Date": "2024-10-15", + "Open": 184.73, + "High": 185.32, + "Low": 184.25, + "Close": 184.94 + }, + { + "Date": "2024-10-16", + "Open": 186.52, + "High": 187.92, + "Low": 186.34, + "Close": 186.97 + }, + { + "Date": "2024-10-17", + "Open": 188.82, + "High": 189.36, + "Low": 188.3, + "Close": 189.28 + }, + { + "Date": "2024-10-18", + "Open": 187.6, + "High": 188.86, + "Low": 187.24, + "Close": 187.35 + }, + { + "Date": "2024-10-21", + "Open": 188.62, + "High": 188.97, + "Low": 186.73, + "Close": 186.99 + }, + { + "Date": "2024-10-22", + "Open": 186.85, + "High": 187.14, + "Low": 185.83, + "Close": 186.51 + }, + { + "Date": "2024-10-23", + "Open": 187.86, + "High": 188.1, + "Low": 186.43, + "Close": 187.71 + }, + { + "Date": "2024-10-24", + "Open": 186.19, + "High": 186.44, + "Low": 185.14, + "Close": 185.59 + }, + { + "Date": "2024-10-25", + "Open": 184.74, + "High": 185.53, + "Low": 183.75, + "Close": 185.34 + }, + { + "Date": "2024-10-28", + "Open": 186.81, + "High": 188.37, + "Low": 186.63, + "Close": 186.79 + }, + { + "Date": "2024-10-29", + "Open": 186.02, + "High": 187.27, + "Low": 185.59, + "Close": 185.8 + }, + { + "Date": "2024-10-30", + "Open": 183.85, + "High": 185.2, + "Low": 182.76, + "Close": 184.74 + }, + { + "Date": "2024-10-31", + "Open": 185.51, + "High": 186.83, + "Low": 184.31, + "Close": 186.29 + }, + { + "Date": "2024-11-01", + "Open": 186.1, + "High": 188.02, + "Low": 184.11, + "Close": 186.12 + }, + { + "Date": "2024-11-04", + "Open": 187.28, + "High": 187.73, + "Low": 186.07, + "Close": 186.7 + }, + { + "Date": "2024-11-05", + "Open": 185.94, + "High": 186.09, + "Low": 185.87, + "Close": 186.06 + }, + { + "Date": "2024-11-06", + "Open": 187.97, + "High": 189.29, + "Low": 187.41, + "Close": 188.76 + }, + { + "Date": "2024-11-07", + "Open": 187.22, + "High": 188.11, + "Low": 186.53, + "Close": 187.99 + }, + { + "Date": "2024-11-08", + "Open": 186.19, + "High": 187.91, + "Low": 185.03, + "Close": 186.65 + }, + { + "Date": "2024-11-11", + "Open": 185.91, + "High": 187.61, + "Low": 185.85, + "Close": 187.25 + }, + { + "Date": "2024-11-12", + "Open": 187.22, + "High": 187.45, + "Low": 187.02, + "Close": 187.19 + }, + { + "Date": "2024-11-13", + "Open": 189.12, + "High": 189.37, + "Low": 188.37, + "Close": 188.77 + }, + { + "Date": "2024-11-14", + "Open": 188.14, + "High": 188.84, + "Low": 187.98, + "Close": 188.0 + }, + { + "Date": "2024-11-15", + "Open": 186.66, + "High": 188.54, + "Low": 185.12, + "Close": 187.31 + }, + { + "Date": "2024-11-18", + "Open": 186.52, + "High": 188.11, + "Low": 185.21, + "Close": 186.46 + }, + { + "Date": "2024-11-19", + "Open": 187.18, + "High": 188.3, + "Low": 186.35, + "Close": 187.41 + }, + { + "Date": "2024-11-20", + "Open": 186.14, + "High": 186.53, + "Low": 185.59, + "Close": 186.44 + }, + { + "Date": "2024-11-21", + "Open": 186.36, + "High": 187.64, + "Low": 185.42, + "Close": 187.19 + }, + { + "Date": "2024-11-22", + "Open": 185.85, + "High": 186.91, + "Low": 185.04, + "Close": 186.76 + }, + { + "Date": "2024-11-25", + "Open": 187.81, + "High": 188.54, + "Low": 187.66, + "Close": 187.91 + }, + { + "Date": "2024-11-26", + "Open": 187.42, + "High": 188.86, + "Low": 186.32, + "Close": 186.84 + }, + { + "Date": "2024-11-27", + "Open": 185.81, + "High": 186.6, + "Low": 184.96, + "Close": 184.97 + }, + { + "Date": "2024-11-28", + "Open": 183.02, + "High": 183.53, + "Low": 181.04, + "Close": 183.19 + }, + { + "Date": "2024-11-29", + "Open": 182.96, + "High": 184.58, + "Low": 181.53, + "Close": 183.92 + }, + { + "Date": "2024-12-02", + "Open": 185.24, + "High": 186.47, + "Low": 183.93, + "Close": 185.47 + }, + { + "Date": "2024-12-03", + "Open": 186.99, + "High": 187.19, + "Low": 186.48, + "Close": 187.08 + }, + { + "Date": "2024-12-04", + "Open": 187.2, + "High": 188.46, + "Low": 186.92, + "Close": 187.09 + }, + { + "Date": "2024-12-05", + "Open": 187.91, + "High": 187.96, + "Low": 186.32, + "Close": 187.84 + }, + { + "Date": "2024-12-06", + "Open": 188.22, + "High": 189.15, + "Low": 188.18, + "Close": 189.07 + }, + { + "Date": "2024-12-09", + "Open": 189.84, + "High": 190.87, + "Low": 189.34, + "Close": 189.68 + }, + { + "Date": "2024-12-10", + "Open": 188.63, + "High": 188.97, + "Low": 188.13, + "Close": 188.71 + }, + { + "Date": "2024-12-11", + "Open": 190.52, + "High": 192.05, + "Low": 190.5, + "Close": 191.41 + }, + { + "Date": "2024-12-12", + "Open": 193.23, + "High": 193.26, + "Low": 191.72, + "Close": 191.97 + }, + { + "Date": "2024-12-13", + "Open": 193.65, + "High": 194.62, + "Low": 193.13, + "Close": 193.25 + }, + { + "Date": "2024-12-16", + "Open": 194.02, + "High": 194.96, + "Low": 192.67, + "Close": 194.53 + }, + { + "Date": "2024-12-17", + "Open": 195.17, + "High": 196.46, + "Low": 193.96, + "Close": 194.86 + }, + { + "Date": "2024-12-18", + "Open": 195.74, + "High": 197.71, + "Low": 194.45, + "Close": 195.52 + }, + { + "Date": "2024-12-19", + "Open": 197.34, + "High": 198.14, + "Low": 195.82, + "Close": 197.66 + }, + { + "Date": "2024-12-20", + "Open": 195.84, + "High": 196.87, + "Low": 195.17, + "Close": 196.66 + }, + { + "Date": "2024-12-23", + "Open": 195.6, + "High": 197.45, + "Low": 194.58, + "Close": 196.73 + }, + { + "Date": "2024-12-24", + "Open": 195.22, + "High": 195.45, + "Low": 194.98, + "Close": 195.33 + }, + { + "Date": "2024-12-25", + "Open": 197.24, + "High": 198.3, + "Low": 196.44, + "Close": 196.72 + }, + { + "Date": "2024-12-26", + "Open": 197.82, + "High": 197.94, + "Low": 196.01, + "Close": 197.9 + }, + { + "Date": "2024-12-27", + "Open": 197.57, + "High": 198.09, + "Low": 195.95, + "Close": 196.75 + }, + { + "Date": "2024-12-30", + "Open": 195.06, + "High": 196.38, + "Low": 193.09, + "Close": 193.41 + }, + { + "Date": "2024-12-31", + "Open": 193.53, + "High": 194.26, + "Low": 192.13, + "Close": 192.3 + }, + { + "Date": "2025-01-01", + "Open": 190.38, + "High": 191.1, + "Low": 189.02, + "Close": 189.31 + }, + { + "Date": "2025-01-02", + "Open": 188.98, + "High": 189.05, + "Low": 187.3, + "Close": 188.03 + }, + { + "Date": "2025-01-03", + "Open": 187.74, + "High": 187.81, + "Low": 187.22, + "Close": 187.55 + }, + { + "Date": "2025-01-06", + "Open": 186.09, + "High": 187.14, + "Low": 185.52, + "Close": 186.66 + }, + { + "Date": "2025-01-07", + "Open": 186.16, + "High": 188.01, + "Low": 185.81, + "Close": 187.76 + }, + { + "Date": "2025-01-08", + "Open": 188.28, + "High": 188.85, + "Low": 187.06, + "Close": 187.32 + }, + { + "Date": "2025-01-09", + "Open": 187.65, + "High": 189.42, + "Low": 187.23, + "Close": 188.99 + }, + { + "Date": "2025-01-10", + "Open": 188.68, + "High": 190.2, + "Low": 186.71, + "Close": 189.95 + }, + { + "Date": "2025-01-13", + "Open": 189.19, + "High": 189.35, + "Low": 188.07, + "Close": 189.22 + }, + { + "Date": "2025-01-14", + "Open": 188.09, + "High": 189.68, + "Low": 187.77, + "Close": 188.92 + }, + { + "Date": "2025-01-15", + "Open": 188.84, + "High": 190.76, + "Low": 187.79, + "Close": 189.05 + }, + { + "Date": "2025-01-16", + "Open": 190.87, + "High": 191.81, + "Low": 190.07, + "Close": 191.13 + }, + { + "Date": "2025-01-17", + "Open": 191.0, + "High": 192.4, + "Low": 189.38, + "Close": 191.28 + }, + { + "Date": "2025-01-20", + "Open": 189.67, + "High": 190.07, + "Low": 189.32, + "Close": 189.81 + }, + { + "Date": "2025-01-21", + "Open": 189.37, + "High": 190.71, + "Low": 188.05, + "Close": 188.89 + }, + { + "Date": "2025-01-22", + "Open": 188.01, + "High": 189.31, + "Low": 186.59, + "Close": 187.2 + }, + { + "Date": "2025-01-23", + "Open": 187.45, + "High": 188.25, + "Low": 186.99, + "Close": 187.91 + }, + { + "Date": "2025-01-24", + "Open": 187.36, + "High": 187.55, + "Low": 186.89, + "Close": 187.43 + }, + { + "Date": "2025-01-27", + "Open": 187.43, + "High": 187.56, + "Low": 186.49, + "Close": 186.5 + }, + { + "Date": "2025-01-28", + "Open": 188.4, + "High": 189.15, + "Low": 187.29, + "Close": 188.28 + }, + { + "Date": "2025-01-29", + "Open": 189.36, + "High": 189.64, + "Low": 189.25, + "Close": 189.6 + }, + { + "Date": "2025-01-30", + "Open": 190.83, + "High": 192.32, + "Low": 189.02, + "Close": 189.09 + }, + { + "Date": "2025-01-31", + "Open": 190.72, + "High": 191.82, + "Low": 190.59, + "Close": 191.13 + }, + { + "Date": "2025-02-03", + "Open": 193.03, + "High": 194.31, + "Low": 191.75, + "Close": 193.04 + }, + { + "Date": "2025-02-04", + "Open": 194.85, + "High": 194.97, + "Low": 194.33, + "Close": 194.61 + }, + { + "Date": "2025-02-05", + "Open": 194.15, + "High": 194.31, + "Low": 193.1, + "Close": 193.53 + }, + { + "Date": "2025-02-06", + "Open": 192.71, + "High": 193.71, + "Low": 192.3, + "Close": 192.42 + }, + { + "Date": "2025-02-07", + "Open": 193.56, + "High": 195.06, + "Low": 192.39, + "Close": 194.3 + }, + { + "Date": "2025-02-10", + "Open": 194.13, + "High": 195.49, + "Low": 193.23, + "Close": 194.15 + }, + { + "Date": "2025-02-11", + "Open": 193.87, + "High": 194.28, + "Low": 191.88, + "Close": 193.85 + }, + { + "Date": "2025-02-12", + "Open": 194.08, + "High": 194.92, + "Low": 193.29, + "Close": 194.37 + }, + { + "Date": "2025-02-13", + "Open": 195.95, + "High": 196.12, + "Low": 194.59, + "Close": 194.76 + }, + { + "Date": "2025-02-14", + "Open": 196.67, + "High": 197.2, + "Low": 195.87, + "Close": 197.07 + }, + { + "Date": "2025-02-17", + "Open": 197.8, + "High": 198.45, + "Low": 197.39, + "Close": 198.1 + }, + { + "Date": "2025-02-18", + "Open": 196.5, + "High": 196.53, + "Low": 196.42, + "Close": 196.49 + }, + { + "Date": "2025-02-19", + "Open": 198.21, + "High": 199.98, + "Low": 196.75, + "Close": 199.62 + }, + { + "Date": "2025-02-20", + "Open": 199.75, + "High": 200.36, + "Low": 198.57, + "Close": 199.63 + }, + { + "Date": "2025-02-21", + "Open": 197.92, + "High": 199.83, + "Low": 195.96, + "Close": 196.73 + }, + { + "Date": "2025-02-24", + "Open": 197.58, + "High": 198.27, + "Low": 196.56, + "Close": 197.9 + }, + { + "Date": "2025-02-25", + "Open": 199.68, + "High": 199.99, + "Low": 199.67, + "Close": 199.96 + }, + { + "Date": "2025-02-26", + "Open": 200.89, + "High": 202.56, + "Low": 200.44, + "Close": 201.75 + }, + { + "Date": "2025-02-27", + "Open": 203.12, + "High": 204.07, + "Low": 202.32, + "Close": 203.07 + }, + { + "Date": "2025-02-28", + "Open": 203.29, + "High": 204.58, + "Low": 201.8, + "Close": 203.09 + }, + { + "Date": "2025-03-03", + "Open": 204.76, + "High": 205.95, + "Low": 204.23, + "Close": 205.26 + }, + { + "Date": "2025-03-04", + "Open": 205.83, + "High": 206.98, + "Low": 205.09, + "Close": 205.66 + }, + { + "Date": "2025-03-05", + "Open": 206.2, + "High": 207.54, + "Low": 204.63, + "Close": 206.57 + }, + { + "Date": "2025-03-06", + "Open": 204.69, + "High": 205.3, + "Low": 204.17, + "Close": 205.09 + }, + { + "Date": "2025-03-07", + "Open": 203.85, + "High": 204.63, + "Low": 202.53, + "Close": 204.25 + }, + { + "Date": "2025-03-10", + "Open": 206.23, + "High": 207.04, + "Low": 204.61, + "Close": 206.76 + }, + { + "Date": "2025-03-11", + "Open": 205.49, + "High": 205.94, + "Low": 203.95, + "Close": 205.46 + }, + { + "Date": "2025-03-12", + "Open": 203.83, + "High": 204.1, + "Low": 203.11, + "Close": 204.04 + }, + { + "Date": "2025-03-13", + "Open": 203.66, + "High": 205.08, + "Low": 203.03, + "Close": 203.39 + }, + { + "Date": "2025-03-14", + "Open": 203.25, + "High": 203.33, + "Low": 202.56, + "Close": 202.58 + }, + { + "Date": "2025-03-17", + "Open": 203.82, + "High": 205.4, + "Low": 203.6, + "Close": 204.42 + }, + { + "Date": "2025-03-18", + "Open": 204.05, + "High": 204.1, + "Low": 203.78, + "Close": 203.93 + }, + { + "Date": "2025-03-19", + "Open": 204.4, + "High": 205.85, + "Low": 203.03, + "Close": 203.06 + }, + { + "Date": "2025-03-20", + "Open": 203.74, + "High": 203.82, + "Low": 203.11, + "Close": 203.66 + }, + { + "Date": "2025-03-21", + "Open": 205.41, + "High": 206.08, + "Low": 203.65, + "Close": 205.55 + }, + { + "Date": "2025-03-24", + "Open": 204.87, + "High": 206.03, + "Low": 204.11, + "Close": 205.9 + }, + { + "Date": "2025-03-25", + "Open": 206.51, + "High": 208.2, + "Low": 205.47, + "Close": 205.93 + }, + { + "Date": "2025-03-26", + "Open": 207.88, + "High": 209.87, + "Low": 206.21, + "Close": 208.94 + }, + { + "Date": "2025-03-27", + "Open": 208.24, + "High": 208.93, + "Low": 206.62, + "Close": 207.73 + }, + { + "Date": "2025-03-28", + "Open": 205.85, + "High": 206.28, + "Low": 205.57, + "Close": 205.58 + }, + { + "Date": "2025-03-31", + "Open": 206.61, + "High": 206.68, + "Low": 205.31, + "Close": 205.47 + }, + { + "Date": "2025-04-01", + "Open": 206.32, + "High": 207.32, + "Low": 205.77, + "Close": 206.75 + }, + { + "Date": "2025-04-02", + "Open": 205.13, + "High": 205.3, + "Low": 204.89, + "Close": 205.03 + }, + { + "Date": "2025-04-03", + "Open": 204.62, + "High": 205.7, + "Low": 203.28, + "Close": 205.57 + }, + { + "Date": "2025-04-04", + "Open": 206.18, + "High": 207.23, + "Low": 204.98, + "Close": 206.03 + }, + { + "Date": "2025-04-07", + "Open": 207.74, + "High": 209.45, + "Low": 206.4, + "Close": 207.66 + }, + { + "Date": "2025-04-08", + "Open": 208.98, + "High": 209.29, + "Low": 207.81, + "Close": 209.03 + }, + { + "Date": "2025-04-09", + "Open": 207.83, + "High": 208.36, + "Low": 206.36, + "Close": 207.32 + }, + { + "Date": "2025-04-10", + "Open": 208.76, + "High": 209.78, + "Low": 208.08, + "Close": 209.55 + }, + { + "Date": "2025-04-11", + "Open": 211.32, + "High": 212.24, + "Low": 210.25, + "Close": 210.52 + }, + { + "Date": "2025-04-14", + "Open": 209.02, + "High": 209.1, + "Low": 208.82, + "Close": 208.9 + }, + { + "Date": "2025-04-15", + "Open": 208.19, + "High": 210.07, + "Low": 207.67, + "Close": 208.02 + }, + { + "Date": "2025-04-16", + "Open": 206.89, + "High": 206.91, + "Low": 206.49, + "Close": 206.57 + }, + { + "Date": "2025-04-17", + "Open": 207.69, + "High": 208.0, + "Low": 207.09, + "Close": 207.9 + }, + { + "Date": "2025-04-18", + "Open": 209.08, + "High": 210.92, + "Low": 208.09, + "Close": 209.23 + }, + { + "Date": "2025-04-21", + "Open": 207.32, + "High": 208.94, + "Low": 206.62, + "Close": 206.91 + }, + { + "Date": "2025-04-22", + "Open": 205.61, + "High": 207.41, + "Low": 203.83, + "Close": 206.05 + }, + { + "Date": "2025-04-23", + "Open": 205.79, + "High": 207.41, + "Low": 204.24, + "Close": 205.61 + }, + { + "Date": "2025-04-24", + "Open": 206.83, + "High": 207.27, + "Low": 206.48, + "Close": 206.77 + }, + { + "Date": "2025-04-25", + "Open": 208.7, + "High": 209.27, + "Low": 206.81, + "Close": 208.95 + }, + { + "Date": "2025-04-28", + "Open": 207.78, + "High": 208.79, + "Low": 206.42, + "Close": 207.66 + }, + { + "Date": "2025-04-29", + "Open": 207.19, + "High": 208.82, + "Low": 206.03, + "Close": 206.85 + }, + { + "Date": "2025-04-30", + "Open": 205.48, + "High": 207.14, + "Low": 203.65, + "Close": 205.97 + }, + { + "Date": "2025-05-01", + "Open": 207.46, + "High": 207.8, + "Low": 206.95, + "Close": 207.71 + }, + { + "Date": "2025-05-02", + "Open": 208.69, + "High": 210.44, + "Low": 208.09, + "Close": 208.85 + }, + { + "Date": "2025-05-05", + "Open": 206.89, + "High": 207.54, + "Low": 205.18, + "Close": 207.0 + }, + { + "Date": "2025-05-06", + "Open": 206.09, + "High": 206.99, + "Low": 205.08, + "Close": 206.5 + }, + { + "Date": "2025-05-07", + "Open": 207.6, + "High": 208.61, + "Low": 207.34, + "Close": 207.56 + }, + { + "Date": "2025-05-08", + "Open": 207.25, + "High": 208.68, + "Low": 206.94, + "Close": 208.42 + }, + { + "Date": "2025-05-09", + "Open": 210.13, + "High": 210.97, + "Low": 208.81, + "Close": 209.58 + }, + { + "Date": "2025-05-12", + "Open": 209.39, + "High": 211.16, + "Low": 208.3, + "Close": 208.59 + }, + { + "Date": "2025-05-13", + "Open": 207.77, + "High": 209.75, + "Low": 206.92, + "Close": 208.67 + }, + { + "Date": "2025-05-14", + "Open": 206.79, + "High": 208.59, + "Low": 206.41, + "Close": 206.84 + }, + { + "Date": "2025-05-15", + "Open": 206.3, + "High": 207.25, + "Low": 205.95, + "Close": 206.8 + }, + { + "Date": "2025-05-16", + "Open": 207.51, + "High": 207.67, + "Low": 207.46, + "Close": 207.53 + }, + { + "Date": "2025-05-19", + "Open": 206.48, + "High": 207.63, + "Low": 205.08, + "Close": 205.61 + }, + { + "Date": "2025-05-20", + "Open": 203.94, + "High": 204.3, + "Low": 203.02, + "Close": 204.24 + }, + { + "Date": "2025-05-21", + "Open": 205.51, + "High": 206.12, + "Low": 203.69, + "Close": 204.55 + }, + { + "Date": "2025-05-22", + "Open": 206.54, + "High": 207.86, + "Low": 205.79, + "Close": 207.52 + }, + { + "Date": "2025-05-23", + "Open": 206.62, + "High": 206.83, + "Low": 205.6, + "Close": 206.41 + }, + { + "Date": "2025-05-26", + "Open": 205.45, + "High": 206.31, + "Low": 205.24, + "Close": 206.04 + }, + { + "Date": "2025-05-27", + "Open": 205.84, + "High": 207.09, + "Low": 204.75, + "Close": 205.78 + }, + { + "Date": "2025-05-28", + "Open": 203.97, + "High": 204.23, + "Low": 203.95, + "Close": 204.23 + }, + { + "Date": "2025-05-29", + "Open": 202.26, + "High": 203.82, + "Low": 201.83, + "Close": 203.49 + }, + { + "Date": "2025-05-30", + "Open": 201.88, + "High": 203.77, + "Low": 199.91, + "Close": 201.62 + }, + { + "Date": "2025-06-02", + "Open": 201.67, + "High": 202.33, + "Low": 200.18, + "Close": 201.65 + }, + { + "Date": "2025-06-03", + "Open": 200.18, + "High": 202.16, + "Low": 198.46, + "Close": 200.46 + }, + { + "Date": "2025-06-04", + "Open": 199.98, + "High": 201.84, + "Low": 198.49, + "Close": 199.42 + }, + { + "Date": "2025-06-05", + "Open": 199.6, + "High": 201.07, + "Low": 199.46, + "Close": 200.74 + }, + { + "Date": "2025-06-06", + "Open": 202.07, + "High": 203.96, + "Low": 200.85, + "Close": 203.31 + }, + { + "Date": "2025-06-09", + "Open": 202.02, + "High": 203.92, + "Low": 200.35, + "Close": 202.19 + }, + { + "Date": "2025-06-10", + "Open": 200.88, + "High": 202.7, + "Low": 199.06, + "Close": 200.81 + }, + { + "Date": "2025-06-11", + "Open": 198.92, + "High": 199.22, + "Low": 198.67, + "Close": 198.98 + }, + { + "Date": "2025-06-12", + "Open": 200.04, + "High": 200.28, + "Low": 198.93, + "Close": 200.03 + }, + { + "Date": "2025-06-13", + "Open": 199.54, + "High": 199.56, + "Low": 199.37, + "Close": 199.46 + }, + { + "Date": "2025-06-16", + "Open": 200.74, + "High": 201.1, + "Low": 199.3, + "Close": 199.31 + }, + { + "Date": "2025-06-17", + "Open": 200.32, + "High": 202.23, + "Low": 198.89, + "Close": 201.73 + } +] \ No newline at end of file diff --git a/react/src/ai-components/chart/image/amazon.png b/react/src/ai-components/chart/image/amazon.png new file mode 100644 index 0000000..2805452 Binary files /dev/null and b/react/src/ai-components/chart/image/amazon.png differ diff --git a/react/src/ai-components/chart/image/google.png b/react/src/ai-components/chart/image/google.png new file mode 100644 index 0000000..2509038 Binary files /dev/null and b/react/src/ai-components/chart/image/google.png differ diff --git a/react/src/ai-components/chart/image/microsoft.png b/react/src/ai-components/chart/image/microsoft.png new file mode 100644 index 0000000..60dc2d4 Binary files /dev/null and b/react/src/ai-components/chart/image/microsoft.png differ diff --git a/react/src/ai-components/chart/image/tesla.png b/react/src/ai-components/chart/image/tesla.png new file mode 100644 index 0000000..5fc6954 Binary files /dev/null and b/react/src/ai-components/chart/image/tesla.png differ diff --git a/react/src/ai-components/chart/stock-forecasting/stock-forecasting.css b/react/src/ai-components/chart/stock-forecasting/stock-forecasting.css new file mode 100644 index 0000000..76fcf9c --- /dev/null +++ b/react/src/ai-components/chart/stock-forecasting/stock-forecasting.css @@ -0,0 +1,153 @@ +.para { + padding-top: 5px; +} + +.stock-info { + display: flex; + align-items: flex-start; + gap: 16px; + margin-left: 10px; + padding: 5px; +} + +.price { + font-size: 20px; + font-weight: bold; + padding-right: 2px; +} + +.e-dropdown { + padding: 5px 10px; + display: flex; + align-items: center; + gap: 8px; + width: 100%; +} + +.e-dropdown option { + display: flex; + align-items: center; + gap: 8px; +} + +[data-icon] { + position: relative; + padding-left: 25px; +} + +[data-icon]::before { + content: ''; + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 20px; + height: 20px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +[data-icon="e-logo-msft"]::before { + background-image: url('../image/microsoft.png'); +} + +[data-icon="e-logo-goog"]::before { + background-image: url('../image/google.png'); +} + +[data-icon="e-logo-amzn"]::before { + background-image: url('../image/amazon.png'); +} + +[data-icon="e-logo-tsla"]::before { + background-image: url('../image/tesla.png'); +} + +.control-section { + display: flex; + flex-direction: column; +} + +.sidebar { + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px; +} + +.stock-selection { + padding: 5px; +} + +.main-content { + flex-grow: 1; + display: flex; + flex-direction: column; +} + +.control-bar { + display: flex; + justify-content: space-between; + padding: 10px 20px; +} + +.range-buttons .e-btn-group { + display: flex; + gap: 10px; +} + +.chart-controls { + display: flex; + align-items: center; + gap: 10px; +} + +.chart-container { + position: relative; + flex-grow: 1; +} + +#chartWrapper { + height: 100%; +} + +#stock-change { + margin: 0; +} + +.chart-action-button { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + background-color: #6f16ef; + border: none; + border-radius: 8px; + cursor: pointer; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + padding: 0; +} + +.chart-action-button:hover { + background-color: #5811c9; +} + +.chart-action-button .e-btn-icon.e-icons { + color: #fff; + font-size: 20px; +} + +.chart-spinner-overlay { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: none; +} + +.chart-spinner-overlay .e-spinner { + width: 20px; + height: 20px; +} \ No newline at end of file diff --git a/react/src/ai-components/chart/stock-forecasting/stock-forecasting.tsx b/react/src/ai-components/chart/stock-forecasting/stock-forecasting.tsx new file mode 100644 index 0000000..2404c09 --- /dev/null +++ b/react/src/ai-components/chart/stock-forecasting/stock-forecasting.tsx @@ -0,0 +1,316 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { + ChartComponent, + SeriesCollectionDirective, + SeriesDirective, + Inject, + CandleSeries, + LineSeries, + HiloOpenCloseSeries, + DateTime, + Crosshair, + Tooltip, + Legend +} from '@syncfusion/ej2-react-charts'; +import { ButtonComponent } from '@syncfusion/ej2-react-buttons'; +import { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups'; +import './stock-forecasting.css'; + +import msftData from '../data/msft-data.json'; +import googData from '../data/goog-data.json'; +import amznData from '../data/amzn-data.json'; +import tslaData from '../data/tsla-data.json'; + +interface StockInfo { + symbol: string; + text: string; + close: number; + change: number; + percentChange: number; +} + +interface ChartPoint { + date: Date; + high: number; + low: number; + open: number; + close: number; +} + +const StockForecasting: React.FC = () => { + const chartRef = useRef(null); + + const getDefaultStockInfo = (symbol: string): StockInfo => { + switch (symbol) { + case 'MSFT': + return { symbol: 'MSFT', text: 'Microsoft Corp', close: 138.35, change: -2.0, percentChange: -0.22 }; + case 'GOOG': + return { symbol: 'GOOG', text: 'Alphabet Inc', close: 152.83, change: -2.0, percentChange: -0.22 }; + case 'AMZN': + return { symbol: 'AMZN', text: 'Amazon Inc', close: 222.27, change: -2.0, percentChange: -0.22 }; + case 'TSLA': + return { symbol: 'TSLA', text: 'Tesla Inc', close: 201.73, change: -2.0, percentChange: -0.22 }; + default: + return { symbol, text: '', close: 0.0, change: 0.0, percentChange: 0.0 }; + } + }; + + const [selectedSymbol, setSelectedSymbol] = useState('MSFT'); + const [selectedSeriesType, setSelectedSeriesType] = useState('Candle'); + const [selectedRange, setSelectedRange] = useState(3); + const [chartData, setChartData] = useState([]); + const [stripStartDate, setStripStartDate] = useState(new Date()); + const [stripEndDate, setStripEndDate] = useState(new Date()); + const [selectedStockInfo, setSelectedStockInfo] = useState(getDefaultStockInfo('MSFT')); + const [isSpinnerVisible, setIsSpinnerVisible] = useState(false); + + const stocks = [ + { symbol: 'MSFT', text: 'Microsoft Corp', icon: '../image/microsoft.png' }, + { symbol: 'GOOG', text: 'Alphabet Inc', icon: '../image/google.png' }, + { symbol: 'AMZN', text: 'Amazon Inc', icon: '../image/amazon.png' }, + { symbol: 'TSLA', text: 'Tesla Inc', icon: '../image/tesla.png' }, + ]; + + const seriesOptions = ['Candle', 'Line', 'HiloOpenClose']; + + const loadChartData = () => { + try { + let json: any[] = []; + if (selectedSymbol === 'GOOG') { + json = googData; + } else if (selectedSymbol === 'AMZN') { + json = amznData; + } else if (selectedSymbol === 'TSLA') { + json = tslaData; + } else { + json = msftData; + setSelectedSymbol('MSFT'); + } + + if (!json || json.length === 0) { + console.warn(`No data found for symbol: ${selectedSymbol}`); + setChartData([]); + renderChart(); + return; + } + + const allData: ChartPoint[] = json.map((d: any) => ({ + date: new Date(d.date || d.Date), + high: Number(d.high ?? d.High), + low: Number(d.low ?? d.Low), + open: Number(d.open ?? d.Open), + close: Number(d.close ?? d.Close), + })); + + const filteredData = filterChartData(allData, selectedRange); + setChartData(filteredData); + renderChart(); + setSelectedStockInfo(getDefaultStockInfo(selectedSymbol)); + } catch (error) { + console.error('Error loading chart data:', error); + setChartData([]); + renderChart(); + } + }; + + const filterChartData = (allData: ChartPoint[], months: number): ChartPoint[] => { + if (allData.length) { + setStripStartDate(allData[0].date); + setStripEndDate(allData[allData.length - 1].date); + } else { + setStripStartDate(new Date()); + setStripEndDate(new Date()); + } + const latestDate = new Date(Math.max(...allData.map(p => p.date.getTime()))); + const cutoffDate = new Date(latestDate); + const intendedMonth = latestDate.getMonth() - months + 1; + cutoffDate.setMonth(intendedMonth); + if (cutoffDate.getMonth() !== intendedMonth) { + cutoffDate.setDate(0); + } + return allData.filter(p => p.date >= cutoffDate).sort((a, b) => a.date.getTime() - b.date.getTime()); + }; + + const renderChart = () => { + if (chartRef.current) { + chartRef.current.series = [{ + dataSource: chartData, + xName: 'date', + type: selectedSeriesType as 'Candle' | 'Line' | 'HiloOpenClose', + name: selectedStockInfo.text, + high: selectedSeriesType !== 'Line' ? 'high' : undefined, + low: selectedSeriesType !== 'Line' ? 'low' : undefined, + open: selectedSeriesType !== 'Line' ? 'open' : undefined, + close: selectedSeriesType !== 'Line' ? 'close' : undefined, + yName: selectedSeriesType === 'Line' ? 'close' : undefined, + bearFillColor: selectedSeriesType === 'Candle' ? '#2ecd71' : undefined, + bullFillColor: selectedSeriesType === 'Candle' ? '#e74c3d' : undefined, + }]; + chartRef.current.primaryXAxis.stripLines = [{ + start: stripStartDate, + end: stripEndDate, + color: '#E0E0E0', + }]; + chartRef.current.refresh(); + } + }; + + const simulateAiAssist = async () => { + setIsSpinnerVisible(true); + const target = document.getElementById('chartWrapper'); + if (!target) return; + + if (!target.querySelector('.e-spinner-pane')) { + createSpinner({ target }); + } + showSpinner(target); + + try { + const response = await fetch('https://your-backend-api/forecast', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + symbol: selectedSymbol, + data: chartData, + }), + }); + + if (!response.ok) { + throw new Error(`Forecast API failed: ${response.status}`); + } + + const forecastData: any[] = await response.json(); + const nextData: ChartPoint[] = forecastData.map((d: any) => ({ + date: new Date(d.date), + open: Number(d.open), + high: Number(d.high), + low: Number(d.low), + close: Number(d.close), + })); + + setChartData([...chartData, ...nextData]); + renderChart(); + } catch (err) { + console.error('AI Assist failed:', err); + } finally { + hideSpinner(target); + setIsSpinnerVisible(false); + } + }; + + useEffect(() => { + loadChartData(); + }, [selectedSymbol, selectedRange, selectedSeriesType]); + + return ( +
+
+
+ +

{selectedStockInfo.text}

+
+
+
+ {selectedStockInfo.close.toFixed(2)} USD +
+

= 0 ? 'green' : 'red' }}> + {selectedStockInfo.change.toFixed(2)} {selectedStockInfo.percentChange.toFixed(2)}% +

+
+
+
+
+
+
+
+ + + +
+
+
+
+ +
+
+
+
+
+ + + +
+
+
+
+ + + + + + +
+
+
+ ); +}; + +export default StockForecasting; diff --git a/react/src/left-pane.tsx b/react/src/left-pane.tsx index a9df5e6..306691d 100644 --- a/react/src/left-pane.tsx +++ b/react/src/left-pane.tsx @@ -100,6 +100,12 @@ function LeftPane() { { "id": 18, "name": "Smart Risk Assessor", 'navigateUrl': '#/risk-analysis' }, { "id": 19, "name": "Smart Scheduling", 'navigateUrl': '#/task-schedule' } ] + }, + { + "id": 50, "name": "Chart", expanded: true, + "child": [ + { "id": 51, "name": "Stock Forecasting", 'navigateUrl': '#/stock-forecasting' } + ] } ]; const fields: Object = { diff --git a/react/src/main.tsx b/react/src/main.tsx index cb2dd69..1763528 100644 --- a/react/src/main.tsx +++ b/react/src/main.tsx @@ -50,6 +50,7 @@ import SentimentAnalysis from './ai-components/kanban/sentiment-analysis/sentime import SmartFill from './ai-components/pdfviewer/smartfill/smartfill.tsx' import SmartRedact from './ai-components/pdfviewer/smartredact/smartredact.tsx' import Summarizer from './ai-components/pdfviewer/summarizer/summarizer.tsx' +import StockForecasting from './ai-components/chart/stock-forecasting/stock-forecasting.tsx' import './index.css' const routerEle = createHashRouter( @@ -64,6 +65,8 @@ const routerEle = createHashRouter( } /> } /> } /> + {/* Chart */} + } /> {/* ComboBox */} } /> {/* Tree Grid */} diff --git a/typescript/src/app/chart/data/amzn-data.json b/typescript/src/app/chart/data/amzn-data.json new file mode 100644 index 0000000..afdbe95 --- /dev/null +++ b/typescript/src/app/chart/data/amzn-data.json @@ -0,0 +1,1829 @@ +[ + { + "Date": "2024-07-01", + "Open": 192.19, + "High": 192.9, + "Low": 191.49, + "Close": 192.09 + }, + { + "Date": "2024-07-02", + "Open": 190.43, + "High": 190.85, + "Low": 189.69, + "Close": 190.34 + }, + { + "Date": "2024-07-03", + "Open": 192.96, + "High": 193.18, + "Low": 191.23, + "Close": 192.87 + }, + { + "Date": "2024-07-04", + "Open": 195.7, + "High": 198.88, + "Low": 195.46, + "Close": 198.11 + }, + { + "Date": "2024-07-05", + "Open": 197.2, + "High": 200.88, + "Low": 193.9, + "Close": 194.67 + }, + { + "Date": "2024-07-08", + "Open": 190.88, + "High": 192.6, + "Low": 190.19, + "Close": 191.82 + }, + { + "Date": "2024-07-09", + "Open": 194.89, + "High": 197.87, + "Low": 192.26, + "Close": 194.36 + }, + { + "Date": "2024-07-10", + "Open": 190.99, + "High": 192.37, + "Low": 189.83, + "Close": 191.04 + }, + { + "Date": "2024-07-11", + "Open": 194.27, + "High": 196.85, + "Low": 191.88, + "Close": 193.23 + }, + { + "Date": "2024-07-12", + "Open": 191.67, + "High": 193.12, + "Low": 188.07, + "Close": 190.86 + }, + { + "Date": "2024-07-15", + "Open": 192.59, + "High": 192.73, + "Low": 191.99, + "Close": 192.57 + }, + { + "Date": "2024-07-16", + "Open": 193.34, + "High": 195.1, + "Low": 192.36, + "Close": 193.96 + }, + { + "Date": "2024-07-17", + "Open": 194.46, + "High": 195.2, + "Low": 193.46, + "Close": 194.16 + }, + { + "Date": "2024-07-18", + "Open": 196.32, + "High": 198.22, + "Low": 194.28, + "Close": 196.39 + }, + { + "Date": "2024-07-19", + "Open": 199.01, + "High": 201.2, + "Low": 198.41, + "Close": 198.68 + }, + { + "Date": "2024-07-22", + "Open": 198.64, + "High": 199.98, + "Low": 197.48, + "Close": 197.93 + }, + { + "Date": "2024-07-23", + "Open": 199.45, + "High": 202.09, + "Low": 198.77, + "Close": 199.35 + }, + { + "Date": "2024-07-24", + "Open": 202.32, + "High": 202.98, + "Low": 198.69, + "Close": 201.41 + }, + { + "Date": "2024-07-25", + "Open": 204.2, + "High": 204.73, + "Low": 201.08, + "Close": 203.53 + }, + { + "Date": "2024-07-26", + "Open": 206.69, + "High": 207.5, + "Low": 203.42, + "Close": 204.02 + }, + { + "Date": "2024-07-29", + "Open": 201.51, + "High": 203.13, + "Low": 198.05, + "Close": 202.99 + }, + { + "Date": "2024-07-30", + "Open": 203.27, + "High": 205.79, + "Low": 201.22, + "Close": 202.57 + }, + { + "Date": "2024-07-31", + "Open": 214.69, + "High": 214.78, + "Low": 213.21, + "Close": 214.04 + }, + { + "Date": "2024-08-01", + "Open": 208.66, + "High": 210.44, + "Low": 208.19, + "Close": 209.46 + }, + { + "Date": "2024-08-02", + "Open": 209.26, + "High": 209.86, + "Low": 207.57, + "Close": 208.31 + }, + { + "Date": "2024-08-05", + "Open": 205.62, + "High": 206.82, + "Low": 205.5, + "Close": 206.54 + }, + { + "Date": "2024-08-06", + "Open": 206.32, + "High": 206.84, + "Low": 206.0, + "Close": 206.72 + }, + { + "Date": "2024-08-07", + "Open": 205.79, + "High": 206.03, + "Low": 205.1, + "Close": 205.97 + }, + { + "Date": "2024-08-08", + "Open": 207.89, + "High": 210.01, + "Low": 204.93, + "Close": 208.97 + }, + { + "Date": "2024-08-09", + "Open": 205.51, + "High": 206.31, + "Low": 202.09, + "Close": 204.19 + }, + { + "Date": "2024-08-12", + "Open": 203.98, + "High": 204.0, + "Low": 201.04, + "Close": 203.99 + }, + { + "Date": "2024-08-13", + "Open": 206.41, + "High": 207.58, + "Low": 204.61, + "Close": 207.38 + }, + { + "Date": "2024-08-14", + "Open": 208.28, + "High": 208.69, + "Low": 207.82, + "Close": 207.83 + }, + { + "Date": "2024-08-15", + "Open": 209.35, + "High": 210.26, + "Low": 205.57, + "Close": 208.55 + }, + { + "Date": "2024-08-16", + "Open": 208.34, + "High": 212.07, + "Low": 204.61, + "Close": 209.24 + }, + { + "Date": "2024-08-19", + "Open": 220.26, + "High": 220.85, + "Low": 219.53, + "Close": 220.1 + }, + { + "Date": "2024-08-20", + "Open": 218.45, + "High": 219.96, + "Low": 218.0, + "Close": 219.01 + }, + { + "Date": "2024-08-21", + "Open": 216.92, + "High": 217.62, + "Low": 215.93, + "Close": 216.22 + }, + { + "Date": "2024-08-22", + "Open": 216.61, + "High": 217.0, + "Low": 215.1, + "Close": 215.98 + }, + { + "Date": "2024-08-23", + "Open": 216.54, + "High": 217.42, + "Low": 215.69, + "Close": 216.38 + }, + { + "Date": "2024-08-26", + "Open": 215.55, + "High": 216.05, + "Low": 214.14, + "Close": 215.1 + }, + { + "Date": "2024-08-27", + "Open": 218.7, + "High": 219.12, + "Low": 217.8, + "Close": 218.41 + }, + { + "Date": "2024-08-28", + "Open": 220.42, + "High": 221.68, + "Low": 219.76, + "Close": 221.38 + }, + { + "Date": "2024-08-29", + "Open": 217.49, + "High": 218.53, + "Low": 217.06, + "Close": 217.91 + }, + { + "Date": "2024-08-30", + "Open": 218.01, + "High": 219.04, + "Low": 217.44, + "Close": 218.74 + }, + { + "Date": "2024-09-02", + "Open": 219.12, + "High": 222.26, + "Low": 215.9, + "Close": 221.34 + }, + { + "Date": "2024-09-03", + "Open": 220.74, + "High": 224.84, + "Low": 218.47, + "Close": 221.51 + }, + { + "Date": "2024-09-04", + "Open": 220.55, + "High": 223.45, + "Low": 219.76, + "Close": 222.13 + }, + { + "Date": "2024-09-05", + "Open": 220.15, + "High": 220.71, + "Low": 218.92, + "Close": 220.47 + }, + { + "Date": "2024-09-06", + "Open": 218.6, + "High": 220.56, + "Low": 217.74, + "Close": 218.16 + }, + { + "Date": "2024-09-09", + "Open": 214.35, + "High": 217.2, + "Low": 210.95, + "Close": 211.85 + }, + { + "Date": "2024-09-10", + "Open": 209.42, + "High": 210.5, + "Low": 209.07, + "Close": 209.12 + }, + { + "Date": "2024-09-11", + "Open": 207.41, + "High": 208.47, + "Low": 204.12, + "Close": 206.97 + }, + { + "Date": "2024-09-12", + "Open": 204.14, + "High": 205.98, + "Low": 200.22, + "Close": 201.97 + }, + { + "Date": "2024-09-13", + "Open": 201.24, + "High": 205.15, + "Low": 200.33, + "Close": 201.03 + }, + { + "Date": "2024-09-16", + "Open": 199.11, + "High": 199.39, + "Low": 195.31, + "Close": 198.86 + }, + { + "Date": "2024-09-17", + "Open": 196.76, + "High": 199.76, + "Low": 193.67, + "Close": 198.32 + }, + { + "Date": "2024-09-18", + "Open": 194.53, + "High": 195.14, + "Low": 192.88, + "Close": 194.31 + }, + { + "Date": "2024-09-19", + "Open": 192.02, + "High": 195.09, + "Low": 191.11, + "Close": 191.26 + }, + { + "Date": "2024-09-20", + "Open": 187.81, + "High": 189.19, + "Low": 186.3, + "Close": 186.64 + }, + { + "Date": "2024-09-23", + "Open": 184.36, + "High": 187.13, + "Low": 182.15, + "Close": 183.64 + }, + { + "Date": "2024-09-24", + "Open": 182.18, + "High": 184.64, + "Low": 179.59, + "Close": 181.42 + }, + { + "Date": "2024-09-25", + "Open": 184.19, + "High": 184.25, + "Low": 180.86, + "Close": 182.16 + }, + { + "Date": "2024-09-26", + "Open": 179.79, + "High": 180.58, + "Low": 179.64, + "Close": 180.06 + }, + { + "Date": "2024-09-27", + "Open": 183.16, + "High": 185.58, + "Low": 180.75, + "Close": 183.72 + }, + { + "Date": "2024-09-30", + "Open": 187.33, + "High": 187.71, + "Low": 183.86, + "Close": 187.22 + }, + { + "Date": "2024-10-01", + "Open": 188.65, + "High": 188.75, + "Low": 187.8, + "Close": 187.84 + }, + { + "Date": "2024-10-02", + "Open": 186.21, + "High": 186.78, + "Low": 183.75, + "Close": 184.39 + }, + { + "Date": "2024-10-03", + "Open": 187.18, + "High": 190.08, + "Low": 185.05, + "Close": 187.32 + }, + { + "Date": "2024-10-04", + "Open": 184.08, + "High": 186.25, + "Low": 180.59, + "Close": 182.53 + }, + { + "Date": "2024-10-07", + "Open": 179.66, + "High": 182.99, + "Low": 176.27, + "Close": 180.66 + }, + { + "Date": "2024-10-08", + "Open": 182.76, + "High": 186.4, + "Low": 179.53, + "Close": 184.99 + }, + { + "Date": "2024-10-09", + "Open": 184.5, + "High": 186.52, + "Low": 181.11, + "Close": 186.42 + }, + { + "Date": "2024-10-10", + "Open": 187.48, + "High": 189.39, + "Low": 186.48, + "Close": 187.78 + }, + { + "Date": "2024-10-11", + "Open": 191.06, + "High": 194.69, + "Low": 190.55, + "Close": 193.48 + }, + { + "Date": "2024-10-14", + "Open": 193.98, + "High": 196.02, + "Low": 192.42, + "Close": 192.83 + }, + { + "Date": "2024-10-15", + "Open": 189.99, + "High": 191.31, + "Low": 186.61, + "Close": 189.98 + }, + { + "Date": "2024-10-16", + "Open": 188.25, + "High": 188.94, + "Low": 187.39, + "Close": 187.46 + }, + { + "Date": "2024-10-17", + "Open": 189.99, + "High": 190.44, + "Low": 189.92, + "Close": 190.16 + }, + { + "Date": "2024-10-18", + "Open": 193.75, + "High": 196.45, + "Low": 192.38, + "Close": 195.2 + }, + { + "Date": "2024-10-21", + "Open": 196.39, + "High": 200.25, + "Low": 195.65, + "Close": 196.27 + }, + { + "Date": "2024-10-22", + "Open": 193.59, + "High": 195.98, + "Low": 193.26, + "Close": 194.4 + }, + { + "Date": "2024-10-23", + "Open": 191.6, + "High": 194.19, + "Low": 190.19, + "Close": 193.23 + }, + { + "Date": "2024-10-24", + "Open": 191.61, + "High": 191.68, + "Low": 189.06, + "Close": 189.12 + }, + { + "Date": "2024-10-25", + "Open": 188.53, + "High": 190.95, + "Low": 187.83, + "Close": 190.24 + }, + { + "Date": "2024-10-28", + "Open": 190.78, + "High": 190.85, + "Low": 190.03, + "Close": 190.68 + }, + { + "Date": "2024-10-29", + "Open": 192.5, + "High": 192.63, + "Low": 189.37, + "Close": 192.45 + }, + { + "Date": "2024-10-30", + "Open": 195.2, + "High": 196.64, + "Low": 192.47, + "Close": 193.05 + }, + { + "Date": "2024-10-31", + "Open": 195.96, + "High": 199.34, + "Low": 193.96, + "Close": 197.35 + }, + { + "Date": "2024-11-01", + "Open": 195.71, + "High": 197.28, + "Low": 192.66, + "Close": 195.82 + }, + { + "Date": "2024-11-04", + "Open": 196.1, + "High": 197.4, + "Low": 193.82, + "Close": 195.77 + }, + { + "Date": "2024-11-05", + "Open": 194.6, + "High": 194.79, + "Low": 194.02, + "Close": 194.53 + }, + { + "Date": "2024-11-06", + "Open": 191.0, + "High": 193.86, + "Low": 189.85, + "Close": 192.58 + }, + { + "Date": "2024-11-07", + "Open": 189.1, + "High": 190.47, + "Low": 188.36, + "Close": 189.17 + }, + { + "Date": "2024-11-08", + "Open": 187.13, + "High": 188.9, + "Low": 184.56, + "Close": 185.4 + }, + { + "Date": "2024-11-11", + "Open": 186.41, + "High": 190.01, + "Low": 185.6, + "Close": 189.86 + }, + { + "Date": "2024-11-12", + "Open": 191.36, + "High": 191.42, + "Low": 191.18, + "Close": 191.35 + }, + { + "Date": "2024-11-13", + "Open": 194.67, + "High": 198.53, + "Low": 191.8, + "Close": 193.42 + }, + { + "Date": "2024-11-14", + "Open": 197.25, + "High": 198.59, + "Low": 195.02, + "Close": 196.06 + }, + { + "Date": "2024-11-15", + "Open": 199.47, + "High": 201.98, + "Low": 195.49, + "Close": 198.1 + }, + { + "Date": "2024-11-18", + "Open": 198.79, + "High": 200.55, + "Low": 195.52, + "Close": 199.53 + }, + { + "Date": "2024-11-19", + "Open": 198.33, + "High": 199.06, + "Low": 197.8, + "Close": 198.08 + }, + { + "Date": "2024-11-20", + "Open": 197.7, + "High": 199.95, + "Low": 196.06, + "Close": 198.09 + }, + { + "Date": "2024-11-21", + "Open": 196.88, + "High": 197.63, + "Low": 196.7, + "Close": 197.27 + }, + { + "Date": "2024-11-22", + "Open": 194.57, + "High": 195.2, + "Low": 191.02, + "Close": 193.02 + }, + { + "Date": "2024-11-25", + "Open": 189.27, + "High": 190.92, + "Low": 188.07, + "Close": 189.39 + }, + { + "Date": "2024-11-26", + "Open": 187.09, + "High": 188.12, + "Low": 186.13, + "Close": 187.32 + }, + { + "Date": "2024-11-27", + "Open": 186.73, + "High": 188.27, + "Low": 183.88, + "Close": 186.22 + }, + { + "Date": "2024-11-28", + "Open": 186.66, + "High": 190.04, + "Low": 182.98, + "Close": 189.97 + }, + { + "Date": "2024-11-29", + "Open": 191.89, + "High": 194.08, + "Low": 191.07, + "Close": 193.31 + }, + { + "Date": "2024-12-02", + "Open": 190.06, + "High": 190.25, + "Low": 187.75, + "Close": 188.71 + }, + { + "Date": "2024-12-03", + "Open": 188.97, + "High": 189.8, + "Low": 188.38, + "Close": 189.78 + }, + { + "Date": "2024-12-04", + "Open": 192.27, + "High": 195.81, + "Low": 191.38, + "Close": 195.26 + }, + { + "Date": "2024-12-05", + "Open": 191.95, + "High": 193.78, + "Low": 188.66, + "Close": 191.23 + }, + { + "Date": "2024-12-06", + "Open": 194.02, + "High": 196.79, + "Low": 191.51, + "Close": 193.49 + }, + { + "Date": "2024-12-09", + "Open": 196.7, + "High": 199.49, + "Low": 195.09, + "Close": 195.64 + }, + { + "Date": "2024-12-10", + "Open": 194.77, + "High": 196.67, + "Low": 192.89, + "Close": 195.91 + }, + { + "Date": "2024-12-11", + "Open": 194.98, + "High": 198.15, + "Low": 192.08, + "Close": 192.86 + }, + { + "Date": "2024-12-12", + "Open": 192.9, + "High": 195.34, + "Low": 189.5, + "Close": 190.89 + }, + { + "Date": "2024-12-13", + "Open": 193.27, + "High": 193.35, + "Low": 190.87, + "Close": 191.32 + }, + { + "Date": "2024-12-16", + "Open": 193.34, + "High": 193.73, + "Low": 189.73, + "Close": 190.55 + }, + { + "Date": "2024-12-17", + "Open": 189.68, + "High": 193.18, + "Low": 186.14, + "Close": 187.61 + }, + { + "Date": "2024-12-18", + "Open": 184.81, + "High": 187.6, + "Low": 183.76, + "Close": 187.12 + }, + { + "Date": "2024-12-19", + "Open": 189.94, + "High": 193.17, + "Low": 188.73, + "Close": 189.54 + }, + { + "Date": "2024-12-20", + "Open": 191.52, + "High": 192.12, + "Low": 188.86, + "Close": 190.69 + }, + { + "Date": "2024-12-23", + "Open": 188.2, + "High": 190.33, + "Low": 185.65, + "Close": 189.03 + }, + { + "Date": "2024-12-24", + "Open": 189.97, + "High": 190.99, + "Low": 186.23, + "Close": 189.82 + }, + { + "Date": "2024-12-25", + "Open": 189.41, + "High": 189.62, + "Low": 187.56, + "Close": 189.47 + }, + { + "Date": "2024-12-26", + "Open": 192.06, + "High": 192.92, + "Low": 188.35, + "Close": 189.02 + }, + { + "Date": "2024-12-27", + "Open": 186.58, + "High": 188.72, + "Low": 184.74, + "Close": 187.08 + }, + { + "Date": "2024-12-30", + "Open": 189.41, + "High": 192.12, + "Low": 187.98, + "Close": 190.09 + }, + { + "Date": "2024-12-31", + "Open": 192.13, + "High": 194.13, + "Low": 189.28, + "Close": 191.55 + }, + { + "Date": "2025-01-01", + "Open": 191.2, + "High": 193.81, + "Low": 190.1, + "Close": 191.68 + }, + { + "Date": "2025-01-02", + "Open": 188.0, + "High": 190.58, + "Low": 185.8, + "Close": 187.84 + }, + { + "Date": "2025-01-03", + "Open": 184.94, + "High": 188.34, + "Low": 182.09, + "Close": 187.13 + }, + { + "Date": "2025-01-06", + "Open": 186.96, + "High": 187.37, + "Low": 185.26, + "Close": 185.76 + }, + { + "Date": "2025-01-07", + "Open": 184.81, + "High": 187.11, + "Low": 181.22, + "Close": 183.96 + }, + { + "Date": "2025-01-08", + "Open": 187.46, + "High": 189.82, + "Low": 184.69, + "Close": 185.39 + }, + { + "Date": "2025-01-09", + "Open": 185.28, + "High": 186.48, + "Low": 182.28, + "Close": 186.45 + }, + { + "Date": "2025-01-10", + "Open": 189.6, + "High": 192.09, + "Low": 187.7, + "Close": 188.59 + }, + { + "Date": "2025-01-13", + "Open": 190.5, + "High": 192.25, + "Low": 188.59, + "Close": 191.56 + }, + { + "Date": "2025-01-14", + "Open": 190.87, + "High": 192.38, + "Low": 189.85, + "Close": 190.37 + }, + { + "Date": "2025-01-15", + "Open": 192.4, + "High": 192.71, + "Low": 189.79, + "Close": 190.67 + }, + { + "Date": "2025-01-16", + "Open": 191.37, + "High": 193.49, + "Low": 190.47, + "Close": 191.98 + }, + { + "Date": "2025-01-17", + "Open": 195.65, + "High": 195.73, + "Low": 194.55, + "Close": 194.57 + }, + { + "Date": "2025-01-20", + "Open": 196.03, + "High": 197.75, + "Low": 193.92, + "Close": 196.32 + }, + { + "Date": "2025-01-21", + "Open": 195.26, + "High": 197.99, + "Low": 192.95, + "Close": 193.96 + }, + { + "Date": "2025-01-22", + "Open": 194.56, + "High": 195.19, + "Low": 193.74, + "Close": 195.09 + }, + { + "Date": "2025-01-23", + "Open": 194.8, + "High": 195.29, + "Low": 193.59, + "Close": 194.8 + }, + { + "Date": "2025-01-24", + "Open": 194.71, + "High": 196.74, + "Low": 194.28, + "Close": 196.02 + }, + { + "Date": "2025-01-27", + "Open": 195.27, + "High": 196.04, + "Low": 192.61, + "Close": 194.22 + }, + { + "Date": "2025-01-28", + "Open": 196.06, + "High": 199.1, + "Low": 192.26, + "Close": 195.15 + }, + { + "Date": "2025-01-29", + "Open": 193.13, + "High": 193.8, + "Low": 192.23, + "Close": 193.04 + }, + { + "Date": "2025-01-30", + "Open": 194.52, + "High": 197.86, + "Low": 193.59, + "Close": 194.45 + }, + { + "Date": "2025-01-31", + "Open": 197.99, + "High": 199.06, + "Low": 196.81, + "Close": 196.94 + }, + { + "Date": "2025-02-03", + "Open": 196.51, + "High": 200.41, + "Low": 195.5, + "Close": 200.12 + }, + { + "Date": "2025-02-04", + "Open": 200.87, + "High": 203.0, + "Low": 197.66, + "Close": 199.47 + }, + { + "Date": "2025-02-05", + "Open": 200.9, + "High": 203.92, + "Low": 200.64, + "Close": 201.25 + }, + { + "Date": "2025-02-06", + "Open": 197.93, + "High": 200.72, + "Low": 195.59, + "Close": 199.07 + }, + { + "Date": "2025-02-07", + "Open": 197.64, + "High": 197.92, + "Low": 194.88, + "Close": 195.31 + }, + { + "Date": "2025-02-10", + "Open": 193.4, + "High": 195.13, + "Low": 193.1, + "Close": 193.45 + }, + { + "Date": "2025-02-11", + "Open": 195.24, + "High": 195.72, + "Low": 194.97, + "Close": 195.68 + }, + { + "Date": "2025-02-12", + "Open": 197.99, + "High": 200.15, + "Low": 196.64, + "Close": 197.67 + }, + { + "Date": "2025-02-13", + "Open": 200.35, + "High": 202.8, + "Low": 197.77, + "Close": 200.36 + }, + { + "Date": "2025-02-14", + "Open": 202.5, + "High": 203.28, + "Low": 200.92, + "Close": 201.61 + }, + { + "Date": "2025-02-17", + "Open": 202.19, + "High": 203.2, + "Low": 198.23, + "Close": 203.16 + }, + { + "Date": "2025-02-18", + "Open": 201.78, + "High": 202.59, + "Low": 198.35, + "Close": 200.95 + }, + { + "Date": "2025-02-19", + "Open": 197.84, + "High": 200.44, + "Low": 194.78, + "Close": 198.81 + }, + { + "Date": "2025-02-20", + "Open": 197.35, + "High": 199.67, + "Low": 197.32, + "Close": 197.85 + }, + { + "Date": "2025-02-21", + "Open": 201.6, + "High": 202.21, + "Low": 197.95, + "Close": 198.49 + }, + { + "Date": "2025-02-24", + "Open": 198.12, + "High": 199.48, + "Low": 194.53, + "Close": 194.94 + }, + { + "Date": "2025-02-25", + "Open": 198.54, + "High": 201.16, + "Low": 196.12, + "Close": 199.04 + }, + { + "Date": "2025-02-26", + "Open": 199.24, + "High": 201.2, + "Low": 197.42, + "Close": 199.3 + }, + { + "Date": "2025-02-27", + "Open": 198.09, + "High": 200.08, + "Low": 197.34, + "Close": 199.98 + }, + { + "Date": "2025-02-28", + "Open": 196.19, + "High": 198.79, + "Low": 192.44, + "Close": 193.75 + }, + { + "Date": "2025-03-03", + "Open": 190.71, + "High": 192.19, + "Low": 189.7, + "Close": 192.02 + }, + { + "Date": "2025-03-04", + "Open": 188.55, + "High": 189.71, + "Low": 185.24, + "Close": 185.68 + }, + { + "Date": "2025-03-05", + "Open": 188.34, + "High": 191.18, + "Low": 185.09, + "Close": 186.68 + }, + { + "Date": "2025-03-06", + "Open": 188.94, + "High": 191.64, + "Low": 186.93, + "Close": 190.76 + }, + { + "Date": "2025-03-07", + "Open": 186.96, + "High": 189.67, + "Low": 186.35, + "Close": 188.76 + }, + { + "Date": "2025-03-10", + "Open": 188.08, + "High": 190.01, + "Low": 184.45, + "Close": 188.09 + }, + { + "Date": "2025-03-11", + "Open": 184.38, + "High": 187.34, + "Low": 181.96, + "Close": 186.02 + }, + { + "Date": "2025-03-12", + "Open": 188.31, + "High": 190.35, + "Low": 187.27, + "Close": 189.34 + }, + { + "Date": "2025-03-13", + "Open": 187.9, + "High": 191.49, + "Low": 186.94, + "Close": 191.21 + }, + { + "Date": "2025-03-14", + "Open": 194.0, + "High": 194.05, + "Low": 191.15, + "Close": 191.25 + }, + { + "Date": "2025-03-17", + "Open": 190.23, + "High": 192.58, + "Low": 187.41, + "Close": 189.36 + }, + { + "Date": "2025-03-18", + "Open": 187.86, + "High": 190.87, + "Low": 184.83, + "Close": 186.75 + }, + { + "Date": "2025-03-19", + "Open": 188.11, + "High": 189.74, + "Low": 187.99, + "Close": 188.33 + }, + { + "Date": "2025-03-20", + "Open": 189.83, + "High": 191.59, + "Low": 187.47, + "Close": 189.65 + }, + { + "Date": "2025-03-21", + "Open": 189.5, + "High": 191.04, + "Low": 188.55, + "Close": 190.91 + }, + { + "Date": "2025-03-24", + "Open": 187.76, + "High": 187.87, + "Low": 186.22, + "Close": 186.66 + }, + { + "Date": "2025-03-25", + "Open": 185.86, + "High": 188.35, + "Low": 184.76, + "Close": 186.33 + }, + { + "Date": "2025-03-26", + "Open": 188.92, + "High": 192.13, + "Low": 187.26, + "Close": 190.52 + }, + { + "Date": "2025-03-27", + "Open": 187.73, + "High": 190.94, + "Low": 184.35, + "Close": 188.07 + }, + { + "Date": "2025-03-28", + "Open": 190.09, + "High": 191.87, + "Low": 189.81, + "Close": 190.76 + }, + { + "Date": "2025-03-31", + "Open": 191.16, + "High": 194.32, + "Low": 189.5, + "Close": 192.15 + }, + { + "Date": "2025-04-01", + "Open": 191.3, + "High": 193.89, + "Low": 189.82, + "Close": 190.23 + }, + { + "Date": "2025-04-02", + "Open": 189.23, + "High": 191.67, + "Low": 185.46, + "Close": 188.48 + }, + { + "Date": "2025-04-03", + "Open": 188.84, + "High": 189.28, + "Low": 185.68, + "Close": 188.02 + }, + { + "Date": "2025-04-04", + "Open": 190.86, + "High": 191.66, + "Low": 187.81, + "Close": 188.6 + }, + { + "Date": "2025-04-07", + "Open": 192.34, + "High": 192.76, + "Low": 189.23, + "Close": 189.28 + }, + { + "Date": "2025-04-08", + "Open": 189.05, + "High": 189.96, + "Low": 185.34, + "Close": 185.78 + }, + { + "Date": "2025-04-09", + "Open": 185.49, + "High": 186.5, + "Low": 184.83, + "Close": 185.56 + }, + { + "Date": "2025-04-10", + "Open": 183.37, + "High": 184.43, + "Low": 181.95, + "Close": 183.73 + }, + { + "Date": "2025-04-11", + "Open": 185.13, + "High": 187.46, + "Low": 181.93, + "Close": 185.33 + }, + { + "Date": "2025-04-14", + "Open": 187.6, + "High": 190.27, + "Low": 185.51, + "Close": 189.95 + }, + { + "Date": "2025-04-15", + "Open": 190.88, + "High": 192.97, + "Low": 189.63, + "Close": 189.77 + }, + { + "Date": "2025-04-16", + "Open": 188.61, + "High": 190.9, + "Low": 184.9, + "Close": 189.62 + }, + { + "Date": "2025-04-17", + "Open": 186.83, + "High": 188.31, + "Low": 185.75, + "Close": 188.21 + }, + { + "Date": "2025-04-18", + "Open": 186.04, + "High": 187.81, + "Low": 184.15, + "Close": 186.6 + }, + { + "Date": "2025-04-21", + "Open": 189.18, + "High": 192.56, + "Low": 187.6, + "Close": 188.35 + }, + { + "Date": "2025-04-22", + "Open": 187.13, + "High": 190.76, + "Low": 184.98, + "Close": 185.83 + }, + { + "Date": "2025-04-23", + "Open": 186.47, + "High": 188.85, + "Low": 183.38, + "Close": 187.23 + }, + { + "Date": "2025-04-24", + "Open": 185.73, + "High": 187.7, + "Low": 183.64, + "Close": 187.69 + }, + { + "Date": "2025-04-25", + "Open": 189.65, + "High": 192.07, + "Low": 187.21, + "Close": 189.75 + }, + { + "Date": "2025-04-28", + "Open": 193.47, + "High": 193.87, + "Low": 193.21, + "Close": 193.78 + }, + { + "Date": "2025-04-29", + "Open": 193.54, + "High": 195.51, + "Low": 192.22, + "Close": 193.62 + }, + { + "Date": "2025-04-30", + "Open": 191.5, + "High": 192.72, + "Low": 190.41, + "Close": 190.9 + }, + { + "Date": "2025-05-01", + "Open": 192.24, + "High": 193.01, + "Low": 190.3, + "Close": 191.79 + }, + { + "Date": "2025-05-02", + "Open": 194.01, + "High": 196.64, + "Low": 192.33, + "Close": 195.35 + }, + { + "Date": "2025-05-05", + "Open": 197.69, + "High": 199.7, + "Low": 195.4, + "Close": 197.83 + }, + { + "Date": "2025-05-06", + "Open": 199.14, + "High": 202.89, + "Low": 198.53, + "Close": 201.23 + }, + { + "Date": "2025-05-07", + "Open": 198.75, + "High": 200.37, + "Low": 197.53, + "Close": 197.61 + }, + { + "Date": "2025-05-08", + "Open": 197.85, + "High": 199.24, + "Low": 197.76, + "Close": 198.39 + }, + { + "Date": "2025-05-09", + "Open": 201.13, + "High": 201.43, + "Low": 197.67, + "Close": 200.76 + }, + { + "Date": "2025-05-12", + "Open": 204.11, + "High": 205.45, + "Low": 201.65, + "Close": 203.74 + }, + { + "Date": "2025-05-13", + "Open": 199.88, + "High": 203.56, + "Low": 199.68, + "Close": 203.56 + }, + { + "Date": "2025-05-14", + "Open": 201.28, + "High": 201.93, + "Low": 199.91, + "Close": 201.15 + }, + { + "Date": "2025-05-15", + "Open": 202.73, + "High": 202.81, + "Low": 199.58, + "Close": 202.36 + }, + { + "Date": "2025-05-16", + "Open": 199.21, + "High": 200.9, + "Low": 198.57, + "Close": 198.67 + }, + { + "Date": "2025-05-19", + "Open": 200.23, + "High": 202.05, + "Low": 199.73, + "Close": 201.91 + }, + { + "Date": "2025-05-20", + "Open": 197.93, + "High": 201.53, + "Low": 194.8, + "Close": 198.84 + }, + { + "Date": "2025-05-21", + "Open": 202.61, + "High": 202.75, + "Low": 199.63, + "Close": 199.92 + }, + { + "Date": "2025-05-22", + "Open": 197.65, + "High": 199.18, + "Low": 195.77, + "Close": 197.07 + }, + { + "Date": "2025-05-23", + "Open": 196.25, + "High": 200.11, + "Low": 194.25, + "Close": 198.89 + }, + { + "Date": "2025-05-26", + "Open": 198.76, + "High": 201.5, + "Low": 195.7, + "Close": 200.12 + }, + { + "Date": "2025-05-27", + "Open": 203.56, + "High": 205.91, + "Low": 201.23, + "Close": 205.48 + }, + { + "Date": "2025-05-28", + "Open": 205.67, + "High": 206.43, + "Low": 201.91, + "Close": 204.41 + }, + { + "Date": "2025-05-29", + "Open": 206.86, + "High": 207.2, + "Low": 204.17, + "Close": 207.08 + }, + { + "Date": "2025-05-30", + "Open": 210.74, + "High": 213.69, + "Low": 207.95, + "Close": 210.41 + }, + { + "Date": "2025-06-02", + "Open": 206.73, + "High": 208.0, + "Low": 206.48, + "Close": 207.99 + }, + { + "Date": "2025-06-03", + "Open": 208.64, + "High": 209.48, + "Low": 207.25, + "Close": 208.92 + }, + { + "Date": "2025-06-04", + "Open": 210.59, + "High": 214.67, + "Low": 209.45, + "Close": 212.58 + }, + { + "Date": "2025-06-05", + "Open": 213.38, + "High": 215.6, + "Low": 211.92, + "Close": 215.17 + }, + { + "Date": "2025-06-06", + "Open": 219.46, + "High": 223.49, + "Low": 217.62, + "Close": 219.74 + }, + { + "Date": "2025-06-09", + "Open": 221.38, + "High": 224.98, + "Low": 219.12, + "Close": 221.56 + }, + { + "Date": "2025-06-10", + "Open": 223.59, + "High": 224.61, + "Low": 221.75, + "Close": 222.67 + }, + { + "Date": "2025-06-11", + "Open": 225.79, + "High": 228.61, + "Low": 222.57, + "Close": 225.86 + }, + { + "Date": "2025-06-12", + "Open": 225.06, + "High": 228.81, + "Low": 224.42, + "Close": 224.88 + }, + { + "Date": "2025-06-13", + "Open": 222.65, + "High": 223.66, + "Low": 221.0, + "Close": 221.64 + }, + { + "Date": "2025-06-16", + "Open": 220.44, + "High": 224.6, + "Low": 217.53, + "Close": 221.15 + }, + { + "Date": "2025-06-17", + "Open": 223.78, + "High": 224.78, + "Low": 219.9, + "Close": 220.36 + }, + { + "Date": "2025-06-18", + "Open": 220.9, + "High": 224.65, + "Low": 220.56, + "Close": 220.67 + }, + { + "Date": "2025-06-19", + "Open": 222.72, + "High": 226.72, + "Low": 222.49, + "Close": 224.24 + }, + { + "Date": "2025-06-20", + "Open": 227.64, + "High": 231.94, + "Low": 223.7, + "Close": 228.93 + }, + { + "Date": "2025-06-23", + "Open": 224.53, + "High": 226.19, + "Low": 220.62, + "Close": 220.96 + }, + { + "Date": "2025-06-24", + "Open": 223.74, + "High": 228.12, + "Low": 222.5, + "Close": 222.54 + }, + { + "Date": "2025-06-25", + "Open": 221.04, + "High": 221.12, + "Low": 219.05, + "Close": 219.11 + }, + { + "Date": "2025-06-26", + "Open": 219.3, + "High": 223.46, + "Low": 217.06, + "Close": 217.25 + }, + { + "Date": "2025-06-27", + "Open": 219.77, + "High": 221.14, + "Low": 216.28, + "Close": 218.01 + }, + { + "Date": "2025-06-30", + "Open": 222.01, + "High": 223.18, + "Low": 217.87, + "Close": 222.27 + } +] \ No newline at end of file diff --git a/typescript/src/app/chart/data/goog-data.json b/typescript/src/app/chart/data/goog-data.json new file mode 100644 index 0000000..8020787 --- /dev/null +++ b/typescript/src/app/chart/data/goog-data.json @@ -0,0 +1,1766 @@ +[ + { + "Date": "2024-07-01", + "Open": 182.76, + "High": 182.93, + "Low": 180.89, + "Close": 181.03 + }, + { + "Date": "2024-07-02", + "Open": 181.55, + "High": 183.05, + "Low": 180.46, + "Close": 182.3 + }, + { + "Date": "2024-07-03", + "Open": 183.21, + "High": 184.23, + "Low": 182.08, + "Close": 182.48 + }, + { + "Date": "2024-07-04", + "Open": 181.46, + "High": 182.33, + "Low": 181.17, + "Close": 182.01 + }, + { + "Date": "2024-07-05", + "Open": 182.45, + "High": 182.62, + "Low": 181.51, + "Close": 182.3 + }, + { + "Date": "2024-07-08", + "Open": 182.28, + "High": 183.21, + "Low": 180.64, + "Close": 183.18 + }, + { + "Date": "2024-07-09", + "Open": 183.77, + "High": 185.5, + "Low": 183.27, + "Close": 184.72 + }, + { + "Date": "2024-07-10", + "Open": 183.81, + "High": 184.51, + "Low": 183.24, + "Close": 183.37 + }, + { + "Date": "2024-07-11", + "Open": 182.33, + "High": 183.18, + "Low": 181.1, + "Close": 182.08 + }, + { + "Date": "2024-07-12", + "Open": 182.46, + "High": 183.11, + "Low": 182.01, + "Close": 182.93 + }, + { + "Date": "2024-07-15", + "Open": 181.92, + "High": 182.7, + "Low": 181.0, + "Close": 181.32 + }, + { + "Date": "2024-07-16", + "Open": 179.87, + "High": 181.27, + "Low": 178.86, + "Close": 180.89 + }, + { + "Date": "2024-07-17", + "Open": 180.69, + "High": 181.92, + "Low": 180.57, + "Close": 181.31 + }, + { + "Date": "2024-07-18", + "Open": 180.07, + "High": 181.29, + "Low": 178.68, + "Close": 179.83 + }, + { + "Date": "2024-07-19", + "Open": 179.95, + "High": 181.33, + "Low": 179.41, + "Close": 181.06 + }, + { + "Date": "2024-07-22", + "Open": 181.66, + "High": 183.16, + "Low": 180.45, + "Close": 180.69 + }, + { + "Date": "2024-07-23", + "Open": 179.54, + "High": 180.07, + "Low": 179.19, + "Close": 179.94 + }, + { + "Date": "2024-07-24", + "Open": 180.77, + "High": 180.95, + "Low": 179.69, + "Close": 180.68 + }, + { + "Date": "2024-07-25", + "Open": 182.07, + "High": 182.42, + "Low": 180.36, + "Close": 181.19 + }, + { + "Date": "2024-07-26", + "Open": 181.49, + "High": 182.47, + "Low": 180.38, + "Close": 180.55 + }, + { + "Date": "2024-07-29", + "Open": 179.17, + "High": 179.44, + "Low": 178.41, + "Close": 178.48 + }, + { + "Date": "2024-07-30", + "Open": 178.4, + "High": 178.58, + "Low": 177.48, + "Close": 178.49 + }, + { + "Date": "2024-07-31", + "Open": 179.36, + "High": 181.33, + "Low": 179.25, + "Close": 180.07 + }, + { + "Date": "2024-08-01", + "Open": 179.38, + "High": 179.68, + "Low": 177.78, + "Close": 178.19 + }, + { + "Date": "2024-08-02", + "Open": 179.54, + "High": 180.55, + "Low": 179.24, + "Close": 180.54 + }, + { + "Date": "2024-08-05", + "Open": 179.56, + "High": 179.71, + "Low": 179.21, + "Close": 179.48 + }, + { + "Date": "2024-08-06", + "Open": 180.14, + "High": 181.08, + "Low": 178.94, + "Close": 180.78 + }, + { + "Date": "2024-08-07", + "Open": 179.8, + "High": 181.44, + "Low": 177.88, + "Close": 180.21 + }, + { + "Date": "2024-08-08", + "Open": 178.72, + "High": 179.69, + "Low": 177.55, + "Close": 179.18 + }, + { + "Date": "2024-08-09", + "Open": 179.32, + "High": 180.65, + "Low": 179.02, + "Close": 180.6 + }, + { + "Date": "2024-08-12", + "Open": 181.35, + "High": 182.2, + "Low": 180.41, + "Close": 180.84 + }, + { + "Date": "2024-08-13", + "Open": 182.31, + "High": 184.13, + "Low": 180.81, + "Close": 180.82 + }, + { + "Date": "2024-08-14", + "Open": 181.88, + "High": 183.16, + "Low": 181.46, + "Close": 182.32 + }, + { + "Date": "2024-08-15", + "Open": 180.82, + "High": 182.16, + "Low": 179.01, + "Close": 181.79 + }, + { + "Date": "2024-08-16", + "Open": 182.04, + "High": 182.76, + "Low": 180.81, + "Close": 182.45 + }, + { + "Date": "2024-08-19", + "Open": 182.32, + "High": 184.01, + "Low": 181.31, + "Close": 182.04 + }, + { + "Date": "2024-08-20", + "Open": 181.98, + "High": 183.81, + "Low": 181.47, + "Close": 182.61 + }, + { + "Date": "2024-08-21", + "Open": 182.5, + "High": 184.25, + "Low": 181.96, + "Close": 182.09 + }, + { + "Date": "2024-08-22", + "Open": 182.61, + "High": 184.05, + "Low": 181.94, + "Close": 182.99 + }, + { + "Date": "2024-08-23", + "Open": 182.66, + "High": 182.88, + "Low": 182.39, + "Close": 182.7 + }, + { + "Date": "2024-08-26", + "Open": 183.55, + "High": 185.32, + "Low": 181.74, + "Close": 181.86 + }, + { + "Date": "2024-08-27", + "Open": 183.25, + "High": 184.56, + "Low": 181.28, + "Close": 183.05 + }, + { + "Date": "2024-08-28", + "Open": 181.75, + "High": 183.67, + "Low": 181.12, + "Close": 182.28 + }, + { + "Date": "2024-08-29", + "Open": 183.4, + "High": 184.53, + "Low": 181.8, + "Close": 182.69 + }, + { + "Date": "2024-08-30", + "Open": 183.24, + "High": 184.61, + "Low": 181.85, + "Close": 182.99 + }, + { + "Date": "2024-09-02", + "Open": 183.46, + "High": 185.46, + "Low": 182.49, + "Close": 183.47 + }, + { + "Date": "2024-09-03", + "Open": 182.47, + "High": 183.49, + "Low": 181.06, + "Close": 181.79 + }, + { + "Date": "2024-09-04", + "Open": 180.39, + "High": 181.93, + "Low": 179.37, + "Close": 181.74 + }, + { + "Date": "2024-09-05", + "Open": 182.33, + "High": 182.55, + "Low": 180.7, + "Close": 182.32 + }, + { + "Date": "2024-09-06", + "Open": 181.43, + "High": 182.24, + "Low": 179.63, + "Close": 179.85 + }, + { + "Date": "2024-09-09", + "Open": 180.11, + "High": 181.7, + "Low": 179.89, + "Close": 180.82 + }, + { + "Date": "2024-09-10", + "Open": 180.89, + "High": 181.72, + "Low": 179.72, + "Close": 180.47 + }, + { + "Date": "2024-09-11", + "Open": 179.11, + "High": 180.67, + "Low": 177.61, + "Close": 179.79 + }, + { + "Date": "2024-09-12", + "Open": 180.47, + "High": 181.77, + "Low": 179.81, + "Close": 181.56 + }, + { + "Date": "2024-09-13", + "Open": 180.58, + "High": 181.82, + "Low": 179.17, + "Close": 180.64 + }, + { + "Date": "2024-09-16", + "Open": 180.39, + "High": 182.2, + "Low": 179.07, + "Close": 180.01 + }, + { + "Date": "2024-09-17", + "Open": 180.64, + "High": 182.37, + "Low": 178.85, + "Close": 179.66 + }, + { + "Date": "2024-09-18", + "Open": 178.25, + "High": 179.98, + "Low": 176.72, + "Close": 178.9 + }, + { + "Date": "2024-09-19", + "Open": 177.58, + "High": 178.15, + "Low": 176.06, + "Close": 177.66 + }, + { + "Date": "2024-09-20", + "Open": 177.31, + "High": 178.49, + "Low": 176.84, + "Close": 177.81 + }, + { + "Date": "2024-09-23", + "Open": 178.8, + "High": 180.77, + "Low": 177.04, + "Close": 179.58 + }, + { + "Date": "2024-09-24", + "Open": 180.48, + "High": 182.28, + "Low": 179.7, + "Close": 181.32 + }, + { + "Date": "2024-09-25", + "Open": 182.04, + "High": 183.17, + "Low": 181.17, + "Close": 182.66 + }, + { + "Date": "2024-09-26", + "Open": 181.66, + "High": 182.08, + "Low": 180.64, + "Close": 181.79 + }, + { + "Date": "2024-09-27", + "Open": 181.88, + "High": 183.8, + "Low": 179.93, + "Close": 180.1 + }, + { + "Date": "2024-09-30", + "Open": 179.87, + "High": 180.15, + "Low": 178.31, + "Close": 179.02 + }, + { + "Date": "2024-10-01", + "Open": 178.74, + "High": 179.04, + "Low": 177.16, + "Close": 178.06 + }, + { + "Date": "2024-10-02", + "Open": 176.6, + "High": 177.13, + "Low": 175.72, + "Close": 176.24 + }, + { + "Date": "2024-10-03", + "Open": 176.42, + "High": 177.53, + "Low": 175.13, + "Close": 176.82 + }, + { + "Date": "2024-10-04", + "Open": 176.11, + "High": 176.24, + "Low": 174.34, + "Close": 175.98 + }, + { + "Date": "2024-10-07", + "Open": 176.93, + "High": 177.52, + "Low": 176.24, + "Close": 176.6 + }, + { + "Date": "2024-10-08", + "Open": 177.06, + "High": 178.91, + "Low": 176.88, + "Close": 178.1 + }, + { + "Date": "2024-10-09", + "Open": 177.53, + "High": 177.69, + "Low": 177.23, + "Close": 177.47 + }, + { + "Date": "2024-10-10", + "Open": 178.81, + "High": 179.42, + "Low": 177.33, + "Close": 178.27 + }, + { + "Date": "2024-10-11", + "Open": 178.7, + "High": 180.63, + "Low": 177.07, + "Close": 180.04 + }, + { + "Date": "2024-10-14", + "Open": 181.24, + "High": 182.38, + "Low": 179.84, + "Close": 180.09 + }, + { + "Date": "2024-10-15", + "Open": 181.43, + "High": 181.95, + "Low": 180.64, + "Close": 181.36 + }, + { + "Date": "2024-10-16", + "Open": 182.64, + "High": 183.53, + "Low": 181.74, + "Close": 183.03 + }, + { + "Date": "2024-10-17", + "Open": 183.87, + "High": 184.1, + "Low": 183.64, + "Close": 183.67 + }, + { + "Date": "2024-10-18", + "Open": 184.55, + "High": 185.66, + "Low": 183.57, + "Close": 184.99 + }, + { + "Date": "2024-10-21", + "Open": 184.97, + "High": 186.91, + "Low": 184.38, + "Close": 184.87 + }, + { + "Date": "2024-10-22", + "Open": 185.59, + "High": 187.25, + "Low": 185.11, + "Close": 187.13 + }, + { + "Date": "2024-10-23", + "Open": 188.39, + "High": 189.05, + "Low": 187.91, + "Close": 188.13 + }, + { + "Date": "2024-10-24", + "Open": 186.99, + "High": 188.52, + "Low": 185.59, + "Close": 186.56 + }, + { + "Date": "2024-10-25", + "Open": 185.86, + "High": 186.6, + "Low": 184.37, + "Close": 184.78 + }, + { + "Date": "2024-10-28", + "Open": 184.55, + "High": 185.28, + "Low": 184.36, + "Close": 185.15 + }, + { + "Date": "2024-10-29", + "Open": 186.11, + "High": 186.6, + "Low": 185.37, + "Close": 186.26 + }, + { + "Date": "2024-10-30", + "Open": 187.5, + "High": 188.25, + "Low": 186.65, + "Close": 187.99 + }, + { + "Date": "2024-10-31", + "Open": 186.58, + "High": 187.79, + "Low": 185.11, + "Close": 186.28 + }, + { + "Date": "2024-11-01", + "Open": 187.29, + "High": 188.14, + "Low": 185.36, + "Close": 186.37 + }, + { + "Date": "2024-11-04", + "Open": 185.49, + "High": 186.18, + "Low": 183.88, + "Close": 185.86 + }, + { + "Date": "2024-11-05", + "Open": 186.0, + "High": 187.18, + "Low": 185.75, + "Close": 186.18 + }, + { + "Date": "2024-11-06", + "Open": 186.47, + "High": 188.35, + "Low": 185.97, + "Close": 186.04 + }, + { + "Date": "2024-11-07", + "Open": 185.9, + "High": 187.46, + "Low": 184.28, + "Close": 186.14 + }, + { + "Date": "2024-11-08", + "Open": 185.14, + "High": 185.58, + "Low": 184.41, + "Close": 185.02 + }, + { + "Date": "2024-11-11", + "Open": 183.57, + "High": 184.98, + "Low": 183.22, + "Close": 184.67 + }, + { + "Date": "2024-11-12", + "Open": 185.93, + "High": 186.79, + "Low": 184.41, + "Close": 185.88 + }, + { + "Date": "2024-11-13", + "Open": 187.22, + "High": 187.72, + "Low": 187.02, + "Close": 187.56 + }, + { + "Date": "2024-11-14", + "Open": 187.66, + "High": 189.41, + "Low": 185.97, + "Close": 186.45 + }, + { + "Date": "2024-11-15", + "Open": 185.0, + "High": 186.21, + "Low": 184.75, + "Close": 185.03 + }, + { + "Date": "2024-11-18", + "Open": 184.09, + "High": 184.97, + "Low": 182.75, + "Close": 183.55 + }, + { + "Date": "2024-11-19", + "Open": 182.84, + "High": 183.95, + "Low": 181.32, + "Close": 183.38 + }, + { + "Date": "2024-11-20", + "Open": 182.19, + "High": 183.31, + "Low": 182.06, + "Close": 183.16 + }, + { + "Date": "2024-11-21", + "Open": 183.52, + "High": 184.02, + "Low": 181.93, + "Close": 183.31 + }, + { + "Date": "2024-11-22", + "Open": 184.65, + "High": 186.2, + "Low": 183.88, + "Close": 184.26 + }, + { + "Date": "2024-11-25", + "Open": 184.54, + "High": 184.94, + "Low": 184.42, + "Close": 184.86 + }, + { + "Date": "2024-11-26", + "Open": 185.82, + "High": 187.13, + "Low": 184.93, + "Close": 186.04 + }, + { + "Date": "2024-11-27", + "Open": 186.59, + "High": 188.51, + "Low": 184.65, + "Close": 187.8 + }, + { + "Date": "2024-11-28", + "Open": 187.69, + "High": 189.66, + "Low": 186.96, + "Close": 188.79 + }, + { + "Date": "2024-11-29", + "Open": 190.0, + "High": 190.96, + "Low": 188.47, + "Close": 189.71 + }, + { + "Date": "2024-12-02", + "Open": 188.23, + "High": 189.55, + "Low": 187.21, + "Close": 187.87 + }, + { + "Date": "2024-12-03", + "Open": 187.11, + "High": 188.3, + "Low": 185.48, + "Close": 188.18 + }, + { + "Date": "2024-12-04", + "Open": 188.78, + "High": 189.88, + "Low": 187.21, + "Close": 189.69 + }, + { + "Date": "2024-12-05", + "Open": 190.77, + "High": 192.17, + "Low": 189.11, + "Close": 191.24 + }, + { + "Date": "2024-12-06", + "Open": 190.11, + "High": 190.81, + "Low": 188.68, + "Close": 189.15 + }, + { + "Date": "2024-12-09", + "Open": 189.16, + "High": 189.48, + "Low": 188.61, + "Close": 189.31 + }, + { + "Date": "2024-12-10", + "Open": 189.42, + "High": 190.84, + "Low": 187.53, + "Close": 188.73 + }, + { + "Date": "2024-12-11", + "Open": 188.93, + "High": 190.37, + "Low": 187.84, + "Close": 188.13 + }, + { + "Date": "2024-12-12", + "Open": 187.05, + "High": 188.09, + "Low": 185.88, + "Close": 186.9 + }, + { + "Date": "2024-12-13", + "Open": 185.67, + "High": 186.75, + "Low": 184.62, + "Close": 186.64 + }, + { + "Date": "2024-12-16", + "Open": 186.76, + "High": 187.47, + "Low": 185.74, + "Close": 187.11 + }, + { + "Date": "2024-12-17", + "Open": 186.07, + "High": 187.55, + "Low": 184.12, + "Close": 187.52 + }, + { + "Date": "2024-12-18", + "Open": 187.59, + "High": 188.3, + "Low": 186.18, + "Close": 188.09 + }, + { + "Date": "2024-12-19", + "Open": 189.25, + "High": 190.13, + "Low": 188.69, + "Close": 189.03 + }, + { + "Date": "2024-12-20", + "Open": 187.91, + "High": 188.24, + "Low": 186.3, + "Close": 186.5 + }, + { + "Date": "2024-12-23", + "Open": 185.52, + "High": 187.42, + "Low": 184.88, + "Close": 186.85 + }, + { + "Date": "2024-12-24", + "Open": 185.49, + "High": 186.04, + "Low": 184.3, + "Close": 184.78 + }, + { + "Date": "2024-12-25", + "Open": 184.98, + "High": 186.0, + "Low": 183.72, + "Close": 184.27 + }, + { + "Date": "2024-12-26", + "Open": 185.23, + "High": 185.76, + "Low": 184.48, + "Close": 185.58 + }, + { + "Date": "2024-12-27", + "Open": 184.76, + "High": 185.69, + "Low": 183.19, + "Close": 183.96 + }, + { + "Date": "2024-12-30", + "Open": 183.31, + "High": 184.85, + "Low": 182.97, + "Close": 183.74 + }, + { + "Date": "2024-12-31", + "Open": 185.14, + "High": 186.61, + "Low": 184.77, + "Close": 185.68 + }, + { + "Date": "2025-01-01", + "Open": 184.42, + "High": 185.4, + "Low": 182.54, + "Close": 183.3 + }, + { + "Date": "2025-01-02", + "Open": 182.67, + "High": 184.46, + "Low": 181.97, + "Close": 183.53 + }, + { + "Date": "2025-01-03", + "Open": 184.96, + "High": 185.16, + "Low": 184.64, + "Close": 185.14 + }, + { + "Date": "2025-01-06", + "Open": 184.6, + "High": 185.47, + "Low": 183.36, + "Close": 185.45 + }, + { + "Date": "2025-01-07", + "Open": 184.05, + "High": 184.63, + "Low": 182.7, + "Close": 184.07 + }, + { + "Date": "2025-01-08", + "Open": 184.48, + "High": 184.68, + "Low": 183.96, + "Close": 184.03 + }, + { + "Date": "2025-01-09", + "Open": 185.22, + "High": 185.44, + "Low": 183.62, + "Close": 184.39 + }, + { + "Date": "2025-01-10", + "Open": 183.46, + "High": 183.62, + "Low": 182.59, + "Close": 182.87 + }, + { + "Date": "2025-01-13", + "Open": 183.98, + "High": 184.83, + "Low": 183.06, + "Close": 184.5 + }, + { + "Date": "2025-01-14", + "Open": 183.93, + "High": 184.31, + "Low": 183.74, + "Close": 184.14 + }, + { + "Date": "2025-01-15", + "Open": 182.97, + "High": 184.23, + "Low": 182.03, + "Close": 183.05 + }, + { + "Date": "2025-01-16", + "Open": 183.7, + "High": 184.46, + "Low": 183.5, + "Close": 183.57 + }, + { + "Date": "2025-01-17", + "Open": 182.76, + "High": 184.69, + "Low": 182.0, + "Close": 184.4 + }, + { + "Date": "2025-01-20", + "Open": 184.63, + "High": 186.41, + "Low": 183.01, + "Close": 183.91 + }, + { + "Date": "2025-01-21", + "Open": 184.32, + "High": 185.36, + "Low": 182.86, + "Close": 183.6 + }, + { + "Date": "2025-01-22", + "Open": 182.94, + "High": 184.4, + "Low": 182.79, + "Close": 183.05 + }, + { + "Date": "2025-01-23", + "Open": 184.13, + "High": 186.0, + "Low": 182.77, + "Close": 183.77 + }, + { + "Date": "2025-01-24", + "Open": 182.45, + "High": 183.33, + "Low": 181.75, + "Close": 183.05 + }, + { + "Date": "2025-01-27", + "Open": 182.14, + "High": 183.1, + "Low": 181.75, + "Close": 182.49 + }, + { + "Date": "2025-01-28", + "Open": 181.43, + "High": 182.17, + "Low": 181.1, + "Close": 181.17 + }, + { + "Date": "2025-01-29", + "Open": 180.34, + "High": 181.02, + "Low": 179.78, + "Close": 180.87 + }, + { + "Date": "2025-01-30", + "Open": 180.27, + "High": 181.21, + "Low": 178.44, + "Close": 180.24 + }, + { + "Date": "2025-01-31", + "Open": 180.62, + "High": 182.53, + "Low": 179.72, + "Close": 181.02 + }, + { + "Date": "2025-02-03", + "Open": 180.48, + "High": 182.1, + "Low": 178.82, + "Close": 179.33 + }, + { + "Date": "2025-02-04", + "Open": 180.41, + "High": 180.6, + "Low": 179.28, + "Close": 179.8 + }, + { + "Date": "2025-02-05", + "Open": 180.85, + "High": 182.13, + "Low": 179.1, + "Close": 181.27 + }, + { + "Date": "2025-02-06", + "Open": 180.22, + "High": 181.29, + "Low": 178.28, + "Close": 178.73 + }, + { + "Date": "2025-02-07", + "Open": 178.17, + "High": 178.62, + "Low": 176.75, + "Close": 177.76 + }, + { + "Date": "2025-02-10", + "Open": 178.0, + "High": 178.79, + "Low": 176.36, + "Close": 178.58 + }, + { + "Date": "2025-02-11", + "Open": 177.4, + "High": 177.75, + "Low": 175.89, + "Close": 177.55 + }, + { + "Date": "2025-02-12", + "Open": 176.08, + "High": 176.38, + "Low": 174.73, + "Close": 174.94 + }, + { + "Date": "2025-02-13", + "Open": 176.36, + "High": 176.88, + "Low": 174.88, + "Close": 175.86 + }, + { + "Date": "2025-02-14", + "Open": 175.05, + "High": 176.79, + "Low": 174.39, + "Close": 175.81 + }, + { + "Date": "2025-02-17", + "Open": 174.91, + "High": 176.7, + "Low": 174.28, + "Close": 175.54 + }, + { + "Date": "2025-02-18", + "Open": 175.38, + "High": 176.73, + "Low": 174.44, + "Close": 174.73 + }, + { + "Date": "2025-02-19", + "Open": 174.36, + "High": 175.48, + "Low": 172.79, + "Close": 174.17 + }, + { + "Date": "2025-02-20", + "Open": 173.46, + "High": 173.83, + "Low": 172.1, + "Close": 172.75 + }, + { + "Date": "2025-02-21", + "Open": 172.46, + "High": 173.11, + "Low": 171.23, + "Close": 172.68 + }, + { + "Date": "2025-02-24", + "Open": 171.42, + "High": 171.87, + "Low": 169.51, + "Close": 170.55 + }, + { + "Date": "2025-02-25", + "Open": 169.72, + "High": 171.57, + "Low": 168.09, + "Close": 170.72 + }, + { + "Date": "2025-02-26", + "Open": 171.15, + "High": 172.25, + "Low": 169.73, + "Close": 172.19 + }, + { + "Date": "2025-02-27", + "Open": 171.46, + "High": 173.1, + "Low": 170.34, + "Close": 170.54 + }, + { + "Date": "2025-02-28", + "Open": 169.55, + "High": 169.82, + "Low": 167.91, + "Close": 168.12 + }, + { + "Date": "2025-03-03", + "Open": 167.68, + "High": 168.04, + "Low": 166.8, + "Close": 167.91 + }, + { + "Date": "2025-03-04", + "Open": 168.45, + "High": 168.94, + "Low": 168.28, + "Close": 168.66 + }, + { + "Date": "2025-03-05", + "Open": 169.21, + "High": 170.15, + "Low": 168.76, + "Close": 168.99 + }, + { + "Date": "2025-03-06", + "Open": 167.65, + "High": 167.76, + "Low": 166.61, + "Close": 167.06 + }, + { + "Date": "2025-03-07", + "Open": 166.73, + "High": 167.7, + "Low": 165.43, + "Close": 166.0 + }, + { + "Date": "2025-03-10", + "Open": 165.87, + "High": 167.24, + "Low": 165.39, + "Close": 167.12 + }, + { + "Date": "2025-03-11", + "Open": 168.44, + "High": 170.25, + "Low": 166.69, + "Close": 167.19 + }, + { + "Date": "2025-03-12", + "Open": 168.52, + "High": 169.66, + "Low": 167.15, + "Close": 168.58 + }, + { + "Date": "2025-03-13", + "Open": 168.74, + "High": 170.55, + "Low": 168.1, + "Close": 168.54 + }, + { + "Date": "2025-03-14", + "Open": 168.37, + "High": 169.58, + "Low": 167.88, + "Close": 168.97 + }, + { + "Date": "2025-03-17", + "Open": 170.32, + "High": 171.27, + "Low": 169.63, + "Close": 170.58 + }, + { + "Date": "2025-03-18", + "Open": 169.88, + "High": 170.62, + "Low": 169.23, + "Close": 169.37 + }, + { + "Date": "2025-03-19", + "Open": 170.32, + "High": 170.62, + "Low": 169.27, + "Close": 169.43 + }, + { + "Date": "2025-03-20", + "Open": 170.76, + "High": 171.12, + "Low": 169.08, + "Close": 170.27 + }, + { + "Date": "2025-03-21", + "Open": 171.13, + "High": 171.41, + "Low": 169.93, + "Close": 171.19 + }, + { + "Date": "2025-03-24", + "Open": 170.54, + "High": 171.13, + "Low": 169.5, + "Close": 170.76 + }, + { + "Date": "2025-03-25", + "Open": 169.98, + "High": 171.84, + "Low": 169.68, + "Close": 170.44 + }, + { + "Date": "2025-03-26", + "Open": 169.27, + "High": 170.28, + "Low": 168.47, + "Close": 170.02 + }, + { + "Date": "2025-03-27", + "Open": 170.6, + "High": 171.65, + "Low": 168.82, + "Close": 169.69 + }, + { + "Date": "2025-03-28", + "Open": 169.68, + "High": 171.36, + "Low": 167.75, + "Close": 169.72 + }, + { + "Date": "2025-03-31", + "Open": 168.65, + "High": 170.29, + "Low": 167.51, + "Close": 168.64 + }, + { + "Date": "2025-04-01", + "Open": 170.01, + "High": 170.38, + "Low": 169.9, + "Close": 170.29 + }, + { + "Date": "2025-04-02", + "Open": 171.5, + "High": 172.67, + "Low": 169.56, + "Close": 169.76 + }, + { + "Date": "2025-04-03", + "Open": 170.16, + "High": 170.69, + "Low": 168.29, + "Close": 170.5 + }, + { + "Date": "2025-04-04", + "Open": 170.25, + "High": 170.66, + "Low": 168.44, + "Close": 169.83 + }, + { + "Date": "2025-04-07", + "Open": 168.54, + "High": 169.76, + "Low": 166.66, + "Close": 167.64 + }, + { + "Date": "2025-04-08", + "Open": 167.16, + "High": 168.22, + "Low": 166.25, + "Close": 167.83 + }, + { + "Date": "2025-04-09", + "Open": 168.03, + "High": 168.33, + "Low": 167.79, + "Close": 167.94 + }, + { + "Date": "2025-04-10", + "Open": 169.09, + "High": 169.48, + "Low": 168.1, + "Close": 168.37 + }, + { + "Date": "2025-04-11", + "Open": 168.61, + "High": 168.97, + "Low": 167.83, + "Close": 168.61 + }, + { + "Date": "2025-04-14", + "Open": 169.97, + "High": 171.12, + "Low": 169.49, + "Close": 169.86 + }, + { + "Date": "2025-04-15", + "Open": 169.2, + "High": 170.0, + "Low": 167.33, + "Close": 168.28 + }, + { + "Date": "2025-04-16", + "Open": 168.12, + "High": 170.12, + "Low": 167.23, + "Close": 169.19 + }, + { + "Date": "2025-04-17", + "Open": 168.6, + "High": 169.43, + "Low": 167.44, + "Close": 168.29 + }, + { + "Date": "2025-04-18", + "Open": 168.94, + "High": 170.82, + "Low": 167.65, + "Close": 169.73 + }, + { + "Date": "2025-04-21", + "Open": 169.61, + "High": 170.29, + "Low": 168.66, + "Close": 169.85 + }, + { + "Date": "2025-04-22", + "Open": 170.37, + "High": 170.86, + "Low": 170.09, + "Close": 170.32 + }, + { + "Date": "2025-04-23", + "Open": 170.64, + "High": 170.96, + "Low": 169.44, + "Close": 169.65 + }, + { + "Date": "2025-04-24", + "Open": 168.62, + "High": 169.46, + "Low": 168.34, + "Close": 168.8 + }, + { + "Date": "2025-04-25", + "Open": 167.44, + "High": 167.82, + "Low": 165.81, + "Close": 166.25 + }, + { + "Date": "2025-04-28", + "Open": 165.72, + "High": 166.3, + "Low": 164.27, + "Close": 165.25 + }, + { + "Date": "2025-04-29", + "Open": 166.09, + "High": 167.47, + "Low": 164.77, + "Close": 166.96 + }, + { + "Date": "2025-04-30", + "Open": 166.06, + "High": 166.82, + "Low": 164.11, + "Close": 166.76 + }, + { + "Date": "2025-05-01", + "Open": 166.67, + "High": 168.42, + "Low": 164.95, + "Close": 165.04 + }, + { + "Date": "2025-05-02", + "Open": 163.83, + "High": 165.01, + "Low": 163.58, + "Close": 164.78 + }, + { + "Date": "2025-05-05", + "Open": 165.68, + "High": 166.42, + "Low": 164.25, + "Close": 166.03 + }, + { + "Date": "2025-05-06", + "Open": 164.97, + "High": 166.45, + "Low": 164.22, + "Close": 165.75 + }, + { + "Date": "2025-05-07", + "Open": 166.37, + "High": 167.26, + "Low": 165.77, + "Close": 166.69 + }, + { + "Date": "2025-05-08", + "Open": 165.5, + "High": 166.22, + "Low": 165.03, + "Close": 165.03 + }, + { + "Date": "2025-05-09", + "Open": 163.6, + "High": 163.74, + "Low": 162.1, + "Close": 162.41 + }, + { + "Date": "2025-05-12", + "Open": 161.51, + "High": 161.87, + "Low": 160.77, + "Close": 161.12 + }, + { + "Date": "2025-05-13", + "Open": 160.2, + "High": 160.65, + "Low": 159.1, + "Close": 160.22 + }, + { + "Date": "2025-05-14", + "Open": 161.25, + "High": 162.03, + "Low": 159.96, + "Close": 160.24 + }, + { + "Date": "2025-05-15", + "Open": 160.22, + "High": 160.62, + "Low": 158.41, + "Close": 160.23 + }, + { + "Date": "2025-05-16", + "Open": 159.65, + "High": 159.81, + "Low": 158.72, + "Close": 159.06 + }, + { + "Date": "2025-05-19", + "Open": 159.21, + "High": 159.8, + "Low": 159.03, + "Close": 159.59 + }, + { + "Date": "2025-05-20", + "Open": 159.37, + "High": 160.79, + "Low": 158.58, + "Close": 159.82 + }, + { + "Date": "2025-05-21", + "Open": 161.05, + "High": 162.95, + "Low": 159.44, + "Close": 161.81 + }, + { + "Date": "2025-05-22", + "Open": 162.62, + "High": 163.48, + "Low": 161.0, + "Close": 161.56 + }, + { + "Date": "2025-05-23", + "Open": 160.74, + "High": 161.34, + "Low": 160.34, + "Close": 160.58 + }, + { + "Date": "2025-05-26", + "Open": 160.4, + "High": 161.4, + "Low": 159.11, + "Close": 159.51 + }, + { + "Date": "2025-05-27", + "Open": 158.12, + "High": 159.57, + "Low": 156.54, + "Close": 157.8 + }, + { + "Date": "2025-05-28", + "Open": 158.21, + "High": 158.4, + "Low": 157.2, + "Close": 157.28 + }, + { + "Date": "2025-05-29", + "Open": 157.63, + "High": 158.39, + "Low": 157.0, + "Close": 158.02 + }, + { + "Date": "2025-05-30", + "Open": 158.64, + "High": 158.88, + "Low": 158.23, + "Close": 158.32 + }, + { + "Date": "2025-06-02", + "Open": 157.06, + "High": 158.06, + "Low": 155.14, + "Close": 155.46 + }, + { + "Date": "2025-06-03", + "Open": 154.59, + "High": 154.8, + "Low": 153.1, + "Close": 154.46 + }, + { + "Date": "2025-06-04", + "Open": 153.0, + "High": 154.63, + "Low": 152.45, + "Close": 153.32 + }, + { + "Date": "2025-06-05", + "Open": 153.08, + "High": 154.63, + "Low": 151.71, + "Close": 153.65 + }, + { + "Date": "2025-06-06", + "Open": 154.77, + "High": 155.87, + "Low": 152.78, + "Close": 155.64 + }, + { + "Date": "2025-06-09", + "Open": 156.92, + "High": 157.31, + "Low": 154.93, + "Close": 154.93 + }, + { + "Date": "2025-06-10", + "Open": 155.23, + "High": 155.88, + "Low": 155.11, + "Close": 155.14 + }, + { + "Date": "2025-06-11", + "Open": 155.76, + "High": 156.46, + "Low": 155.26, + "Close": 156.04 + }, + { + "Date": "2025-06-12", + "Open": 154.9, + "High": 156.28, + "Low": 154.31, + "Close": 154.74 + }, + { + "Date": "2025-06-13", + "Open": 153.53, + "High": 155.1, + "Low": 151.9, + "Close": 152.24 + }, + { + "Date": "2025-06-16", + "Open": 153.29, + "High": 155.19, + "Low": 151.43, + "Close": 154.65 + }, + { + "Date": "2025-06-17", + "Open": 154.22, + "High": 155.39, + "Low": 152.76, + "Close": 152.83 + } +] \ No newline at end of file diff --git a/typescript/src/app/chart/data/msft-data.json b/typescript/src/app/chart/data/msft-data.json new file mode 100644 index 0000000..df9e7d5 --- /dev/null +++ b/typescript/src/app/chart/data/msft-data.json @@ -0,0 +1,2250 @@ +[ + { + "date": "2024-06-03", + "open": 128.65, + "high": 129.66, + "low": 128.35, + "close": 129.24, + "volume": 17862294 + }, + { + "date": "2024-06-04", + "open": 130.53, + "high": 131.76, + "low": 129.24, + "close": 129.83, + "volume": 24622730 + }, + { + "date": "2024-06-05", + "open": 130.91, + "high": 132.21, + "low": 130.08, + "close": 130.74, + "volume": 25324954 + }, + { + "date": "2024-06-06", + "open": 131.34, + "high": 132.23, + "low": 128.97, + "close": 130.0, + "volume": 23487603 + }, + { + "date": "2024-06-07", + "open": 130.56, + "high": 131.17, + "low": 128.8, + "close": 129.5, + "volume": 34692706 + }, + { + "date": "2024-06-10", + "open": 128.47, + "high": 129.87, + "low": 127.16, + "close": 127.4, + "volume": 32653028 + }, + { + "date": "2024-06-11", + "open": 128.07, + "high": 129.44, + "low": 126.32, + "close": 126.32, + "volume": 32027251 + }, + { + "date": "2024-06-12", + "open": 124.48, + "high": 124.66, + "low": 123.33, + "close": 123.67, + "volume": 34268108 + }, + { + "date": "2024-06-13", + "open": 123.91, + "high": 125.58, + "low": 123.75, + "close": 124.29, + "volume": 23048223 + }, + { + "date": "2024-06-14", + "open": 124.78, + "high": 126.13, + "low": 123.45, + "close": 125.31, + "volume": 23055870 + }, + { + "date": "2024-06-17", + "open": 124.45, + "high": 125.68, + "low": 123.59, + "close": 124.71, + "volume": 29045496 + }, + { + "date": "2024-06-18", + "open": 126.08, + "high": 127.11, + "low": 125.33, + "close": 126.28, + "volume": 26792047 + }, + { + "date": "2024-06-19", + "open": 125.73, + "high": 126.56, + "low": 124.7, + "close": 124.85, + "volume": 21305157 + }, + { + "date": "2024-06-20", + "open": 123.77, + "high": 125.62, + "low": 122.49, + "close": 124.35, + "volume": 19580719 + }, + { + "date": "2024-06-21", + "open": 125.51, + "high": 126.96, + "low": 125.01, + "close": 125.75, + "volume": 24613573 + }, + { + "date": "2024-06-24", + "open": 125.12, + "high": 127.23, + "low": 123.74, + "close": 127.04, + "volume": 32520284 + }, + { + "date": "2024-06-25", + "open": 128.39, + "high": 129.29, + "low": 127.41, + "close": 128.85, + "volume": 18300998 + }, + { + "date": "2024-06-26", + "open": 129.78, + "high": 132.32, + "low": 128.59, + "close": 131.14, + "volume": 26021558 + }, + { + "date": "2024-06-27", + "open": 132.42, + "high": 134.6, + "low": 131.22, + "close": 134.17, + "volume": 33118380 + }, + { + "date": "2024-06-28", + "open": 135.82, + "high": 135.95, + "low": 134.44, + "close": 135.04, + "volume": 20578150 + }, + { + "date": "2024-07-01", + "open": 134.78, + "high": 135.83, + "low": 134.04, + "close": 135.33, + "volume": 29493376 + }, + { + "date": "2024-07-02", + "open": 135.09, + "high": 136.51, + "low": 134.41, + "close": 136.39, + "volume": 33915486 + }, + { + "date": "2024-07-03", + "open": 136.24, + "high": 137.11, + "low": 134.64, + "close": 135.68, + "volume": 15498134 + }, + { + "date": "2024-07-04", + "open": 135.49, + "high": 137.8, + "low": 134.09, + "close": 136.7, + "volume": 33539877 + }, + { + "date": "2024-07-05", + "open": 137.13, + "high": 138.05, + "low": 135.93, + "close": 136.53, + "volume": 33779876 + }, + { + "date": "2024-07-08", + "open": 135.49, + "high": 137.61, + "low": 134.21, + "close": 136.26, + "volume": 23678455 + }, + { + "date": "2024-07-09", + "open": 135.48, + "high": 136.69, + "low": 135.35, + "close": 136.05, + "volume": 21438913 + }, + { + "date": "2024-07-10", + "open": 136.39, + "high": 137.98, + "low": 135.28, + "close": 137.87, + "volume": 31211658 + }, + { + "date": "2024-07-11", + "open": 137.74, + "high": 140.42, + "low": 137.3, + "close": 139.13, + "volume": 24963524 + }, + { + "date": "2024-07-12", + "open": 139.14, + "high": 140.05, + "low": 136.58, + "close": 137.73, + "volume": 25765620 + }, + { + "date": "2024-07-15", + "open": 137.12, + "high": 137.81, + "low": 135.58, + "close": 135.96, + "volume": 15243350 + }, + { + "date": "2024-07-16", + "open": 137.53, + "high": 137.96, + "low": 134.8, + "close": 135.81, + "volume": 25110655 + }, + { + "date": "2024-07-17", + "open": 135.83, + "high": 138.44, + "low": 134.58, + "close": 137.81, + "volume": 15002463 + }, + { + "date": "2024-07-18", + "open": 139.28, + "high": 140.36, + "low": 137.94, + "close": 139.22, + "volume": 30749505 + }, + { + "date": "2024-07-19", + "open": 139.27, + "high": 140.22, + "low": 137.99, + "close": 139.55, + "volume": 34672175 + }, + { + "date": "2024-07-22", + "open": 138.07, + "high": 138.74, + "low": 135.44, + "close": 136.94, + "volume": 17070231 + }, + { + "date": "2024-07-23", + "open": 137.43, + "high": 138.4, + "low": 136.15, + "close": 138.22, + "volume": 21556726 + }, + { + "date": "2024-07-24", + "open": 138.36, + "high": 139.84, + "low": 136.77, + "close": 137.04, + "volume": 30374245 + }, + { + "date": "2024-07-25", + "open": 138.54, + "high": 141.77, + "low": 137.14, + "close": 140.43, + "volume": 27146889 + }, + { + "date": "2024-07-26", + "open": 141.2, + "high": 143.4, + "low": 140.96, + "close": 142.61, + "volume": 29767082 + }, + { + "date": "2024-07-29", + "open": 140.98, + "high": 142.11, + "low": 139.93, + "close": 141.84, + "volume": 28548940 + }, + { + "date": "2024-07-30", + "open": 140.09, + "high": 141.54, + "low": 137.37, + "close": 138.83, + "volume": 19603793 + }, + { + "date": "2024-07-31", + "open": 138.79, + "high": 142.01, + "low": 137.49, + "close": 140.58, + "volume": 32595609 + }, + { + "date": "2024-08-01", + "open": 140.12, + "high": 140.35, + "low": 139.36, + "close": 139.82, + "volume": 30833184 + }, + { + "date": "2024-08-02", + "open": 138.98, + "high": 139.61, + "low": 138.14, + "close": 138.7, + "volume": 34637773 + }, + { + "date": "2024-08-05", + "open": 137.61, + "high": 138.24, + "low": 136.56, + "close": 137.84, + "volume": 20616414 + }, + { + "date": "2024-08-06", + "open": 136.82, + "high": 138.22, + "low": 135.37, + "close": 138.14, + "volume": 26759990 + }, + { + "date": "2024-08-07", + "open": 137.44, + "high": 139.99, + "low": 136.35, + "close": 139.1, + "volume": 31323601 + }, + { + "date": "2024-08-08", + "open": 139.76, + "high": 141.58, + "low": 138.38, + "close": 140.27, + "volume": 17379822 + }, + { + "date": "2024-08-09", + "open": 141.32, + "high": 144.67, + "low": 139.83, + "close": 143.2, + "volume": 24804819 + }, + { + "date": "2024-08-12", + "open": 142.24, + "high": 145.09, + "low": 141.74, + "close": 144.16, + "volume": 26169440 + }, + { + "date": "2024-08-13", + "open": 142.75, + "high": 143.45, + "low": 142.5, + "close": 142.78, + "volume": 21468022 + }, + { + "date": "2024-08-14", + "open": 142.17, + "high": 142.58, + "low": 141.09, + "close": 141.42, + "volume": 20561453 + }, + { + "date": "2024-08-15", + "open": 140.54, + "high": 140.85, + "low": 138.74, + "close": 139.35, + "volume": 20312759 + }, + { + "date": "2024-08-16", + "open": 140.28, + "high": 140.94, + "low": 139.13, + "close": 140.36, + "volume": 29188629 + }, + { + "date": "2024-08-19", + "open": 141.79, + "high": 142.96, + "low": 141.19, + "close": 142.33, + "volume": 17162676 + }, + { + "date": "2024-08-20", + "open": 141.37, + "high": 142.64, + "low": 140.15, + "close": 141.8, + "volume": 21685590 + }, + { + "date": "2024-08-21", + "open": 143.3, + "high": 143.93, + "low": 140.13, + "close": 141.51, + "volume": 34902453 + }, + { + "date": "2024-08-22", + "open": 140.72, + "high": 143.22, + "low": 139.63, + "close": 142.52, + "volume": 20215861 + }, + { + "date": "2024-08-23", + "open": 140.87, + "high": 142.2, + "low": 139.23, + "close": 140.42, + "volume": 16901066 + }, + { + "date": "2024-08-26", + "open": 142.05, + "high": 143.41, + "low": 139.14, + "close": 140.36, + "volume": 15455830 + }, + { + "date": "2024-08-27", + "open": 141.93, + "high": 143.02, + "low": 139.44, + "close": 140.82, + "volume": 29134729 + }, + { + "date": "2024-08-28", + "open": 141.0, + "high": 142.24, + "low": 139.81, + "close": 141.37, + "volume": 18931084 + }, + { + "date": "2024-08-29", + "open": 143.15, + "high": 143.97, + "low": 142.06, + "close": 143.67, + "volume": 26983909 + }, + { + "date": "2024-08-30", + "open": 143.51, + "high": 144.39, + "low": 142.17, + "close": 143.85, + "volume": 27470681 + }, + { + "date": "2024-09-02", + "open": 143.95, + "high": 145.3, + "low": 143.21, + "close": 144.99, + "volume": 16377021 + }, + { + "date": "2024-09-03", + "open": 143.48, + "high": 144.1, + "low": 143.21, + "close": 143.48, + "volume": 30114642 + }, + { + "date": "2024-09-04", + "open": 143.24, + "high": 143.89, + "low": 141.98, + "close": 143.08, + "volume": 15951636 + }, + { + "date": "2024-09-05", + "open": 143.07, + "high": 143.68, + "low": 140.68, + "close": 141.52, + "volume": 18956749 + }, + { + "date": "2024-09-06", + "open": 139.95, + "high": 141.71, + "low": 138.73, + "close": 141.05, + "volume": 20778573 + }, + { + "date": "2024-09-09", + "open": 140.99, + "high": 142.3, + "low": 139.66, + "close": 141.29, + "volume": 18880515 + }, + { + "date": "2024-09-10", + "open": 139.86, + "high": 141.22, + "low": 136.91, + "close": 138.09, + "volume": 33889288 + }, + { + "date": "2024-09-11", + "open": 137.93, + "high": 139.25, + "low": 137.0, + "close": 138.25, + "volume": 34617435 + }, + { + "date": "2024-09-12", + "open": 139.23, + "high": 140.95, + "low": 139.21, + "close": 140.26, + "volume": 32973215 + }, + { + "date": "2024-09-13", + "open": 139.43, + "high": 140.79, + "low": 136.74, + "close": 137.8, + "volume": 17343332 + }, + { + "date": "2024-09-16", + "open": 136.03, + "high": 136.07, + "low": 134.4, + "close": 134.99, + "volume": 26515100 + }, + { + "date": "2024-09-17", + "open": 136.44, + "high": 138.29, + "low": 135.44, + "close": 137.46, + "volume": 21305151 + }, + { + "date": "2024-09-18", + "open": 136.14, + "high": 137.11, + "low": 132.92, + "close": 134.17, + "volume": 34234417 + }, + { + "date": "2024-09-19", + "open": 132.33, + "high": 132.57, + "low": 130.64, + "close": 131.12, + "volume": 31105943 + }, + { + "date": "2024-09-20", + "open": 132.78, + "high": 133.87, + "low": 130.04, + "close": 131.1, + "volume": 30303814 + }, + { + "date": "2024-09-23", + "open": 132.95, + "high": 134.64, + "low": 131.76, + "close": 134.11, + "volume": 30133341 + }, + { + "date": "2024-09-24", + "open": 132.91, + "high": 133.14, + "low": 131.47, + "close": 131.57, + "volume": 34349363 + }, + { + "date": "2024-09-25", + "open": 130.61, + "high": 131.16, + "low": 130.34, + "close": 130.48, + "volume": 19155772 + }, + { + "date": "2024-09-26", + "open": 132.21, + "high": 133.65, + "low": 129.15, + "close": 130.6, + "volume": 30895866 + }, + { + "date": "2024-09-27", + "open": 128.96, + "high": 129.98, + "low": 127.64, + "close": 129.49, + "volume": 18776052 + }, + { + "date": "2024-09-30", + "open": 127.69, + "high": 128.0, + "low": 127.05, + "close": 127.19, + "volume": 29103808 + }, + { + "date": "2024-10-01", + "open": 126.57, + "high": 129.71, + "low": 126.03, + "close": 128.32, + "volume": 28980142 + }, + { + "date": "2024-10-02", + "open": 130.07, + "high": 132.02, + "low": 129.51, + "close": 131.88, + "volume": 27641199 + }, + { + "date": "2024-10-03", + "open": 131.63, + "high": 134.0, + "low": 130.48, + "close": 132.64, + "volume": 32079114 + }, + { + "date": "2024-10-04", + "open": 131.17, + "high": 131.27, + "low": 129.23, + "close": 130.66, + "volume": 30712620 + }, + { + "date": "2024-10-07", + "open": 132.49, + "high": 133.04, + "low": 132.15, + "close": 132.89, + "volume": 20238644 + }, + { + "date": "2024-10-08", + "open": 132.49, + "high": 132.95, + "low": 130.17, + "close": 130.79, + "volume": 32171498 + }, + { + "date": "2024-10-09", + "open": 129.22, + "high": 130.32, + "low": 128.28, + "close": 129.43, + "volume": 15898294 + }, + { + "date": "2024-10-10", + "open": 127.68, + "high": 129.98, + "low": 126.58, + "close": 129.56, + "volume": 19550544 + }, + { + "date": "2024-10-11", + "open": 131.29, + "high": 132.09, + "low": 130.14, + "close": 132.08, + "volume": 26428099 + }, + { + "date": "2024-10-14", + "open": 131.51, + "high": 132.85, + "low": 131.08, + "close": 131.15, + "volume": 34213903 + }, + { + "date": "2024-10-15", + "open": 132.0, + "high": 132.87, + "low": 129.91, + "close": 130.39, + "volume": 30702138 + }, + { + "date": "2024-10-16", + "open": 130.0, + "high": 130.54, + "low": 128.85, + "close": 130.16, + "volume": 32559064 + }, + { + "date": "2024-10-17", + "open": 132.0, + "high": 132.13, + "low": 129.23, + "close": 130.03, + "volume": 31203347 + }, + { + "date": "2024-10-18", + "open": 131.01, + "high": 131.41, + "low": 130.62, + "close": 131.21, + "volume": 22481402 + }, + { + "date": "2024-10-21", + "open": 129.46, + "high": 130.69, + "low": 127.1, + "close": 128.22, + "volume": 29324309 + }, + { + "date": "2024-10-22", + "open": 127.02, + "high": 127.79, + "low": 125.67, + "close": 127.53, + "volume": 16812712 + }, + { + "date": "2024-10-23", + "open": 127.28, + "high": 128.61, + "low": 124.86, + "close": 125.56, + "volume": 34819235 + }, + { + "date": "2024-10-24", + "open": 125.65, + "high": 126.87, + "low": 125.08, + "close": 125.21, + "volume": 19219721 + }, + { + "date": "2024-10-25", + "open": 124.14, + "high": 124.89, + "low": 122.51, + "close": 123.02, + "volume": 19110801 + }, + { + "date": "2024-10-28", + "open": 121.34, + "high": 124.77, + "low": 120.15, + "close": 123.31, + "volume": 15839672 + }, + { + "date": "2024-10-29", + "open": 123.22, + "high": 125.14, + "low": 122.85, + "close": 124.96, + "volume": 16661740 + }, + { + "date": "2024-10-30", + "open": 126.81, + "high": 127.53, + "low": 126.29, + "close": 127.06, + "volume": 25666222 + }, + { + "date": "2024-10-31", + "open": 125.72, + "high": 126.55, + "low": 124.46, + "close": 125.43, + "volume": 18798381 + }, + { + "date": "2024-11-01", + "open": 124.96, + "high": 126.09, + "low": 123.14, + "close": 123.22, + "volume": 27325862 + }, + { + "date": "2024-11-04", + "open": 123.09, + "high": 124.27, + "low": 121.85, + "close": 122.57, + "volume": 20260264 + }, + { + "date": "2024-11-05", + "open": 124.39, + "high": 124.87, + "low": 123.4, + "close": 124.03, + "volume": 22875328 + }, + { + "date": "2024-11-06", + "open": 122.5, + "high": 123.97, + "low": 121.78, + "close": 121.82, + "volume": 21024422 + }, + { + "date": "2024-11-07", + "open": 122.17, + "high": 123.51, + "low": 121.02, + "close": 122.76, + "volume": 30914942 + }, + { + "date": "2024-11-08", + "open": 123.24, + "high": 124.41, + "low": 121.99, + "close": 123.67, + "volume": 16433080 + }, + { + "date": "2024-11-11", + "open": 125.63, + "high": 125.96, + "low": 123.51, + "close": 124.38, + "volume": 24848264 + }, + { + "date": "2024-11-12", + "open": 125.07, + "high": 125.1, + "low": 123.33, + "close": 123.87, + "volume": 21430428 + }, + { + "date": "2024-11-13", + "open": 124.17, + "high": 126.79, + "low": 122.85, + "close": 125.93, + "volume": 28435747 + }, + { + "date": "2024-11-14", + "open": 126.25, + "high": 126.57, + "low": 125.71, + "close": 126.47, + "volume": 27477476 + }, + { + "date": "2024-11-15", + "open": 126.07, + "high": 127.46, + "low": 125.97, + "close": 127.02, + "volume": 27868832 + }, + { + "date": "2024-11-18", + "open": 128.12, + "high": 128.17, + "low": 126.71, + "close": 127.09, + "volume": 31143198 + }, + { + "date": "2024-11-19", + "open": 125.91, + "high": 126.05, + "low": 123.34, + "close": 124.28, + "volume": 31226660 + }, + { + "date": "2024-11-20", + "open": 124.96, + "high": 126.33, + "low": 123.32, + "close": 124.44, + "volume": 30722838 + }, + { + "date": "2024-11-21", + "open": 124.02, + "high": 126.31, + "low": 123.51, + "close": 125.56, + "volume": 33490495 + }, + { + "date": "2024-11-22", + "open": 125.83, + "high": 127.07, + "low": 123.64, + "close": 125.03, + "volume": 16158385 + }, + { + "date": "2024-11-25", + "open": 125.75, + "high": 126.3, + "low": 124.4, + "close": 126.02, + "volume": 21994792 + }, + { + "date": "2024-11-26", + "open": 126.31, + "high": 127.46, + "low": 125.88, + "close": 126.49, + "volume": 26482684 + }, + { + "date": "2024-11-27", + "open": 125.06, + "high": 126.42, + "low": 123.43, + "close": 124.18, + "volume": 24555794 + }, + { + "date": "2024-11-28", + "open": 125.52, + "high": 125.74, + "low": 124.3, + "close": 124.89, + "volume": 27312658 + }, + { + "date": "2024-11-29", + "open": 123.83, + "high": 125.61, + "low": 122.58, + "close": 124.67, + "volume": 22902138 + }, + { + "date": "2024-12-02", + "open": 124.72, + "high": 126.31, + "low": 124.55, + "close": 124.99, + "volume": 15373263 + }, + { + "date": "2024-12-03", + "open": 125.71, + "high": 125.98, + "low": 124.64, + "close": 125.66, + "volume": 23915293 + }, + { + "date": "2024-12-04", + "open": 125.22, + "high": 125.74, + "low": 122.63, + "close": 123.42, + "volume": 18333714 + }, + { + "date": "2024-12-05", + "open": 123.71, + "high": 124.6, + "low": 123.58, + "close": 124.27, + "volume": 33604827 + }, + { + "date": "2024-12-06", + "open": 122.57, + "high": 123.69, + "low": 120.67, + "close": 121.77, + "volume": 30695264 + }, + { + "date": "2024-12-09", + "open": 122.31, + "high": 123.6, + "low": 120.81, + "close": 122.04, + "volume": 31939910 + }, + { + "date": "2024-12-10", + "open": 122.95, + "high": 124.32, + "low": 122.7, + "close": 123.63, + "volume": 23256643 + }, + { + "date": "2024-12-11", + "open": 122.75, + "high": 124.29, + "low": 122.31, + "close": 123.48, + "volume": 32533280 + }, + { + "date": "2024-12-12", + "open": 121.98, + "high": 123.26, + "low": 121.39, + "close": 122.77, + "volume": 18394506 + }, + { + "date": "2024-12-13", + "open": 121.45, + "high": 121.89, + "low": 118.53, + "close": 119.52, + "volume": 33419620 + }, + { + "date": "2024-12-16", + "open": 117.72, + "high": 118.72, + "low": 117.5, + "close": 118.19, + "volume": 25110812 + }, + { + "date": "2024-12-17", + "open": 116.51, + "high": 117.86, + "low": 115.45, + "close": 117.25, + "volume": 30124815 + }, + { + "date": "2024-12-18", + "open": 119.0, + "high": 119.58, + "low": 118.28, + "close": 119.33, + "volume": 20620680 + }, + { + "date": "2024-12-19", + "open": 117.99, + "high": 119.01, + "low": 115.48, + "close": 116.01, + "volume": 16988674 + }, + { + "date": "2024-12-20", + "open": 117.52, + "high": 120.61, + "low": 116.97, + "close": 119.21, + "volume": 34735302 + }, + { + "date": "2024-12-23", + "open": 117.22, + "high": 119.03, + "low": 116.42, + "close": 118.29, + "volume": 24797175 + }, + { + "date": "2024-12-24", + "open": 117.32, + "high": 118.19, + "low": 116.63, + "close": 117.71, + "volume": 18514639 + }, + { + "date": "2024-12-25", + "open": 116.69, + "high": 118.35, + "low": 115.45, + "close": 117.01, + "volume": 33423232 + }, + { + "date": "2024-12-26", + "open": 117.47, + "high": 118.26, + "low": 115.86, + "close": 116.88, + "volume": 15578643 + }, + { + "date": "2024-12-27", + "open": 118.43, + "high": 119.55, + "low": 118.03, + "close": 118.6, + "volume": 24026144 + }, + { + "date": "2024-12-30", + "open": 120.56, + "high": 120.79, + "low": 119.94, + "close": 120.43, + "volume": 25248054 + }, + { + "date": "2024-12-31", + "open": 118.9, + "high": 119.77, + "low": 117.47, + "close": 119.24, + "volume": 21552040 + }, + { + "date": "2025-01-01", + "open": 117.83, + "high": 119.25, + "low": 116.28, + "close": 117.2, + "volume": 25540411 + }, + { + "date": "2025-01-02", + "open": 118.54, + "high": 119.92, + "low": 116.55, + "close": 117.85, + "volume": 22357156 + }, + { + "date": "2025-01-03", + "open": 117.05, + "high": 117.08, + "low": 115.06, + "close": 115.3, + "volume": 24344019 + }, + { + "date": "2025-01-06", + "open": 115.6, + "high": 117.13, + "low": 114.91, + "close": 115.81, + "volume": 27198651 + }, + { + "date": "2025-01-07", + "open": 117.38, + "high": 118.66, + "low": 116.31, + "close": 118.47, + "volume": 29987976 + }, + { + "date": "2025-01-08", + "open": 117.57, + "high": 119.77, + "low": 117.4, + "close": 118.79, + "volume": 16296644 + }, + { + "date": "2025-01-09", + "open": 117.79, + "high": 120.05, + "low": 117.47, + "close": 119.48, + "volume": 26732931 + }, + { + "date": "2025-01-10", + "open": 119.9, + "high": 121.38, + "low": 118.2, + "close": 118.4, + "volume": 17515705 + }, + { + "date": "2025-01-13", + "open": 118.78, + "high": 119.28, + "low": 116.24, + "close": 117.17, + "volume": 32705979 + }, + { + "date": "2025-01-14", + "open": 118.99, + "high": 119.92, + "low": 117.79, + "close": 117.84, + "volume": 31338194 + }, + { + "date": "2025-01-15", + "open": 119.28, + "high": 120.83, + "low": 118.16, + "close": 120.19, + "volume": 18295452 + }, + { + "date": "2025-01-16", + "open": 121.19, + "high": 122.69, + "low": 120.15, + "close": 120.31, + "volume": 27969858 + }, + { + "date": "2025-01-17", + "open": 118.65, + "high": 121.0, + "low": 117.61, + "close": 120.53, + "volume": 24063647 + }, + { + "date": "2025-01-20", + "open": 119.83, + "high": 121.39, + "low": 118.88, + "close": 121.1, + "volume": 16540061 + }, + { + "date": "2025-01-21", + "open": 121.25, + "high": 122.18, + "low": 120.6, + "close": 120.91, + "volume": 32147496 + }, + { + "date": "2025-01-22", + "open": 119.58, + "high": 120.32, + "low": 118.95, + "close": 119.21, + "volume": 28053255 + }, + { + "date": "2025-01-23", + "open": 118.71, + "high": 119.74, + "low": 118.63, + "close": 119.56, + "volume": 21001764 + }, + { + "date": "2025-01-24", + "open": 118.3, + "high": 119.27, + "low": 116.35, + "close": 117.23, + "volume": 15914851 + }, + { + "date": "2025-01-27", + "open": 118.49, + "high": 120.21, + "low": 117.15, + "close": 119.07, + "volume": 21419389 + }, + { + "date": "2025-01-28", + "open": 120.55, + "high": 122.16, + "low": 119.25, + "close": 121.31, + "volume": 25124665 + }, + { + "date": "2025-01-29", + "open": 120.51, + "high": 120.99, + "low": 119.19, + "close": 119.23, + "volume": 17414723 + }, + { + "date": "2025-01-30", + "open": 118.6, + "high": 120.26, + "low": 118.17, + "close": 120.06, + "volume": 19711866 + }, + { + "date": "2025-01-31", + "open": 121.97, + "high": 123.33, + "low": 119.79, + "close": 120.64, + "volume": 18757027 + }, + { + "date": "2025-02-03", + "open": 122.27, + "high": 125.04, + "low": 121.53, + "close": 124.0, + "volume": 31642702 + }, + { + "date": "2025-02-04", + "open": 122.5, + "high": 123.89, + "low": 121.72, + "close": 123.85, + "volume": 33864097 + }, + { + "date": "2025-02-05", + "open": 124.34, + "high": 125.77, + "low": 123.52, + "close": 124.79, + "volume": 25819707 + }, + { + "date": "2025-02-06", + "open": 123.37, + "high": 125.77, + "low": 122.65, + "close": 124.75, + "volume": 28098738 + }, + { + "date": "2025-02-07", + "open": 123.02, + "high": 123.97, + "low": 121.35, + "close": 122.45, + "volume": 29040373 + }, + { + "date": "2025-02-10", + "open": 123.19, + "high": 124.29, + "low": 121.74, + "close": 123.75, + "volume": 34942081 + }, + { + "date": "2025-02-11", + "open": 123.74, + "high": 126.51, + "low": 122.45, + "close": 125.62, + "volume": 33081888 + }, + { + "date": "2025-02-12", + "open": 124.17, + "high": 125.4, + "low": 123.29, + "close": 123.57, + "volume": 25853072 + }, + { + "date": "2025-02-13", + "open": 123.65, + "high": 125.35, + "low": 122.28, + "close": 124.28, + "volume": 23729724 + }, + { + "date": "2025-02-14", + "open": 125.34, + "high": 127.42, + "low": 124.64, + "close": 126.5, + "volume": 30837487 + }, + { + "date": "2025-02-17", + "open": 125.36, + "high": 127.28, + "low": 124.44, + "close": 126.5, + "volume": 26351503 + }, + { + "date": "2025-02-18", + "open": 126.49, + "high": 127.22, + "low": 125.02, + "close": 126.53, + "volume": 17992270 + }, + { + "date": "2025-02-19", + "open": 126.09, + "high": 129.13, + "low": 126.06, + "close": 127.74, + "volume": 21889982 + }, + { + "date": "2025-02-20", + "open": 127.52, + "high": 129.59, + "low": 126.63, + "close": 128.3, + "volume": 24890884 + }, + { + "date": "2025-02-21", + "open": 128.01, + "high": 130.58, + "low": 127.88, + "close": 129.81, + "volume": 34498420 + }, + { + "date": "2025-02-24", + "open": 130.15, + "high": 132.39, + "low": 129.88, + "close": 131.42, + "volume": 34777473 + }, + { + "date": "2025-02-25", + "open": 130.44, + "high": 131.62, + "low": 129.83, + "close": 129.99, + "volume": 15850199 + }, + { + "date": "2025-02-26", + "open": 131.73, + "high": 134.16, + "low": 130.29, + "close": 133.73, + "volume": 18135695 + }, + { + "date": "2025-02-27", + "open": 135.6, + "high": 135.92, + "low": 132.34, + "close": 133.76, + "volume": 28513643 + }, + { + "date": "2025-02-28", + "open": 134.43, + "high": 134.8, + "low": 133.56, + "close": 134.68, + "volume": 25118050 + }, + { + "date": "2025-03-03", + "open": 133.2, + "high": 134.82, + "low": 132.2, + "close": 133.88, + "volume": 32773249 + }, + { + "date": "2025-03-04", + "open": 135.74, + "high": 136.29, + "low": 133.53, + "close": 134.29, + "volume": 22180371 + }, + { + "date": "2025-03-05", + "open": 134.92, + "high": 135.26, + "low": 133.05, + "close": 133.91, + "volume": 26386495 + }, + { + "date": "2025-03-06", + "open": 131.96, + "high": 134.12, + "low": 130.78, + "close": 133.28, + "volume": 32350290 + }, + { + "date": "2025-03-07", + "open": 134.05, + "high": 135.29, + "low": 133.51, + "close": 133.6, + "volume": 21341470 + }, + { + "date": "2025-03-10", + "open": 134.46, + "high": 134.7, + "low": 132.69, + "close": 133.8, + "volume": 27793008 + }, + { + "date": "2025-03-11", + "open": 131.84, + "high": 132.8, + "low": 130.9, + "close": 131.78, + "volume": 27094177 + }, + { + "date": "2025-03-12", + "open": 131.21, + "high": 132.5, + "low": 130.23, + "close": 131.39, + "volume": 30366000 + }, + { + "date": "2025-03-13", + "open": 131.87, + "high": 133.48, + "low": 131.6, + "close": 133.23, + "volume": 20062512 + }, + { + "date": "2025-03-14", + "open": 134.19, + "high": 135.96, + "low": 133.97, + "close": 135.67, + "volume": 34683657 + }, + { + "date": "2025-03-17", + "open": 135.59, + "high": 135.6, + "low": 133.04, + "close": 134.28, + "volume": 34228107 + }, + { + "date": "2025-03-18", + "open": 133.43, + "high": 134.77, + "low": 133.28, + "close": 134.09, + "volume": 24265877 + }, + { + "date": "2025-03-19", + "open": 133.14, + "high": 133.74, + "low": 130.39, + "close": 131.53, + "volume": 25200210 + }, + { + "date": "2025-03-20", + "open": 132.41, + "high": 133.22, + "low": 130.97, + "close": 131.68, + "volume": 18361166 + }, + { + "date": "2025-03-21", + "open": 130.08, + "high": 130.88, + "low": 128.94, + "close": 129.87, + "volume": 16009961 + }, + { + "date": "2025-03-24", + "open": 129.91, + "high": 130.25, + "low": 127.95, + "close": 127.99, + "volume": 19206392 + }, + { + "date": "2025-03-25", + "open": 128.58, + "high": 130.43, + "low": 127.89, + "close": 129.15, + "volume": 24449865 + }, + { + "date": "2025-03-26", + "open": 128.92, + "high": 129.39, + "low": 127.26, + "close": 128.71, + "volume": 33798767 + }, + { + "date": "2025-03-27", + "open": 128.81, + "high": 131.19, + "low": 127.7, + "close": 129.71, + "volume": 31923362 + }, + { + "date": "2025-03-28", + "open": 130.44, + "high": 131.93, + "low": 129.7, + "close": 130.06, + "volume": 34147897 + }, + { + "date": "2025-03-31", + "open": 129.84, + "high": 130.01, + "low": 128.36, + "close": 129.69, + "volume": 30723263 + }, + { + "date": "2025-04-01", + "open": 130.36, + "high": 130.57, + "low": 130.02, + "close": 130.26, + "volume": 27422992 + }, + { + "date": "2025-04-02", + "open": 128.92, + "high": 130.15, + "low": 126.0, + "close": 127.45, + "volume": 28908132 + }, + { + "date": "2025-04-03", + "open": 128.19, + "high": 130.72, + "low": 126.99, + "close": 130.16, + "volume": 19856065 + }, + { + "date": "2025-04-04", + "open": 128.22, + "high": 128.26, + "low": 127.02, + "close": 127.08, + "volume": 22714931 + }, + { + "date": "2025-04-07", + "open": 126.25, + "high": 129.46, + "low": 125.73, + "close": 128.15, + "volume": 19043909 + }, + { + "date": "2025-04-08", + "open": 129.79, + "high": 129.88, + "low": 127.36, + "close": 128.21, + "volume": 18290669 + }, + { + "date": "2025-04-09", + "open": 129.17, + "high": 131.34, + "low": 127.68, + "close": 129.9, + "volume": 21191582 + }, + { + "date": "2025-04-10", + "open": 128.5, + "high": 129.16, + "low": 126.57, + "close": 127.57, + "volume": 22916007 + }, + { + "date": "2025-04-11", + "open": 126.66, + "high": 129.95, + "low": 125.37, + "close": 128.55, + "volume": 20965788 + }, + { + "date": "2025-04-14", + "open": 128.97, + "high": 129.4, + "low": 127.46, + "close": 128.69, + "volume": 16902671 + }, + { + "date": "2025-04-15", + "open": 127.84, + "high": 129.26, + "low": 126.91, + "close": 128.55, + "volume": 24931434 + }, + { + "date": "2025-04-16", + "open": 126.59, + "high": 126.83, + "low": 124.69, + "close": 125.53, + "volume": 19214847 + }, + { + "date": "2025-04-17", + "open": 125.87, + "high": 126.46, + "low": 124.37, + "close": 124.71, + "volume": 27525252 + }, + { + "date": "2025-04-18", + "open": 123.47, + "high": 124.03, + "low": 122.99, + "close": 123.52, + "volume": 18070391 + }, + { + "date": "2025-04-21", + "open": 123.45, + "high": 125.75, + "low": 122.05, + "close": 124.54, + "volume": 24543657 + }, + { + "date": "2025-04-22", + "open": 124.06, + "high": 126.49, + "low": 123.6, + "close": 125.0, + "volume": 29288758 + }, + { + "date": "2025-04-23", + "open": 123.66, + "high": 125.8, + "low": 122.96, + "close": 125.36, + "volume": 19050845 + }, + { + "date": "2025-04-24", + "open": 127.07, + "high": 129.1, + "low": 126.83, + "close": 128.22, + "volume": 15953744 + }, + { + "date": "2025-04-25", + "open": 128.47, + "high": 129.05, + "low": 125.18, + "close": 126.54, + "volume": 22887813 + }, + { + "date": "2025-04-28", + "open": 127.62, + "high": 128.22, + "low": 125.62, + "close": 125.87, + "volume": 28251118 + }, + { + "date": "2025-04-29", + "open": 126.3, + "high": 128.96, + "low": 126.1, + "close": 127.83, + "volume": 32261419 + }, + { + "date": "2025-04-30", + "open": 127.36, + "high": 127.49, + "low": 126.93, + "close": 127.26, + "volume": 28377198 + }, + { + "date": "2025-05-01", + "open": 126.53, + "high": 127.49, + "low": 124.79, + "close": 124.91, + "volume": 20628182 + }, + { + "date": "2025-05-02", + "open": 125.96, + "high": 128.71, + "low": 124.76, + "close": 127.82, + "volume": 30787376 + }, + { + "date": "2025-05-05", + "open": 126.94, + "high": 127.66, + "low": 124.41, + "close": 125.74, + "volume": 32013880 + }, + { + "date": "2025-05-06", + "open": 124.48, + "high": 125.4, + "low": 122.86, + "close": 123.23, + "volume": 23927227 + }, + { + "date": "2025-05-07", + "open": 122.57, + "high": 124.98, + "low": 121.53, + "close": 124.23, + "volume": 28467879 + }, + { + "date": "2025-05-08", + "open": 125.03, + "high": 126.03, + "low": 123.96, + "close": 125.78, + "volume": 15388205 + }, + { + "date": "2025-05-09", + "open": 125.65, + "high": 127.27, + "low": 125.45, + "close": 126.43, + "volume": 32425175 + }, + { + "date": "2025-05-12", + "open": 126.97, + "high": 128.46, + "low": 125.85, + "close": 125.96, + "volume": 16928843 + }, + { + "date": "2025-05-13", + "open": 124.91, + "high": 126.72, + "low": 124.63, + "close": 126.51, + "volume": 15874631 + }, + { + "date": "2025-05-14", + "open": 126.26, + "high": 127.75, + "low": 125.65, + "close": 126.16, + "volume": 24607489 + }, + { + "date": "2025-05-15", + "open": 127.28, + "high": 127.44, + "low": 124.32, + "close": 125.81, + "volume": 24351526 + }, + { + "date": "2025-05-16", + "open": 126.24, + "high": 126.76, + "low": 125.0, + "close": 126.46, + "volume": 18640260 + }, + { + "date": "2025-05-19", + "open": 127.0, + "high": 127.82, + "low": 125.67, + "close": 127.18, + "volume": 26324200 + }, + { + "date": "2025-05-20", + "open": 128.42, + "high": 129.35, + "low": 127.53, + "close": 129.01, + "volume": 21845718 + }, + { + "date": "2025-05-21", + "open": 130.31, + "high": 131.56, + "low": 129.31, + "close": 131.45, + "volume": 26502001 + }, + { + "date": "2025-05-22", + "open": 132.9, + "high": 135.37, + "low": 132.48, + "close": 134.86, + "volume": 19986070 + }, + { + "date": "2025-05-23", + "open": 135.76, + "high": 136.85, + "low": 134.15, + "close": 135.61, + "volume": 25948691 + }, + { + "date": "2025-05-26", + "open": 134.19, + "high": 134.77, + "low": 132.95, + "close": 134.09, + "volume": 21914025 + }, + { + "date": "2025-05-27", + "open": 134.96, + "high": 136.43, + "low": 134.14, + "close": 135.86, + "volume": 34233432 + }, + { + "date": "2025-05-28", + "open": 137.44, + "high": 137.46, + "low": 134.11, + "close": 135.6, + "volume": 21915419 + }, + { + "date": "2025-05-29", + "open": 134.35, + "high": 135.1, + "low": 133.36, + "close": 134.4, + "volume": 20669194 + }, + { + "date": "2025-05-30", + "open": 132.62, + "high": 134.11, + "low": 131.28, + "close": 134.01, + "volume": 31117143 + }, + { + "date": "2025-06-02", + "open": 134.06, + "high": 135.37, + "low": 134.04, + "close": 134.91, + "volume": 25539340 + }, + { + "date": "2025-06-03", + "open": 136.79, + "high": 137.74, + "low": 135.18, + "close": 135.88, + "volume": 31287593 + }, + { + "date": "2025-06-04", + "open": 137.82, + "high": 139.98, + "low": 137.12, + "close": 139.7, + "volume": 26078491 + }, + { + "date": "2025-06-05", + "open": 141.08, + "high": 141.88, + "low": 140.49, + "close": 141.73, + "volume": 27840058 + }, + { + "date": "2025-06-06", + "open": 142.56, + "high": 144.41, + "low": 141.7, + "close": 144.2, + "volume": 24221004 + }, + { + "date": "2025-06-09", + "open": 143.06, + "high": 143.25, + "low": 141.59, + "close": 142.02, + "volume": 17342327 + }, + { + "date": "2025-06-10", + "open": 142.86, + "high": 145.44, + "low": 141.56, + "close": 144.81, + "volume": 34984655 + }, + { + "date": "2025-06-11", + "open": 144.3, + "high": 145.19, + "low": 143.44, + "close": 144.4, + "volume": 27617618 + }, + { + "date": "2025-06-12", + "open": 143.4, + "high": 144.74, + "low": 142.0, + "close": 144.49, + "volume": 34164315 + }, + { + "date": "2025-06-13", + "open": 143.25, + "high": 145.71, + "low": 143.2, + "close": 145.23, + "volume": 27528769 + }, + { + "date": "2025-06-16", + "open": 143.58, + "high": 145.03, + "low": 142.34, + "close": 142.97, + "volume": 34224718 + }, + { + "date": "2025-06-17", + "open": 143.9, + "high": 144.83, + "low": 143.78, + "close": 143.93, + "volume": 15350520 + }, + { + "date": "2025-06-18", + "open": 144.26, + "high": 145.8, + "low": 144.22, + "close": 145.31, + "volume": 27993603 + }, + { + "date": "2025-06-19", + "open": 144.22, + "high": 145.04, + "low": 143.67, + "close": 144.33, + "volume": 25138772 + }, + { + "date": "2025-06-20", + "open": 145.21, + "high": 145.53, + "low": 144.09, + "close": 144.84, + "volume": 23457398 + }, + { + "date": "2025-06-23", + "open": 143.01, + "high": 143.66, + "low": 142.95, + "close": 143.41, + "volume": 19753695 + }, + { + "date": "2025-06-24", + "open": 141.64, + "high": 143.19, + "low": 140.22, + "close": 142.03, + "volume": 25819750 + }, + { + "date": "2025-06-25", + "open": 141.73, + "high": 143.1, + "low": 140.34, + "close": 141.66, + "volume": 34193217 + }, + { + "date": "2025-06-26", + "open": 140.83, + "high": 140.87, + "low": 138.3, + "close": 139.6, + "volume": 18343664 + }, + { + "date": "2025-06-27", + "open": 137.89, + "high": 140.13, + "low": 136.83, + "close": 138.76, + "volume": 20323148 + }, + { + "date": "2025-06-30", + "open": 140.11, + "high": 140.57, + "low": 137.57, + "close": 138.35, + "volume": 25628026 + } +] \ No newline at end of file diff --git a/typescript/src/app/chart/data/tsla-data.json b/typescript/src/app/chart/data/tsla-data.json new file mode 100644 index 0000000..b0da1fc --- /dev/null +++ b/typescript/src/app/chart/data/tsla-data.json @@ -0,0 +1,1766 @@ +[ + { + "Date": "2024-07-01", + "Open": 195.66, + "High": 195.82, + "Low": 193.84, + "Close": 193.86 + }, + { + "Date": "2024-07-02", + "Open": 193.54, + "High": 193.87, + "Low": 192.46, + "Close": 192.55 + }, + { + "Date": "2024-07-03", + "Open": 193.06, + "High": 193.17, + "Low": 192.71, + "Close": 192.81 + }, + { + "Date": "2024-07-04", + "Open": 194.47, + "High": 195.45, + "Low": 192.64, + "Close": 195.38 + }, + { + "Date": "2024-07-05", + "Open": 197.01, + "High": 197.21, + "Low": 195.16, + "Close": 195.7 + }, + { + "Date": "2024-07-08", + "Open": 194.47, + "High": 196.23, + "Low": 193.01, + "Close": 195.24 + }, + { + "Date": "2024-07-09", + "Open": 194.28, + "High": 194.8, + "Low": 192.46, + "Close": 193.87 + }, + { + "Date": "2024-07-10", + "Open": 192.4, + "High": 194.3, + "Low": 192.29, + "Close": 193.74 + }, + { + "Date": "2024-07-11", + "Open": 195.05, + "High": 196.03, + "Low": 193.28, + "Close": 193.54 + }, + { + "Date": "2024-07-12", + "Open": 192.99, + "High": 193.79, + "Low": 191.7, + "Close": 191.97 + }, + { + "Date": "2024-07-15", + "Open": 190.34, + "High": 190.51, + "Low": 188.47, + "Close": 189.21 + }, + { + "Date": "2024-07-16", + "Open": 189.93, + "High": 190.33, + "Low": 188.1, + "Close": 189.98 + }, + { + "Date": "2024-07-17", + "Open": 188.65, + "High": 188.92, + "Low": 187.77, + "Close": 188.45 + }, + { + "Date": "2024-07-18", + "Open": 188.27, + "High": 189.07, + "Low": 186.78, + "Close": 186.95 + }, + { + "Date": "2024-07-19", + "Open": 186.35, + "High": 188.13, + "Low": 184.46, + "Close": 186.47 + }, + { + "Date": "2024-07-22", + "Open": 185.91, + "High": 186.34, + "Low": 184.89, + "Close": 185.64 + }, + { + "Date": "2024-07-23", + "Open": 184.99, + "High": 185.48, + "Low": 183.15, + "Close": 184.34 + }, + { + "Date": "2024-07-24", + "Open": 183.49, + "High": 183.49, + "Low": 182.74, + "Close": 182.75 + }, + { + "Date": "2024-07-25", + "Open": 184.73, + "High": 185.05, + "Low": 183.16, + "Close": 183.41 + }, + { + "Date": "2024-07-26", + "Open": 184.89, + "High": 186.59, + "Low": 183.44, + "Close": 186.16 + }, + { + "Date": "2024-07-29", + "Open": 184.85, + "High": 186.63, + "Low": 184.52, + "Close": 185.09 + }, + { + "Date": "2024-07-30", + "Open": 183.31, + "High": 184.75, + "Low": 182.73, + "Close": 184.16 + }, + { + "Date": "2024-07-31", + "Open": 185.26, + "High": 185.75, + "Low": 184.33, + "Close": 185.42 + }, + { + "Date": "2024-08-01", + "Open": 184.56, + "High": 185.42, + "Low": 184.46, + "Close": 184.85 + }, + { + "Date": "2024-08-02", + "Open": 186.46, + "High": 188.11, + "Low": 185.82, + "Close": 187.76 + }, + { + "Date": "2024-08-05", + "Open": 188.43, + "High": 190.37, + "Low": 186.47, + "Close": 187.08 + }, + { + "Date": "2024-08-06", + "Open": 188.09, + "High": 189.71, + "Low": 186.7, + "Close": 188.21 + }, + { + "Date": "2024-08-07", + "Open": 189.42, + "High": 191.01, + "Low": 188.7, + "Close": 190.54 + }, + { + "Date": "2024-08-08", + "Open": 191.55, + "High": 191.8, + "Low": 191.17, + "Close": 191.74 + }, + { + "Date": "2024-08-09", + "Open": 191.07, + "High": 192.23, + "Low": 189.36, + "Close": 191.35 + }, + { + "Date": "2024-08-12", + "Open": 192.98, + "High": 194.2, + "Low": 191.88, + "Close": 192.1 + }, + { + "Date": "2024-08-13", + "Open": 191.4, + "High": 192.95, + "Low": 190.37, + "Close": 192.92 + }, + { + "Date": "2024-08-14", + "Open": 193.41, + "High": 194.71, + "Low": 193.24, + "Close": 194.66 + }, + { + "Date": "2024-08-15", + "Open": 192.87, + "High": 194.07, + "Low": 191.97, + "Close": 192.37 + }, + { + "Date": "2024-08-16", + "Open": 192.73, + "High": 194.0, + "Low": 191.06, + "Close": 191.11 + }, + { + "Date": "2024-08-19", + "Open": 189.48, + "High": 189.67, + "Low": 188.61, + "Close": 189.65 + }, + { + "Date": "2024-08-20", + "Open": 190.6, + "High": 191.19, + "Low": 189.29, + "Close": 190.11 + }, + { + "Date": "2024-08-21", + "Open": 191.5, + "High": 192.53, + "Low": 190.21, + "Close": 190.37 + }, + { + "Date": "2024-08-22", + "Open": 191.04, + "High": 191.5, + "Low": 189.48, + "Close": 191.33 + }, + { + "Date": "2024-08-23", + "Open": 191.47, + "High": 191.49, + "Low": 190.22, + "Close": 190.41 + }, + { + "Date": "2024-08-26", + "Open": 192.19, + "High": 193.05, + "Low": 190.63, + "Close": 191.18 + }, + { + "Date": "2024-08-27", + "Open": 189.78, + "High": 191.53, + "Low": 188.75, + "Close": 188.89 + }, + { + "Date": "2024-08-28", + "Open": 188.02, + "High": 189.69, + "Low": 186.35, + "Close": 187.56 + }, + { + "Date": "2024-08-29", + "Open": 185.82, + "High": 186.41, + "Low": 183.98, + "Close": 185.49 + }, + { + "Date": "2024-08-30", + "Open": 185.03, + "High": 185.53, + "Low": 184.58, + "Close": 185.2 + }, + { + "Date": "2024-09-02", + "Open": 184.49, + "High": 184.49, + "Low": 184.19, + "Close": 184.39 + }, + { + "Date": "2024-09-03", + "Open": 184.67, + "High": 185.21, + "Low": 184.02, + "Close": 184.21 + }, + { + "Date": "2024-09-04", + "Open": 185.63, + "High": 185.86, + "Low": 185.62, + "Close": 185.65 + }, + { + "Date": "2024-09-05", + "Open": 186.12, + "High": 187.17, + "Low": 185.38, + "Close": 186.7 + }, + { + "Date": "2024-09-06", + "Open": 187.26, + "High": 187.39, + "Low": 185.47, + "Close": 185.73 + }, + { + "Date": "2024-09-09", + "Open": 187.61, + "High": 189.53, + "Low": 186.6, + "Close": 186.97 + }, + { + "Date": "2024-09-10", + "Open": 185.28, + "High": 185.91, + "Low": 183.77, + "Close": 183.79 + }, + { + "Date": "2024-09-11", + "Open": 182.37, + "High": 182.42, + "Low": 182.05, + "Close": 182.32 + }, + { + "Date": "2024-09-12", + "Open": 182.2, + "High": 183.2, + "Low": 181.85, + "Close": 182.82 + }, + { + "Date": "2024-09-13", + "Open": 181.13, + "High": 181.47, + "Low": 180.91, + "Close": 181.38 + }, + { + "Date": "2024-09-16", + "Open": 181.95, + "High": 183.37, + "Low": 181.41, + "Close": 182.18 + }, + { + "Date": "2024-09-17", + "Open": 181.12, + "High": 182.67, + "Low": 179.76, + "Close": 180.47 + }, + { + "Date": "2024-09-18", + "Open": 179.96, + "High": 180.57, + "Low": 179.63, + "Close": 180.49 + }, + { + "Date": "2024-09-19", + "Open": 182.48, + "High": 184.27, + "Low": 181.04, + "Close": 181.67 + }, + { + "Date": "2024-09-20", + "Open": 183.14, + "High": 184.14, + "Low": 183.06, + "Close": 184.1 + }, + { + "Date": "2024-09-23", + "Open": 185.02, + "High": 185.51, + "Low": 183.19, + "Close": 185.18 + }, + { + "Date": "2024-09-24", + "Open": 184.77, + "High": 185.25, + "Low": 183.16, + "Close": 184.64 + }, + { + "Date": "2024-09-25", + "Open": 184.45, + "High": 185.46, + "Low": 184.29, + "Close": 184.47 + }, + { + "Date": "2024-09-26", + "Open": 183.99, + "High": 185.17, + "Low": 182.9, + "Close": 183.26 + }, + { + "Date": "2024-09-27", + "Open": 182.65, + "High": 183.76, + "Low": 180.99, + "Close": 183.32 + }, + { + "Date": "2024-09-30", + "Open": 182.52, + "High": 184.48, + "Low": 182.48, + "Close": 183.74 + }, + { + "Date": "2024-10-01", + "Open": 183.67, + "High": 185.11, + "Low": 182.29, + "Close": 183.1 + }, + { + "Date": "2024-10-02", + "Open": 181.28, + "High": 181.81, + "Low": 180.99, + "Close": 181.72 + }, + { + "Date": "2024-10-03", + "Open": 183.16, + "High": 183.46, + "Low": 181.86, + "Close": 182.58 + }, + { + "Date": "2024-10-04", + "Open": 183.46, + "High": 184.67, + "Low": 182.35, + "Close": 183.94 + }, + { + "Date": "2024-10-07", + "Open": 183.82, + "High": 185.45, + "Low": 181.87, + "Close": 184.19 + }, + { + "Date": "2024-10-08", + "Open": 185.96, + "High": 187.79, + "Low": 185.22, + "Close": 185.49 + }, + { + "Date": "2024-10-09", + "Open": 184.88, + "High": 184.95, + "Low": 183.85, + "Close": 184.06 + }, + { + "Date": "2024-10-10", + "Open": 182.43, + "High": 183.61, + "Low": 182.33, + "Close": 182.83 + }, + { + "Date": "2024-10-11", + "Open": 183.67, + "High": 184.3, + "Low": 183.36, + "Close": 183.72 + }, + { + "Date": "2024-10-14", + "Open": 185.63, + "High": 187.5, + "Low": 185.03, + "Close": 186.45 + }, + { + "Date": "2024-10-15", + "Open": 184.73, + "High": 185.32, + "Low": 184.25, + "Close": 184.94 + }, + { + "Date": "2024-10-16", + "Open": 186.52, + "High": 187.92, + "Low": 186.34, + "Close": 186.97 + }, + { + "Date": "2024-10-17", + "Open": 188.82, + "High": 189.36, + "Low": 188.3, + "Close": 189.28 + }, + { + "Date": "2024-10-18", + "Open": 187.6, + "High": 188.86, + "Low": 187.24, + "Close": 187.35 + }, + { + "Date": "2024-10-21", + "Open": 188.62, + "High": 188.97, + "Low": 186.73, + "Close": 186.99 + }, + { + "Date": "2024-10-22", + "Open": 186.85, + "High": 187.14, + "Low": 185.83, + "Close": 186.51 + }, + { + "Date": "2024-10-23", + "Open": 187.86, + "High": 188.1, + "Low": 186.43, + "Close": 187.71 + }, + { + "Date": "2024-10-24", + "Open": 186.19, + "High": 186.44, + "Low": 185.14, + "Close": 185.59 + }, + { + "Date": "2024-10-25", + "Open": 184.74, + "High": 185.53, + "Low": 183.75, + "Close": 185.34 + }, + { + "Date": "2024-10-28", + "Open": 186.81, + "High": 188.37, + "Low": 186.63, + "Close": 186.79 + }, + { + "Date": "2024-10-29", + "Open": 186.02, + "High": 187.27, + "Low": 185.59, + "Close": 185.8 + }, + { + "Date": "2024-10-30", + "Open": 183.85, + "High": 185.2, + "Low": 182.76, + "Close": 184.74 + }, + { + "Date": "2024-10-31", + "Open": 185.51, + "High": 186.83, + "Low": 184.31, + "Close": 186.29 + }, + { + "Date": "2024-11-01", + "Open": 186.1, + "High": 188.02, + "Low": 184.11, + "Close": 186.12 + }, + { + "Date": "2024-11-04", + "Open": 187.28, + "High": 187.73, + "Low": 186.07, + "Close": 186.7 + }, + { + "Date": "2024-11-05", + "Open": 185.94, + "High": 186.09, + "Low": 185.87, + "Close": 186.06 + }, + { + "Date": "2024-11-06", + "Open": 187.97, + "High": 189.29, + "Low": 187.41, + "Close": 188.76 + }, + { + "Date": "2024-11-07", + "Open": 187.22, + "High": 188.11, + "Low": 186.53, + "Close": 187.99 + }, + { + "Date": "2024-11-08", + "Open": 186.19, + "High": 187.91, + "Low": 185.03, + "Close": 186.65 + }, + { + "Date": "2024-11-11", + "Open": 185.91, + "High": 187.61, + "Low": 185.85, + "Close": 187.25 + }, + { + "Date": "2024-11-12", + "Open": 187.22, + "High": 187.45, + "Low": 187.02, + "Close": 187.19 + }, + { + "Date": "2024-11-13", + "Open": 189.12, + "High": 189.37, + "Low": 188.37, + "Close": 188.77 + }, + { + "Date": "2024-11-14", + "Open": 188.14, + "High": 188.84, + "Low": 187.98, + "Close": 188.0 + }, + { + "Date": "2024-11-15", + "Open": 186.66, + "High": 188.54, + "Low": 185.12, + "Close": 187.31 + }, + { + "Date": "2024-11-18", + "Open": 186.52, + "High": 188.11, + "Low": 185.21, + "Close": 186.46 + }, + { + "Date": "2024-11-19", + "Open": 187.18, + "High": 188.3, + "Low": 186.35, + "Close": 187.41 + }, + { + "Date": "2024-11-20", + "Open": 186.14, + "High": 186.53, + "Low": 185.59, + "Close": 186.44 + }, + { + "Date": "2024-11-21", + "Open": 186.36, + "High": 187.64, + "Low": 185.42, + "Close": 187.19 + }, + { + "Date": "2024-11-22", + "Open": 185.85, + "High": 186.91, + "Low": 185.04, + "Close": 186.76 + }, + { + "Date": "2024-11-25", + "Open": 187.81, + "High": 188.54, + "Low": 187.66, + "Close": 187.91 + }, + { + "Date": "2024-11-26", + "Open": 187.42, + "High": 188.86, + "Low": 186.32, + "Close": 186.84 + }, + { + "Date": "2024-11-27", + "Open": 185.81, + "High": 186.6, + "Low": 184.96, + "Close": 184.97 + }, + { + "Date": "2024-11-28", + "Open": 183.02, + "High": 183.53, + "Low": 181.04, + "Close": 183.19 + }, + { + "Date": "2024-11-29", + "Open": 182.96, + "High": 184.58, + "Low": 181.53, + "Close": 183.92 + }, + { + "Date": "2024-12-02", + "Open": 185.24, + "High": 186.47, + "Low": 183.93, + "Close": 185.47 + }, + { + "Date": "2024-12-03", + "Open": 186.99, + "High": 187.19, + "Low": 186.48, + "Close": 187.08 + }, + { + "Date": "2024-12-04", + "Open": 187.2, + "High": 188.46, + "Low": 186.92, + "Close": 187.09 + }, + { + "Date": "2024-12-05", + "Open": 187.91, + "High": 187.96, + "Low": 186.32, + "Close": 187.84 + }, + { + "Date": "2024-12-06", + "Open": 188.22, + "High": 189.15, + "Low": 188.18, + "Close": 189.07 + }, + { + "Date": "2024-12-09", + "Open": 189.84, + "High": 190.87, + "Low": 189.34, + "Close": 189.68 + }, + { + "Date": "2024-12-10", + "Open": 188.63, + "High": 188.97, + "Low": 188.13, + "Close": 188.71 + }, + { + "Date": "2024-12-11", + "Open": 190.52, + "High": 192.05, + "Low": 190.5, + "Close": 191.41 + }, + { + "Date": "2024-12-12", + "Open": 193.23, + "High": 193.26, + "Low": 191.72, + "Close": 191.97 + }, + { + "Date": "2024-12-13", + "Open": 193.65, + "High": 194.62, + "Low": 193.13, + "Close": 193.25 + }, + { + "Date": "2024-12-16", + "Open": 194.02, + "High": 194.96, + "Low": 192.67, + "Close": 194.53 + }, + { + "Date": "2024-12-17", + "Open": 195.17, + "High": 196.46, + "Low": 193.96, + "Close": 194.86 + }, + { + "Date": "2024-12-18", + "Open": 195.74, + "High": 197.71, + "Low": 194.45, + "Close": 195.52 + }, + { + "Date": "2024-12-19", + "Open": 197.34, + "High": 198.14, + "Low": 195.82, + "Close": 197.66 + }, + { + "Date": "2024-12-20", + "Open": 195.84, + "High": 196.87, + "Low": 195.17, + "Close": 196.66 + }, + { + "Date": "2024-12-23", + "Open": 195.6, + "High": 197.45, + "Low": 194.58, + "Close": 196.73 + }, + { + "Date": "2024-12-24", + "Open": 195.22, + "High": 195.45, + "Low": 194.98, + "Close": 195.33 + }, + { + "Date": "2024-12-25", + "Open": 197.24, + "High": 198.3, + "Low": 196.44, + "Close": 196.72 + }, + { + "Date": "2024-12-26", + "Open": 197.82, + "High": 197.94, + "Low": 196.01, + "Close": 197.9 + }, + { + "Date": "2024-12-27", + "Open": 197.57, + "High": 198.09, + "Low": 195.95, + "Close": 196.75 + }, + { + "Date": "2024-12-30", + "Open": 195.06, + "High": 196.38, + "Low": 193.09, + "Close": 193.41 + }, + { + "Date": "2024-12-31", + "Open": 193.53, + "High": 194.26, + "Low": 192.13, + "Close": 192.3 + }, + { + "Date": "2025-01-01", + "Open": 190.38, + "High": 191.1, + "Low": 189.02, + "Close": 189.31 + }, + { + "Date": "2025-01-02", + "Open": 188.98, + "High": 189.05, + "Low": 187.3, + "Close": 188.03 + }, + { + "Date": "2025-01-03", + "Open": 187.74, + "High": 187.81, + "Low": 187.22, + "Close": 187.55 + }, + { + "Date": "2025-01-06", + "Open": 186.09, + "High": 187.14, + "Low": 185.52, + "Close": 186.66 + }, + { + "Date": "2025-01-07", + "Open": 186.16, + "High": 188.01, + "Low": 185.81, + "Close": 187.76 + }, + { + "Date": "2025-01-08", + "Open": 188.28, + "High": 188.85, + "Low": 187.06, + "Close": 187.32 + }, + { + "Date": "2025-01-09", + "Open": 187.65, + "High": 189.42, + "Low": 187.23, + "Close": 188.99 + }, + { + "Date": "2025-01-10", + "Open": 188.68, + "High": 190.2, + "Low": 186.71, + "Close": 189.95 + }, + { + "Date": "2025-01-13", + "Open": 189.19, + "High": 189.35, + "Low": 188.07, + "Close": 189.22 + }, + { + "Date": "2025-01-14", + "Open": 188.09, + "High": 189.68, + "Low": 187.77, + "Close": 188.92 + }, + { + "Date": "2025-01-15", + "Open": 188.84, + "High": 190.76, + "Low": 187.79, + "Close": 189.05 + }, + { + "Date": "2025-01-16", + "Open": 190.87, + "High": 191.81, + "Low": 190.07, + "Close": 191.13 + }, + { + "Date": "2025-01-17", + "Open": 191.0, + "High": 192.4, + "Low": 189.38, + "Close": 191.28 + }, + { + "Date": "2025-01-20", + "Open": 189.67, + "High": 190.07, + "Low": 189.32, + "Close": 189.81 + }, + { + "Date": "2025-01-21", + "Open": 189.37, + "High": 190.71, + "Low": 188.05, + "Close": 188.89 + }, + { + "Date": "2025-01-22", + "Open": 188.01, + "High": 189.31, + "Low": 186.59, + "Close": 187.2 + }, + { + "Date": "2025-01-23", + "Open": 187.45, + "High": 188.25, + "Low": 186.99, + "Close": 187.91 + }, + { + "Date": "2025-01-24", + "Open": 187.36, + "High": 187.55, + "Low": 186.89, + "Close": 187.43 + }, + { + "Date": "2025-01-27", + "Open": 187.43, + "High": 187.56, + "Low": 186.49, + "Close": 186.5 + }, + { + "Date": "2025-01-28", + "Open": 188.4, + "High": 189.15, + "Low": 187.29, + "Close": 188.28 + }, + { + "Date": "2025-01-29", + "Open": 189.36, + "High": 189.64, + "Low": 189.25, + "Close": 189.6 + }, + { + "Date": "2025-01-30", + "Open": 190.83, + "High": 192.32, + "Low": 189.02, + "Close": 189.09 + }, + { + "Date": "2025-01-31", + "Open": 190.72, + "High": 191.82, + "Low": 190.59, + "Close": 191.13 + }, + { + "Date": "2025-02-03", + "Open": 193.03, + "High": 194.31, + "Low": 191.75, + "Close": 193.04 + }, + { + "Date": "2025-02-04", + "Open": 194.85, + "High": 194.97, + "Low": 194.33, + "Close": 194.61 + }, + { + "Date": "2025-02-05", + "Open": 194.15, + "High": 194.31, + "Low": 193.1, + "Close": 193.53 + }, + { + "Date": "2025-02-06", + "Open": 192.71, + "High": 193.71, + "Low": 192.3, + "Close": 192.42 + }, + { + "Date": "2025-02-07", + "Open": 193.56, + "High": 195.06, + "Low": 192.39, + "Close": 194.3 + }, + { + "Date": "2025-02-10", + "Open": 194.13, + "High": 195.49, + "Low": 193.23, + "Close": 194.15 + }, + { + "Date": "2025-02-11", + "Open": 193.87, + "High": 194.28, + "Low": 191.88, + "Close": 193.85 + }, + { + "Date": "2025-02-12", + "Open": 194.08, + "High": 194.92, + "Low": 193.29, + "Close": 194.37 + }, + { + "Date": "2025-02-13", + "Open": 195.95, + "High": 196.12, + "Low": 194.59, + "Close": 194.76 + }, + { + "Date": "2025-02-14", + "Open": 196.67, + "High": 197.2, + "Low": 195.87, + "Close": 197.07 + }, + { + "Date": "2025-02-17", + "Open": 197.8, + "High": 198.45, + "Low": 197.39, + "Close": 198.1 + }, + { + "Date": "2025-02-18", + "Open": 196.5, + "High": 196.53, + "Low": 196.42, + "Close": 196.49 + }, + { + "Date": "2025-02-19", + "Open": 198.21, + "High": 199.98, + "Low": 196.75, + "Close": 199.62 + }, + { + "Date": "2025-02-20", + "Open": 199.75, + "High": 200.36, + "Low": 198.57, + "Close": 199.63 + }, + { + "Date": "2025-02-21", + "Open": 197.92, + "High": 199.83, + "Low": 195.96, + "Close": 196.73 + }, + { + "Date": "2025-02-24", + "Open": 197.58, + "High": 198.27, + "Low": 196.56, + "Close": 197.9 + }, + { + "Date": "2025-02-25", + "Open": 199.68, + "High": 199.99, + "Low": 199.67, + "Close": 199.96 + }, + { + "Date": "2025-02-26", + "Open": 200.89, + "High": 202.56, + "Low": 200.44, + "Close": 201.75 + }, + { + "Date": "2025-02-27", + "Open": 203.12, + "High": 204.07, + "Low": 202.32, + "Close": 203.07 + }, + { + "Date": "2025-02-28", + "Open": 203.29, + "High": 204.58, + "Low": 201.8, + "Close": 203.09 + }, + { + "Date": "2025-03-03", + "Open": 204.76, + "High": 205.95, + "Low": 204.23, + "Close": 205.26 + }, + { + "Date": "2025-03-04", + "Open": 205.83, + "High": 206.98, + "Low": 205.09, + "Close": 205.66 + }, + { + "Date": "2025-03-05", + "Open": 206.2, + "High": 207.54, + "Low": 204.63, + "Close": 206.57 + }, + { + "Date": "2025-03-06", + "Open": 204.69, + "High": 205.3, + "Low": 204.17, + "Close": 205.09 + }, + { + "Date": "2025-03-07", + "Open": 203.85, + "High": 204.63, + "Low": 202.53, + "Close": 204.25 + }, + { + "Date": "2025-03-10", + "Open": 206.23, + "High": 207.04, + "Low": 204.61, + "Close": 206.76 + }, + { + "Date": "2025-03-11", + "Open": 205.49, + "High": 205.94, + "Low": 203.95, + "Close": 205.46 + }, + { + "Date": "2025-03-12", + "Open": 203.83, + "High": 204.1, + "Low": 203.11, + "Close": 204.04 + }, + { + "Date": "2025-03-13", + "Open": 203.66, + "High": 205.08, + "Low": 203.03, + "Close": 203.39 + }, + { + "Date": "2025-03-14", + "Open": 203.25, + "High": 203.33, + "Low": 202.56, + "Close": 202.58 + }, + { + "Date": "2025-03-17", + "Open": 203.82, + "High": 205.4, + "Low": 203.6, + "Close": 204.42 + }, + { + "Date": "2025-03-18", + "Open": 204.05, + "High": 204.1, + "Low": 203.78, + "Close": 203.93 + }, + { + "Date": "2025-03-19", + "Open": 204.4, + "High": 205.85, + "Low": 203.03, + "Close": 203.06 + }, + { + "Date": "2025-03-20", + "Open": 203.74, + "High": 203.82, + "Low": 203.11, + "Close": 203.66 + }, + { + "Date": "2025-03-21", + "Open": 205.41, + "High": 206.08, + "Low": 203.65, + "Close": 205.55 + }, + { + "Date": "2025-03-24", + "Open": 204.87, + "High": 206.03, + "Low": 204.11, + "Close": 205.9 + }, + { + "Date": "2025-03-25", + "Open": 206.51, + "High": 208.2, + "Low": 205.47, + "Close": 205.93 + }, + { + "Date": "2025-03-26", + "Open": 207.88, + "High": 209.87, + "Low": 206.21, + "Close": 208.94 + }, + { + "Date": "2025-03-27", + "Open": 208.24, + "High": 208.93, + "Low": 206.62, + "Close": 207.73 + }, + { + "Date": "2025-03-28", + "Open": 205.85, + "High": 206.28, + "Low": 205.57, + "Close": 205.58 + }, + { + "Date": "2025-03-31", + "Open": 206.61, + "High": 206.68, + "Low": 205.31, + "Close": 205.47 + }, + { + "Date": "2025-04-01", + "Open": 206.32, + "High": 207.32, + "Low": 205.77, + "Close": 206.75 + }, + { + "Date": "2025-04-02", + "Open": 205.13, + "High": 205.3, + "Low": 204.89, + "Close": 205.03 + }, + { + "Date": "2025-04-03", + "Open": 204.62, + "High": 205.7, + "Low": 203.28, + "Close": 205.57 + }, + { + "Date": "2025-04-04", + "Open": 206.18, + "High": 207.23, + "Low": 204.98, + "Close": 206.03 + }, + { + "Date": "2025-04-07", + "Open": 207.74, + "High": 209.45, + "Low": 206.4, + "Close": 207.66 + }, + { + "Date": "2025-04-08", + "Open": 208.98, + "High": 209.29, + "Low": 207.81, + "Close": 209.03 + }, + { + "Date": "2025-04-09", + "Open": 207.83, + "High": 208.36, + "Low": 206.36, + "Close": 207.32 + }, + { + "Date": "2025-04-10", + "Open": 208.76, + "High": 209.78, + "Low": 208.08, + "Close": 209.55 + }, + { + "Date": "2025-04-11", + "Open": 211.32, + "High": 212.24, + "Low": 210.25, + "Close": 210.52 + }, + { + "Date": "2025-04-14", + "Open": 209.02, + "High": 209.1, + "Low": 208.82, + "Close": 208.9 + }, + { + "Date": "2025-04-15", + "Open": 208.19, + "High": 210.07, + "Low": 207.67, + "Close": 208.02 + }, + { + "Date": "2025-04-16", + "Open": 206.89, + "High": 206.91, + "Low": 206.49, + "Close": 206.57 + }, + { + "Date": "2025-04-17", + "Open": 207.69, + "High": 208.0, + "Low": 207.09, + "Close": 207.9 + }, + { + "Date": "2025-04-18", + "Open": 209.08, + "High": 210.92, + "Low": 208.09, + "Close": 209.23 + }, + { + "Date": "2025-04-21", + "Open": 207.32, + "High": 208.94, + "Low": 206.62, + "Close": 206.91 + }, + { + "Date": "2025-04-22", + "Open": 205.61, + "High": 207.41, + "Low": 203.83, + "Close": 206.05 + }, + { + "Date": "2025-04-23", + "Open": 205.79, + "High": 207.41, + "Low": 204.24, + "Close": 205.61 + }, + { + "Date": "2025-04-24", + "Open": 206.83, + "High": 207.27, + "Low": 206.48, + "Close": 206.77 + }, + { + "Date": "2025-04-25", + "Open": 208.7, + "High": 209.27, + "Low": 206.81, + "Close": 208.95 + }, + { + "Date": "2025-04-28", + "Open": 207.78, + "High": 208.79, + "Low": 206.42, + "Close": 207.66 + }, + { + "Date": "2025-04-29", + "Open": 207.19, + "High": 208.82, + "Low": 206.03, + "Close": 206.85 + }, + { + "Date": "2025-04-30", + "Open": 205.48, + "High": 207.14, + "Low": 203.65, + "Close": 205.97 + }, + { + "Date": "2025-05-01", + "Open": 207.46, + "High": 207.8, + "Low": 206.95, + "Close": 207.71 + }, + { + "Date": "2025-05-02", + "Open": 208.69, + "High": 210.44, + "Low": 208.09, + "Close": 208.85 + }, + { + "Date": "2025-05-05", + "Open": 206.89, + "High": 207.54, + "Low": 205.18, + "Close": 207.0 + }, + { + "Date": "2025-05-06", + "Open": 206.09, + "High": 206.99, + "Low": 205.08, + "Close": 206.5 + }, + { + "Date": "2025-05-07", + "Open": 207.6, + "High": 208.61, + "Low": 207.34, + "Close": 207.56 + }, + { + "Date": "2025-05-08", + "Open": 207.25, + "High": 208.68, + "Low": 206.94, + "Close": 208.42 + }, + { + "Date": "2025-05-09", + "Open": 210.13, + "High": 210.97, + "Low": 208.81, + "Close": 209.58 + }, + { + "Date": "2025-05-12", + "Open": 209.39, + "High": 211.16, + "Low": 208.3, + "Close": 208.59 + }, + { + "Date": "2025-05-13", + "Open": 207.77, + "High": 209.75, + "Low": 206.92, + "Close": 208.67 + }, + { + "Date": "2025-05-14", + "Open": 206.79, + "High": 208.59, + "Low": 206.41, + "Close": 206.84 + }, + { + "Date": "2025-05-15", + "Open": 206.3, + "High": 207.25, + "Low": 205.95, + "Close": 206.8 + }, + { + "Date": "2025-05-16", + "Open": 207.51, + "High": 207.67, + "Low": 207.46, + "Close": 207.53 + }, + { + "Date": "2025-05-19", + "Open": 206.48, + "High": 207.63, + "Low": 205.08, + "Close": 205.61 + }, + { + "Date": "2025-05-20", + "Open": 203.94, + "High": 204.3, + "Low": 203.02, + "Close": 204.24 + }, + { + "Date": "2025-05-21", + "Open": 205.51, + "High": 206.12, + "Low": 203.69, + "Close": 204.55 + }, + { + "Date": "2025-05-22", + "Open": 206.54, + "High": 207.86, + "Low": 205.79, + "Close": 207.52 + }, + { + "Date": "2025-05-23", + "Open": 206.62, + "High": 206.83, + "Low": 205.6, + "Close": 206.41 + }, + { + "Date": "2025-05-26", + "Open": 205.45, + "High": 206.31, + "Low": 205.24, + "Close": 206.04 + }, + { + "Date": "2025-05-27", + "Open": 205.84, + "High": 207.09, + "Low": 204.75, + "Close": 205.78 + }, + { + "Date": "2025-05-28", + "Open": 203.97, + "High": 204.23, + "Low": 203.95, + "Close": 204.23 + }, + { + "Date": "2025-05-29", + "Open": 202.26, + "High": 203.82, + "Low": 201.83, + "Close": 203.49 + }, + { + "Date": "2025-05-30", + "Open": 201.88, + "High": 203.77, + "Low": 199.91, + "Close": 201.62 + }, + { + "Date": "2025-06-02", + "Open": 201.67, + "High": 202.33, + "Low": 200.18, + "Close": 201.65 + }, + { + "Date": "2025-06-03", + "Open": 200.18, + "High": 202.16, + "Low": 198.46, + "Close": 200.46 + }, + { + "Date": "2025-06-04", + "Open": 199.98, + "High": 201.84, + "Low": 198.49, + "Close": 199.42 + }, + { + "Date": "2025-06-05", + "Open": 199.6, + "High": 201.07, + "Low": 199.46, + "Close": 200.74 + }, + { + "Date": "2025-06-06", + "Open": 202.07, + "High": 203.96, + "Low": 200.85, + "Close": 203.31 + }, + { + "Date": "2025-06-09", + "Open": 202.02, + "High": 203.92, + "Low": 200.35, + "Close": 202.19 + }, + { + "Date": "2025-06-10", + "Open": 200.88, + "High": 202.7, + "Low": 199.06, + "Close": 200.81 + }, + { + "Date": "2025-06-11", + "Open": 198.92, + "High": 199.22, + "Low": 198.67, + "Close": 198.98 + }, + { + "Date": "2025-06-12", + "Open": 200.04, + "High": 200.28, + "Low": 198.93, + "Close": 200.03 + }, + { + "Date": "2025-06-13", + "Open": 199.54, + "High": 199.56, + "Low": 199.37, + "Close": 199.46 + }, + { + "Date": "2025-06-16", + "Open": 200.74, + "High": 201.1, + "Low": 199.3, + "Close": 199.31 + }, + { + "Date": "2025-06-17", + "Open": 200.32, + "High": 202.23, + "Low": 198.89, + "Close": 201.73 + } +] \ No newline at end of file diff --git a/typescript/src/app/chart/image/amazon.png b/typescript/src/app/chart/image/amazon.png new file mode 100644 index 0000000..2805452 Binary files /dev/null and b/typescript/src/app/chart/image/amazon.png differ diff --git a/typescript/src/app/chart/image/google.png b/typescript/src/app/chart/image/google.png new file mode 100644 index 0000000..2509038 Binary files /dev/null and b/typescript/src/app/chart/image/google.png differ diff --git a/typescript/src/app/chart/image/microsoft.png b/typescript/src/app/chart/image/microsoft.png new file mode 100644 index 0000000..60dc2d4 Binary files /dev/null and b/typescript/src/app/chart/image/microsoft.png differ diff --git a/typescript/src/app/chart/image/tesla.png b/typescript/src/app/chart/image/tesla.png new file mode 100644 index 0000000..5fc6954 Binary files /dev/null and b/typescript/src/app/chart/image/tesla.png differ diff --git a/typescript/src/app/chart/stockForecasting/index.html b/typescript/src/app/chart/stockForecasting/index.html new file mode 100644 index 0000000..5b5ff1e --- /dev/null +++ b/typescript/src/app/chart/stockForecasting/index.html @@ -0,0 +1,64 @@ + + + + + + Stock Forecasting + + + + + + +
+

Stock Forecasting

+ +
+

+ The Stock Forecasting sample uses Syncfusion Charts to visualize historical stock data and predict future trends using AI. +

+
+ +
+ + +
+
+
+ + + +
+
+ +
+ + +
+
+
+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/typescript/src/app/chart/stockForecasting/stockForecast.css b/typescript/src/app/chart/stockForecasting/stockForecast.css new file mode 100644 index 0000000..a00cc26 --- /dev/null +++ b/typescript/src/app/chart/stockForecasting/stockForecast.css @@ -0,0 +1,173 @@ +.para { + padding-top: 5px; +} + +.stock-info { + display: flex; + align-items: flex-start; + gap: 16px; + margin-left: 10px; + padding: 5px; +} + +.price { + font-size: 20px; + font-weight: bold; + padding-right: 2px; +} + +.stock-icon { + vertical-align: middle; + margin-right: 8px; +} + +.control-section { + display: flex; + justify-content: space-between; + align-items: flex-start; + flex-wrap: nowrap; + align-content: center; + flex-direction: column; +} + +.sidebar { + display: flex; + flex-direction: column; +} + +.stock-dropdownbar { + display: flex; +} + +.stock-selection { + padding: 5px; +} + +.main-content { + flex-grow: 1; + display: flex; + flex-direction: column; +} + +.control-bar { + display: flex; + align-items: baseline; + column-gap: 770px; +} + +.range-buttons .e-btn-group { + display: flex; +} + +.chart-controls { + position: relative; + display: flex; + align-items: center; + gap: 10px; +} + +.chart-container { + position: relative; + flex-grow: 1; + overflow: hidden; +} + +#chartWrapper { + height: 100%; +} + +#stock-change { + margin: 0; +} + +/* Syncfusion Button and Spinner Styles */ +.chart-action-button { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + background-color: #6f16ef; + border: none; + border-radius: 8px; + cursor: pointer; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + position: relative; + padding: 0; +} + +.chart-action-button:hover { + background-color: #5811c9; +} + +.chart-action-button .e-btn-icon.e-icons { + color: #fff; + font-size: 20px; +} + +.chart-spinner-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.1); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.chart-spinner-overlay .e-spinner { + width: 20px; + height: 20px; +} + +/* DropDownButton Styles */ +#stock-dropdown .e-dropdown-btn { + padding: 5px 10px; + display: flex; + align-items: center; + gap: 8px; +} + +#stock-dropdown .e-dropdown-popup .e-item { + padding: 5px 10px; + display: flex; + align-items: center; + gap: 8px; +} + +#stock-dropdown .e-dropdown-btn .stock-icon, +#stock-dropdown .e-dropdown-popup .e-item .stock-icon { + width: 20px; + height: 20px; + margin-right: 8px; +} + +.stock-icon { + width: 20px; + height: 20px; + display: inline-block; + background-size: contain; + background-repeat: no-repeat; + margin-right: 8px; + vertical-align: middle; +} + +/* Now point directly to /image/ because served from src/public */ +.e-logo-msft { + background-image: url('../image/microsoft.png'); +} + +.e-logo-goog { + background-image: url('../image/google.png'); +} + +.e-logo-amzn { + background-image: url('../image/amazon.png'); +} + +.e-logo-tsla { + background-image: url('../image/tesla.png'); +} \ No newline at end of file diff --git a/typescript/src/app/chart/stockForecasting/stockForecast.ts b/typescript/src/app/chart/stockForecasting/stockForecast.ts new file mode 100644 index 0000000..150474c --- /dev/null +++ b/typescript/src/app/chart/stockForecasting/stockForecast.ts @@ -0,0 +1,322 @@ +import { + Chart, CandleSeries, LineSeries, HiloOpenCloseSeries, DateTime, Crosshair, Tooltip, Legend, + ILoadedEventArgs, ChartTheme +} from '@syncfusion/ej2-charts'; +import { Button } from '@syncfusion/ej2-buttons'; +import { DropDownList } from '@syncfusion/ej2-dropdowns'; +import { DropDownButton, ItemModel } from '@syncfusion/ej2-splitbuttons'; +import { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups'; + +// Import JSON data directly +import msftData from '../data/msft-data.json'; +import googData from '../data/goog-data.json'; +import amznData from '../data/amzn-data.json'; +import tslaData from '../data/tsla-data.json'; + + +Chart.Inject(CandleSeries, LineSeries, HiloOpenCloseSeries, DateTime, Crosshair, Tooltip, Legend); + +interface StockInfo { + symbol: string; + text: string; + close: number; + change: number; + percentChange: number; +} + +interface ChartPoint { + date: Date; + high: number; + low: number; + open: number; + close: number; +} + +class StockForecasting { + private chart: Chart; + private selectedSymbol: string = 'MSFT'; + private selectedSeriesType: string = 'Candle'; + private selectedRange: number = 3; + private chartData: ChartPoint[] = []; + private stripStartDate: Date = new Date(); + private stripEndDate: Date = new Date(); + private selectedStockInfo: StockInfo | null = null; + private chartWrapper: HTMLElement; + + constructor() { + this.chart = null!; + this.chartWrapper = document.getElementById('chartWrapper')!; + this.selectedStockInfo = this.getDefaultStockInfo(this.selectedSymbol); + this.initializeChart(); + this.initializeAIButton(); + this.initializeSeriesDropdown(); + this.initializeRangeButtons(); + this.loadChartData(); + this.updateStockInfoDisplay(); + } + + private initializeChart(): void { + this.chart = new Chart({ + primaryXAxis: { + valueType: 'DateTime', + labelFormat: 'MMM yyyy', + crosshairTooltip: { enable: true }, + majorGridLines: { width: 0 }, + stripLines: [{ start: this.stripStartDate, end: this.stripEndDate, color: '#E0E0E0', }] + }, + primaryYAxis: { + rangePadding: 'None', + labelFormat: 'n0', + lineStyle: { width: 0 }, + majorTickLines: { width: 0 } + }, + legendSettings: { visible: false }, + tooltip: { enable: true, shared: true, header: '' }, + crosshair: { enable: true, lineType: 'Vertical' }, + series: [], + chartArea: { border: { width: 0 } }, + width: '100%', + theme: this.getTheme(), + load: this.onChartLoad.bind(this) + }); + this.chart.appendTo('#chart-container'); + } + + private getTheme(): ChartTheme { + const mode = window.location.href.includes('dark') ? 'Dark' : 'Light'; + return `Material${mode}` as ChartTheme; + } + + private onChartLoad(args: ILoadedEventArgs): void { + args.chart.theme = this.getTheme(); + } + + private getDefaultStockInfo(symbol: string): StockInfo { + switch (symbol) { + case 'MSFT': return { symbol: 'MSFT', text: 'Microsoft Corp', close: 138.35, change: -2.0, percentChange: -0.22 }; + case 'GOOG': return { symbol: 'GOOG', text: 'Alphabet Inc', close: 152.83, change: -2.0, percentChange: -0.22 }; + case 'AMZN': return { symbol: 'AMZN', text: 'Amazon Inc', close: 222.27, change: -2.0, percentChange: -0.22 }; + case 'TSLA': return { symbol: 'TSLA', text: 'Tesla Inc', close: 201.73, change: -2.0, percentChange: -0.22 }; + default: return { symbol, text: '', close: 0.0, change: 0.0, percentChange: 0.0 }; + } + } + + private loadChartData(): void { + try { + let json: any[] = []; + + if (this.selectedSymbol === "GOOG") json = googData; + else if (this.selectedSymbol === "AMZN") json = amznData; + else if (this.selectedSymbol === "TSLA") json = tslaData; + else { json = msftData; this.selectedSymbol = "MSFT"; } + + if (!json || json.length === 0) { + console.warn(`No data found for symbol: ${this.selectedSymbol}`); + this.chartData = []; + this.renderChart(); + return; + } + + const allData: ChartPoint[] = json.map((d: any) => ({ + date: new Date(d.date || d.Date), + high: Number(d.high ?? d.High), + low: Number(d.low ?? d.Low), + open: Number(d.open ?? d.Open), + close: Number(d.close ?? d.Close) + })); + + this.chartData = this.filterChartData(allData, this.selectedRange); + this.renderChart(); + this.updateStockInfoDisplay(); + } catch (error) { + console.error("Error loading chart data:", error); + this.chartData = []; + this.renderChart(); + } + } + + private filterChartData(allData: ChartPoint[], months: number): ChartPoint[] { + if (allData.length) { + this.stripStartDate = allData[0].date; + this.stripEndDate = allData[allData.length - 1].date; + } else { + this.stripStartDate = this.stripEndDate = new Date(); + } + const latestDate = new Date(Math.max(...allData.map(p => p.date.getTime()))); + const cutoffDate = new Date(latestDate); + const intendedMonth = latestDate.getMonth() - months + 1; + cutoffDate.setMonth(intendedMonth); + if (cutoffDate.getMonth() !== intendedMonth) cutoffDate.setDate(0); + return allData.filter(p => p.date >= cutoffDate).sort((a, b) => a.date.getTime() - b.date.getTime()); + } + + private renderChart(): void { + this.chart!.series = [{ + dataSource: this.chartData, + xName: 'date', + type: this.selectedSeriesType as 'Candle' | 'Line' | 'HiloOpenClose', + name: this.selectedStockInfo?.text, + high: this.selectedSeriesType !== 'Line' ? 'high' : undefined, + low: this.selectedSeriesType !== 'Line' ? 'low' : undefined, + open: this.selectedSeriesType !== 'Line' ? 'open' : undefined, + close: this.selectedSeriesType !== 'Line' ? 'close' : undefined, + yName: this.selectedSeriesType === 'Line' ? 'close' : undefined, + bearFillColor: this.selectedSeriesType === 'Candle' ? '#2ecd71' : undefined, + bullFillColor: this.selectedSeriesType === 'Candle' ? '#e74c3d' : undefined + }]; + this.chart!.primaryXAxis.stripLines = [{ + start: this.stripStartDate, + end: this.stripEndDate, + color: '#E0E0E0' + }]; + this.chart!.refresh(); + } + + private updateStockInfoDisplay(): void { + const stockText = document.getElementById('stock-text'); + const stockClose = document.getElementById('stock-close'); + const stockChange = document.getElementById('stock-change'); + + if (stockText && stockClose && stockChange && this.selectedStockInfo) { + stockText.textContent = this.selectedStockInfo.text || ''; + stockClose.textContent = this.selectedStockInfo.close.toString(); + stockChange.textContent = `${this.selectedStockInfo.change} ${this.selectedStockInfo.percentChange}%`; + stockChange.style.color = this.selectedStockInfo.change >= 0 ? 'green' : 'red'; + } + } + + private initializeAIButton(): void { + const button = new Button({ + cssClass: 'chart-action-button', + isPrimary: true, + iconCss: 'e-icons e-chat' + + }); + button.appendTo('#aiAssistBtn'); + + button.element.addEventListener('click', async () => { + await this.simulateAiAssist(); + }); + } + + private async simulateAiAssist(): Promise { + const target = document.getElementById("chartWrapper"); + if (!target) return; + + // Create spinner if not already present + if (!target.querySelector(".e-spinner-pane")) { + createSpinner({ target }); + } + showSpinner(target); + + try { + const response = await fetch("https://your-backend-api/forecast", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + symbol: this.selectedSymbol, + data: this.chartData, + }), + }); + + if (!response.ok) { + throw new Error(`Forecast API failed: ${response.status}`); + } + + const forecastData: any[] = await response.json(); + const nextData: ChartPoint[] = forecastData.map((d: any) => ({ + date: new Date(d.date), + open: Number(d.open), + high: Number(d.high), + low: Number(d.low), + close: Number(d.close), + })); + + // Append forecast points to chart data + this.chartData.push(...nextData); + + // Update chart + if (this.chart && this.chart.series.length > 0) { + this.chart.series[0].dataSource = this.chartData; + this.chart.refresh(); + } + } catch (err) { + console.error("AI Assist failed:", err); + } finally { + hideSpinner(target); + } + } + + private initializeSeriesDropdown(): void { + const seriesOptions: string[] = ['Candle', 'Line', 'HiloOpenClose']; + + const dropDownObj: DropDownList = new DropDownList({ + dataSource: seriesOptions, + value: this.selectedSeriesType, // keep default as current selected + placeholder: 'Select Chart Type', + change: (args) => { + this.selectedSeriesType = args.value as string; + this.renderChart(); // refresh chart on series type change + } + }); + + dropDownObj.appendTo('#series-dropdown'); + } + + private initializeRangeButtons(): void { + const button3M = new Button({ content: '3 Month', cssClass: 'range-button' }); + button3M.appendTo('#btn-3m'); + button3M.element.addEventListener('click', () => { + this.selectedRange = 3; + this.loadChartData(); + }); + + const button6M = new Button({ content: '6 Month', cssClass: 'range-button' }); + button6M.appendTo('#btn-6m'); + button6M.element.addEventListener('click', () => { + this.selectedRange = 6; + this.loadChartData(); + }); + + const button12M = new Button({ content: '1 Year', cssClass: 'range-button' }); + button12M.appendTo('#btn-12m'); + button12M.element.addEventListener('click', () => { + this.selectedRange = 12; + this.loadChartData(); + }); + } + + + + public initializeStockDropdown(): void { + const items: ItemModel[] = [ + { text: 'MSFT', id: 'MSFT', iconCss: 'e-logo-msft stock-icon' }, + { text: 'GOOG', id: 'GOOG', iconCss: 'e-logo-goog stock-icon' }, + { text: 'AMZN', id: 'AMZN', iconCss: 'e-logo-amzn stock-icon' }, + { text: 'TSLA', id: 'TSLA', iconCss: 'e-logo-tsla stock-icon' } + ]; + + const dropDownButton = new DropDownButton({ + items, + content: ` MSFT`, + select: (args: { item: ItemModel }) => { + this.selectedSymbol = args.item.id as string; + this.selectedStockInfo = this.getDefaultStockInfo(this.selectedSymbol); + this.loadChartData(); + this.updateStockInfoDisplay(); + dropDownButton.content = ` ${args.item.text}`; + }, + beforeItemRender: (args: { element: HTMLElement; item: ItemModel }) => { + args.element.innerHTML = ` ${args.item.text}`; + } + }); + + dropDownButton.appendTo('#stock-dropdown'); + } + +} + +document.addEventListener('DOMContentLoaded', () => { + const app = new StockForecasting(); + app.initializeStockDropdown(); +}); \ No newline at end of file diff --git a/typescript/src/index.ts b/typescript/src/index.ts index 2b7b8ad..6d9e1cb 100644 --- a/typescript/src/index.ts +++ b/typescript/src/index.ts @@ -73,6 +73,11 @@ let treeData: { [key: string]: Object }[] = [ { id: '/gantt/resource_optimization/index.html', name: 'Smart Resource Allocation' } ] }, + { + id: '9', name: 'Chart', url: '', subItems: [ + { id: '/chart/stockForecasting/index.html', name: 'Stock Forecasting' }, + ] + }, { id:'99', name: '' }