bram4627 commited on
Commit
07dae1c
·
verified ·
1 Parent(s): 86dc582
Files changed (8) hide show
  1. app.py +268 -0
  2. gold.csv +821 -0
  3. model.pkl +3 -0
  4. requirements.txt +7 -0
  5. scaler.pkl +3 -0
  6. templates/data_analysis.html +208 -0
  7. templates/error.html +61 -0
  8. templates/index.html +258 -0
app.py ADDED
@@ -0,0 +1,268 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, render_template, request, jsonify
2
+ import pandas as pd
3
+ import numpy as np
4
+ import pickle
5
+ import os
6
+ from datetime import datetime, timedelta
7
+ import matplotlib
8
+ matplotlib.use('Agg') # Use non-interactive backend
9
+ import matplotlib.pyplot as plt
10
+ import seaborn as sns
11
+ import base64
12
+ import io
13
+
14
+ app = Flask(__name__)
15
+
16
+ # Load model and scaler
17
+ def load_model_and_scaler():
18
+ try:
19
+ with open('model.pkl', 'rb') as model_file:
20
+ model = pickle.load(model_file)
21
+
22
+ with open('scaler.pkl', 'rb') as scaler_file:
23
+ scaler = pickle.load(scaler_file)
24
+
25
+ return model, scaler
26
+ except FileNotFoundError:
27
+ return None, None
28
+
29
+ def load_data():
30
+ """Load and preprocess the gold data"""
31
+ try:
32
+ data = pd.read_csv('gold.csv')
33
+ data['date'] = pd.to_datetime(data['date'], format='%d/%m/%Y').dt.strftime('%Y-%m-%d')
34
+ temp_df = data[['date', 'close', 'open']]
35
+
36
+ # Preprocessing
37
+ df = temp_df.copy()
38
+ df['date'] = pd.to_datetime(df['date'], dayfirst=True, format='%Y-%m-%d').dt.date
39
+ df.set_index('date', inplace=True)
40
+ df.index = pd.to_datetime(df.index)
41
+ df = df.sort_index()
42
+
43
+ return df
44
+ except FileNotFoundError:
45
+ return None
46
+
47
+ def normalize_data(df, scaler):
48
+ """Normalize the data using the provided scaler"""
49
+ np_data_unscaled = np.array(df)
50
+ np_data_scaled = scaler.transform(np_data_unscaled)
51
+ normalized_df = pd.DataFrame(np_data_scaled, columns=df.columns, index=df.index)
52
+ return normalized_df
53
+
54
+ def sliding_window(data, lag):
55
+ """Create sliding window features"""
56
+ series_close = data['close']
57
+ series_open = data['open']
58
+ result = pd.DataFrame()
59
+
60
+ # Add lag columns for 'close'
61
+ for l in lag:
62
+ result[f'close-{l}'] = series_close.shift(l)
63
+
64
+ # Add lag columns for 'open'
65
+ for l in lag:
66
+ result[f'open-{l}'] = series_open.shift(l)
67
+
68
+ # Add original 'close' and 'open' columns
69
+ result['close'] = series_close[max(lag):]
70
+ result['open'] = series_open[max(lag):]
71
+
72
+ # Remove missing values (NaN)
73
+ result = result.dropna()
74
+
75
+ # Set index according to lag values
76
+ result.index = series_close.index[max(lag):]
77
+
78
+ return result
79
+
80
+ def predict_next_7_days(model, scaler, data):
81
+ """Predict gold prices for the next 7 days"""
82
+ # Normalize data
83
+ normalized_df = normalize_data(data, scaler)
84
+
85
+ # Create sliding window
86
+ windowed_data = sliding_window(normalized_df, [1, 2, 3, 4, 5, 6, 7])
87
+ windowed_data = windowed_data[['close', 'close-1', 'close-2', 'close-3', 'close-4', 'close-5', 'close-6', 'close-7',
88
+ 'open', 'open-1', 'open-2', 'open-3', 'open-4', 'open-5', 'open-6', 'open-7']]
89
+
90
+ # Initialize predictions list
91
+ predictions = []
92
+
93
+ # Get last row as initial input
94
+ last_row = windowed_data.drop(columns=['close', 'open']).iloc[-1].values.reshape(1, -1)
95
+
96
+ # Iterate for 7 days
97
+ for _ in range(7):
98
+ # Predict value for next day
99
+ predicted_value_normalized = model.predict(last_row)
100
+ predicted_value = scaler.inverse_transform(predicted_value_normalized.reshape(-1, 2))
101
+
102
+ # Save prediction
103
+ predictions.append(predicted_value[0])
104
+
105
+ # Update input for next iteration
106
+ new_row_normalized = np.hstack([last_row[0, 2:], predicted_value_normalized[0]])
107
+ last_row = new_row_normalized.reshape(1, -1)
108
+
109
+ # Transform predictions to DataFrame
110
+ predictions_df = pd.DataFrame(
111
+ predictions,
112
+ columns=['close', 'open'],
113
+ index=pd.date_range(start=normalized_df.index[-1] + pd.Timedelta(days=1), periods=7)
114
+ )
115
+
116
+ # Get last price
117
+ last_price = scaler.inverse_transform(normalized_df[['close', 'open']].iloc[-1].values.reshape(-1, 2))
118
+
119
+ # Calculate daily percentage changes
120
+ predictions_df['close_change'] = predictions_df['close'].pct_change().fillna(0) * 100
121
+ predictions_df['open_change'] = predictions_df['open'].pct_change().fillna(0) * 100
122
+
123
+ # Calculate total change from today to day 7
124
+ total_close_change = ((predictions_df['close'].iloc[-1] - last_price[0][0]) / last_price[0][0]) * 100
125
+ total_open_change = ((predictions_df['open'].iloc[-1] - last_price[0][1]) / last_price[0][1]) * 100
126
+
127
+ return predictions_df, last_price[0], total_close_change, total_open_change
128
+
129
+ def create_prediction_chart(data, predictions_df, last_price):
130
+ """Create a chart showing historical and predicted prices"""
131
+ plt.style.use('default')
132
+ fig, ax = plt.subplots(figsize=(12, 8))
133
+
134
+ # Plot last 30 days of historical data
135
+ recent_data = data.tail(30)
136
+ ax.plot(recent_data.index, recent_data['close'], 'b-', label='Historical Close Price', linewidth=2)
137
+ ax.plot(recent_data.index, recent_data['open'], 'g-', label='Historical Open Price', linewidth=2)
138
+
139
+ # Add current day point
140
+ ax.plot(recent_data.index[-1], last_price[0], 'ro', markersize=8, label='Current Close Price')
141
+ ax.plot(recent_data.index[-1], last_price[1], 'go', markersize=8, label='Current Open Price')
142
+
143
+ # Plot predictions
144
+ ax.plot(predictions_df.index, predictions_df['close'], 'r--', label='Predicted Close Price', linewidth=2, marker='o')
145
+ ax.plot(predictions_df.index, predictions_df['open'], 'orange', linestyle='--', label='Predicted Open Price', linewidth=2, marker='s')
146
+
147
+ ax.set_title('Gold Price Prediction - Next 7 Days', fontsize=16, fontweight='bold')
148
+ ax.set_xlabel('Date', fontsize=12)
149
+ ax.set_ylabel('Price (IDR)', fontsize=12)
150
+ ax.legend()
151
+ ax.grid(True, alpha=0.3)
152
+
153
+ # Format y-axis to show prices in millions
154
+ ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'{x/1000000:.1f}M'))
155
+
156
+ plt.xticks(rotation=45)
157
+ plt.tight_layout()
158
+
159
+ # Convert plot to base64 string
160
+ img_buffer = io.BytesIO()
161
+ plt.savefig(img_buffer, format='png', dpi=150, bbox_inches='tight')
162
+ img_buffer.seek(0)
163
+ img_string = base64.b64encode(img_buffer.read()).decode()
164
+ plt.close()
165
+
166
+ return img_string
167
+
168
+ @app.route('/')
169
+ def index():
170
+ return render_template('index.html')
171
+
172
+ @app.route('/predict', methods=['POST'])
173
+ def predict():
174
+ try:
175
+ # Load model and scaler
176
+ model, scaler = load_model_and_scaler()
177
+ if model is None or scaler is None:
178
+ return jsonify({'error': 'Model or scaler not found. Please train the model first.'}), 500
179
+
180
+ # Load data
181
+ data = load_data()
182
+ if data is None:
183
+ return jsonify({'error': 'Data file not found.'}), 500
184
+
185
+ # Make predictions
186
+ predictions_df, last_price, total_close_change, total_open_change = predict_next_7_days(model, scaler, data)
187
+
188
+ # Create chart
189
+ chart_img = create_prediction_chart(data, predictions_df, last_price)
190
+
191
+ # Prepare response data
192
+ predictions_list = []
193
+ for date, row in predictions_df.iterrows():
194
+ predictions_list.append({
195
+ 'date': date.strftime('%Y-%m-%d'),
196
+ 'close_price': round(row['close'], 2),
197
+ 'open_price': round(row['open'], 2),
198
+ 'close_change': round(row['close_change'], 2),
199
+ 'open_change': round(row['open_change'], 2)
200
+ })
201
+
202
+ response = {
203
+ 'success': True,
204
+ 'current_prices': {
205
+ 'close': round(last_price[0], 2),
206
+ 'open': round(last_price[1], 2)
207
+ },
208
+ 'predictions': predictions_list,
209
+ 'total_changes': {
210
+ 'close': round(total_close_change, 2),
211
+ 'open': round(total_open_change, 2)
212
+ },
213
+ 'chart': chart_img
214
+ }
215
+
216
+ return jsonify(response)
217
+
218
+ except Exception as e:
219
+ return jsonify({'error': f'An error occurred: {str(e)}'}), 500
220
+
221
+ @app.route('/data-analysis')
222
+ def data_analysis():
223
+ """Show data analysis page"""
224
+ try:
225
+ data = load_data()
226
+ if data is None:
227
+ return render_template('error.html', error='Data file not found.')
228
+
229
+ # Create historical price chart
230
+ fig, ax = plt.subplots(figsize=(12, 6))
231
+ ax.plot(data.index, data['close'], 'b-', label='Close Price', linewidth=1.5)
232
+ ax.plot(data.index, data['open'], 'g-', label='Open Price', linewidth=1.5)
233
+ ax.set_title('Historical Gold Prices', fontsize=16, fontweight='bold')
234
+ ax.set_xlabel('Date', fontsize=12)
235
+ ax.set_ylabel('Price (IDR)', fontsize=12)
236
+ ax.legend()
237
+ ax.grid(True, alpha=0.3)
238
+ ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'{x/1000000:.1f}M'))
239
+ plt.xticks(rotation=45)
240
+ plt.tight_layout()
241
+
242
+ img_buffer = io.BytesIO()
243
+ plt.savefig(img_buffer, format='png', dpi=150, bbox_inches='tight')
244
+ img_buffer.seek(0)
245
+ historical_chart = base64.b64encode(img_buffer.read()).decode()
246
+ plt.close()
247
+
248
+ # Calculate statistics
249
+ stats = {
250
+ 'total_records': len(data),
251
+ 'date_range': f"{data.index.min().strftime('%Y-%m-%d')} to {data.index.max().strftime('%Y-%m-%d')}",
252
+ 'avg_close': round(data['close'].mean(), 2),
253
+ 'avg_open': round(data['open'].mean(), 2),
254
+ 'min_close': round(data['close'].min(), 2),
255
+ 'max_close': round(data['close'].max(), 2),
256
+ 'current_close': round(data['close'].iloc[-1], 2),
257
+ 'current_open': round(data['open'].iloc[-1], 2)
258
+ }
259
+
260
+ return render_template('data_analysis.html', chart=historical_chart, stats=stats)
261
+
262
+ except Exception as e:
263
+ return render_template('error.html', error=f'An error occurred: {str(e)}')
264
+
265
+ if __name__ == '__main__':
266
+ # For Hugging Face Spaces, use port 7860
267
+ port = int(os.environ.get('PORT', 7860))
268
+ app.run(host='0.0.0.0', port=port, debug=False)
gold.csv ADDED
@@ -0,0 +1,821 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,close,open,Tertinggi,Terendah,Volume,Perubahan
2
+ 12/3/2025,2932,2922,2935,2912,"112,85K","0,39%"
3
+ 11/3/2025,2921,2893,2929,2883,"2,96K","0,74%"
4
+ 10/3/2025,2899,2920,2926,2885,"221,61K","-0,5%"
5
+ 7/3/2025,2914,2919,2939,2905,"237,58K","-0,43%"
6
+ 6/3/2025,2927,2930,2936,2898,"166,36K","0,02%"
7
+ 5/3/2025,2926,2929,2941,2903,"183,02K","0,18%"
8
+ 4/3/2025,2921,2904,2940,2893,"188,52K","0,67%"
9
+ 3/3/2025,2901,2872,2906,2866,"177,02K","1,85%"
10
+ 28/02/2025,2849,2889,2896,2844,"210,56K","-1,64%"
11
+ 27/02/2025,2896,2931,2936,2879,"207,65K","-0,75%"
12
+ 26/02/2025,2918,2916,2926,2891,"2,05K","0,41%"
13
+ 25/02/2025,2906,2956,2956,2885,"5,59K","-1,48%"
14
+ 24/02/2025,2950,2939,2960,2926,"2,00K","-0,12%"
15
+ 21/02/2025,2953,2956,2965,2930,"163,69K","-0,1%"
16
+ 20/02/2025,2956,2950,2973,2939,"172,20K","0,68%"
17
+ 19/02/2025,2936,2954,2964,2934,"159,34K","-0,44%"
18
+ 18/02/2025,2949,2895,2957,2888,"218,76K","1,67%"
19
+ 14/02/2025,2901,2957,2964,2890,"228,08K","-1,52%"
20
+ 13/02/2025,2945,2929,2959,2926,"169,50K","0,57%"
21
+ 12/2/2025,2929,2927,2937,2887,"204,63K","-0,13%"
22
+ 11/2/2025,2933,2937,2969,2907,"218,48K","-0,06%"
23
+ 10/2/2025,2934,2885,2938,2880,"167,23K","1,62%"
24
+ 7/2/2025,2888,2880,2911,2876,"192,55K","0,38%"
25
+ 6/2/2025,2877,2885,2894,2855,"167,70K","-0,56%"
26
+ 5/2/2025,2893,2874,2906,2870,"167,38K","0,6%"
27
+ 4/2/2025,2876,2850,2877,2837,"145,86K","0,65%"
28
+ 3/2/2025,2857,2847,2872,2802,"181,34K","0,78%"
29
+ 31/01/2025,2835,2852,2863,2826,"165,68K","-0,36%"
30
+ 30/01/2025,2845,2796,2853,2795,"188,34K","2,29%"
31
+ 29/01/2025,2782,2785,2790,2773,"3,98K","0,02%"
32
+ 28/01/2025,2781,2757,2787,2753,"3,42K","1,04%"
33
+ 27/01/2025,2752,2791,2791,2747,"3,94K","-1,44%"
34
+ 24/01/2025,2793,2779,2808,2779,"1,10K","0,52%"
35
+ 23/01/2025,2778,2778,2780,2755,"1,83K","-0,68%"
36
+ 22/01/2025,2797,2785,2800,2783,"39,59K","0,42%"
37
+ 21/01/2025,2786,2766,2788,2742,"56,80K","1,34%"
38
+ 17/01/2025,2749,2747,2759,2729,"156,87K","-0,08%"
39
+ 16/01/2025,2751,2722,2758,2720,"186,54K","1,22%"
40
+ 15/01/2025,2718,2693,2723,2685,"193,72K","1,32%"
41
+ 14/01/2025,2682,2682,2694,2672,"179,41K","0,14%"
42
+ 13/01/2025,2679,2717,2724,2675,"211,09K","-1,34%"
43
+ 10/1/2025,2715,2693,2735,2687,"298,41K","0,9%"
44
+ 9/1/2025,2691,2680,2697,2674,"156,65K","0,69%"
45
+ 8/1/2025,2672,2663,2687,2658,"197,37K","0,26%"
46
+ 7/1/2025,2665,2647,2679,2644,"161,62K","0,68%"
47
+ 6/1/2025,2647,2653,2664,2625,"169,92K","-0,27%"
48
+ 3/1/2025,2655,2671,2681,2650,"121,17K","-0,54%"
49
+ 2/1/2025,2669,2641,2674,2636,"144,52K","1,06%"
50
+ 31/12/2024,2641,2620,2642,2614,"86,29K","0,87%"
51
+ 30/12/2024,2618,2636,2641,2608,"110,92K","-0,01%"
52
+ 27/12/2024,2618,2640,2640,2612,"0,64K","-0,83%"
53
+ 26/12/2024,2640,2623,2642,2623,"1,40K","0,67%"
54
+ 24/12/2024,2623,2617,2623,2613,"0,42K","0,28%"
55
+ 23/12/2024,2616,2627,2633,2610,"0,56K","-0,65%"
56
+ 20/12/2024,2633,2598,2641,2596,"0,51K","1,41%"
57
+ 19/12/2024,2596,2586,2625,2586,"0,90K","-1,7%"
58
+ 18/12/2024,2641,2651,2654,2587,"0,88K","-0,33%"
59
+ 17/12/2024,2650,2657,2663,2634,"0,63K","-0,28%"
60
+ 16/12/2024,2657,2655,2670,2648,"1,41K","-0,2%"
61
+ 13/12/2024,2662,2690,2702,2651,"1,07K","-1,21%"
62
+ 12/12/2024,2695,2738,2744,2683,"1,69K","-1,69%"
63
+ 11/12/2024,2742,2709,2744,2700,"3,82K","1,33%"
64
+ 10/12/2024,2706,2670,2709,2670,"1,41K","1,21%"
65
+ 9/12/2024,2673,2655,2687,2638,"0,96K","0,99%"
66
+ 6/12/2024,2647,2642,2655,2630,"0,80K","0,42%"
67
+ 5/12/2024,2636,2662,2667,2635,"1,67K","-1,06%"
68
+ 4/12/2024,2664,2651,2670,2644,"0,85K","0,32%"
69
+ 3/12/2024,2656,2652,2665,2645,"0,61K","0,36%"
70
+ 2/12/2024,2647,2664,2664,2634,"0,97K","-0,84%"
71
+ 29/11/2024,2669,2650,2678,2632,"1,35K","0,63%"
72
+ 27/11/2024,2652,2646,2671,2641,"2,27K","1,18%"
73
+ 26/11/2024,2621,2626,2643,2605,"177,86K","0,11%"
74
+ 25/11/2024,2619,2717,2723,2617,"305,34K","-3,45%"
75
+ 22/11/2024,2712,2672,2719,2670,"220,55K","1,39%"
76
+ 21/11/2024,2675,2654,2677,2652,"186,30K","0,87%"
77
+ 20/11/2024,2652,2636,2659,2622,"182,01K","0,79%"
78
+ 19/11/2024,2631,2616,2643,2614,"202,24K","0,63%"
79
+ 18/11/2024,2615,2572,2620,2569,"195,29K","1,73%"
80
+ 15/11/2024,2570,2570,2581,2559,"179,89K","-0,11%"
81
+ 14/11/2024,2573,2578,2586,2542,"266,16K","-0,53%"
82
+ 13/11/2024,2587,2605,2625,2578,"262,75K","-0,76%"
83
+ 12/11/2024,2606,2626,2633,2596,"282,77K","-0,44%"
84
+ 11/11/2024,2618,2692,2693,2617,"281,92K","-2,86%"
85
+ 8/11/2024,2695,2714,2718,2687,"233,11K","-0,41%"
86
+ 7/11/2024,2706,2668,2718,2650,"292,92K","1,1%"
87
+ 6/11/2024,2676,2753,2759,2661,"361,31K","-2,67%"
88
+ 5/11/2024,2750,2746,2760,2733,"151,43K","0,13%"
89
+ 4/11/2024,2746,2744,2758,2739,"145,25K","-0,11%"
90
+ 1/11/2024,2749,2754,2772,2743,"180,66K",0.00%
91
+ 31/10/2024,2749,2799,2801,2742,"242,57K","-1,84%"
92
+ 30/10/2024,2801,2787,2802,2782,"191,55K","1,16%"
93
+ 29/10/2024,2769,2742,2773,2742,"0,85K","0,92%"
94
+ 28/10/2024,2744,2739,2746,2726,"0,57K","0,05%"
95
+ 25/10/2024,2742,2735,2747,2717,"0,26K","0,21%"
96
+ 24/10/2024,2737,2717,2743,2717,"0,34K","0,71%"
97
+ 23/10/2024,2717,2749,2759,2710,"0,65K","-1,1%"
98
+ 22/10/2024,2747,2723,2750,2722,"0,43K","0,76%"
99
+ 21/10/2024,2727,2724,2743,2717,"0,41K","0,32%"
100
+ 18/10/2024,2718,2696,2726,2696,"0,22K","0,83%"
101
+ 17/10/2024,2696,2677,2701,2677,"0,27K","0,6%"
102
+ 16/10/2024,2679,2667,2690,2666,"0,38K","0,46%"
103
+ 15/10/2024,2667,2655,2674,2643,"0,24K","0,5%"
104
+ 14/10/2024,2654,2660,2671,2648,"0,39K","-0,4%"
105
+ 11/10/2024,2664,2634,2667,2634,"0,31K","1,41%"
106
+ 10/10/2024,2627,2615,2637,2609,"0,88K","0,51%"
107
+ 9/10/2024,2614,2629,2631,2612,"0,77K","-0,36%"
108
+ 8/10/2024,2624,2650,2660,2613,"1,05K","-1,15%"
109
+ 7/10/2024,2654,2659,2667,2646,"0,39K","-0,08%"
110
+ 4/10/2024,2656,2663,2678,2642,"0,85K","-0,43%"
111
+ 3/10/2024,2667,2668,2671,2647,"0,65K","0,35%"
112
+ 2/10/2024,2658,2671,2672,2653,"0,34K","-0,76%"
113
+ 1/10/2024,2679,2644,2682,2644,"0,46K","1,16%"
114
+ 30/09/2024,2648,2668,2675,2637,"0,55K","-0,32%"
115
+ 27/09/2024,2657,2682,2684,2655,"0,64K","-0,52%"
116
+ 26/09/2024,2670,2657,2684,2653,"17,22K","0,36%"
117
+ 25/09/2024,2661,2659,2671,2650,"21,76K","0,29%"
118
+ 24/09/2024,2653,2629,2665,2624,"13,09K","0,93%"
119
+ 23/09/2024,2629,2623,2636,2615,"8,70K","0,24%"
120
+ 20/09/2024,2622,2588,2627,2585,"9,30K","1,22%"
121
+ 19/09/2024,2591,2562,2597,2552,"8,60K","0,62%"
122
+ 18/09/2024,2575,2573,2604,2549,"10,66K","0,23%"
123
+ 17/09/2024,2569,2586,2590,2564,"6,95K","-0,63%"
124
+ 16/09/2024,2585,2585,2593,2579,"4,57K","-0,06%"
125
+ 13/09/2024,2587,2565,2591,2562,"10,05K","1,16%"
126
+ 12/9/2024,2557,2518,2565,2516,"9,29K","1,51%"
127
+ 11/9/2024,2519,2522,2534,2506,"4,91K","-0,02%"
128
+ 10/9/2024,2520,2512,2524,2506,"5,90K","0,41%"
129
+ 9/9/2024,2509,2503,2513,2491,"4,64K","0,31%"
130
+ 6/9/2024,2502,2524,2536,2491,"6,27K","-0,72%"
131
+ 5/9/2024,2520,2502,2531,2501,"6,72K","0,68%"
132
+ 4/9/2024,2503,2500,2508,2480,"5,94K","0,12%"
133
+ 3/9/2024,2500,2509,2516,2482,"10,28K","-0,19%"
134
+ 30/08/2024,2505,2531,2536,2504,"6,48K","-1,27%"
135
+ 29/08/2024,2537,2517,2539,2514,"10,79K","1,36%"
136
+ 28/08/2024,2503,2525,2526,2493,"2,35K","-0,6%"
137
+ 27/08/2024,2518,2518,2525,2504,"0,65K","-0,1%"
138
+ 26/08/2024,2520,2513,2528,2509,"0,66K","0,36%"
139
+ 23/08/2024,2511,2486,2519,2486,"0,75K","1,17%"
140
+ 22/08/2024,2482,2516,2516,2473,"0,74K","-1,22%"
141
+ 21/08/2024,2513,2517,2522,2495,"0,60K","-0,13%"
142
+ 20/08/2024,2516,2508,2535,2502,"0,66K","0,37%"
143
+ 19/08/2024,2507,2513,2514,2489,"0,78K","0,13%"
144
+ 16/08/2024,2504,2460,2514,2455,"0,59K","1,83%"
145
+ 15/08/2024,2459,2452,2472,2437,"0,53K","0,51%"
146
+ 14/08/2024,2446,2471,2485,2443,"0,56K","-1,12%"
147
+ 13/08/2024,2474,2477,2483,2464,"0,37K","0,16%"
148
+ 12/8/2024,2470,2436,2478,2430,"0,73K","1,23%"
149
+ 9/8/2024,2440,2432,2442,2424,"0,70K","0,39%"
150
+ 8/8/2024,2430,2390,2434,2388,"0,58K","1,26%"
151
+ 7/8/2024,2400,2399,2414,2387,"0,46K","0,05%"
152
+ 6/8/2024,2399,2421,2431,2390,"0,50K","-0,53%"
153
+ 5/8/2024,2412,2459,2466,2374,"1,13K",-1.00%
154
+ 2/8/2024,2436,2456,2488,2421,"2,46K","-0,4%"
155
+ 1/8/2024,2446,2459,2471,2439,"1,15K","0,3%"
156
+ 31/07/2024,2439,2421,2461,2415,"1,32K","0,86%"
157
+ 30/07/2024,2418,2393,2422,2389,"3,57K","1,67%"
158
+ 29/07/2024,2378,2387,2402,2367,"126,41K","-0,13%"
159
+ 26/07/2024,2381,2364,2390,2355,"154,52K","1,17%"
160
+ 25/07/2024,2354,2398,2401,2352,"294,90K","-2,57%"
161
+ 24/07/2024,2416,2411,2433,2397,"245,88K","0,35%"
162
+ 23/07/2024,2407,2398,2414,2389,"171,19K","0,53%"
163
+ 22/07/2024,2395,2404,2414,2385,"197,56K","-0,18%"
164
+ 19/07/2024,2399,2448,2448,2396,"254,41K","-2,33%"
165
+ 18/07/2024,2456,2463,2479,2443,"192,77K","-0,14%"
166
+ 17/07/2024,2460,2473,2488,2456,"259,54K","-0,32%"
167
+ 16/07/2024,2468,2427,2475,2425,"246,09K","1,6%"
168
+ 15/07/2024,2429,2419,2445,2406,"193,54K","0,34%"
169
+ 12/7/2024,2421,2421,2423,2396,"220,93K","-0,05%"
170
+ 11/7/2024,2422,2377,2430,2377,"303,52K","1,77%"
171
+ 10/7/2024,2380,2371,2393,2370,"163,90K","0,5%"
172
+ 9/7/2024,2368,2367,2378,2356,"252,49K","0,19%"
173
+ 8/7/2024,2364,2396,2399,2358,"240,78K","-1,43%"
174
+ 5/7/2024,2398,2366,2402,2356,"293,25K","1,4%"
175
+ 4/7/2024,2365,2367,2371,2359,,"-0,2%"
176
+ 3/7/2024,2369,2339,2375,2336,"193,64K","1,54%"
177
+ 2/7/2024,2333,2342,2346,2327,"153,71K","-0,24%"
178
+ 1/7/2024,2339,2336,2349,2328,"142,60K","-0,03%"
179
+ 28/06/2024,2340,2339,2351,2330,"135,38K","0,13%"
180
+ 27/06/2024,2337,2309,2342,2307,"140,23K","1,55%"
181
+ 26/06/2024,2301,2319,2321,2293,"0,99K","-0,75%"
182
+ 25/06/2024,2318,2334,2336,2315,"1,26K","-0,6%"
183
+ 24/06/2024,2332,2322,2335,2318,"0,60K","0,57%"
184
+ 21/06/2024,2319,2362,2370,2318,"0,60K","-1,61%"
185
+ 20/06/2024,2357,2331,2367,2327,"0,83K","0,6%"
186
+ 19/06/2024,2343,2343,2350,2339,,"0,35%"
187
+ 18/06/2024,2335,2323,2335,2309,"0,39K","0,77%"
188
+ 17/06/2024,2317,2336,2336,2312,"0,45K","-0,86%"
189
+ 14/06/2024,2337,2306,2339,2306,"0,42K","1,35%"
190
+ 13/06/2024,2306,2328,2330,2299,"0,65K","-1,57%"
191
+ 12/6/2024,2343,2322,2345,2316,"0,60K","1,21%"
192
+ 11/6/2024,2315,2316,2325,2303,"0,79K","-0,02%"
193
+ 10/6/2024,2315,2300,2319,2293,"0,75K","0,08%"
194
+ 7/6/2024,2313,2384,2394,2293,"1,30K","-2,76%"
195
+ 6/6/2024,2379,2364,2385,2361,"0,88K","0,65%"
196
+ 5/6/2024,2364,2336,2365,2335,"0,59K","1,19%"
197
+ 4/6/2024,2336,2360,2361,2325,"1,40K","-0,92%"
198
+ 3/6/2024,2358,2335,2364,2324,"0,77K","1,01%"
199
+ 31/05/2024,2334,2352,2369,2330,"1,21K","-0,88%"
200
+ 30/05/2024,2355,2358,2361,2332,"2,72K","0,58%"
201
+ 29/05/2024,2341,2363,2364,2334,"119,32K","-0,65%"
202
+ 28/05/2024,2357,2338,2366,2334,"316,22K",0.00%
203
+ 27/05/2024,2357,2338,2366,2334,"105,47K","0,94%"
204
+ 24/05/2024,2335,2330,2349,2326,"178,34K","-0,12%"
205
+ 23/05/2024,2337,2383,2386,2328,"273,66K","-2,33%"
206
+ 22/05/2024,2393,2425,2431,2378,"253,85K","-1,36%"
207
+ 21/05/2024,2426,2432,2438,2409,"229,42K","-0,52%"
208
+ 20/05/2024,2439,2422,2454,2411,"281,43K","0,87%"
209
+ 17/05/2024,2417,2381,2427,2378,"218,55K","1,34%"
210
+ 16/05/2024,2386,2392,2403,2375,"191,03K","-0,39%"
211
+ 15/05/2024,2395,2363,2396,2357,"249,84K","1,48%"
212
+ 14/05/2024,2360,2342,2365,2341,"192,08K","0,72%"
213
+ 13/05/2024,2343,2369,2371,2338,"243,08K","-1,35%"
214
+ 10/5/2024,2375,2354,2385,2352,"275,24K","1,48%"
215
+ 9/5/2024,2340,2317,2354,2313,"249,09K","0,78%"
216
+ 8/5/2024,2322,2322,2330,2311,"214,69K","-0,08%"
217
+ 7/5/2024,2324,2335,2339,2318,"204,62K","-0,3%"
218
+ 6/5/2024,2331,2313,2342,2301,"191,90K","0,98%"
219
+ 3/5/2024,2309,2314,2331,2285,"231,40K","-0,04%"
220
+ 2/5/2024,2310,2330,2336,2294,"193,66K","-0,06%"
221
+ 1/5/2024,2311,2298,2340,2292,"227,38K","0,35%"
222
+ 30/04/2024,2303,2347,2348,2296,"229,06K","-2,32%"
223
+ 29/04/2024,2358,2348,2359,2331,"187,31K","0,97%"
224
+ 26/04/2024,2335,2333,2351,2327,"0,72K","0,2%"
225
+ 25/04/2024,2330,2318,2345,2306,"0,99K","0,18%"
226
+ 24/04/2024,2326,2324,2338,2314,"0,78K","-0,17%"
227
+ 23/04/2024,2330,2332,2336,2294,"0,79K","-0,2%"
228
+ 22/04/2024,2335,2392,2392,2327,"1,03K","-2,78%"
229
+ 19/04/2024,2401,2381,2418,2375,"1,61K","0,65%"
230
+ 18/04/2024,2386,2366,2396,2366,"2,55K","0,4%"
231
+ 17/04/2024,2376,2388,2400,2360,"0,58K","-0,81%"
232
+ 16/04/2024,2396,2387,2402,2367,"1,27K","1,04%"
233
+ 15/04/2024,2371,2357,2392,2330,"1,67K","0,38%"
234
+ 12/4/2024,2362,2378,2437,2338,"2,20K","0,05%"
235
+ 11/4/2024,2361,2341,2383,2332,"0,98K","1,04%"
236
+ 10/4/2024,2337,2359,2366,2326,"1,62K","-0,6%"
237
+ 9/4/2024,2351,2344,2373,2344,"1,56K","0,5%"
238
+ 8/4/2024,2339,2332,2357,2311,"1,31K","0,23%"
239
+ 5/4/2024,2334,2299,2338,2277,"0,91K","1,6%"
240
+ 4/4/2024,2297,2309,2312,2288,"0,99K","-0,28%"
241
+ 3/4/2024,2303,2290,2310,2275,"1,23K","1,45%"
242
+ 2/4/2024,2270,2260,2290,2256,"1,70K","1,09%"
243
+ 1/4/2024,2246,2244,2275,2239,"1,10K","0,84%"
244
+ 28/03/2024,2227,2204,2244,2196,"1,62K","1,17%"
245
+ 27/03/2024,2201,2189,2207,2183,"1,21K","1,11%"
246
+ 26/03/2024,2177,2173,2201,2168,"202,37K","0,04%"
247
+ 25/03/2024,2176,2167,2183,2164,"211,61K","0,76%"
248
+ 22/03/2024,2160,2183,2188,2158,"205,81K","-1,13%"
249
+ 21/03/2024,2185,2190,2225,2168,"391,75K","1,1%"
250
+ 20/03/2024,2161,2161,2192,2152,"233,57K","0,06%"
251
+ 19/03/2024,2160,2164,2166,2150,"178,16K","-0,21%"
252
+ 18/03/2024,2164,2160,2167,2149,"211,86K","0,13%"
253
+ 15/03/2024,2162,2166,2177,2159,"187,85K","-0,28%"
254
+ 14/03/2024,2168,2180,2181,2157,"207,23K","-0,61%"
255
+ 13/03/2024,2181,2164,2186,2161,"232,27K","0,68%"
256
+ 12/3/2024,2166,2189,2191,2156,"316,25K","-1,03%"
257
+ 11/3/2024,2189,2188,2196,2181,"242,42K","0,14%"
258
+ 8/3/2024,2186,2167,2203,2161,"389,68K","0,94%"
259
+ 7/3/2024,2165,2157,2172,2152,"267,80K","0,32%"
260
+ 6/3/2024,2158,2136,2161,2132,"319,76K","0,76%"
261
+ 5/3/2024,2142,2123,2151,2119,"283,15K","0,73%"
262
+ 4/3/2024,2126,2092,2128,2088,"328,25K","1,46%"
263
+ 1/3/2024,2096,2053,2097,2047,"330,59K",2.00%
264
+ 29/02/2024,2055,2044,2059,2036,"227,07K","0,59%"
265
+ 28/02/2024,2043,2040,2047,2033,"137,08K","0,41%"
266
+ 27/02/2024,2034,2031,2038,2029,"0,96K","0,26%"
267
+ 26/02/2024,2029,2034,2036,2025,"1,14K","-0,51%"
268
+ 23/02/2024,2039,2024,2042,2016,"0,71K","0,92%"
269
+ 22/02/2024,2021,2027,2035,2020,"1,66K","-0,18%"
270
+ 21/02/2024,2025,2025,2033,2022,"1,09K","-0,27%"
271
+ 20/02/2024,2030,2018,2032,2016,"1,11K","-0,48%"
272
+ 19/02/2024,2040,2028,2043,2024,"202,43K","1,26%"
273
+ 16/02/2024,2014,2007,2017,1997,"0,80K","0,45%"
274
+ 15/02/2024,2005,1995,2010,1993,"1,07K","0,53%"
275
+ 14/02/2024,1995,1995,1999,1987,"1,63K","-0,15%"
276
+ 13/02/2024,1998,2024,2036,1993,"1,47K","-1,27%"
277
+ 12/2/2024,2023,2031,2031,2016,"1,22K","-0,27%"
278
+ 9/2/2024,2029,2039,2042,2025,"0,53K","-0,46%"
279
+ 8/2/2024,2038,2041,2044,2025,"0,67K","-0,18%"
280
+ 7/2/2024,2042,2042,2051,2037,"0,51K","0,01%"
281
+ 6/2/2024,2042,2032,2045,2029,"0,63K","0,42%"
282
+ 5/2/2024,2033,2048,2048,2021,"1,00K","-0,54%"
283
+ 2/2/2024,2044,2062,2065,2035,"3,02K","-0,84%"
284
+ 1/2/2024,2061,2048,2073,2037,"1,35K","0,18%"
285
+ 31/01/2024,2057,2045,2064,2039,"1,43K","0,8%"
286
+ 30/01/2024,2041,2042,2057,2038,"1,12K","0,78%"
287
+ 29/01/2024,2025,2024,2037,2019,"150,71K","0,4%"
288
+ 26/01/2024,2017,2021,2028,2016,"119,59K","-0,02%"
289
+ 25/01/2024,2018,2015,2026,2004,"196,67K","0,09%"
290
+ 24/01/2024,2016,2031,2038,2012,"234,46K","-0,48%"
291
+ 23/01/2024,2026,2023,2039,2021,"156,70K","0,18%"
292
+ 22/01/2024,2022,2032,2034,2017,"152,76K","-0,35%"
293
+ 19/01/2024,2029,2027,2042,2022,"172,81K","0,38%"
294
+ 18/01/2024,2022,2009,2026,2008,"171,93K","0,75%"
295
+ 17/01/2024,2007,2032,2036,2005,"254,29K","-1,17%"
296
+ 16/01/2024,2030,2053,2063,2028,"285,25K",0.00%
297
+ 15/01/2024,2030,2053,2063,2028,"285,25K","-1,04%"
298
+ 12/1/2024,2052,2033,2067,2033,"272,35K","1,6%"
299
+ 11/1/2024,2019,2029,2056,2017,"301,34K","-0,42%"
300
+ 10/1/2024,2028,2036,2046,2026,"205,01K","-0,26%"
301
+ 9/1/2024,2033,2035,2049,2032,"218,75K","-0,02%"
302
+ 8/1/2024,2034,2053,2053,2023,"220,99K","-0,8%"
303
+ 5/1/2024,2050,2051,2071,2031,"214,68K","-0,01%"
304
+ 4/1/2024,2050,2049,2058,2043,"130,26K","0,35%"
305
+ 3/1/2024,2043,2068,2074,2038,"221,68K","-1,48%"
306
+ 2/1/2024,2073,2073,2088,2064,"157,56K","0,08%"
307
+ 29/12/2023,2072,2076,2084,2068,"105,72K","-0,56%"
308
+ 28/12/2023,2084,2090,2098,2075,"129,54K",0.00%
309
+ 27/12/2023,2083,2068,2085,2063,"0,59K","1,12%"
310
+ 26/12/2023,2060,2056,2070,2056,"0,29K","0,04%"
311
+ 22/12/2023,2060,2052,2072,2049,"0,44K","0,87%"
312
+ 21/12/2023,2042,2035,2048,2034,"0,54K","0,18%"
313
+ 20/12/2023,2038,2044,2046,2032,"0,26K","-0,22%"
314
+ 19/12/2023,2043,2031,2050,2025,"0,47K","0,58%"
315
+ 18/12/2023,2031,2024,2036,2021,"0,25K","0,24%"
316
+ 15/12/2023,2026,2038,2050,2020,"0,63K","-0,45%"
317
+ 14/12/2023,2035,2032,2053,2031,"0,56K","2,37%"
318
+ 13/12/2023,1988,1986,2033,1979,"2,22K","0,21%"
319
+ 12/12/2023,1984,1989,2003,1984,"0,57K","-0,02%"
320
+ 11/12/2023,1984,2011,2013,1982,"0,55K","-1,03%"
321
+ 8/12/2023,2005,2035,2040,2001,"1,37K","-1,57%"
322
+ 7/12/2023,2037,2035,2047,2027,"0,53K","-0,07%"
323
+ 6/12/2023,2038,2028,2043,2027,"0,68K","0,57%"
324
+ 5/12/2023,2027,2039,2050,2020,"1,42K","-0,3%"
325
+ 4/12/2023,2033,2083,2141,2030,"2,70K","-2,28%"
326
+ 1/12/2023,2080,2049,2086,2043,"2,01K","1,6%"
327
+ 30/11/2023,2048,2056,2058,2043,"1,15K","-0,48%"
328
+ 29/11/2023,2058,2053,2062,2048,"1,91K","0,86%"
329
+ 28/11/2023,2040,2014,2044,2012,"174,67K","1,37%"
330
+ 27/11/2023,2012,2003,2019,2001,"251,25K","0,47%"
331
+ 24/11/2023,2003,1991,2005,1991,"214,88K",0.00%
332
+ 23/11/2023,2003,1991,2005,1991,"214,88K","0,51%"
333
+ 22/11/2023,1993,2000,2008,1989,"199,37K","-0,44%"
334
+ 21/11/2023,2002,1980,2010,1980,"230,02K","1,08%"
335
+ 20/11/2023,1980,1981,1988,1967,"177,89K","-0,22%"
336
+ 17/11/2023,1985,1984,1996,1981,"133,12K","-0,13%"
337
+ 16/11/2023,1987,1963,1991,1959,"186,81K","1,17%"
338
+ 15/11/2023,1964,1967,1979,1959,"142,92K","-0,11%"
339
+ 14/11/2023,1967,1950,1975,1939,"180,74K","0,84%"
340
+ 13/11/2023,1950,1943,1954,1936,"183,70K","0,65%"
341
+ 10/11/2023,1938,1964,1966,1937,"229,64K","-1,63%"
342
+ 9/11/2023,1970,1956,1972,1948,"214,08K","0,61%"
343
+ 8/11/2023,1958,1975,1978,1953,"189,36K","-0,8%"
344
+ 7/11/2023,1974,1985,1985,1963,"218,95K","-0,76%"
345
+ 6/11/2023,1989,1999,2000,1984,"146,28K","-0,53%"
346
+ 3/11/2023,1999,1994,2012,1989,"222,19K","0,29%"
347
+ 2/11/2023,1994,1992,1999,1986,"158,65K","0,3%"
348
+ 1/11/2023,1988,1993,2006,1978,"197,63K","-0,34%"
349
+ 31/10/2023,1994,2006,2018,1987,"214,78K","-0,56%"
350
+ 30/10/2023,2006,2014,2017,2000,"181,34K","0,83%"
351
+ 27/10/2023,1989,1988,2010,1979,"0,37K","0,06%"
352
+ 26/10/2023,1988,1982,1993,1974,"0,20K","0,12%"
353
+ 25/10/2023,1986,1972,1989,1971,"0,16K","0,44%"
354
+ 24/10/2023,1977,1975,1980,1958,"1,23K","-0,07%"
355
+ 23/10/2023,1978,1978,1983,1964,"0,45K","-0,34%"
356
+ 20/10/2023,1985,1977,1999,1976,"1,03K","0,7%"
357
+ 19/10/2023,1971,1950,1981,1948,"1,37K","0,63%"
358
+ 18/10/2023,1959,1927,1966,1927,"0,33K","1,68%"
359
+ 17/10/2023,1926,1923,1934,1918,"0,28K","0,07%"
360
+ 16/10/2023,1925,1932,1932,1912,"0,47K","-0,36%"
361
+ 13/10/2023,1932,1875,1935,1875,"0,89K","3,09%"
362
+ 12/10/2023,1874,1880,1889,1872,"0,40K","-0,22%"
363
+ 11/10/2023,1878,1865,1882,1864,"0,48K","0,63%"
364
+ 10/10/2023,1867,1866,1870,1858,"0,36K","0,59%"
365
+ 9/10/2023,1856,1851,1868,1849,"0,82K","1,03%"
366
+ 6/10/2023,1837,1826,1840,1815,"0,65K","0,74%"
367
+ 5/10/2023,1823,1828,1834,1818,"0,43K","-0,16%"
368
+ 4/10/2023,1826,1829,1836,1823,"0,51K","-0,35%"
369
+ 3/10/2023,1833,1836,1840,1823,"0,43K","-0,3%"
370
+ 2/10/2023,1838,1854,1855,1834,"0,82K","-1,01%"
371
+ 29/09/2023,1857,1873,1887,1853,"0,92K","-0,67%"
372
+ 28/09/2023,1870,1885,1887,1866,"0,90K","-0,15%"
373
+ 27/09/2023,1872,1900,1903,1872,"12,25K","-1,54%"
374
+ 26/09/2023,1902,1917,1917,1899,"12,74K","-0,87%"
375
+ 25/09/2023,1918,1926,1928,1916,"7,99K","-0,47%"
376
+ 22/09/2023,1927,1922,1931,1922,"3,30K","0,31%"
377
+ 21/09/2023,1921,1933,1934,1915,"5,62K","-1,41%"
378
+ 20/09/2023,1949,1935,1950,1930,"6,22K","0,69%"
379
+ 19/09/2023,1935,1937,1940,1933,"2,81K","0,01%"
380
+ 18/09/2023,1935,1928,1937,1926,"3,19K","0,38%"
381
+ 15/09/2023,1928,1914,1934,1913,"4,75K","0,71%"
382
+ 14/09/2023,1914,1913,1916,1904,"5,99K",0.00%
383
+ 13/09/2023,1914,1918,1920,1910,"4,87K","-0,15%"
384
+ 12/9/2023,1917,1927,1929,1912,"4,77K","-0,62%"
385
+ 11/9/2023,1929,1926,1937,1922,"3,09K","0,24%"
386
+ 8/9/2023,1925,1926,1936,1923,"6,62K","0,03%"
387
+ 7/9/2023,1924,1923,1929,1922,"4,06K","-0,09%"
388
+ 6/9/2023,1926,1933,1936,1922,"5,41K","-0,44%"
389
+ 5/9/2023,1934,1948,1954,1932,"7,21K","-0,94%"
390
+ 4/9/2023,1953,1967,1973,1951,"192,79K","0,22%"
391
+ 1/9/2023,1948,1948,1961,1942,"6,26K","0,07%"
392
+ 31/08/2023,1947,1952,1956,1947,"4,06K","-0,36%"
393
+ 30/08/2023,1954,1948,1958,1944,"6,33K","0,91%"
394
+ 29/08/2023,1936,1920,1937,1914,"1,67K","0,93%"
395
+ 28/08/2023,1919,1915,1926,1912,"0,39K","0,35%"
396
+ 25/08/2023,1912,1916,1921,1903,"0,79K","-0,38%"
397
+ 24/08/2023,1919,1919,1923,1912,"1,29K","-0,07%"
398
+ 23/08/2023,1921,1899,1922,1899,"0,92K","1,15%"
399
+ 22/08/2023,1899,1896,1906,1891,"1,02K","0,15%"
400
+ 21/08/2023,1896,1891,1900,1886,"1,27K","0,37%"
401
+ 18/08/2023,1889,1891,1898,1888,"0,61K","0,08%"
402
+ 17/08/2023,1887,1895,1905,1887,"0,71K","-0,68%"
403
+ 16/08/2023,1900,1905,1910,1894,"0,39K","-0,35%"
404
+ 15/08/2023,1907,1911,1915,1900,"0,37K","-0,45%"
405
+ 14/08/2023,1916,1915,1919,1906,"0,61K","-0,13%"
406
+ 11/8/2023,1918,1916,1925,1914,"0,46K","-0,11%"
407
+ 10/8/2023,1920,1921,1934,1916,"0,77K","-0,09%"
408
+ 9/8/2023,1922,1930,1936,1920,"0,72K","-0,46%"
409
+ 8/8/2023,1931,1942,1943,1928,"0,98K","-0,51%"
410
+ 7/8/2023,1941,1949,1952,1937,"0,51K","-0,32%"
411
+ 4/8/2023,1947,1941,1955,1928,"1,39K","0,36%"
412
+ 3/8/2023,1940,1943,1946,1937,"0,51K","-0,31%"
413
+ 2/8/2023,1946,1957,1963,1941,"0,74K","-0,19%"
414
+ 1/8/2023,1950,1974,1974,1950,"1,55K","-1,51%"
415
+ 31/07/2023,1980,1968,1981,1958,"0,62K","0,48%"
416
+ 28/07/2023,1970,1956,1972,1954,"3,24K","1,25%"
417
+ 27/07/2023,1946,1973,1983,1942,"194,25K","-1,24%"
418
+ 26/07/2023,1970,1966,1980,1963,"208,11K","0,33%"
419
+ 25/07/2023,1964,1957,1967,1952,"188,85K","0,08%"
420
+ 24/07/2023,1962,1964,1970,1955,"197,21K","-0,22%"
421
+ 21/07/2023,1967,1972,1976,1959,"156,54K","-0,22%"
422
+ 20/07/2023,1971,1980,1990,1968,"189,93K","-0,5%"
423
+ 19/07/2023,1981,1983,1985,1973,"159,41K",0.00%
424
+ 18/07/2023,1981,1958,1988,1958,"264,09K","1,25%"
425
+ 17/07/2023,1956,1959,1964,1949,"165,83K","-0,41%"
426
+ 14/07/2023,1964,1965,1968,1955,"209,31K","0,03%"
427
+ 13/07/2023,1964,1963,1969,1957,"241,22K","0,11%"
428
+ 12/7/2023,1962,1938,1965,1938,"270,87K","1,27%"
429
+ 11/7/2023,1937,1931,1945,1930,"189,37K","0,32%"
430
+ 10/7/2023,1931,1931,1934,1918,"208,09K","-0,08%"
431
+ 7/7/2023,1933,1917,1941,1915,"214,27K","0,89%"
432
+ 6/7/2023,1915,1922,1934,1909,"231,51K","-0,61%"
433
+ 5/7/2023,1927,1929,1943,1922,"245,93K",0.00%
434
+ 4/7/2023,1927,1929,1943,1922,"245,93K","-0,12%"
435
+ 3/7/2023,1930,1928,1940,1918,"152,96K","0,01%"
436
+ 30/06/2023,1929,1916,1931,1908,"180,69K","0,6%"
437
+ 29/06/2023,1918,1917,1921,1901,"205,25K","0,24%"
438
+ 28/06/2023,1913,1915,1917,1904,"0,63K","-0,09%"
439
+ 27/06/2023,1915,1927,1930,1912,"0,23K","-0,52%"
440
+ 26/06/2023,1925,1926,1935,1923,"0,77K","0,21%"
441
+ 23/06/2023,1921,1915,1939,1911,"0,75K","0,31%"
442
+ 22/06/2023,1915,1936,1936,1914,"0,37K","-1,09%"
443
+ 21/06/2023,1936,1940,1941,1922,"0,81K","-0,14%"
444
+ 20/06/2023,1939,1962,1962,1932,"0,74K","-0,45%"
445
+ 19/06/2023,1948,1971,1972,1941,"250,14K","-0,74%"
446
+ 16/06/2023,1962,1961,1971,1957,"0,62K","0,02%"
447
+ 15/06/2023,1962,1949,1964,1930,"0,82K","0,09%"
448
+ 14/06/2023,1960,1949,1965,1944,"1,07K","0,52%"
449
+ 13/06/2023,1950,1963,1976,1945,"0,76K","-0,56%"
450
+ 12/6/2023,1961,1966,1972,1955,"0,44K","-0,38%"
451
+ 9/6/2023,1968,1971,1978,1962,"0,43K","-0,08%"
452
+ 8/6/2023,1970,1949,1976,1948,"1,14K","1,03%"
453
+ 7/6/2023,1950,1971,1978,1947,"0,82K","-1,17%"
454
+ 6/6/2023,1973,1969,1974,1962,"0,34K","0,37%"
455
+ 5/6/2023,1966,1954,1971,1945,"1,70K","0,26%"
456
+ 2/6/2023,1961,1985,1991,1955,"1,02K","-1,3%"
457
+ 1/6/2023,1987,1972,1991,1961,"1,05K","0,68%"
458
+ 31/05/2023,1973,1968,1984,1963,"1,13K","0,25%"
459
+ 30/05/2023,1968,1952,1972,1941,"3,55K","-0,46%"
460
+ 29/05/2023,1977,1961,1982,1950,"264,37K","1,69%"
461
+ 26/05/2023,1944,1942,1957,1936,"166,04K","0,03%"
462
+ 25/05/2023,1944,1960,1965,1939,"253,88K","-1,06%"
463
+ 24/05/2023,1965,1977,1988,1958,"229,89K","-0,5%"
464
+ 23/05/2023,1975,1974,1980,1956,"214,36K","-0,14%"
465
+ 22/05/2023,1977,1979,1985,1971,"165,77K","-0,22%"
466
+ 19/05/2023,1982,1961,1987,1956,"234,60K","1,11%"
467
+ 18/05/2023,1960,1986,1989,1954,"227,73K","-1,26%"
468
+ 17/05/2023,1985,1993,1997,1978,"206,55K","-0,41%"
469
+ 16/05/2023,1993,2021,2023,1989,"229,94K","-1,47%"
470
+ 15/05/2023,2023,2013,2028,2011,"163,25K","0,14%"
471
+ 12/5/2023,2020,2021,2028,2006,"220,50K","-0,03%"
472
+ 11/5/2023,2021,2037,2048,2017,"296,98K","-0,81%"
473
+ 10/5/2023,2037,2042,2056,2028,"260,81K","-0,28%"
474
+ 9/5/2023,2043,2028,2045,2026,"199,70K","0,48%"
475
+ 8/5/2023,2033,2025,2037,2022,"182,21K","0,41%"
476
+ 5/5/2023,2025,2058,2061,2007,"283,30K","-1,5%"
477
+ 4/5/2023,2056,2055,2085,2039,"311,00K","0,92%"
478
+ 3/5/2023,2037,2026,2050,2016,"229,67K","0,68%"
479
+ 2/5/2023,2023,1991,2029,1987,"245,64K","1,56%"
480
+ 1/5/2023,1992,2000,2015,1986,"173,02K","-0,35%"
481
+ 28/04/2023,1999,1997,2004,1984,"172,45K","0,01%"
482
+ 27/04/2023,1999,2000,2013,1982,"203,90K","0,61%"
483
+ 26/04/2023,1987,2000,2010,1987,"0,62K","-0,41%"
484
+ 25/04/2023,1995,1995,2005,1979,"0,85K","0,23%"
485
+ 24/04/2023,1991,1983,1991,1975,"0,54K","0,47%"
486
+ 21/04/2023,1981,2005,2007,1973,"0,62K","-1,42%"
487
+ 20/04/2023,2010,1997,2015,1994,"0,42K","0,59%"
488
+ 19/04/2023,1998,2009,2010,1972,"0,92K","-0,61%"
489
+ 18/04/2023,2010,1997,2013,1995,"0,22K","0,64%"
490
+ 17/04/2023,1998,2005,2018,1985,"0,74K","-0,44%"
491
+ 14/04/2023,2007,2045,2052,1997,"1,48K","-1,92%"
492
+ 13/04/2023,2046,2020,2053,2020,"0,93K","1,49%"
493
+ 12/4/2023,2016,2010,2034,2007,"0,83K","0,28%"
494
+ 11/4/2023,2010,1997,2013,1996,"0,46K","0,76%"
495
+ 10/4/2023,1995,2004,2011,1988,"1,00K","-1,12%"
496
+ 6/4/2023,2017,2028,2029,2008,"1,20K","-0,46%"
497
+ 5/4/2023,2027,2030,2040,2019,"1,17K","-0,13%"
498
+ 4/4/2023,2029,1993,2034,1986,"1,09K","1,91%"
499
+ 3/4/2023,1991,1983,1999,1957,"0,76K","0,72%"
500
+ 31/03/2023,1977,1989,1996,1975,"0,75K","-0,58%"
501
+ 30/03/2023,1989,1973,1993,1963,"1,19K","1,1%"
502
+ 29/03/2023,1967,1975,1976,1960,"88,56K","-0,33%"
503
+ 28/03/2023,1974,1958,1977,1950,"183,58K","1,01%"
504
+ 27/03/2023,1954,1983,1984,1945,"206,63K","-1,51%"
505
+ 24/03/2023,1984,1996,2007,1978,"285,44K","-0,61%"
506
+ 23/03/2023,1996,1974,2006,1967,"262,25K","2,37%"
507
+ 22/03/2023,1950,1944,1982,1937,"245,03K","0,44%"
508
+ 21/03/2023,1941,1983,1989,1939,"248,93K","-2,1%"
509
+ 20/03/2023,1983,1990,2015,1970,"338,02K","0,47%"
510
+ 17/03/2023,1974,1926,1994,1922,"351,09K","2,63%"
511
+ 16/03/2023,1923,1923,1938,1912,"248,08K","-0,43%"
512
+ 15/03/2023,1931,1908,1943,1890,"385,45K","1,07%"
513
+ 14/03/2023,1911,1919,1919,1900,"261,28K","-0,29%"
514
+ 13/03/2023,1917,1877,1920,1876,"452,33K","2,64%"
515
+ 10/3/2023,1867,1835,1874,1830,"345,81K","1,78%"
516
+ 9/3/2023,1835,1818,1839,1815,"228,47K","0,88%"
517
+ 8/3/2023,1819,1818,1829,1813,"208,29K","-0,08%"
518
+ 7/3/2023,1820,1853,1857,1817,"248,23K","-1,87%"
519
+ 6/3/2023,1855,1861,1864,1851,"136,22K",0.00%
520
+ 3/3/2023,1855,1842,1864,1842,"158,96K","0,77%"
521
+ 2/3/2023,1841,1844,1845,1836,"139,76K","-0,27%"
522
+ 1/3/2023,1845,1834,1853,1830,"182,58K","0,47%"
523
+ 28/02/2023,1837,1824,1839,1811,"184,51K","0,65%"
524
+ 27/02/2023,1825,1818,1827,1812,"130,43K","0,87%"
525
+ 24/02/2023,1809,1825,1827,1809,"0,40K","-0,53%"
526
+ 23/02/2023,1819,1824,1833,1818,"0,65K","-0,79%"
527
+ 22/02/2023,1833,1837,1846,1825,"0,57K","-0,05%"
528
+ 21/02/2023,1834,1842,1848,1831,"0,91K","-0,45%"
529
+ 20/02/2023,1843,1851,1856,1839,"210,17K","0,03%"
530
+ 17/02/2023,1842,1836,1845,1820,"0,73K","-0,08%"
531
+ 16/02/2023,1843,1839,1846,1828,"0,65K","0,35%"
532
+ 15/02/2023,1837,1856,1862,1832,"0,78K","-1,08%"
533
+ 14/02/2023,1857,1856,1871,1845,"0,72K","0,1%"
534
+ 13/02/2023,1855,1867,1869,1853,"0,83K","-0,58%"
535
+ 10/2/2023,1866,1865,1873,1855,"0,77K","-0,22%"
536
+ 9/2/2023,1870,1879,1894,1862,"0,85K","-0,65%"
537
+ 8/2/2023,1882,1877,1890,1874,"1,03K","0,3%"
538
+ 7/2/2023,1877,1872,1889,1869,"1,45K","0,28%"
539
+ 6/2/2023,1871,1867,1885,1866,"1,59K","0,16%"
540
+ 3/2/2023,1868,1918,1924,1866,"2,60K","-2,8%"
541
+ 2/2/2023,1922,1959,1966,1917,"1,87K","-0,63%"
542
+ 1/2/2023,1934,1935,1962,1928,"2,19K","-0,12%"
543
+ 31/01/2023,1937,1930,1938,1907,"1,81K","0,33%"
544
+ 30/01/2023,1930,1936,1941,1927,"2,80K","0,04%"
545
+ 27/01/2023,1929,1929,1935,1917,"150,90K","-0,03%"
546
+ 26/01/2023,1930,1948,1950,1918,"223,26K","-0,65%"
547
+ 25/01/2023,1943,1939,1950,1921,"190,30K","0,37%"
548
+ 24/01/2023,1935,1932,1944,1918,"201,71K","0,35%"
549
+ 23/01/2023,1929,1928,1937,1913,"190,09K","0,02%"
550
+ 20/01/2023,1928,1934,1939,1922,"165,27K","0,22%"
551
+ 19/01/2023,1924,1907,1937,1902,"214,25K","0,89%"
552
+ 18/01/2023,1907,1911,1930,1899,"218,97K","-0,15%"
553
+ 17/01/2023,1910,1924,1932,1906,"268,37K",0.00%
554
+ 16/01/2023,1910,1924,1932,1906,"268,37K","-0,61%"
555
+ 13/01/2023,1922,1899,1925,1895,"247,88K","1,21%"
556
+ 12/1/2023,1899,1880,1907,1872,"265,17K","1,06%"
557
+ 11/1/2023,1879,1881,1891,1871,"222,25K","0,13%"
558
+ 10/1/2023,1877,1876,1885,1872,"170,51K","-0,07%"
559
+ 9/1/2023,1878,1873,1886,1869,"204,55K","0,43%"
560
+ 6/1/2023,1870,1836,1875,1835,"215,37K","1,58%"
561
+ 5/1/2023,1841,1861,1864,1830,"188,60K","-0,99%"
562
+ 4/1/2023,1859,1845,1871,1842,"198,35K","0,7%"
563
+ 3/1/2023,1846,1832,1857,1831,"212,27K","1,09%"
564
+ 30/12/2022,1826,1822,1832,1820,"107,50K","0,01%"
565
+ 29/12/2022,1826,1812,1827,1811,"105,99K","0,95%"
566
+ 28/12/2022,1809,1812,1812,1801,"0,43K","-0,41%"
567
+ 27/12/2022,1816,1800,1834,1800,"0,22K","1,05%"
568
+ 23/12/2022,1797,1794,1806,1793,"0,24K","0,5%"
569
+ 22/12/2022,1789,1818,1822,1787,"0,41K","-1,65%"
570
+ 21/12/2022,1819,1822,1825,1816,"0,16K","-0,01%"
571
+ 20/12/2022,1819,1796,1824,1790,"0,51K","1,54%"
572
+ 19/12/2022,1791,1795,1801,1789,"0,21K","-0,14%"
573
+ 16/12/2022,1794,1780,1797,1779,"0,43K","0,72%"
574
+ 15/12/2022,1781,1812,1812,1775,"0,69K","-1,71%"
575
+ 14/12/2022,1812,1815,1817,1800,"0,28K","-0,37%"
576
+ 13/12/2022,1818,1786,1829,1785,"0,57K","1,87%"
577
+ 12/12/2022,1785,1802,1802,1782,"0,31K","-1,03%"
578
+ 9/12/2022,1804,1794,1811,1794,"0,50K","0,52%"
579
+ 8/12/2022,1794,1793,1799,1787,"0,56K","0,18%"
580
+ 7/12/2022,1791,1775,1796,1774,"0,84K","0,87%"
581
+ 6/12/2022,1776,1775,1786,1773,"0,55K","0,07%"
582
+ 5/12/2022,1774,1804,1815,1772,"1,34K","-1,57%"
583
+ 2/12/2022,1803,1810,1812,1786,"1,17K","-0,31%"
584
+ 1/12/2022,1808,1778,1811,1778,"1,27K","3,14%"
585
+ 30/11/2022,1753,1756,1777,1752,"1,56K","-0,18%"
586
+ 29/11/2022,1756,1748,1765,1746,"1,59K","0,92%"
587
+ 28/11/2022,1740,1755,1764,1738,"132,77K","-0,78%"
588
+ 25/11/2022,1754,1751,1761,1746,"134,30K",0.00%
589
+ 24/11/2022,1754,1751,1761,1746,"134,30K","0,48%"
590
+ 23/11/2022,1746,1741,1755,1719,"167,77K","0,33%"
591
+ 22/11/2022,1740,1740,1751,1738,"153,09K","0,02%"
592
+ 21/11/2022,1740,1752,1755,1734,"166,08K","-0,84%"
593
+ 18/11/2022,1754,1763,1770,1749,"137,33K","-0,49%"
594
+ 17/11/2022,1763,1777,1778,1757,"169,10K","-0,72%"
595
+ 16/11/2022,1776,1782,1788,1773,"200,76K","-0,06%"
596
+ 15/11/2022,1777,1774,1792,1770,"283,02K","-0,01%"
597
+ 14/11/2022,1777,1769,1778,1756,"191,35K","0,42%"
598
+ 11/11/2022,1769,1758,1776,1750,"227,04K","0,9%"
599
+ 10/11/2022,1754,1710,1761,1706,"305,72K","2,33%"
600
+ 9/11/2022,1714,1715,1726,1705,"239,65K","-0,13%"
601
+ 8/11/2022,1716,1678,1720,1667,"297,62K","2,11%"
602
+ 7/11/2022,1681,1679,1686,1670,"187,59K","0,23%"
603
+ 4/11/2022,1677,1632,1686,1631,"293,52K","2,8%"
604
+ 3/11/2022,1631,1639,1643,1618,"254,70K","-1,16%"
605
+ 2/11/2022,1650,1651,1673,1637,"220,93K","0,02%"
606
+ 1/11/2022,1650,1636,1660,1634,"197,98K","0,55%"
607
+ 31/10/2022,1641,1647,1649,1635,"128,41K","-0,25%"
608
+ 28/10/2022,1645,1667,1671,1641,"196,36K","-0,93%"
609
+ 27/10/2022,1660,1664,1669,1654,"2,30K","-0,25%"
610
+ 26/10/2022,1664,1652,1674,1652,"0,32K","0,67%"
611
+ 25/10/2022,1653,1650,1661,1637,"0,59K","0,25%"
612
+ 24/10/2022,1649,1662,1666,1644,"0,15K","-0,14%"
613
+ 21/10/2022,1652,1626,1657,1618,"0,64K","1,21%"
614
+ 20/10/2022,1632,1629,1644,1621,"0,50K","0,17%"
615
+ 19/10/2022,1629,1652,1654,1628,"0,30K","-1,31%"
616
+ 18/10/2022,1651,1651,1660,1647,"0,72K","-0,49%"
617
+ 17/10/2022,1659,1646,1668,1645,"0,60K","0,92%"
618
+ 14/10/2022,1644,1666,1672,1641,"0,64K","-1,68%"
619
+ 13/10/2022,1672,1675,1680,1645,"0,32K","-0,03%"
620
+ 12/10/2022,1672,1668,1680,1663,"0,23K","-0,51%"
621
+ 11/10/2022,1681,1670,1686,1665,"0,74K","0,65%"
622
+ 10/10/2022,1670,1699,1701,1668,"0,49K","-1,99%"
623
+ 7/10/2022,1704,1714,1715,1694,"0,26K","-0,67%"
624
+ 6/10/2022,1716,1719,1729,1710,"0,23K","-0,01%"
625
+ 5/10/2022,1716,1729,1730,1704,"1,04K","-0,57%"
626
+ 4/10/2022,1726,1703,1732,1700,"0,81K","1,67%"
627
+ 3/10/2022,1697,1668,1704,1664,"0,64K","1,8%"
628
+ 30/09/2022,1667,1665,1679,1663,"0,39K","0,22%"
629
+ 29/09/2022,1664,1662,1668,1645,"2,39K","0,2%"
630
+ 28/09/2022,1660,1627,1662,1613,"18,31K","2,08%"
631
+ 27/09/2022,1627,1622,1640,1621,"15,91K","0,18%"
632
+ 26/09/2022,1624,1643,1646,1618,"14,96K","-1,32%"
633
+ 23/09/2022,1645,1670,1675,1636,"17,01K","-1,56%"
634
+ 22/09/2022,1671,1670,1684,1654,"6,42K","0,34%"
635
+ 21/09/2022,1666,1665,1687,1652,"10,10K","0,29%"
636
+ 20/09/2022,1661,1675,1678,1658,"7,07K","-0,4%"
637
+ 19/09/2022,1668,1673,1678,1657,"6,29K","-0,31%"
638
+ 16/09/2022,1673,1663,1679,1652,"10,86K","0,36%"
639
+ 15/09/2022,1667,1697,1697,1659,"12,32K","-1,85%"
640
+ 14/09/2022,1698,1703,1707,1693,"7,08K","-0,52%"
641
+ 13/09/2022,1707,1726,1733,1697,"11,55K","-1,37%"
642
+ 12/9/2022,1731,1719,1736,1713,"5,71K","0,7%"
643
+ 9/9/2022,1719,1710,1731,1710,"8,17K","0,48%"
644
+ 8/9/2022,1711,1720,1729,1704,"5,09K","-0,44%"
645
+ 7/9/2022,1718,1703,1721,1693,"7,51K","0,87%"
646
+ 6/9/2022,1703,1715,1727,1701,"7,57K","-0,55%"
647
+ 5/9/2022,1713,1724,1737,1711,"206,27K","-0,01%"
648
+ 2/9/2022,1713,1699,1720,1697,"8,55K","0,79%"
649
+ 1/9/2022,1700,1713,1713,1690,"11,25K","-1,01%"
650
+ 31/08/2022,1717,1726,1729,1712,"8,91K","-0,58%"
651
+ 30/08/2022,1727,1741,1743,1724,"6,95K","-0,56%"
652
+ 29/08/2022,1737,1736,1741,1718,"0,95K","0,01%"
653
+ 26/08/2022,1737,1758,1758,1733,"1,05K","-1,21%"
654
+ 25/08/2022,1758,1751,1765,1750,"0,73K","0,57%"
655
+ 24/08/2022,1748,1746,1755,1742,"0,97K","0,03%"
656
+ 23/08/2022,1747,1735,1753,1730,"1,57K","0,74%"
657
+ 22/08/2022,1734,1747,1747,1726,"0,68K","-0,8%"
658
+ 19/08/2022,1748,1758,1758,1745,"0,62K","-0,46%"
659
+ 18/08/2022,1757,1763,1771,1755,"0,71K","-0,31%"
660
+ 17/08/2022,1762,1776,1782,1759,"0,62K","-0,73%"
661
+ 16/08/2022,1775,1780,1783,1771,"0,43K","-0,47%"
662
+ 15/08/2022,1783,1804,1804,1773,"0,66K","-0,97%"
663
+ 12/8/2022,1801,1789,1804,1786,"0,57K","0,49%"
664
+ 11/8/2022,1792,1792,1799,1784,"1,92K","-0,36%"
665
+ 10/8/2022,1799,1796,1809,1788,"1,60K","0,09%"
666
+ 9/8/2022,1797,1790,1801,1784,"0,93K","0,4%"
667
+ 8/8/2022,1790,1776,1790,1772,"1,69K","0,78%"
668
+ 5/8/2022,1776,1791,1795,1765,"2,04K","-0,86%"
669
+ 4/8/2022,1791,1766,1796,1764,"1,65K","1,72%"
670
+ 3/8/2022,1761,1763,1774,1755,"1,82K","-0,78%"
671
+ 2/8/2022,1775,1774,1791,1762,"2,47K","0,12%"
672
+ 1/8/2022,1773,1768,1777,1760,"1,07K","0,33%"
673
+ 29/07/2022,1767,1759,1770,1754,"0,86K","0,71%"
674
+ 28/07/2022,1754,1737,1759,1737,"1,47K","2,05%"
675
+ 27/07/2022,1719,1715,1740,1709,"144,87K","0,08%"
676
+ 26/07/2022,1718,1718,1726,1712,"147,37K","-0,08%"
677
+ 25/07/2022,1719,1726,1735,1713,"160,72K","-0,48%"
678
+ 22/07/2022,1727,1717,1738,1712,"200,62K","0,82%"
679
+ 21/07/2022,1713,1694,1720,1678,"248,88K","0,78%"
680
+ 20/07/2022,1700,1710,1713,1690,"174,47K","-0,61%"
681
+ 19/07/2022,1711,1707,1717,1703,"131,77K","0,03%"
682
+ 18/07/2022,1710,1706,1722,1704,"157,54K","0,39%"
683
+ 15/07/2022,1704,1708,1714,1697,"176,80K","-0,13%"
684
+ 14/07/2022,1706,1734,1735,1695,"266,35K","-1,71%"
685
+ 13/07/2022,1736,1724,1744,1705,"300,55K","0,62%"
686
+ 12/7/2022,1725,1731,1742,1722,"255,17K","-0,4%"
687
+ 11/7/2022,1732,1742,1743,1729,"171,90K","-0,61%"
688
+ 8/7/2022,1742,1739,1752,1726,"189,18K","0,15%"
689
+ 7/7/2022,1740,1737,1748,1735,"151,26K","0,18%"
690
+ 6/7/2022,1737,1764,1772,1731,"258,82K","-1,55%"
691
+ 5/7/2022,1764,1814,1815,1763,"310,37K",0.00%
692
+ 4/7/2022,1764,1814,1815,1763,"310,37K","-2,09%"
693
+ 1/7/2022,1802,1808,1814,1783,"249,49K","-0,32%"
694
+ 30/06/2022,1807,1819,1827,1803,"208,90K","-0,56%"
695
+ 29/06/2022,1818,1821,1835,1811,"155,54K",0.00%
696
+ 28/06/2022,1818,1820,1825,1816,"0,39K","-0,19%"
697
+ 27/06/2022,1821,1833,1837,1818,"0,58K","-0,33%"
698
+ 24/06/2022,1827,1823,1829,1815,"0,57K","0,04%"
699
+ 23/06/2022,1826,1835,1843,1822,"0,23K","-0,48%"
700
+ 22/06/2022,1835,1829,1845,1822,"0,53K","-0,01%"
701
+ 21/06/2022,1835,1835,1842,1831,"0,42K","-0,18%"
702
+ 20/06/2022,1839,1841,1848,1831,"176,30K","0,13%"
703
+ 17/06/2022,1837,1852,1852,1832,"0,48K","-0,55%"
704
+ 16/06/2022,1847,1832,1856,1816,"0,98K","1,67%"
705
+ 15/06/2022,1816,1807,1840,1806,"1,03K","0,32%"
706
+ 14/06/2022,1811,1811,1830,1803,"1,37K","-1,02%"
707
+ 13/06/2022,1829,1876,1880,1819,"0,73K","-2,32%"
708
+ 10/6/2022,1873,1848,1877,1824,"1,15K","1,22%"
709
+ 9/6/2022,1850,1853,1854,1839,"0,34K","-0,19%"
710
+ 8/6/2022,1854,1852,1859,1844,"0,17K","0,24%"
711
+ 7/6/2022,1849,1841,1855,1836,"0,62K","0,46%"
712
+ 6/6/2022,1841,1850,1858,1840,"0,31K","-0,35%"
713
+ 3/6/2022,1847,1870,1875,1847,"0,57K","-1,13%"
714
+ 2/6/2022,1868,1847,1871,1844,"0,70K","1,22%"
715
+ 1/6/2022,1846,1837,1850,1828,"1,23K","0,03%"
716
+ 31/05/2022,1845,1853,1864,1835,"1,81K","-0,17%"
717
+ 30/05/2022,1848,1857,1868,1838,"201,80K","-0,3%"
718
+ 27/05/2022,1854,1852,1863,1850,"1,10K","0,35%"
719
+ 26/05/2022,1848,1852,1853,1836,"123,36K","0,07%"
720
+ 25/05/2022,1846,1865,1867,1839,"182,82K","-1,02%"
721
+ 24/05/2022,1865,1852,1869,1848,"174,76K","0,95%"
722
+ 23/05/2022,1848,1844,1864,1843,"163,27K","0,31%"
723
+ 20/05/2022,1842,1840,1848,1831,"143,05K","0,05%"
724
+ 19/05/2022,1841,1815,1848,1808,"175,24K","1,39%"
725
+ 18/05/2022,1816,1813,1823,1805,"150,35K","-0,16%"
726
+ 17/05/2022,1819,1824,1835,1811,"137,29K","0,27%"
727
+ 16/05/2022,1814,1809,1826,1785,"159,49K","0,32%"
728
+ 13/05/2022,1808,1821,1828,1797,"179,48K","-0,9%"
729
+ 12/5/2022,1825,1852,1859,1820,"255,61K","-1,57%"
730
+ 11/5/2022,1854,1837,1858,1831,"243,56K","0,69%"
731
+ 10/5/2022,1841,1854,1865,1835,"260,81K","-0,95%"
732
+ 9/5/2022,1859,1884,1886,1851,"218,82K","-1,29%"
733
+ 6/5/2022,1883,1878,1894,1865,"194,28K","0,38%"
734
+ 5/5/2022,1876,1884,1911,1872,"218,39K","0,37%"
735
+ 4/5/2022,1869,1868,1892,1861,"161,48K","-0,1%"
736
+ 3/5/2022,1871,1864,1878,1850,"167,43K","0,38%"
737
+ 2/5/2022,1864,1896,1900,1853,"193,83K","-2,52%"
738
+ 29/04/2022,1912,1896,1921,1894,"177,14K","1,08%"
739
+ 28/04/2022,1891,1887,1898,1871,"170,91K","0,29%"
740
+ 27/04/2022,1886,1903,1903,1879,"1,79K","-0,83%"
741
+ 26/04/2022,1902,1899,1909,1894,"0,46K","0,43%"
742
+ 25/04/2022,1893,1932,1932,1890,"1,62K","-1,98%"
743
+ 22/04/2022,1932,1950,1954,1927,"0,67K","-0,71%"
744
+ 21/04/2022,1945,1955,1955,1936,"0,47K","-0,38%"
745
+ 20/04/2022,1953,1950,1958,1939,"0,63K","-0,17%"
746
+ 19/04/2022,1956,1979,1981,1944,"0,78K","-1,38%"
747
+ 18/04/2022,1984,1975,2000,1973,"0,51K","0,58%"
748
+ 14/04/2022,1972,1978,1981,1961,"0,57K","-0,49%"
749
+ 13/04/2022,1982,1969,1982,1964,"0,53K","0,44%"
750
+ 12/4/2022,1973,1954,1979,1951,"1,00K","1,44%"
751
+ 11/4/2022,1945,1950,1971,1941,"0,40K","0,14%"
752
+ 8/4/2022,1942,1931,1949,1929,"0,96K","0,4%"
753
+ 7/4/2022,1935,1924,1937,1920,"1,19K","0,78%"
754
+ 6/4/2022,1920,1925,1932,1914,"1,21K","-0,23%"
755
+ 5/4/2022,1924,1934,1945,1918,"1,19K","-0,34%"
756
+ 4/4/2022,1931,1925,1938,1918,"2,01K","0,5%"
757
+ 1/4/2022,1921,1939,1941,1919,"1,09K","-1,55%"
758
+ 31/03/2022,1951,1935,1952,1922,"1,46K","0,77%"
759
+ 30/03/2022,1936,1922,1940,1918,"2,38K","1,25%"
760
+ 29/03/2022,1912,1922,1929,1888,"128,05K","-1,42%"
761
+ 28/03/2022,1940,1959,1960,1916,"181,37K","-0,74%"
762
+ 25/03/2022,1954,1958,1965,1943,"147,90K","-0,41%"
763
+ 24/03/2022,1962,1944,1967,1937,"181,20K","1,29%"
764
+ 23/03/2022,1937,1921,1949,1916,"153,31K","0,82%"
765
+ 22/03/2022,1922,1936,1940,1910,"153,28K","-0,41%"
766
+ 21/03/2022,1930,1922,1942,1917,"146,41K","0,01%"
767
+ 18/03/2022,1929,1944,1946,1918,"150,88K","-0,72%"
768
+ 17/03/2022,1943,1928,1951,1924,"149,83K","1,78%"
769
+ 16/03/2022,1909,1920,1930,1895,"195,46K","-1,06%"
770
+ 15/03/2022,1930,1954,1957,1908,"220,37K","-1,59%"
771
+ 14/03/2022,1961,1989,1995,1952,"162,20K","-1,22%"
772
+ 11/3/2022,1985,2000,2004,1961,"262,09K","-0,77%"
773
+ 10/3/2022,2000,1993,2015,1975,"303,27K","0,61%"
774
+ 9/3/2022,1988,2060,2069,1981,"360,35K","-2,7%"
775
+ 8/3/2022,2043,2001,2079,1986,"447,65K","2,37%"
776
+ 7/3/2022,1996,1979,2008,1964,"372,19K","1,49%"
777
+ 4/3/2022,1967,1939,1975,1932,"241,53K","1,59%"
778
+ 3/3/2022,1936,1932,1945,1923,"180,21K","0,71%"
779
+ 2/3/2022,1922,1945,1951,1916,"227,98K","-1,11%"
780
+ 1/3/2022,1944,1908,1953,1903,"224,00K","2,27%"
781
+ 28/02/2022,1901,1921,1935,1892,"249,27K","0,69%"
782
+ 25/02/2022,1888,1907,1925,1884,"229,78K","-1,96%"
783
+ 24/02/2022,1925,1911,1975,1880,"2,71K","0,84%"
784
+ 23/02/2022,1909,1900,1912,1890,"1,98K","0,16%"
785
+ 22/02/2022,1906,1903,1917,1889,"2,19K","-0,05%"
786
+ 21/02/2022,1907,1904,1918,1890,"334,59K","0,45%"
787
+ 18/02/2022,1899,1901,1904,1888,"0,64K","-0,12%"
788
+ 17/02/2022,1901,1871,1902,1870,"0,96K","1,63%"
789
+ 16/02/2022,1871,1854,1873,1852,"0,43K","0,83%"
790
+ 15/02/2022,1855,1872,1880,1845,"0,88K","-0,71%"
791
+ 14/02/2022,1868,1861,1875,1851,"0,86K","1,48%"
792
+ 11/2/2022,1841,1827,1866,1822,"0,95K","0,26%"
793
+ 10/2/2022,1836,1833,1842,1821,"0,79K","0,04%"
794
+ 9/2/2022,1836,1826,1836,1825,"0,88K","0,48%"
795
+ 8/2/2022,1827,1821,1829,1816,"0,93K","0,33%"
796
+ 7/2/2022,1821,1808,1823,1808,"1,41K","0,77%"
797
+ 4/2/2022,1807,1805,1815,1792,"1,62K","0,2%"
798
+ 3/2/2022,1803,1807,1808,1788,"1,18K","-0,35%"
799
+ 2/2/2022,1810,1800,1811,1795,"1,22K","0,48%"
800
+ 1/2/2022,1801,1798,1809,1796,"2,54K","0,27%"
801
+ 31/01/2022,1796,1792,1800,1786,"1,37K","0,57%"
802
+ 28/01/2022,1786,1798,1799,1780,"1,30K","-0,41%"
803
+ 27/01/2022,1793,1819,1821,1791,"196,04K",-2.00%
804
+ 26/01/2022,1830,1848,1850,1814,"270,03K","-1,23%"
805
+ 25/01/2022,1853,1844,1854,1834,"197,80K","0,59%"
806
+ 24/01/2022,1842,1835,1845,1829,"244,33K","0,54%"
807
+ 21/01/2022,1832,1841,1844,1828,"225,25K","-0,59%"
808
+ 20/01/2022,1843,1840,1849,1836,"233,86K","-0,03%"
809
+ 19/01/2022,1843,1813,1844,1809,"318,49K","1,7%"
810
+ 18/01/2022,1812,1819,1823,1805,"362,94K",0.00%
811
+ 17/01/2022,1812,1819,1823,1805,"362,94K","-0,23%"
812
+ 14/01/2022,1817,1822,1829,1814,"174,94K","-0,27%"
813
+ 13/01/2022,1821,1826,1828,1812,"215,52K","-0,32%"
814
+ 12/1/2022,1827,1821,1828,1814,"192,98K","0,48%"
815
+ 11/1/2022,1819,1801,1823,1800,"184,15K","1,1%"
816
+ 10/1/2022,1799,1796,1802,1789,"173,04K","0,08%"
817
+ 7/1/2022,1797,1791,1798,1781,"238,93K","0,46%"
818
+ 6/1/2022,1789,1811,1812,1785,"238,64K","-1,97%"
819
+ 5/1/2022,1825,1815,1831,1808,"173,34K","0,58%"
820
+ 4/1/2022,1815,1801,1817,1798,"167,71K","0,81%"
821
+ 3/1/2022,1800,1830,1833,1798,"168,31K","-1,56%"
model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8318d2d632e7c1afb53ed2eea2d61dcab5160a6c476b5904969b65bf31c5bfeb
3
+ size 977
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Flask==2.3.3
2
+ pandas==2.0.3
3
+ numpy==1.24.3
4
+ scikit-learn==1.3.0
5
+ matplotlib==3.7.2
6
+ seaborn==0.12.2
7
+ Werkzeug==2.3.7
scaler.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:979f0bc38f3c9923f8e433575b8d161ff21fa37d8a00932c41f847263dadfba1
3
+ size 561
templates/data_analysis.html ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Data Analysis - Gold Price Prediction</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
8
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
+ color: white;
13
+ }
14
+ .gold-accent {
15
+ color: #FFD700;
16
+ }
17
+ .stat-card {
18
+ border: none;
19
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
20
+ transition: transform 0.3s ease;
21
+ }
22
+ .stat-card:hover {
23
+ transform: translateY(-5px);
24
+ }
25
+ .navbar-brand {
26
+ font-weight: bold;
27
+ }
28
+ </style>
29
+ </head>
30
+ <body>
31
+ <!-- Navigation -->
32
+ <nav class="navbar navbar-expand-lg navbar-dark gradient-bg">
33
+ <div class="container">
34
+ <a class="navbar-brand" href="/">
35
+ <i class="fas fa-coins gold-accent"></i>
36
+ Gold Price Predictor
37
+ </a>
38
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
39
+ <span class="navbar-toggler-icon"></span>
40
+ </button>
41
+ <div class="collapse navbar-collapse" id="navbarNav">
42
+ <ul class="navbar-nav ms-auto">
43
+ <li class="nav-item">
44
+ <a class="nav-link" href="/">Home</a>
45
+ </li>
46
+ <li class="nav-item">
47
+ <a class="nav-link active" href="/data-analysis">Data Analysis</a>
48
+ </li>
49
+ </ul>
50
+ </div>
51
+ </div>
52
+ </nav>
53
+
54
+ <!-- Main Content -->
55
+ <div class="container my-5">
56
+ <div class="row mb-4">
57
+ <div class="col-12">
58
+ <h1 class="text-center mb-5">
59
+ <i class="fas fa-chart-bar text-warning"></i>
60
+ Analisis Data Historis Harga Emas
61
+ </h1>
62
+ </div>
63
+ </div>
64
+
65
+ <!-- Statistics Cards -->
66
+ <div class="row mb-5">
67
+ <div class="col-md-3 mb-3">
68
+ <div class="card stat-card text-center">
69
+ <div class="card-body">
70
+ <i class="fas fa-database fa-2x text-primary mb-3"></i>
71
+ <h5 class="card-title">Total Records</h5>
72
+ <h3 class="text-primary">{{ stats.total_records }}</h3>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <div class="col-md-3 mb-3">
77
+ <div class="card stat-card text-center">
78
+ <div class="card-body">
79
+ <i class="fas fa-calendar-alt fa-2x text-info mb-3"></i>
80
+ <h5 class="card-title">Date Range</h5>
81
+ <p class="text-info small">{{ stats.date_range }}</p>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ <div class="col-md-3 mb-3">
86
+ <div class="card stat-card text-center">
87
+ <div class="card-body">
88
+ <i class="fas fa-chart-line fa-2x text-success mb-3"></i>
89
+ <h5 class="card-title">Avg Close Price</h5>
90
+ <h4 class="text-success">IDR {{ "{:,.0f}".format(stats.avg_close) }}</h4>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <div class="col-md-3 mb-3">
95
+ <div class="card stat-card text-center">
96
+ <div class="card-body">
97
+ <i class="fas fa-chart-area fa-2x text-warning mb-3"></i>
98
+ <h5 class="card-title">Avg Open Price</h5>
99
+ <h4 class="text-warning">IDR {{ "{:,.0f}".format(stats.avg_open) }}</h4>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+
105
+ <!-- Additional Statistics -->
106
+ <div class="row mb-5">
107
+ <div class="col-md-4 mb-3">
108
+ <div class="card stat-card">
109
+ <div class="card-body text-center">
110
+ <i class="fas fa-arrow-down fa-2x text-danger mb-3"></i>
111
+ <h5 class="card-title">Minimum Close Price</h5>
112
+ <h4 class="text-danger">IDR {{ "{:,.0f}".format(stats.min_close) }}</h4>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ <div class="col-md-4 mb-3">
117
+ <div class="card stat-card">
118
+ <div class="card-body text-center">
119
+ <i class="fas fa-arrow-up fa-2x text-success mb-3"></i>
120
+ <h5 class="card-title">Maximum Close Price</h5>
121
+ <h4 class="text-success">IDR {{ "{:,.0f}".format(stats.max_close) }}</h4>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ <div class="col-md-4 mb-3">
126
+ <div class="card stat-card">
127
+ <div class="card-body text-center">
128
+ <i class="fas fa-clock fa-2x text-primary mb-3"></i>
129
+ <h5 class="card-title">Current Price</h5>
130
+ <h5 class="text-primary">Close: IDR {{ "{:,.0f}".format(stats.current_close) }}</h5>
131
+ <h5 class="text-info">Open: IDR {{ "{:,.0f}".format(stats.current_open) }}</h5>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ </div>
136
+
137
+ <!-- Historical Chart -->
138
+ <div class="card stat-card mb-5">
139
+ <div class="card-header">
140
+ <h5 class="mb-0">
141
+ <i class="fas fa-chart-line"></i>
142
+ Grafik Harga Historis Emas
143
+ </h5>
144
+ </div>
145
+ <div class="card-body text-center">
146
+ <img src="data:image/png;base64,{{ chart }}" class="img-fluid" alt="Historical Price Chart">
147
+ </div>
148
+ </div>
149
+
150
+ <!-- Information Cards -->
151
+ <div class="row">
152
+ <div class="col-md-6 mb-4">
153
+ <div class="card stat-card">
154
+ <div class="card-header">
155
+ <h5 class="mb-0">
156
+ <i class="fas fa-info-circle"></i>
157
+ Tentang Data
158
+ </h5>
159
+ </div>
160
+ <div class="card-body">
161
+ <ul class="list-unstyled">
162
+ <li><i class="fas fa-check text-success"></i> Data diperoleh dari API Pluang</li>
163
+ <li><i class="fas fa-check text-success"></i> Mencakup data historis emas selama 5 tahun</li>
164
+ <li><i class="fas fa-check text-success"></i> Data telah dibersihkan dan dinormalisasi</li>
165
+ <li><i class="fas fa-check text-success"></i> Tidak ada data yang hilang (null values)</li>
166
+ </ul>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ <div class="col-md-6 mb-4">
171
+ <div class="card stat-card">
172
+ <div class="card-header">
173
+ <h5 class="mb-0">
174
+ <i class="fas fa-cog"></i>
175
+ Tentang Model
176
+ </h5>
177
+ </div>
178
+ <div class="card-body">
179
+ <ul class="list-unstyled">
180
+ <li><i class="fas fa-check text-success"></i> Algoritma: Linear Regression</li>
181
+ <li><i class="fas fa-check text-success"></i> Sliding Window: 7 hari</li>
182
+ <li><i class="fas fa-check text-success"></i> Normalisasi: MinMaxScaler</li>
183
+ <li><i class="fas fa-check text-success"></i> Train/Test Split: 80/20</li>
184
+ </ul>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+ <!-- Back to Prediction -->
191
+ <div class="text-center mt-5">
192
+ <a href="/" class="btn btn-warning btn-lg">
193
+ <i class="fas fa-arrow-left"></i>
194
+ Kembali ke Prediksi
195
+ </a>
196
+ </div>
197
+ </div>
198
+
199
+ <!-- Footer -->
200
+ <footer class="gradient-bg text-center py-4 mt-5">
201
+ <div class="container">
202
+ <p class="mb-0">&copy; 2025 Kelompok 4 - Sistem Prediksi Harga Emas. Powered by Machine Learning.</p>
203
+ </div>
204
+ </footer>
205
+
206
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
207
+ </body>
208
+ </html>
templates/error.html ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Error - Gold Price Prediction</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
8
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
+ color: white;
13
+ }
14
+ .gold-accent {
15
+ color: #FFD700;
16
+ }
17
+ .navbar-brand {
18
+ font-weight: bold;
19
+ }
20
+ </style>
21
+ </head>
22
+ <body>
23
+ <!-- Navigation -->
24
+ <nav class="navbar navbar-expand-lg navbar-dark gradient-bg">
25
+ <div class="container">
26
+ <a class="navbar-brand" href="/">
27
+ <i class="fas fa-coins gold-accent"></i>
28
+ Gold Price Predictor
29
+ </a>
30
+ </div>
31
+ </nav>
32
+
33
+ <!-- Error Content -->
34
+ <div class="container my-5">
35
+ <div class="row justify-content-center">
36
+ <div class="col-md-8 text-center">
37
+ <div class="alert alert-danger" role="alert">
38
+ <i class="fas fa-exclamation-triangle fa-3x mb-3"></i>
39
+ <h4 class="alert-heading">Oops! Terjadi Kesalahan</h4>
40
+ <p>{{ error }}</p>
41
+ <hr>
42
+ <p class="mb-0">
43
+ <a href="/" class="btn btn-primary">
44
+ <i class="fas fa-home"></i> Kembali ke Beranda
45
+ </a>
46
+ </p>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+
52
+ <!-- Footer -->
53
+ <footer class="gradient-bg text-center py-4 mt-5 fixed-bottom">
54
+ <div class="container">
55
+ <p class="mb-0">&copy; 2025 Kelompok 4 - Sistem Prediksi Harga Emas.</p>
56
+ </div>
57
+ </footer>
58
+
59
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
60
+ </body>
61
+ </html>
templates/index.html ADDED
@@ -0,0 +1,258 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Gold Price Prediction System</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
8
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
12
+ color: white;
13
+ }
14
+ .gold-accent {
15
+ color: #FFD700;
16
+ }
17
+ .prediction-card {
18
+ border: none;
19
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
20
+ transition: transform 0.3s ease;
21
+ }
22
+ .prediction-card:hover {
23
+ transform: translateY(-5px);
24
+ }
25
+ .price-up {
26
+ color: #28a745;
27
+ }
28
+ .price-down {
29
+ color: #dc3545;
30
+ }
31
+ .loading-spinner {
32
+ display: none;
33
+ }
34
+ .navbar-brand {
35
+ font-weight: bold;
36
+ }
37
+ .hero-section {
38
+ background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 300"><defs><linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:%23FFD700;stop-opacity:0.3" /><stop offset="100%" style="stop-color:%23FFA500;stop-opacity:0.1" /></linearGradient></defs><rect width="1000" height="300" fill="url(%23grad)"/></svg>');
39
+ color: white;
40
+ padding: 100px 0;
41
+ }
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <!-- Navigation -->
46
+ <nav class="navbar navbar-expand-lg navbar-dark gradient-bg">
47
+ <div class="container">
48
+ <a class="navbar-brand" href="#">
49
+ <i class="fas fa-coins gold-accent"></i>
50
+ Gold Price Predictor
51
+ </a>
52
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
53
+ <span class="navbar-toggler-icon"></span>
54
+ </button>
55
+ <div class="collapse navbar-collapse" id="navbarNav">
56
+ <ul class="navbar-nav ms-auto">
57
+ <li class="nav-item">
58
+ <a class="nav-link active" href="/">Home</a>
59
+ </li>
60
+ <li class="nav-item">
61
+ <a class="nav-link" href="/data-analysis">Data Analysis</a>
62
+ </li>
63
+ </ul>
64
+ </div>
65
+ </div>
66
+ </nav>
67
+
68
+ <!-- Hero Section -->
69
+ <section class="hero-section text-center">
70
+ <div class="container">
71
+ <h1 class="display-4 mb-4">
72
+ <i class="fas fa-chart-line gold-accent"></i>
73
+ Prediksi Harga Emas 7 Hari Kedepan
74
+ </h1>
75
+ <p class="lead mb-5">Sistem prediksi harga emas menggunakan Machine Learning dengan Linear Regression</p>
76
+ <button class="btn btn-warning btn-lg" onclick="predictGoldPrice()">
77
+ <i class="fas fa-magic"></i> Prediksi Sekarang
78
+ </button>
79
+ </div>
80
+ </section>
81
+
82
+ <!-- Main Content -->
83
+ <div class="container my-5">
84
+ <!-- Loading Spinner -->
85
+ <div class="text-center loading-spinner" id="loadingSpinner">
86
+ <div class="spinner-border text-warning" role="status" style="width: 3rem; height: 3rem;">
87
+ <span class="visually-hidden">Loading...</span>
88
+ </div>
89
+ <p class="mt-3">Menganalisis data dan membuat prediksi...</p>
90
+ </div>
91
+
92
+ <!-- Results Section -->
93
+ <div id="resultsSection" style="display: none;">
94
+ <!-- Current Prices -->
95
+ <div class="row mb-4">
96
+ <div class="col-md-6">
97
+ <div class="card prediction-card text-center">
98
+ <div class="card-body">
99
+ <h5 class="card-title"><i class="fas fa-clock"></i> Harga Saat Ini</h5>
100
+ <div id="currentPrices"></div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ <div class="col-md-6">
105
+ <div class="card prediction-card text-center">
106
+ <div class="card-body">
107
+ <h5 class="card-title"><i class="fas fa-trending-up"></i> Perkiraan Perubahan Total</h5>
108
+ <div id="totalChanges"></div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+
114
+ <!-- Prediction Chart -->
115
+ <div class="card prediction-card mb-4">
116
+ <div class="card-header">
117
+ <h5 class="mb-0"><i class="fas fa-chart-area"></i> Grafik Prediksi Harga Emas</h5>
118
+ </div>
119
+ <div class="card-body text-center">
120
+ <img id="predictionChart" class="img-fluid" alt="Prediction Chart">
121
+ </div>
122
+ </div>
123
+
124
+ <!-- Predictions Table -->
125
+ <div class="card prediction-card">
126
+ <div class="card-header">
127
+ <h5 class="mb-0"><i class="fas fa-table"></i> Prediksi Harga 7 Hari Kedepan</h5>
128
+ </div>
129
+ <div class="card-body">
130
+ <div class="table-responsive">
131
+ <table class="table table-striped table-hover">
132
+ <thead class="table-dark">
133
+ <tr>
134
+ <th>Tanggal</th>
135
+ <th>Harga Tutup (IDR)</th>
136
+ <th>Perubahan Tutup (%)</th>
137
+ <th>Harga Buka (IDR)</th>
138
+ <th>Perubahan Buka (%)</th>
139
+ </tr>
140
+ </thead>
141
+ <tbody id="predictionsTable">
142
+ </tbody>
143
+ </table>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>
148
+
149
+ <!-- Error Section -->
150
+ <div id="errorSection" style="display: none;">
151
+ <div class="alert alert-danger text-center" role="alert">
152
+ <i class="fas fa-exclamation-triangle"></i>
153
+ <span id="errorMessage"></span>
154
+ </div>
155
+ </div>
156
+ </div>
157
+
158
+ <!-- Footer -->
159
+ <footer class="gradient-bg text-center py-4 mt-5">
160
+ <div class="container">
161
+ <p class="mb-0">&copy; 2025 Kelompok 4 - Sistem Prediksi Harga Emas. Powered by Machine Learning.</p>
162
+ </div>
163
+ </footer>
164
+
165
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
166
+ <script>
167
+ function predictGoldPrice() {
168
+ // Show loading spinner
169
+ document.getElementById('loadingSpinner').style.display = 'block';
170
+ document.getElementById('resultsSection').style.display = 'none';
171
+ document.getElementById('errorSection').style.display = 'none';
172
+
173
+ // Make API call
174
+ fetch('/predict', {
175
+ method: 'POST',
176
+ headers: {
177
+ 'Content-Type': 'application/json',
178
+ }
179
+ })
180
+ .then(response => response.json())
181
+ .then(data => {
182
+ document.getElementById('loadingSpinner').style.display = 'none';
183
+
184
+ if (data.success) {
185
+ displayResults(data);
186
+ } else {
187
+ displayError(data.error || 'Unknown error occurred');
188
+ }
189
+ })
190
+ .catch(error => {
191
+ document.getElementById('loadingSpinner').style.display = 'none';
192
+ displayError('Network error: ' + error.message);
193
+ });
194
+ }
195
+
196
+ function displayResults(data) {
197
+ // Display current prices
198
+ const currentPricesHtml = `
199
+ <p class="mb-1"><strong>Harga Tutup:</strong> <span class="gold-accent">IDR ${data.current_prices.close.toLocaleString()}</span></p>
200
+ <p class="mb-0"><strong>Harga Buka:</strong> <span class="gold-accent">IDR ${data.current_prices.open.toLocaleString()}</span></p>
201
+ `;
202
+ document.getElementById('currentPrices').innerHTML = currentPricesHtml;
203
+
204
+ // Display total changes
205
+ const totalChangesHtml = `
206
+ <p class="mb-1"><strong>Tutup:</strong>
207
+ <span class="${data.total_changes.close >= 0 ? 'price-up' : 'price-down'}">
208
+ ${data.total_changes.close >= 0 ? '+' : ''}${data.total_changes.close}%
209
+ <i class="fas fa-arrow-${data.total_changes.close >= 0 ? 'up' : 'down'}"></i>
210
+ </span>
211
+ </p>
212
+ <p class="mb-0"><strong>Buka:</strong>
213
+ <span class="${data.total_changes.open >= 0 ? 'price-up' : 'price-down'}">
214
+ ${data.total_changes.open >= 0 ? '+' : ''}${data.total_changes.open}%
215
+ <i class="fas fa-arrow-${data.total_changes.open >= 0 ? 'up' : 'down'}"></i>
216
+ </span>
217
+ </p>
218
+ `;
219
+ document.getElementById('totalChanges').innerHTML = totalChangesHtml;
220
+
221
+ // Display chart
222
+ document.getElementById('predictionChart').src = 'data:image/png;base64,' + data.chart;
223
+
224
+ // Display predictions table
225
+ let tableHtml = '';
226
+ data.predictions.forEach(prediction => {
227
+ tableHtml += `
228
+ <tr>
229
+ <td><strong>${prediction.date}</strong></td>
230
+ <td>IDR ${prediction.close_price.toLocaleString()}</td>
231
+ <td class="${prediction.close_change >= 0 ? 'price-up' : 'price-down'}">
232
+ ${prediction.close_change >= 0 ? '+' : ''}${prediction.close_change}%
233
+ <i class="fas fa-arrow-${prediction.close_change >= 0 ? 'up' : 'down'}"></i>
234
+ </td>
235
+ <td>IDR ${prediction.open_price.toLocaleString()}</td>
236
+ <td class="${prediction.open_change >= 0 ? 'price-up' : 'price-down'}">
237
+ ${prediction.open_change >= 0 ? '+' : ''}${prediction.open_change}%
238
+ <i class="fas fa-arrow-${prediction.open_change >= 0 ? 'up' : 'down'}"></i>
239
+ </td>
240
+ </tr>
241
+ `;
242
+ });
243
+ document.getElementById('predictionsTable').innerHTML = tableHtml;
244
+
245
+ document.getElementById('resultsSection').style.display = 'block';
246
+ }
247
+
248
+ function displayError(errorMessage) {
249
+ document.getElementById('errorMessage').textContent = errorMessage;
250
+ document.getElementById('errorSection').style.display = 'block';
251
+ }
252
+
253
+ function formatNumber(num) {
254
+ return new Intl.NumberFormat('id-ID').format(num);
255
+ }
256
+ </script>
257
+ </body>
258
+ </html>