In [1]:
import datetime
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.sql import text

Pythonのバージョン


In [2]:
import sys
print (sys.version_info)


sys.version_info(major=3, minor=6, micro=1, releaselevel='final', serial=0)

株価をデーターベースから取り出す

ユーザー名とパスワード


In [3]:
MARIADB_USER="ENTER USER NAME HERE"
MARIADB_PASSWD="ENTER PASSWORD HERE"

データーベースはmariaDB
ホストはlocalhost
データーベース名はstockdb


In [4]:
engine = create_engine(f"mysql+pymysql://{MARIADB_USER}:{MARIADB_PASSWD}@localhost:59603/stockdb")

8306-T, 三菱UFJフィナンシャル・グループ
を対象にする。


In [5]:
TICKERSYMBOL="TSTYO 8306"

日足を対象にする。


In [6]:
TIMEFRAME="TF1d"

In [7]:
query=" ".join (
    [ "SELECT CONVERT_TZ(`at`, '+00:00','+9:00') AS 'jst', `open`, `high`, `low`, `close`, `volume`, `turnover`"
    , "FROM `ohlcvt`"
    ,f"WHERE `ticker`='{TICKERSYMBOL}' AND `tf`='{TIMEFRAME}'"
    , "ORDER BY `at` DESC"
    , ";"
    ])
print (query)


SELECT CONVERT_TZ(`at`, '+00:00','+9:00') AS 'jst', `open`, `high`, `low`, `close`, `volume`, `turnover` FROM `ohlcvt` WHERE `ticker`='TSTYO 8306' AND `tf`='TF1d' ORDER BY `at` DESC ;

In [8]:
df=pd.read_sql(query, engine)
df


Out[8]:
jst open high low close volume turnover
0 2017-08-10 696.7 700.6 693.0 694.4 60660600.0 4.225758e+10
1 2017-08-09 703.0 709.4 700.2 701.3 48538600.0 3.413403e+10
2 2017-08-08 710.6 714.2 708.0 711.8 32605000.0 2.317873e+10
3 2017-08-07 713.4 720.0 713.3 715.2 30549500.0 2.187006e+10
4 2017-08-04 709.2 710.9 707.3 709.6 24620500.0 1.745913e+10
5 2017-08-03 715.5 717.7 708.9 712.8 39341800.0 2.803082e+10
6 2017-08-02 722.0 726.6 716.4 716.8 66346500.0 4.776988e+10
7 2017-08-01 704.0 716.3 702.4 715.4 62118200.0 4.414603e+10
8 2017-07-31 700.8 705.7 699.3 700.0 46416000.0 3.260318e+10
9 2017-07-28 703.0 705.4 701.1 702.4 46406000.0 3.261928e+10
10 2017-07-27 706.0 712.1 704.7 708.1 40428100.0 2.861306e+10
11 2017-07-26 715.7 717.8 709.3 711.6 43420200.0 3.098815e+10
12 2017-07-25 705.8 712.3 704.1 704.7 40665600.0 2.876313e+10
13 2017-07-24 703.6 707.8 699.7 705.4 72928700.0 5.131387e+10
14 2017-07-21 714.8 715.7 711.0 713.6 41769600.0 2.980740e+10
15 2017-07-20 719.5 720.7 715.0 718.7 41117800.0 2.953635e+10
16 2017-07-19 713.5 721.0 712.3 718.0 37214500.0 2.666943e+10
17 2017-07-18 718.3 722.1 713.7 721.6 62804600.0 4.511103e+10
18 2017-07-14 731.9 736.3 729.0 731.8 51560400.0 3.776906e+10
19 2017-07-13 739.9 740.2 726.4 727.1 54749000.0 4.005833e+10
20 2017-07-12 744.8 745.8 738.3 738.4 51526000.0 3.816765e+10
21 2017-07-11 749.0 752.4 745.4 751.4 45573800.0 3.415008e+10
22 2017-07-10 757.8 758.5 745.7 749.3 51715700.0 3.875742e+10
23 2017-07-07 756.1 760.8 752.1 754.0 53367100.0 4.035681e+10
24 2017-07-06 767.1 767.1 758.7 761.2 47839100.0 3.642981e+10
25 2017-07-05 758.1 766.5 757.2 766.2 55924300.0 4.267105e+10
26 2017-07-04 770.0 770.7 757.1 759.3 64994000.0 4.968310e+10
27 2017-07-03 754.8 758.8 749.0 757.1 49804400.0 3.758904e+10
28 2017-06-30 755.0 761.0 750.6 754.8 69581200.0 5.253096e+10
29 2017-06-29 777.2 777.7 754.0 755.2 107875300.0 8.254339e+10
... ... ... ... ... ... ... ...
234 2016-08-29 531.0 539.4 527.9 535.3 65025000.0 3.479221e+10
235 2016-08-26 523.0 523.0 517.6 518.7 44053500.0 2.292816e+10
236 2016-08-25 524.9 525.5 518.5 524.1 40736300.0 2.128818e+10
237 2016-08-24 526.5 533.6 524.5 524.9 44503500.0 2.347258e+10
238 2016-08-23 527.9 531.8 522.3 523.8 51794100.0 2.723867e+10
239 2016-08-22 531.9 534.4 522.1 528.6 61892500.0 3.261432e+10
240 2016-08-19 531.4 536.3 529.1 532.2 60926600.0 3.250497e+10
241 2016-08-18 532.2 542.4 526.1 526.7 83390700.0 4.445983e+10
242 2016-08-17 518.8 537.1 518.3 535.9 69142500.0 3.670475e+10
243 2016-08-16 527.3 531.8 518.0 518.0 51178100.0 2.682747e+10
244 2016-08-15 529.0 532.9 524.3 524.9 40352600.0 2.130557e+10
245 2016-08-12 540.0 540.4 525.2 529.0 75938400.0 4.040748e+10
246 2016-08-10 530.0 538.5 527.2 536.1 66620100.0 3.555419e+10
247 2016-08-09 536.9 541.8 529.0 536.0 77937200.0 4.181014e+10
248 2016-08-08 517.0 534.5 514.5 531.4 90679900.0 4.781868e+10
249 2016-08-05 509.3 512.9 502.7 504.2 59396000.0 3.005203e+10
250 2016-08-04 497.1 511.2 492.3 507.1 87236400.0 4.388610e+10
251 2016-08-03 491.8 502.8 489.9 492.3 95385200.0 4.711059e+10
252 2016-08-02 534.0 537.8 512.3 512.3 114702800.0 6.010060e+10
253 2016-08-01 522.0 548.6 513.8 544.6 154020600.0 8.252745e+10
254 2016-07-29 485.8 525.7 482.4 522.0 183119000.0 9.308646e+10
255 2016-07-28 492.3 493.5 480.3 484.6 71293700.0 3.455410e+10
256 2016-07-27 495.4 505.9 487.3 497.3 96979600.0 4.818990e+10
257 2016-07-26 499.0 503.6 491.7 495.4 65682600.0 3.253904e+10
258 2016-07-25 514.0 523.0 507.1 508.9 54107400.0 2.775303e+10
259 2016-07-22 507.0 516.7 505.9 514.9 53121100.0 2.723829e+10
260 2016-07-21 520.0 527.7 511.4 522.1 82699600.0 4.302438e+10
261 2016-07-20 519.0 521.8 506.0 510.9 67100000.0 3.435101e+10
262 2016-07-19 535.0 535.3 514.1 521.6 75171600.0 3.922204e+10
263 2016-07-15 503.0 529.9 501.1 518.8 130930500.0 6.752420e+10

264 rows × 7 columns

日足データのローソク足チャート


In [9]:
from plotly.offline import init_notebook_mode, iplot
from plotly import figure_factory as FF

init_notebook_mode(connected=True) # Jupyter notebook用設定

fig = FF.create_candlestick(df.open, df.high, df.low, df.close, dates=df.jst)

iplot(fig)



In [10]:
import matplotlib.pyplot as plt
from matplotlib.finance import candlestick_ohlc, candlestick2_ohlc

fig = plt.figure(figsize=(60,20))
ax = plt.subplot()

candlestick2_ohlc(ax, df.open, df.high, df.low, df.close, width=0.7, alpha=1, colorup='g', colordown='r')

counts = df.shape[0]

ax.grid()
ax.set_xlim(counts,0)
ax.set_xticks(range (0,counts,10))
ax.set_xticklabels([(df.jst[int(x)].date() if x <= df.shape[0] else x) for x in ax.get_xticks()], rotation=60)

plt.show()


C:\Users\akihiro\Anaconda3\lib\site-packages\matplotlib\cbook.py:136: MatplotlibDeprecationWarning:

The finance module has been deprecated in mpl 2.0 and will be removed in mpl 2.2. Please use the module mpl_finance instead.

テクニカル指標をデーターベースから取り出す


In [11]:
query=" ".join (
    [ "SELECT CONVERT_TZ(`at`, '+00:00','+9:00') AS 'jst', `val`, `ind`"
    , "FROM `ohlcvt`"
    , "INNER JOIN `tech_inds` ON `ohlcvt`.`id`=`tech_inds`.`ohlcvt`"
    ,f"WHERE `ticker`='{TICKERSYMBOL}' AND `tf`='{TIMEFRAME}'"
    , "ORDER BY `at` DESC"
    ])
ti=pd.read_sql(query, engine)
ti


Out[11]:
jst val ind
0 2017-08-10 706.460000 TISMA 5
1 2017-08-10 719.784000 TISMA 25
2 2017-08-10 719.646667 TISMA 75
3 2017-08-10 703.863313 TIEMA 5
4 2017-08-10 715.545369 TIEMA 25
5 2017-08-10 718.204698 TIEMA 75
6 2017-08-10 42.424242 TIRSI 9
7 2017-08-10 37.660668 TIRSI 14
8 2017-08-10 709.037246 TIEMA 12
9 2017-08-10 715.858343 TIEMA 26
10 2017-08-10 -6.821097 TIMACD 12 26
11 2017-08-10 -5.725640 TIMACDSIG 12 26 9
12 2017-08-10 665.251715 TIBBLOW3 25
13 2017-08-10 683.429143 TIBBLOW2 25
14 2017-08-10 701.606572 TIBBLOW1 25
15 2017-08-10 719.784000 TIBBMIDDLE 25
16 2017-08-10 737.961428 TIBBUP1 25
17 2017-08-10 756.138857 TIBBUP2 25
18 2017-08-10 774.316285 TIBBUP3 25
19 2017-08-10 33.333333 TIPSYCHOLO 12
20 2017-08-10 29.563932 TIDIPOS 14
21 2017-08-10 37.472284 TIDINEG 14
22 2017-08-10 42.527386 TIADX 14
23 2017-08-10 15.475993 TIADX 9
24 2017-08-09 710.140000 TISMA 5
25 2017-08-09 722.656000 TISMA 25
26 2017-08-09 719.433333 TISMA 75
27 2017-08-09 708.594969 TIEMA 5
28 2017-08-09 717.307483 TIEMA 25
29 2017-08-09 718.848329 TIEMA 75
... ... ... ...
5707 2016-08-04 515.660000 TISMA 5
5708 2016-08-04 508.061658 TIEMA 5
5709 2016-08-04 47.580645 TIRSI 9
5710 2016-08-04 509.242505 TIEMA 12
5711 2016-08-04 41.666667 TIPSYCHOLO 12
5712 2016-08-03 511.160000 TISMA 5
5713 2016-08-03 508.542487 TIEMA 5
5714 2016-08-03 40.299479 TIRSI 9
5715 2016-08-03 509.632051 TIEMA 12
5716 2016-08-03 41.666667 TIPSYCHOLO 12
5717 2016-08-02 512.160000 TISMA 5
5718 2016-08-02 516.663731 TIEMA 5
5719 2016-08-02 50.483425 TIRSI 9
5720 2016-08-02 512.783333 TIEMA 12
5721 2016-08-01 508.780000 TISMA 5
5722 2016-08-01 518.845597 TIEMA 5
5723 2016-08-01 59.334416 TIRSI 9
5724 2016-07-29 501.640000 TISMA 5
5725 2016-07-29 505.968395 TIEMA 5
5726 2016-07-29 51.547389 TIRSI 9
5727 2016-07-28 500.220000 TISMA 5
5728 2016-07-28 497.952593 TIEMA 5
5729 2016-07-27 507.720000 TISMA 5
5730 2016-07-27 504.628889 TIEMA 5
5731 2016-07-26 510.440000 TISMA 5
5732 2016-07-26 508.293333 TIEMA 5
5733 2016-07-25 515.680000 TISMA 5
5734 2016-07-25 514.740000 TIEMA 5
5735 2016-07-22 517.660000 TISMA 5
5736 2016-07-22 517.660000 TIEMA 5

5737 rows × 3 columns

転置する


In [12]:
ti=ti.pivot('jst','ind','val')
ti


Out[12]:
ind TIADX 14 TIADX 9 TIBBLOW1 25 TIBBLOW2 25 TIBBLOW3 25 TIBBMIDDLE 25 TIBBUP1 25 TIBBUP2 25 TIBBUP3 25 TIDINEG 14 ... TIEMA 5 TIEMA 75 TIMACD 12 26 TIMACDSIG 12 26 9 TIPSYCHOLO 12 TIRSI 14 TIRSI 9 TISMA 25 TISMA 5 TISMA 75
jst
2016-07-22 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 517.660000 NaN NaN NaN NaN NaN NaN NaN 517.66 NaN
2016-07-25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 514.740000 NaN NaN NaN NaN NaN NaN NaN 515.68 NaN
2016-07-26 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 508.293333 NaN NaN NaN NaN NaN NaN NaN 510.44 NaN
2016-07-27 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 504.628889 NaN NaN NaN NaN NaN NaN NaN 507.72 NaN
2016-07-28 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 497.952593 NaN NaN NaN NaN NaN NaN NaN 500.22 NaN
2016-07-29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 505.968395 NaN NaN NaN NaN NaN 51.547389 NaN 501.64 NaN
2016-08-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 518.845597 NaN NaN NaN NaN NaN 59.334416 NaN 508.78 NaN
2016-08-02 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 516.663731 NaN NaN NaN NaN NaN 50.483425 NaN 512.16 NaN
2016-08-03 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 508.542487 NaN NaN NaN 41.666667 NaN 40.299479 NaN 511.16 NaN
2016-08-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 508.061658 NaN NaN NaN 41.666667 NaN 47.580645 NaN 515.66 NaN
2016-08-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 506.774439 NaN NaN NaN 41.666667 46.275510 48.513599 NaN 512.10 NaN
2016-08-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 514.982959 NaN NaN NaN 41.666667 52.223230 60.477299 NaN 509.46 NaN
2016-08-09 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 521.988639 NaN NaN NaN 50.000000 55.856276 61.088825 NaN 514.20 NaN
2016-08-10 NaN 27.905607 NaN NaN NaN NaN NaN NaN NaN NaN ... 526.692426 NaN NaN NaN 58.333333 53.444882 65.904880 NaN 522.96 NaN
2016-08-12 NaN 30.988757 NaN NaN NaN NaN NaN NaN NaN NaN ... 527.461618 NaN NaN NaN 58.333333 53.471196 52.659574 NaN 527.34 NaN
2016-08-15 NaN 29.922961 NaN NaN NaN NaN NaN NaN NaN NaN ... 526.607745 NaN NaN NaN 50.000000 53.976143 41.290893 NaN 531.48 NaN
2016-08-16 NaN 27.100660 NaN NaN NaN NaN NaN NaN NaN NaN ... 523.738497 NaN NaN NaN 50.000000 55.806783 53.249715 NaN 528.80 NaN
2016-08-17 NaN 33.300130 NaN NaN NaN NaN NaN NaN NaN NaN ... 527.792331 NaN NaN NaN 50.000000 59.164292 75.467290 NaN 528.78 NaN
2016-08-18 NaN 37.967217 NaN NaN NaN NaN NaN NaN NaN NaN ... 527.428221 NaN NaN NaN 41.666667 60.164172 62.250000 NaN 526.90 NaN
2016-08-19 NaN 42.847757 NaN NaN NaN NaN NaN NaN NaN NaN ... 529.018814 NaN NaN NaN 50.000000 52.910959 66.949153 NaN 527.54 NaN
2016-08-22 NaN 38.192203 502.871913 487.511826 472.151740 518.232 533.592087 548.952174 564.312260 NaN ... 528.879209 NaN NaN NaN 50.000000 44.878361 47.627119 518.232 528.28 NaN
2016-08-23 NaN 35.449328 503.031710 487.631420 472.231130 518.432 533.832290 549.232580 564.632870 NaN ... 527.186139 NaN 6.745568 NaN 41.666667 54.467754 39.695946 518.432 529.44 NaN
2016-08-24 NaN 30.581723 503.121340 487.678681 472.236021 518.564 534.006660 549.449319 564.891979 NaN ... 526.424093 NaN 6.222625 NaN 50.000000 64.845173 40.697674 518.564 527.24 NaN
2016-08-25 28.700961 28.999138 503.696711 488.301421 472.906132 519.092 534.487289 549.882579 565.277868 12.917115 ... 525.649395 NaN 5.678181 NaN 41.666667 58.872651 45.454545 519.092 526.72 NaN
2016-08-26 29.572171 29.948223 503.573378 488.190756 472.808133 518.956 534.338622 549.721244 565.103867 13.673806 ... 523.332930 NaN 4.756145 NaN 33.333333 57.375381 44.384058 518.956 524.02 NaN
2016-08-29 29.365844 32.965979 504.075622 488.379245 472.682867 519.772 535.468378 551.164755 566.861133 14.434783 ... 527.321953 NaN 5.303767 NaN 33.333333 52.223489 63.328197 519.772 525.36 NaN
2016-08-30 28.043928 29.759427 504.972892 488.873785 472.774677 521.072 537.171108 553.270215 569.369323 14.716312 ... 532.014636 NaN 6.158983 NaN 41.666667 53.026906 55.178908 521.072 528.88 NaN
2016-08-31 29.060248 29.162118 506.470744 489.121489 471.772233 523.820 541.169256 558.518511 575.867767 12.671421 ... 542.709757 NaN 8.569663 NaN 50.000000 62.522361 78.078078 523.820 536.72 NaN
2016-09-01 30.810135 29.839679 507.735839 488.583678 469.431517 526.888 546.040161 565.192322 584.344483 11.436314 ... 553.139838 NaN 11.150456 NaN 58.333333 69.633508 79.436620 526.888 546.70 NaN
2016-09-02 32.936338 38.638094 511.107871 491.691742 472.275613 530.524 549.940129 569.356258 588.772387 10.779082 ... 560.593225 NaN 13.165032 7.527824 58.333333 72.589286 84.034833 530.524 558.06 NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2017-06-29 43.366651 25.984414 703.627955 687.203909 670.779864 720.052 736.476045 752.900091 769.324136 16.766467 ... 740.427055 714.359443 8.352713 6.063306 75.000000 62.669963 81.226054 720.052 736.30 709.529333
2017-06-30 40.906062 29.477907 705.453536 688.471073 671.488609 722.436 739.418464 756.400927 773.383391 19.235096 ... 745.218037 715.423669 9.579578 6.766560 75.000000 63.454318 79.600000 722.436 742.48 709.354667
2017-07-03 39.207146 29.801339 707.267028 689.730055 672.193083 724.804 742.340972 759.877945 777.414917 18.464961 ... 749.178691 716.520414 10.615104 7.536269 83.333333 64.171779 78.705637 724.804 748.52 709.213333
2017-07-04 37.567356 38.673756 709.506600 691.697200 673.887800 727.316 745.125400 762.934800 780.744200 18.362832 ... 752.552461 717.646193 11.480942 8.325204 83.333333 68.987342 99.007444 727.316 754.72 709.016000
2017-07-05 38.821751 47.796832 712.566583 694.805166 677.043749 730.328 748.089417 765.850834 783.612251 10.750853 ... 757.101641 718.923925 12.578895 9.175942 83.333333 85.754190 99.086758 730.328 758.52 709.032000
2017-07-06 39.790527 54.699398 716.284456 699.444913 682.605369 733.124 749.963544 766.803087 783.642631 11.170213 ... 758.467760 720.036453 12.896906 9.920135 75.000000 77.971014 88.773389 733.124 759.72 709.061333
2017-07-07 40.346930 61.082803 717.260576 700.101152 682.941728 734.420 751.579424 768.738848 785.898272 14.082840 ... 756.978507 720.930230 12.424727 10.421053 75.000000 69.565217 75.908222 734.420 759.56 709.172000
2017-07-10 38.684384 65.687150 719.216695 702.501389 685.786084 735.932 752.647305 769.362611 786.077916 18.073010 ... 754.419005 721.676803 11.538265 10.644496 66.666667 63.328823 68.884892 735.932 758.00 709.646667
2017-07-11 39.514749 64.861927 721.432926 705.305853 689.178779 737.560 753.687074 769.814147 785.941221 11.847759 ... 753.412670 722.458993 10.879775 10.691552 66.666667 73.867069 55.412371 737.560 756.42 710.221333
2017-07-12 40.748690 61.492812 723.121096 707.726192 692.331288 738.516 753.910904 769.305808 784.700712 15.639810 ... 748.408446 722.878493 9.202841 10.393809 58.333333 60.026385 30.821918 738.516 750.86 710.505333
2017-07-13 40.997289 59.855867 723.436176 708.192352 692.948528 738.680 753.923824 769.167648 784.411472 21.217292 ... 741.305631 722.989585 6.882704 9.691588 50.000000 51.851852 24.680073 738.680 744.04 710.805333
2017-07-14 40.943903 59.194922 723.277653 707.991306 692.704959 738.564 753.850347 769.136694 784.423041 21.241458 ... 738.137087 723.221438 5.361425 8.825556 50.000000 52.780931 27.845884 738.564 739.60 711.044000
2017-07-18 38.789725 60.831257 722.466528 706.837056 691.207584 738.096 753.725472 769.354944 784.984416 28.310011 ... 732.624725 723.178769 3.294767 7.719398 41.666667 46.542828 21.044547 738.096 734.06 711.168000
2017-07-19 37.753451 62.475400 721.332051 705.208102 689.084153 737.456 753.579949 769.703898 785.827847 30.963303 ... 727.749817 723.042485 1.350863 6.445691 41.666667 32.107843 11.003236 737.456 727.38 711.317333
2017-07-20 38.996738 64.078735 720.549264 704.066527 687.583791 737.032 753.514736 769.997473 786.480209 36.096257 ... 724.733211 722.928209 -0.131692 5.130214 41.666667 25.437416 13.043478 737.032 723.44 711.570667
2017-07-21 40.984098 67.654017 720.413108 703.850215 687.287323 736.976 753.538892 770.101785 786.664677 37.168142 ... 721.022141 722.682730 -1.698576 3.764456 33.333333 23.924051 13.537906 736.976 720.74 711.828000
2017-07-24 43.215008 73.103608 718.773189 701.258378 683.743567 736.288 753.802811 771.317622 788.832433 42.582781 ... 715.814760 722.227922 -3.560965 2.299372 25.000000 19.552415 12.733447 736.288 715.46 712.122667
2017-07-25 46.426521 78.136540 716.960688 698.453376 679.946064 735.468 753.975312 772.482624 790.989936 44.162088 ... 712.109840 721.766660 -5.035361 0.832425 25.000000 17.266187 9.391304 735.468 712.08 712.494667
2017-07-26 47.188283 81.342908 715.661811 696.575623 677.489434 734.748 753.834189 772.920377 792.006566 43.038822 ... 711.939894 721.499117 -5.582705 -0.450601 33.333333 17.266187 23.929961 734.748 710.80 713.110667
2017-07-27 48.204897 82.560781 714.675600 695.071200 675.466800 734.280 753.884400 773.488800 793.093200 46.428571 ... 710.659929 721.146508 -6.227117 -1.605904 33.333333 17.582418 28.211009 734.280 708.68 713.649333
2017-07-28 49.709176 84.334440 712.933531 692.419062 671.904593 733.448 753.962469 774.476938 794.991407 45.044429 ... 707.906619 720.653179 -7.115734 -2.707870 25.000000 17.910448 17.040359 733.448 706.44 713.961333
2017-07-31 52.270951 78.555964 710.981345 689.470691 667.960036 732.492 754.002655 775.513309 797.023964 43.817012 ... 705.271080 720.109675 -7.922307 -3.750757 25.000000 18.437900 20.652174 732.492 705.36 714.310667
2017-08-01 51.962526 68.851409 710.275225 688.518450 666.761674 732.032 753.788775 775.545550 797.302326 40.884718 ... 708.647386 719.985736 -7.235464 -4.447699 33.333333 30.306346 47.325103 732.032 707.50 715.000000
2017-08-02 50.915136 58.847455 709.612406 687.652812 665.693218 731.572 753.531594 775.491188 797.450782 36.591989 ... 711.364924 719.901901 -6.503203 -4.858800 33.333333 36.466165 48.073022 731.572 708.54 715.828000
2017-08-03 50.669388 48.127187 708.178782 686.161563 664.144345 730.196 752.213218 774.230437 796.247655 34.785664 ... 711.843283 719.715008 -6.174472 -5.121934 33.333333 40.137931 49.170124 730.196 709.48 716.636000
2017-08-04 50.734549 39.638298 706.625343 684.878686 663.132028 728.372 750.118657 771.865314 793.611972 36.868687 ... 711.095522 719.448824 -6.101826 -5.317913 33.333333 34.366197 54.861111 728.372 710.92 717.428000
2017-08-07 50.945143 33.666392 705.611808 684.435616 663.259425 726.788 747.964192 769.140384 790.316575 27.349121 ... 712.463681 719.337013 -5.528649 -5.360060 33.333333 45.180723 60.914761 726.788 713.96 718.218667
2017-08-08 50.011645 27.821933 704.577792 684.179583 663.781375 724.976 745.374208 765.772417 786.170625 30.822981 ... 712.242454 719.138670 -5.287799 -5.345608 33.333333 45.317221 50.224215 724.976 713.24 718.970667
2017-08-09 46.166317 21.942502 703.041017 683.426034 663.811050 722.656 742.270983 761.885966 781.500950 35.263549 ... 708.594969 718.848329 -5.876447 -5.451776 33.333333 38.552632 43.410853 722.656 710.14 719.433333
2017-08-10 42.527386 15.475993 701.606572 683.429143 665.251715 719.784 737.961428 756.138857 774.316285 37.472284 ... 703.863313 718.204698 -6.821097 -5.725640 33.333333 37.660668 42.424242 719.784 706.46 719.646667

260 rows × 24 columns

ローソク足の準備


In [13]:
import matplotlib.dates as mdates

dateIdx = df.jst.map(mdates.date2num)

df_ohlc = pd.DataFrame( {'Date':dateIdx
                        ,'Open':df.open.values
                        ,'High':df.high.values
                        ,'Low':df.low.values
                        ,'Close':df.close.values}
                        ,columns=['Date','Open','High','Low','Close'])

単純移動平均線


In [14]:
fig = plt.figure(figsize=(60,20))

ax = plt.subplot(111)
counts = df_ohlc.shape[0]
ax.grid()
ax.xaxis_date()
ax.set_xlim(dateIdx[counts-1],dateIdx[0])
candlestick_ohlc(ax, df_ohlc.values, width=0.7, alpha=1, colorup='g', colordown='r')

tiIdx = ti.reset_index()["jst"].map(mdates.date2num)

ax.plot(tiIdx, ti['TISMA 5'])
ax.plot(tiIdx, ti['TISMA 25'])
ax.plot(tiIdx, ti['TISMA 75'])
ax.legend()

plt.show()


指数平滑移動平均線


In [15]:
fig = plt.figure(figsize=(60,20))

ax = plt.subplot(111)
counts = df_ohlc.shape[0]
ax.grid()
ax.xaxis_date()
ax.set_xlim(dateIdx[counts-1],dateIdx[0])
candlestick_ohlc(ax, df_ohlc.values, width=0.7, alpha=1, colorup='g', colordown='r')

tiIdx = ti.reset_index()["jst"].map(mdates.date2num)

ax.plot(tiIdx, ti['TIEMA 5'])
ax.plot(tiIdx, ti['TIEMA 25'])
ax.plot(tiIdx, ti['TIEMA 75'])
ax.legend()

plt.show()


ボリンジャーバンド


In [16]:
fig = plt.figure(figsize=(60,20))

ax = plt.subplot(111)
counts = df_ohlc.shape[0]
ax.grid()
ax.xaxis_date()
ax.set_xlim(dateIdx[counts-1],dateIdx[0])
candlestick_ohlc(ax, df_ohlc.values, width=0.7, alpha=1, colorup='g', colordown='r')

tiIdx = ti.reset_index()["jst"].map(mdates.date2num)

ax.plot(tiIdx, ti['TIBBLOW3 25'])
ax.plot(tiIdx, ti['TIBBLOW2 25'])
ax.plot(tiIdx, ti['TIBBLOW1 25'])
ax.plot(tiIdx, ti['TIBBMIDDLE 25'])
ax.plot(tiIdx, ti['TIBBUP1 25'])
ax.plot(tiIdx, ti['TIBBUP2 25'])
ax.plot(tiIdx, ti['TIBBUP3 25'])
ax.legend()

plt.show()


RSI & サイコロジカルライン


In [17]:
fig = plt.figure(figsize=(60,20))

ax = plt.subplot(211)
counts = df_ohlc.shape[0]
ax.grid()
ax.xaxis_date()
ax.set_xlim(dateIdx[counts-1],dateIdx[0])
candlestick_ohlc(ax, df_ohlc.values, width=0.7, alpha=1, colorup='g', colordown='r')

tiIdx = ti.reset_index()["jst"].map(mdates.date2num)

rsi = plt.subplot(212)
rsi.grid()
rsi.xaxis_date()
rsi.set_xlim(dateIdx[counts-1],dateIdx[0])
rsi.plot(tiIdx, ti['TIRSI 9'])
rsi.plot(tiIdx, ti['TIRSI 14'])
rsi.plot(tiIdx, ti['TIPSYCHOLO 12'])
rsi.legend()

plt.show()


MACD & MACDシグナル


In [18]:
fig = plt.figure(figsize=(60,20))

ax = plt.subplot(211)
counts = df_ohlc.shape[0]
ax.grid()
ax.xaxis_date()
ax.set_xlim(dateIdx[counts-1],dateIdx[0])
candlestick_ohlc(ax, df_ohlc.values, width=0.7, alpha=1, colorup='g', colordown='r')

tiIdx = ti.reset_index()["jst"].map(mdates.date2num)

macd = plt.subplot(212)
macd.grid()
macd.xaxis_date()
macd.set_xlim(dateIdx[counts-1],dateIdx[0])
macd.plot(tiIdx, ti['TIMACD 12 26'])
macd.plot(tiIdx, ti['TIMACDSIG 12 26 9'])
macd.legend()

plt.show()


DMI & ADX


In [19]:
fig = plt.figure(figsize=(60,20))

ax = plt.subplot(211)
counts = df_ohlc.shape[0]
ax.grid()
ax.xaxis_date()
ax.set_xlim(dateIdx[counts-1],dateIdx[0])
candlestick_ohlc(ax, df_ohlc.values, width=0.7, alpha=1, colorup='g', colordown='r')

tiIdx = ti.reset_index()["jst"].map(mdates.date2num)

dmi = plt.subplot(212)
dmi.grid()
dmi.xaxis_date()
dmi.set_xlim(dateIdx[counts-1],dateIdx[0])
dmi.plot(tiIdx, ti['TIDIPOS 14'])
dmi.plot(tiIdx, ti['TIDINEG 14'])
dmi.plot(tiIdx, ti['TIADX 14'])
dmi.plot(tiIdx, ti['TIADX 9'], '--')
dmi.legend()

plt.show()



In [ ]: