-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.html
569 lines (528 loc) · 38.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no">
<meta name="description" content="پیشبینی قیمت سهام بورس تهران ایران با استفاده از هوش مصنوعی AI و اندیکاتور SMA" />
<meta name="author" content="Majid Houshyar,MAjidH1">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="document-type" content="Public" />
<meta name="keywords" content="هوش مصنوعی, پیشبینی, آینده بورس, قیمت سهام AI, اندیکاتور SMA">
<title>پیشبینی قیمت نماد بورس ایران - Majid Houshyar (MAjidH1)</title>
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="assets/css/custom.css" type="text/css" rel="stylesheet" media="screen,projection" />
<link rel="preload" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" as="style" onload="this.rel='stylesheet'">
</head>
<body>
<div class="navbar-fixed">
<nav class="z-depth-2 nav-bar teal darken-1" role="navigation">
<div class="nav-wrapper container">
<div class="right">
<a href="#" data-target="slide-out" class="sidenav-trigger"><i class="fa fa-bars"></i></a>
پیشبینی قیمت نماد در آینده با TensorFlow.js
</div>
<ul class="left hide-on-med-and-down">
<li><a href="https://www.fipiran.com/DataService/TradeIndex" class="tooltipped" data-position="top"
data-tooltip="فناوری بورس تهران"><i class="fas fa-blog"></i><span id="menu-text"> fipiran </span></a>
</li>
<li><a href="https://github.com/majidh1" target="_blank"><i class="fa fa-user"></i><span
id="menu-text"> MAjidH1 </span></a></li>
<li><a href="https://github.com/majidh1/AI-Price-Prediction" target="_blank"><i
class="fab fa-github-square"></i><span id="menu-text"> Source </span></a></li>
</ul>
</div>
</nav>
</div>
<ul id="slide-out" class="sidenav">
<li><a href="https://www.fipiran.com/DataService/TradeIndex" class="tooltipped" data-position="top"
data-tooltip="فناوری بورس تهران"><i class="fas fa-blog"></i><span id="menu-text"> fipiran </span></a>
</li>
<li><a href="https://github.com/majidh1" target="_blank"><i class="fa fa-user"></i><span
id="menu-text"> MAjidH1 </span></a></li>
<li><a href="https://github.com/majidh1/AI-Price-Prediction" target="_blank"><i
class="fab fa-github-square"></i><span id="menu-text"> Source </span></a></li>
</ul>
<div class="container">
<div class="card">
<div class="card-content">
<span class="card-title grey-text text-darken-4">پیشبینی قیمت نماد در آینده با TensorFlow.js</span>
<span class="card-subtitle grey-text text-darken-2">معاملات نماد را از fipiran دریافت کنید و پیشبینیها را با
استفاده از شبکه عصبی بازگشتی (Recurrent Neural Network)
و
LSTM
(Long Short-Term Memory)
با فریمورک
TensorFlow.js انجام دهید.</span>
</div>
<div class="card-image">
<img src="assets/img/time-series-00.png"
alt="پیشبینی قیمت نماد در آینده با TensorFlow.js">
</div>
<div class="card-content">
<p>
<!-- [write about the purpose for this experiment] -->
یادگیری ماشینی این روزها در حال پیشرفت و محبوبیت فزایندهای است و تعداد بیشتری از مردم جهان آن را
همچون گوی جادویی میبینند (پیشبینی اینکه چه زمانی و چه اتفاقی در آینده رخ خواهد داد). این آزمایش از
شبکههای عصبی مصنوعی برای نمایش ترندهای بازار سهام استفاده میکند و توانایی پیشبینی سریزمانی را
به منظور پیشبینی قیمتهای بعدی سهم بر اساس اطلاعات گذشته را دارد.
</p>
<br>
<p>
<!-- [disclaimer] -->
<b>سلب مسئولیت</b>: نوسانات بازار سهام به دلیل عوامل متعدد، پویا و غیرقابل پیشبینی هستند و این
آزمایش صرفاً جهت اهداف آموزشی است و به هیچ وجه ابزاری برای پیشبینی معاملات نمیباشد.
</p>
<br>
<p>
<!-- [how to use this experiment, outline] -->
این آزمایش شامل چهار بخش است:
<li>دریافت دادههای تاریخی قیمتهای سهام</li>
<li>آمادهسازی دادههای آموزشی برای مدل شبکه عصبی ما</li>
<li>آموزش شبکه عصبی</li>
<li>انجام برخی پیشبینیها</li>
</p>
<!-- <button class="waves-effect waves-light btn" type="button" onclick="demo()" id="btn_load_demo">
Load Snapshot Demo
</button>
<div id="div_demo_loaded" style="display:none">
Demo loaded, scroll down to explore.
</div> -->
</div>
</div>
<div class="card" id="div_data">
<div class="card-content">
<span class="card-title">دریافت اطلاعات نماد</span>
<p>
<!-- [purpose of this step, fun for the reader] -->
پیش از اینکه بتوانیم شبکه عصبی را آموزش دهیم و هرگونه پیشبینی انجام دهیم، نیازمند داده هستیم. نوع
دادهای که به دنبال آن هستیم سریزمانی (دنبالهای از اعداد به ترتیب زمانی) است. یک جای مناسب برای به
دست آوردن این اطلاعات <a href="https://www.fipiran.com/DataService/TradeIndex" target="_blank">سایت فناوری بورس تهران</a> است. این سایت به ما اجازه میدهد که دادههای زمانی را راجع به قیمتهای معاملات سهام
شرکتها از ۲۰ سال گذشته به دست آوریم.
</p>
<p>
این سایت مقادیر زیر را در اختیار میگذارد:
<li>قیمت باز شدن</li>
<li>بالاترین قیمت آن روز</li>
<li>پایینترین قیمت آن روز</li>
<li>قیمت بستهشده (که در این پروژه استفاده میشود)</li>
<li>حجم</li>
</p>
<br>
<p>
برای آمادهسازی مجموعه دادههای آموزشی برای شبکه عصبی ما، ما از قیمتهای بستهشده سهام
استفاده میکنیم؛ که همچنین به این معناست که ما به دنبال پیشبینی قیمت بستهشده آینده هستیم.
</p>
<br>
<span class="card-title">آزمایش کنید</span>
<p>
پس از <a href="https://www.fipiran.com/DataService/TradeIndex" target="_blank">دریافت فایل اکسل</a> از سایت فناوری بورس تهران اکسل را در این بخش اضافه کنید تا اطلاعات مورد نیاز دریافت شود
</p>
<div class="row" id="div_container_getdata">
<div class="col m6 offset-m3">
<div class="file-field input-field">
<div class="btn">
<span>اکسل معاملات نماد</span>
<input type="file" id="input_excel" accept=".xls">
</div>
<div class="file-path-wrapper">
<input class="file-path validate" type="text" placeholder="فایل اکسل را انتخاب کنید">
</div>
<small class="form-text text-muted">شما میتوانید اکسل اطلاعات سهام را از fipiran دریافت کنید</small>
</div>
</div>
<div class="col s12">
<button class="waves-effect waves-light btn" id="btn_fetch_data"
onclick="onClickFetchData()">تایید اکسل و شروع عملیات</button>
<div class="preloader-wrapper small active" dir="ltr" id="load_fetch_data" style="display:none">
<div class="spinner-layer spinner-green-only">
<div class="circle-clipper right">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper left">
<div class="circle"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row" id="div_container_linegraph" style="display:none">
<div class="col s12">
<div class="card z-depth-2">
<div class="card-content">
<span class="card-title">اطلاعات دریافت شده از اکسل برای سهام</span>
<span class="card-title grey-text text-darken-4" id="div_linegraph_data_title">عنوان
کارت</span>
<div>
<div id="div_linegraph_data" style="width:100%; height:350px;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- E Get Stocks Data -->
<div class="card" id="div_sma">
<div class="card-content">
<span class="card-title">(SMA) میانگین متحرک ساده</span>
<p>
<!-- [purpose of this step, fun for the reader] -->
برای این آزمایش، ما از <a href="https://fa.wikipedia.org/wiki/%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C_%D9%86%D8%B8%D8%A7%D8%B1%D8%AA%E2%80%8C%D8%B4%D8%AF%D9%87"
target="_blank">یادگیری نظارتشده</a> استفاده میکنیم، که به این معناست اطلاعات را به شبکه عصبی
میدهیم و این شبکه با نگاشت دادههای ورودی به برچسب خروجی یاد میگیرد. یکی از روشهای آمادهسازی
مجموعه دادههای آموزشی، استخراج میانگین متحرک ساده از دادههای سریزمانی است.
</p>
<p>
<a href="https://www.investopedia.com/terms/s/sma.asp" target="_blank">میانگین متحرک ساده (SMA)</a>
یک روش برای شناسایی جهت روندها در یک دوره زمانی معین است، که با نگاه کردن به میانگین همه ارزشها در
آن دوره زمانی محاسبه میشود. تعداد قیمتها در یک دوره زمانی به صورت تجربی انتخاب میشود. به عنوان
مثال، فرض کنید قیمتهای بسته شدن در ۵ روز گذشته ۱۳، ۱۵، ۱۴، ۱۶، ۱۷ بوده است، SMA برابر خواهد بود با
(۱۳+۱۵+۱۴+۱۶+۱۷)/۵ = ۱۵. پس <i>ورودی</i> برای مجموعه دادههای آموزشی ما مجموعه قیمتها در یک دوره
زمانی واحد، و <i>برچسب</i> میانگین متحرک محاسبهشده از این قیمتها است.
</p>
<span class="card-title">شروع کنیم</span>
<div class="row" id="div_container_getsmafirst">
<div class="col s12">
<p>حتما ابتدا، از مرحله قبلی <a href="#div_data">دادههای سهام را واکش کنید</a>.</p>
</div>
</div>
<div class="row" id="div_container_getsma" style="display:none">
<div class="col s12">
<p>
<!-- [how to use, what you want your reader to do after you end, as simple and obvious] -->
بیایید مجموعه دادههای آموزشی را تولید کنیم، با فشار دادن دکمه <i>محاسبه SMA و رسم نمودار</i> میتوانید دادههای آموزشی را برای شبکه عصبی ایجاد کنید.
</p>
</div>
<div class="col s6 offset-s3">
<div class="input-field col s12">
<label for="input_windowsize">اندازه دوره زمانی</label>
<input type="number" id="input_windowsize" placeholder="یک عدد" value="20">
<small class="form-text text-muted">این "دوره زمانی" برای SMA است</small>
</div>
</div>
<div class="col s12">
<button class="waves-effect waves-light btn" id="btn_draw_sma"
onclick="onClickDisplaySMA()">محاسبه SMA و رسم نمودار</button>
<div class="spinner-border" id="load_draw_sma" style="display:none"></div>
</div>
</div>
<div class="row" id="div_container_sma" style="display:none">
<div class="col s12">
<div class="card z-depth-2">
<div class="card-content">
<span class="card-title grey-text text-darken-4" id="div_linegraph_sma_title"></span>
<div id="div_linegraph_sma" style="width:100%; height:350px;"></div>
</div>
</div>
</div>
</div>
<div class="row" id="div_container_trainingdata" style="display:none">
<div class="col s12">
<div class="card z-depth-2">
<div class="card-content">
<span class="card-title grey-text text-darken-4">دادههای آموزشی (۲۵ سطر اول)</span>
<div id="div_trainingdata"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- E Simple Moving Average -->
<div class="card" id="div_train">
<div class="card-content">
<span class="card-title">آموزش شبکه عصبی</span>
<p>
<!-- [purpose of this step, fun for the reader] -->
حال که شما دادههای آموزشی را دارید، وقت آن است تا یک مدل برای پیشبینی دادههای سری زمانی بسازید،
برای این کار ما از کتابخانه <a href="https://js.tensorflow.org/" target="_blank">TensorFlow.js</a>
استفاده خواهیم کرد.
</p>
<p>
مدل <a href="https://js.tensorflow.org/api/latest/#sequential" target="_blank">Sequential</a> انتخاب
شده که به سادگی هر لایه را به هم متصل میکند و اطلاعات را از ورودی به خروجی در طول فرآیند آموزش
انتقال میدهد. برای اینکه مدل بتواند دادههای سری زمانی که پشت سر هم هستند را بیاموزد، لایه <a
href="https://js.tensorflow.org/api/latest/#layers.rnn" target="_blank">شبکههای عصبی بازگشتی
(RNN)</a> ایجاد شده و تعداد <a href="https://js.tensorflow.org/api/latest/#layers.lstmCell"
target="_blank">سلولهای LSTM</a> به RNN اضافه میشوند.
</p>
<p>
مدل با استفاده از الگوریتم بهینهسازی محبوب <a
href="https://js.tensorflow.org/api/latest/#train.adam" target="_blank">Adam</a> (<a
href="https://arxiv.org/abs/1412.6980" target="_blank">بیشتر بخوانید</a>) آموزش داده خواهد شد.
از <a href="https://js.tensorflow.org/api/latest/#losses.meanSquaredError" target="_blank">خطای
میانگین مربعات اصلاحشده</a> برای تعیین تفاوت بین مقادیر پیشبینیشده و مقادیر واقعی استفاده
میشود، بنابراین مدل میتواند با کم کردن خطا در طی فرآیند آموزش یاد بگیرد.
</p>
<p>
<!-- [how to use, what you want your reader to do after you end, as simple and obvious] -->
اینها پارامترهای Metacognition (پارامترهای استفادهشده در فرآیند آموزش) هستند که برای تنظیم در دسترس
هستند:
<li>اندازه مجموعه دادههای آموزشی (%): مقدار دادههای استفادهشده برای آموزش، و دادههای باقیمانده
برای پیشبینی استفاده میشوند</li>
<li>Epochs: تعداد دفعاتی که مجموعه اطلاعات برای آموزش مدل استفاده میشوند (<a
href="https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/"
target="_blank">بیشتر بیاموزید</a>)</li>
<li>نرخ یادگیری: مقدار تغییر در وزنها در هر مرحله آموزش (<a
href="https://machinelearningmastery.com/learning-rate-for-deep-learning-neural-networks/"
target="_blank">بیشتر بیاموزید</a>)</li>
<li>لایههای پنهان LSTM: برای افزایش پیچیدگی مدل تا بتواند در فضای ابعاد بالاتر یاد بگیرد (<a
href="https://machinelearningmastery.com/how-to-configure-the-number-of-layers-and-nodes-in-a-neural-network/"
target="_blank">بیشتر بیاموزید</a>)</li>
</p>
<span class="card-title">آزمایش کنید</span>
<p>
<!-- [how to use, what you want your reader to do after you end, as simple and obvious] -->
میتوانید پارامترهای Metacognition را تنظیم کنید و سپس دکمه <i>آغاز آموزش مدل</i> را برای آموزش
مدل بزنید.
</p>
<div class="row" id="div_container_trainfirst">
<div class="col s12">
<p>نیاز به دادههای آموزشی دارید؟ بخش قبلی را برای <a href="#div_sma">آمادهسازی دادههای
آموزشی</a> کاوش کنید.</p>
</div>
</div>
<div id="div_container_train" style="display:none">
<div class="row">
<div class="col s12">
<p>
<!-- [how to use, what you want your reader to do after you end, as simple and obvious] -->
میتوانید پارامترهای Metacognition را تنظیم کنید و سپس دکمه <i>آغاز آموزش مدل</i> را
برای آموزش مدل بزنید.
</p>
</div>
<div class="col s6">
<div class="input-field col s12">
<label for="input_trainingsize">اندازه مجموعه دادههای آموزشی (%)</label>
<input type="number" id="input_trainingsize" placeholder="عددی بین (1-99)" value="98">
</div>
</div>
<div class="col s6">
<div class="input-field col s12">
<label for="input_epochs">Epochs</label>
<input type="number" id="input_epochs" placeholder="عددی" value="10">
</div>
</div>
</div>
<div class="row">
<div class="col s6">
<div class="input-field col s12">
<label for="input_learningrate">نرخ یادگیری</label>
<input type="number" id="input_learningrate" placeholder="یک عدد اعشاری" value="0.01">
<small class="form-text text-muted">معمولا بین 0.01 تا 0.1 متغیر است</small>
</div>
</div>
<div class="col s6">
<div class="input-field col s12">
<label for="input_hiddenlayers">لایههای پنهان LSTM</label>
<input type="number" id="input_hiddenlayers" placeholder="یک عدد" value="4">
<small class="form-text text-muted">تعداد لایههای LSTM</small>
</div>
</div>
<div class="col s12">
<button class="waves-effect waves-light btn" id="btn_draw_trainmodel"
onclick="onClickTrainModel()">آغاز آموزش مدل</button>
</div>
</div>
</div>
<div class="row" id="div_container_training" style="display:none">
<div class="col s12">
<div class="card z-depth-2">
<div class="card-content">
<span class="card-title grey-text text-darken-4">آموزش مدل</span>
<p>برای این نماد، انتظار میرود خطایی کمتر از 0.1 داشته باشیم. اگر تا Epoch #5 به زیر 1.0
نرفت، پیشنهاد میکنم صفحه را رفرش کنید و دوباره امتحان کنید. توجه داشته باشید که،
این تب مرورگر باید فعال و باز باشد تا آموزش پیشرفت داشته باشد.</p>
<h6>پیشرفت</h6>
<!-- <div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated" id="div_training_progressbar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div>
</div> -->
<div class="progress">
<div class="determinate" id="div_training_progressbar" style="width: 100%"></div>
</div>
<hr />
<h6>لاگها</h6>
<div id="div_traininglog"
style="overflow-x: scroll; overflow-y: scroll; height: 250px;"></div>
<hr />
<h6>خطا</h6>
<div id="div_linegraph_trainloss" style="width:100%; height:250px;"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- E Train Neural Network -->
<div class="card">
<div class="card-content">
<span class="card-title">اعتبارسنجی</span>
<p>
<!-- [purpose of this step, fun for the reader] -->
حالا که مدل خود را آموزش دادهاید، زمان آن رسیده که از تابع model.predict در TFJS برای پیشبینی
مقادیر آینده استفاده کنید. ما اطلاعات را به دو بخش تقسیم کردهایم، یک زیرمجموعه از اطلاعات برای
آموزش و بقیه برای مجموعه اعتبارسنجی استفاده میشود. مجموعه آموزشی برای تمرین مدل استفاده شدهاند،
بنابراین مجموعه اعتبارسنجی برای اعتبارسنجی مدل استفاده خواهد شد. از آنجا که مدل قبلاً اطلاعات را در
مجموعه اعتبارسنجی ندیده است، خوب خواهد بود اگر مدل بتواند مقادیری نزدیک به مقادیر دقیق پیشبینی کند.
</p>
<span class="card-title">آزمایش کنید</span>
<p>بیایید از دادههای باقیمانده برای پیشبینی استفاده کنیم تا ببینیم چقدر مقادیر پیشبینیمان با مقادیر
واقعی مطابقت دارند.</p>
<p>اما اگر مدل مقادیری را پیشبینی نکرد که به مقادیر واقعیشان نزدیک باشند، نمودار ضرر آموزشی را چک
کنید. به طور کلی، این مدل باید با کاهش ضرر به کمتر از 1 همگرا شود. شما میتوانید تعداد دورهها را
افزایش دهید، یا پارامترهای فرا یادگیری دیگری را تنظیم کنید.</p>
<div class="row" id="div_container_validatefirst">
<div class="col s12">
<p>مدلی برای انجام پیشبینی ندارید؟ <a href="#div_train">مدل خود را آموزش دهید</a>.</p>
</div>
</div>
<div class="row" id="div_container_validate" style="display:none">
<div class="col s12">
<p>
<!-- [how to use, what you want your reader to do after you end, as simple and obvious] -->
روی دکمه <i>اعتبارسنجی مدل</i> کلیک کنید تا ببینید این مدل چطور کار میکند. هورا!
</p>
</div>
<div class="col s6">
<button class="waves-effect waves-light btn" id="btn_validation"
onclick="onClickValidate()">اعتبارسنجی مدل</button>
<div class="spinner-border" id="load_validating" style="display:none"></div>
</div>
</div>
<div class="row" id="div_container_validating" style="display:none">
<div class="col s12">
<div class="card z-depth-2">
<div class="card-content">
<span class="card-title grey-text text-darken-4" id="div_predict_title">مقایسه مقادیر
واقعی با مقادیر پیشبینی شده</span>
<div id="div_validation_graph"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- E Validation -->
<div class="card">
<div class="card-content">
<span class="card-title">انجام پیشبینی</span>
<p>
<!-- [purpose of this step, fun for the reader] -->
سرانجام، مدل اعتبارسنجی شده و مقادیر پیشبینیشده به خوبی با مقادیر واقعی همپوشانی دارند، حال ما از
آن برای پیشبینی آینده استفاده خواهیم کرد. ما همان تابع model.predict را به کار خواهیم بست و آخرین
{{input_windowsize}} نقاط داده را به عنوان ورودی استفاده خواهیم کرد، زیرا این اندازه دوره ما است.
این بدان معناست که، اگر دادههای آموزشی ما روزانه تکمیل شوند، ما از {{input_windowsize}} روز گذشته
به عنوان ورودی استفاده خواهیم کرد، برای پیشبینی روز بعد.
</p>
<span class="card-title">آزمایش کنید</span>
<div class="row" id="div_container_predictfirst">
<div class="col s12">
<p>مدلی برای انجام پیشبینی ندارید؟ <a href="#div_train">مدل خود را آموزش دهید</a>.</p>
</div>
</div>
<div class="row" id="div_container_predict" style="display:none">
<div class="col s12">
<p>
<!-- [how to use, what you want your reader to do after you end, as simple and obvious] -->
روی دکمه <i>انجام پیشبینی</i> کلیک کنید تا ببینید این مدل چگونه کار میکند. هورا!
</p>
</div>
<div class="col s6">
<button class="waves-effect waves-light btn" id="btn_prediction"
onclick="onClickPredict()">انجام پیشبینی</button>
<div class="spinner-border" id="load_predicting" style="display:none"></div>
</div>
</div>
<div class="row" id="div_container_predicting" style="display:none">
<div class="col s12">
<div class="card z-depth-2">
<div class="card-content">
<span class="card-title grey-text text-darken-4" id="div_predict_title">پیشبینی
شده</span>
<div id="div_prediction_graph"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- E Make Prediction -->
<div class="card">
<div class="card-content">
<span class="card-title">نتیجهگیری</span>
<p>
چرا مدل من عملکرد خوبی ندارد؟<br />
این مدل هیچگاه دادههای مشابهی در گذشته ندیده است. در روز ۲۰ مرداد ۱۳۹۹ شاخص بورس درحالی که به تازگی عدد ۲ میلیون واحد را رد کرده بود شروع به ریزش کرد تا تاریخ ۸ مهر ۱۳۹۹ حدوداً ۲۵ درصد از ارزش خود را از دست داد. البته برخی از شرکتها افت تا ۷۰ درصد را تجربه کردند. در روز دوشنبه ۲۸ مهر ۹۹ شاخص بورس باقدرت بسیار حمایت ۱۵۰۰۰۰۰ را از دست داد.<br />
ما میتوانیم ویژگیهای بیشتری اضافه کنیم. به طور کلی، ویژگیهای بیشتر معمولاً باعث بهبود عملکرد مدل
میشوند. میتوانیم شاخصهای معاملاتی مانند همگرایی میانگین متحرک (MACD)، شاخص قدرت نسبی (RSI) یا
نوارهای بولینگر را بگنجانیم.<br />
حتی ویژگیهای بیشتری اضافه کنید. یکی از چیزهای شگفتانگیزی که <a
href="https://www.fipiran.com/Codal/EPSPross" target="_blank">سایت فناوری بورس</a> ارائه میدهد، دادههای بنیادی است. این به آن معنی است که شما همچنین میتوانید
صورتهای درآمد سالانه و فصلی و جریانهای نقدی شرکت مورد علاقه خود را بگنجانید. که میداند، شاید این
ویژگیها مفید باشند.<br />
ممکن است دلایل بسیار دیگری وجود داشته باشد که مدل موفق به یادگیری و پیشبینی نمیشود. این چالش
یادگیری ماشین است؛ ساخت مدلهایی با عملکرد خوب هم هنر است و هم علم.
</p>
<p>
راههای بسیاری برای پیشبینی سری زمانی به غیر از استفاده از میانگین متحرک ساده وجود دارد.
امکان دیگر این است که این کار را با دادههای بیشتری از منابع مختلف پیادهسازی کنیم.<br />
با TensorFlow.js، یادگیری ماشین در مرورگر وب امکانپذیر است و واقعاً بسیار جالب است.<br />
این آزمایش ۱۰۰٪ آموزشی است و به هیچ وجه ابزاری برای پیشبینی معاملات
نیست.
</p>
</div>
</div>
<!-- E Conclusion -->
<div class="row">
<div class="col s12 m4">
<a href="https://github.com/majidh1/AI-Price-Prediction" style="color:#000;">
<center>
<i class="fab fa-github fa-2x"></i><br />
<span>Repository GitHub</span><br />
<p>دریافت کد کامل</p><br />
</center>
</a>
</div>
<div class="col s12 m4">
<a href="https://github.com/majidh1" style="color:#000;">
<center>
<i class="fas fa-laptop-code fa-2x"></i><br />
<span>MAjidH1</span><br />
<p>بررسی پروژههای دیگر</p><br />
</center>
</a>
</div>
<div class="col s12 m4">
<a href="https://www.linkedin.com/in/majidh1/" style="color:#000;">
<center>
<i class="fab fa-linkedin-in fa-2x"></i><br />
<span>ارتباط برقرار کردن</span><br />
<p>با من در LinkedIn ارتباط برقرار کنید</p><br />
</center>
</a>
</div>
</div>
</div> <!-- E container -->
<br>
<br>
<div class="fix-bottom-ad"><b>برای حمایت از این صفحه و کمک به گسترش و رواج فرهنگ اوپن سورس در ایران میتوانید به <a href="https://github.com/majidh1/AI-Price-Prediction">ریپازیتوری گیت‌هاب</a> ستاره بدین</b></div>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@4.15.0/dist/tf.min.js"></script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<script src="https://cdn.sheetjs.com/xlsx-0.20.1/package/dist/xlsx.full.min.js"></script>
<script src="./model.js"></script>
<script src="./index.js"></script>
<script>
$(document).ready(function () {
$('.tooltipped').tooltip();
$('.scrollspy').scrollSpy();
$('.sidenav').sidenav();
});
</script>
</body>
</html>