In [1]:
# 啟動互動式繪圖環境
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
# 引入相依套件
import numpy as np
import pandas as pd
from numpy import random
import matplotlib.pyplot as plt
# 引入檔案
# 資料來源 3008 大立光 2012-8/1 ~ 2014-12/09
# http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/genpage/Report201412/201412_F3_1_8_3008.php?STK_NO=3008&myear=2014&mmon=12
datapath = '/Users/wy/Desktop/3008.txt'
data = pd.read_csv(datapath)

In [3]:
# 看檔案前N筆
data.head(5)


Out[3]:
Date Open High Low Close Volume Adj Close
0 2014-12-09 2265 2300 2235 2290 1137524 2290.00
1 2014-12-08 2375 2395 2275 2285 1389389 2285.00
2 2014-12-05 2400 2430 2340 2370 1059384 2360.00
3 2014-12-04 2405 2440 2395 2400 831362 2400.00
4 2014-12-03 2410 2440 2375 2380 1422947 2380.00

In [4]:
# data詳細資料 總數,平均數,標準差...
data.describe()


Out[4]:
Open High Low Close Volume
count 584.000000 584.000000 584.000000 584.000000 584.000000
mean 1290.816781 1309.916096 1269.823630 1288.195205 1389292.299658
std 625.521153 636.663035 612.475304 623.215506 867885.109465
min 587.000000 599.000000 580.000000 592.000000 256330.000000
25% 785.000000 793.750000 773.750000 782.000000 807529.250000
50% 1015.000000 1030.000000 1000.000000 1010.000000 1176971.500000
75% 1956.250000 1980.000000 1935.000000 1950.000000 1705747.750000
max 2630.000000 2640.000000 2565.000000 2635.000000 6029834.000000

In [5]:
# 技術分析資料來源
# http://hymar.myweb.hinet.net/study/stock/theory/

In [6]:
# Rise Ratio 漲幅比
def RR(data):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止 第一筆data沒有更舊的
        if item-1 >=0:
            # (今日收盤價 - 昨日收盤價)/昨日收盤價
            tmp = (data['Close'][item-1]-data['Close'][item])/data['Close'][item]*100
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  RR 欄位
    data['RR']=tmpSeries

In [7]:
# 威廉指標(WMS%R或%R)
def WMS(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day+1 >= 0:
            # 9日WMS%R =(9日內最高價-第9日收盤價) / (9日內最高價-9日內最低價)*100
            # [item-day+1:item+1] 今日區間 [item-day+1] 第N日 583-9=574+1=575
            tmp = (data['High'][item-day+1:item+1].max()-data['Close'][item-day+1])/(data['High'][item-day+1:item+1].max()-data['Low'][item-day+1:item+1].min())*100
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  WMS 欄位
    data['WMS']=tmpSeries

In [8]:
# 買賣意願指標 day 建議26
def BR(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day >= 0:
            # 26日BR = (今日最高價 - 昨日收盤價)26天累計總數 / (昨日收盤價 - 今日最低價)26天累計總數
            # [(item-day+1)-1:(item+1)-1] 有-1 今日區間 [(item-day+1):(item+1)] 昨日區間
            tmp = (data['High'][(item-day+1)-1:(item+1)-1].sum()-data['Close'][item-day+1:item+1].sum())/(data['Close'][item-day+1:item+1].sum()-data['Low'][(item-day+1)-1:(item+1)-1].sum())
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  BR 欄位
    data['BR']=tmpSeries

In [9]:
# 買賣氣勢指標 day建議26
def AR(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day+1 >= 0:
            # 26日AR = (最高價 - 開盤價)26天累計總數 / (開盤價 - 最低價)26天累計總數
            # [item-day+1:item+1] 今日區間
            tmp = (data['High'][item-day+1:item+1].sum()-data['Open'][item-day+1:item+1].sum())/(data['Open'][item-day+1:item+1].sum()-data['Low'][item-day+1:item+1].sum())
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  AR 欄位
    data['AR']=tmpSeries

In [10]:
# 平均成交量 mean volumn day建議12
def MV(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day+1 >= 0:
            # N日平均量 = N日內的成交量總和 / N
            # [item-day+1:item+1] 今日區間
            tmp = data['Volume'][item-day+1:item+1].mean()
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  MV 欄位
    data['MV']=tmpSeries

In [11]:
# 移動平均線(MA,Moving Average) 建議12
def MA(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day+1 >= 0:
            # 移動平均數 = 採樣天數的股價合計 / 採樣天數
            # [item-day+1:item+1] 今日區間
            tmp = data['Close'][item-day+1:item+1].mean()
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  MA 欄位
    data['MA'+str(day)]=tmpSeries

In [12]:
# 心理線(PSY) 建議13
def PSY(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day >= 0:
            # 13日PSY值 = ( 13日內之上漲天數 / 13 ) * 100
            # [item-day+1-1:item+1-1] 跳一天 最早的天沒有RR值
            count = 0
            for a in data['RR'][item-day+1-1:item+1-1]:
                if a > 0:
                    count+=1
            tmp = float(count)/float(13)*100
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  PSY 欄位
    data['PSY']=tmpSeries

In [13]:
# 能量潮(OBV) 建議12
def OBV(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day >= 0:
            # 今日OBV值 = 最近12天股價上漲日成交量總和 - 最近12天股價下跌日成交量總和
            # 先由 ['RR'] 求出boolean值 > 0 True 套入['Volume']符合True全加起來
            bolRise = data['RR'][item-day+1-1:item+1-1]>0
            sumVolRise = data['Volume'][item-day+1-1:item+1-1][bolRise].sum() 
            bolDesc = data['RR'][item-day+1-1:item+1-1]<0
            sumVolDesc = data['Volume'][item-day+1-1:item+1-1][bolDesc].sum()   
            
            tmp = sumVolRise-sumVolDesc
#             可切換 OBV累積12日移動平均值 = (最近12天股價上漲日成交量總和 - 最近12天股價下跌日成交量總和) / 12
#             tmp = (sumVolRise-sumVolDesc)/12
            tmpList.append(tmp)
            
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  OBV 欄位
    data['OBV']=tmpSeries

In [14]:
# 數量指標(VR) 建議12
def VR(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day >= 0:
            # VR = ( N日內上漲日成交值總和 + 1/2*N日內平盤日成交值總和) / ( N日內下跌日成交值總和 + 1/2*N日內平盤日成交值總和)* 100%
            # 先由 ['RR'] 求出boolean值 > 0 True 套入['Volume']符合True全加起來
            bolRise = data['RR'][item-day+1-1:item+1-1]>0
            sumVolRise = data['Volume'][item-day+1-1:item+1-1][bolRise].sum()
            
            bolNorm = data['RR'][item-day+1-1:item+1-1] == 0
            sumVolNorm = data['Volume'][item-day+1-1:item+1-1][bolNorm].sum()
            
            bolDesc = data['RR'][item-day+1-1:item+1-1]<0
            sumVolDesc = data['Volume'][item-day+1-1:item+1-1][bolDesc].sum()   
            
            tmp = (sumVolRise+0.5*sumVolNorm)/(sumVolDesc+0.5*sumVolNorm)*100
            tmpList.append(tmp)
            
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  VR 欄位
    data['VR']=tmpSeries

In [15]:
# 相對強弱指標(RSI) 建議6
def RSI(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day >= 0:
            # 6日RSI=100*6日內收盤上漲總幅度平均值 / (6日內收盤上漲總幅度平均值 - 6日內收盤下跌總幅度平均值)
            # 先由 ['RR'] 求出boolean值 > 0 True 套入['Volume']符合True全加起來
            bolRise = data['RR'][item-day+1-1:item+1-1]>0
            meanRise = data['RR'][item-day+1-1:item+1-1][bolRise].mean() 
            bolDesc = data['RR'][item-day+1-1:item+1-1]<0
            meanDesc = data['RR'][item-day+1-1:item+1-1][bolDesc].mean()   
            
            tmp = 100*meanRise/(meanRise-meanDesc)
            tmpList.append(tmp)
            
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  RSI 欄位
    data['RSI']=tmpSeries

In [16]:
# 乖離率(BIAS)
def BIAS(data,day):
    # 由於 data 新到舊 0~xxx,遞增,因此需反轉陣列
    dataList = range(data['Date'].size)
    dataList.reverse()
    tmpList = []
    
    for item in dataList:
        # 防止前day沒有data
        if item-day+1 >= 0:
            # N日乖離率 = (當日股價 - N日股價移動平均數) / N日平均股價
            tmp = (data['Close'][item-day+1]-data['MA'+str(day)][item-day+1])/data['MA'+str(day)][item-day+1]*100
            tmpList.append(tmp)
        
    # 前day 沒data會出現NA
    tmpList.reverse()
    tmpSeries = pd.Series(tmpList)
    
    # create  BIAS 欄位
    data['BIAS']=tmpSeries

In [17]:
# RR漲幅比須先算出來,後續指標需用到此項
RR(data)
WMS(data,9)
BR(data,26)
AR(data,26)
MV(data,12)
MA(data,12)
# 算BIAS須先求出MA值
BIAS(data,12)
PSY(data,13)
OBV(data,12)
VR(data,12)
RSI(data,6)

In [18]:
MA(data,20)
MA(data,60)

In [19]:
data


Out[19]:
Date Open High Low Close Volume Adj Close RR WMS BR AR MV MA12 BIAS PSY OBV VR RSI MA20 MA60
0 2014-12-09 2265 2300 2235 2290 1137524 2290.00 0.218818 77.083333 1.549133 0.925764 1210435.166667 2370.000000 -3.375527 53.846154 2186310 135.437646 13.012632 2293.75 2228.500000
1 2014-12-08 2375 2395 2275 2285 1389389 2285.00 -3.586498 95.000000 1.753086 0.973451 1227501.916667 2373.750000 -3.738810 53.846154 -293539 96.092285 34.167668 2285.25 2228.333333
2 2014-12-05 2400 2430 2340 2370 1059384 2360.00 -1.250000 58.333333 2.079137 1.077670 1318681.416667 2378.333333 -0.350385 61.538462 3579393 158.463963 32.991976 2276.75 2227.750000
3 2014-12-04 2405 2440 2395 2400 831362 2400.00 0.840336 41.666667 2.119403 1.079602 1374651.166667 2363.333333 1.551481 69.230769 6369798 225.810546 29.695832 2265.50 2228.250000
4 2014-12-03 2410 2440 2375 2380 1422947 2380.00 0.210526 52.777778 2.117647 1.099010 1352415.083333 2340.833333 1.673193 61.538462 6102965 220.540299 33.138487 2246.00 2229.000000
5 2014-12-02 2445 2445 2365 2375 1278528 2375.00 -3.651116 38.461538 2.172662 1.130435 1284325.750000 2318.750000 2.425876 61.538462 4074143 171.868532 43.850538 2231.25 2230.000000
6 2014-12-01 2320 2465 2320 2465 1362046 2460.00 3.354298 2.857143 2.311111 1.118483 1259344.000000 2297.916667 7.271079 69.230769 6331418 244.211983 57.139589 2220.50 2230.666667
7 2014-11-28 2395 2410 2375 2385 743512 2385.00 0.421053 24.657534 2.412698 0.954545 1274118.166667 2269.166667 5.104664 61.538462 6508708 248.250153 61.000854 2207.75 2230.416667
8 2014-11-27 2440 2475 2370 2375 1411415 2375.00 -2.061856 27.027027 2.298507 1.018265 1334315.166667 2243.750000 5.849582 61.538462 4299320 173.414454 77.115052 2195.25 2230.750000
9 2014-11-26 2385 2440 2365 2425 1772042 2420.00 1.677149 4.477612 2.174825 0.931915 1315727.916667 2222.500000 9.111361 61.538462 6899103 255.216841 83.173660 2181.25 2231.250000
10 2014-11-25 2320 2385 2295 2385 1086333 2380.00 3.470716 0.000000 2.087838 0.896266 1293641.083333 2196.666667 8.573596 61.538462 3620061 160.822798 82.206694 2166.00 2232.666667
11 2014-11-24 2355 2385 2305 2305 1030740 2305.00 -1.284797 22.857143 1.813253 0.768939 1340803.416667 2176.666667 5.895865 53.846154 4186009 170.331627 84.049086 2150.75 2234.166667
12 2014-11-21 2360 2365 2295 2335 1342325 2335.00 -0.213675 9.090909 1.489583 0.701068 1405655.166667 2152.083333 8.499516 53.846154 3407788 150.635502 88.576391 2133.00 2237.666667
13 2014-11-20 2215 2340 2215 2340 2483543 2335.00 6.849315 0.000000 1.561856 0.781362 1390235.083333 2131.250000 9.794721 53.846154 3592829 154.894289 84.194981 2117.75 2241.083333
14 2014-11-19 2150 2220 2125 2190 1731021 2190.00 2.816901 14.634146 1.229075 0.648208 1311212.000000 2116.250000 3.484938 53.846154 -425980 94.728141 54.664922 2102.00 2244.583333
15 2014-11-18 2130 2140 2110 2130 564529 2130.00 0.709220 41.860465 1.198238 0.641447 1274055.250000 2117.916667 0.570529 53.846154 -871861 89.209991 39.703643 2095.00 2249.083333
16 2014-11-17 2160 2160 2105 2115 605875 2115.00 -0.470588 48.837209 1.133891 0.688742 1297663.083333 2118.333333 -0.157356 46.153846 -588567 92.715991 38.940173 2096.00 2254.416667
17 2014-11-14 2145 2160 2110 2125 978747 2125.00 0.235849 46.666667 1.195745 0.686275 1325490.666667 2116.666667 0.393701 53.846154 -922498 89.036406 58.101249 2098.00 2258.916667
18 2014-11-13 2085 2145 2085 2120 1539336 2120.00 1.923077 48.888889 1.192469 0.723684 1384254.500000 2116.250000 0.177200 53.846154 -217332 97.417079 56.324827 2099.75 2264.166667
19 2014-11-12 2115 2130 2035 2080 1465876 2075.00 -1.886792 66.666667 1.066406 0.653125 1438014.166667 2112.916667 -1.557878 46.153846 427784 105.084076 57.318331 2109.75 2269.833333
20 2014-11-11 2140 2170 2100 2120 1188368 2120.00 0.236407 48.888889 1.164609 0.675159 1480802.000000 2102.083333 0.852329 53.846154 -85670 99.040397 56.444339 2116.50 2275.083333
21 2014-11-10 2155 2220 2110 2115 1507000 2115.00 -1.398601 51.111111 1.307359 0.741830 1492986.333333 2094.583333 0.974736 46.153846 60542 100.678141 65.595582 2124.25 2280.500000
22 2014-11-07 2015 2150 2015 2145 1652281 2140.00 6.716418 28.813559 1.310044 0.769231 1533952.833333 2087.083333 2.775005 46.153846 -431056 95.423667 56.536485 2132.25 2285.166667
23 2014-11-06 2125 2140 2005 2010 1808961 2010.00 -3.597122 74.576271 1.243590 0.732673 1570399.750000 2079.166667 -3.326653 38.461538 -4172981 63.741235 50.780466 2138.75 2289.833333
24 2014-11-05 2190 2190 2080 2085 1157284 2080.00 -3.472222 49.152542 1.179916 0.730897 1524903.833333 2090.833333 -0.278996 38.461538 -3627030 66.915529 51.512550 2152.00 2296.833333
25 2014-11-04 2210 2230 2160 2160 1535266 2160.00 -2.262443 23.728814 1.343612 0.853659 1639096.500000 2096.666667 3.020668 38.461538 -4997342 59.480737 67.057787 2163.00 2302.666667
26 2014-11-03 2155 2230 2140 2210 1285140 2195.00 3.512881 6.779661 1.231405 0.849315 1727913.916667 2096.666667 5.405405 46.153846 -6063151 54.749427 57.775931 2173.50 2306.500000
27 2014-10-31 2115 2145 2115 2135 847823 2135.00 1.909308 28.571429 1.058394 0.735385 1773595.000000 2105.833333 1.385042 38.461538 -5514978 58.840557 51.204840 2182.50 2307.666667
28 2014-10-30 2120 2125 2085 2095 939806 2095.00 -1.179245 42.857143 1.031915 0.741641 1873131.833333 2112.500000 -0.828402 30.769231 -8405066 45.567712 58.226685 2189.25 2310.833333
29 2014-10-29 2100 2160 2085 2120 1683913 2115.00 1.923077 48.611111 1.017422 0.754545 1875432.500000 2127.500000 -0.352526 30.769231 -7465260 50.182530 47.386065 2195.00 2314.416667
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
554 2012-09-12 647 659 645 651 1816815 651.00 1.401869 16.666667 1.818182 1.368056 1431117.166667 636.166667 2.331674 69.230769 6457200 220.512801 32.253303 628.85 NaN
555 2012-09-11 655 655 641 642 960640 642.00 -1.834862 35.416667 1.731707 1.366197 1565427.166667 635.000000 1.102362 69.230769 8068920 250.592850 32.506709 626.70 NaN
556 2012-09-10 651 654 647 654 957356 652.00 1.710731 10.416667 1.571429 1.168675 1558444.000000 632.833333 3.344746 69.230769 9906402 325.275392 49.819844 625.30 NaN
557 2012-09-07 657 659 643 643 1540887 643.00 0.155763 33.333333 1.339623 1.055249 1523994.916667 629.500000 2.144559 61.538462 8949046 291.651109 44.308368 623.10 NaN
558 2012-09-06 650 659 642 642 2916863 642.00 0.469484 35.416667 NaN 1.205882 1483828.916667 627.083333 2.378738 53.846154 6349264 210.839481 58.139092 621.00 NaN
559 2012-09-05 636 639 630 639 960852 638.00 0.629921 17.948718 NaN NaN 1311019.416667 624.833333 2.267271 46.153846 3432401 155.812161 59.017498 619.35 NaN
560 2012-09-04 643 645 629 635 1688727 634.00 -1.244168 28.205128 NaN NaN 1293946.250000 622.833333 1.953439 38.461538 2471549 137.861301 48.812911 617.30 NaN
561 2012-09-03 624 644 618 643 1818053 643.00 3.210273 7.142857 NaN NaN 1277915.250000 621.166667 3.514891 46.153846 2663921 142.047320 53.950377 615.40 NaN
562 2012-08-31 612 623 611 623 919990 622.00 0.483871 54.761905 NaN NaN 1206406.083333 619.000000 0.646204 38.461538 1805811 128.502915 42.379114 612.85 NaN
563 2012-08-30 619 622 616 620 792807 620.00 -0.481541 61.904762 NaN NaN 1213885.083333 617.750000 0.364225 38.461538 -123917 98.312969 46.896247 612.70 NaN
564 2012-08-29 619 624 613 623 884487 622.00 0.646204 54.761905 NaN NaN 1300819.000000 617.250000 0.931551 46.153846 2504904 138.228440 49.427466 612.85 NaN
565 2012-08-28 633 639 618 619 1915929 619.00 -2.825746 64.285714 NaN NaN 1323282.000000 616.166667 0.459832 38.461538 2774460 142.342252 55.551521 NaN NaN
566 2012-08-27 624 646 622 637 3428535 637.00 3.409091 21.428571 NaN NaN 1351032.333333 614.666667 3.633406 46.153846 2441456 135.458108 91.990121 NaN NaN
567 2012-08-24 609 620 607 616 876842 615.00 0.325733 47.826087 NaN NaN 1392435.250000 612.333333 0.598802 46.153846 2938291 142.673815 57.235665 NaN NaN
568 2012-08-23 612 614 608 614 543967 613.00 0.000000 50.000000 NaN NaN 1454304.916667 610.833333 0.518417 46.153846 3680727 153.456469 85.880139 NaN NaN
569 2012-08-22 613 615 604 614 1058895 612.00 -0.162602 46.428571 NaN NaN 1477309.333333 609.416667 0.752085 46.153846 4500747 168.054115 75.207211 NaN NaN
570 2012-08-21 615 620 615 615 843149 615.00 0.000000 30.769231 NaN NaN 1521128.166667 607.583333 1.220683 46.153846 3974921 155.676555 62.140943 NaN NaN
571 2012-08-20 615 622 612 615 755974 614.00 0.000000 30.769231 NaN NaN 1639213.750000 608.000000 1.151316 NaN 1714745 119.099601 65.052146 NaN NaN
572 2012-08-17 616 622 612 615 1496355 615.00 -0.324149 30.769231 NaN NaN 1778671.666667 608.666667 1.040526 NaN NaN NaN 58.150206 NaN NaN
573 2012-08-16 614 617 609 617 959943 616.00 1.480263 27.500000 NaN NaN NaN NaN NaN NaN NaN NaN 54.432362 NaN NaN
574 2012-08-15 620 620 607 608 1009738 608.00 -0.977199 50.000000 NaN NaN NaN NaN NaN NaN NaN NaN 47.589506 NaN NaN
575 2012-08-14 615 627 613 614 1836014 614.00 0.655738 38.095238 NaN NaN NaN NaN NaN NaN NaN NaN 43.245720 NaN NaN
576 2012-08-13 607 611 601 610 1154043 607.00 1.497504 NaN NaN NaN NaN NaN NaN NaN NaN NaN 27.167099 NaN NaN
577 2012-08-10 599 610 599 601 2248933 601.00 -1.313629 NaN NaN NaN NaN NaN NaN NaN NaN NaN 31.120882 NaN NaN
578 2012-08-09 589 615 588 609 3925370 609.00 1.839465 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
579 2012-08-08 592 602 592 598 1619278 597.00 0.167504 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
580 2012-08-07 593 602 593 597 820020 596.00 0.844595 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
581 2012-08-06 628 628 590 592 1584721 592.00 -4.516129 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
582 2012-08-03 627 627 608 620 2260176 619.00 -0.481541 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
583 2012-08-01 614 630 611 623 2429469 622.00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

584 rows × 20 columns


In [20]:
# Rise Ratio 漲幅比
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['RR'])
ax.set_title('RR')


Out[20]:
<matplotlib.text.Text at 0x10782add0>

In [21]:
# 威廉指標(WMS%R或%R)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['WMS'])
ax.set_title('WMS')


Out[21]:
<matplotlib.text.Text at 0x107a13450>

In [22]:
# 買賣意願指標
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['BR'])
ax.set_title('BR')


Out[22]:
<matplotlib.text.Text at 0x107b8d690>

In [23]:
# 買賣氣勢指標
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['AR'])
ax.set_title('AR')


Out[23]:
<matplotlib.text.Text at 0x107db2050>

In [24]:
# 平均成交量 mean volumn
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['MV'])
ax.set_title('MV')


Out[24]:
<matplotlib.text.Text at 0x107ecf750>

In [25]:
# 移動平均線(MA,Moving Average)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['MA12'])
ax.set_title('MA12')


Out[25]:
<matplotlib.text.Text at 0x1081ee950>

In [26]:
# 乖離率(BIAS)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['BIAS'])
ax.set_title('BIAS')


Out[26]:
<matplotlib.text.Text at 0x10829eb90>

In [27]:
# 心理線(PSY)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['PSY'])
ax.set_title('PSY')


Out[27]:
<matplotlib.text.Text at 0x1083bbd90>

In [28]:
# 能量潮(OBV)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['OBV'])
ax.set_title('OBV')


Out[28]:
<matplotlib.text.Text at 0x1084dcf50>

In [29]:
# 數量指標(VR)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['VR'])
ax.set_title('VR')


Out[29]:
<matplotlib.text.Text at 0x1085fe950>

In [30]:
# 相對強弱指標(RSI)
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['RSI'])
ax.set_title('RSI')


Out[30]:
<matplotlib.text.Text at 0x10882b350>

In [32]:
# MA20 和 MA60 比較 看出黃金交叉和死亡交叉
# 0為最新資料 向左越來越新
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(data['MA20'],color='#9D442F',label='MA20')
ax.plot(data['MA60'],color='#5D947E',label='MA60')
ax.legend(loc='best')


Out[32]:
<matplotlib.legend.Legend at 0x108c1e690>

In [ ]: