import pandas
as pd
import numpy
as np
from pandas_datareader
import data
as web
start
= '2015-03-02'
end
= '2015-03-31'
ssec2015
= web
.get_data_yahoo
('000001.SS', start
, end
)
from matplotlib
.dates
import DateFormatter
,WeekdayLocator
, DayLocator
,MONDAY
,date2num
from datetime
import datetime
ssec2015
.date
=[date2num
(datetime
.strptime
(date
,"%Y-%m-%d")) for date
in ssec2015
.date
]
ssec15
= ssec2015
.iloc
[:,:4]
ssec15
['date']=ssec15
.index
ssec15list
= list()
for i
in range (len(ssec15
)):
ssec15list
.append
(ssec15
.iloc
[i
,:])
import datetime
import matplotlib
.pyplot
as plt
import mpl_finance
from mpl_finance
import candlestick_ohlc
import jqdatasdk
ax
=plt
.subplot
()
mondays
=WeekdayLocator
(MONDAY
)
weekFormatter
= DateFormatter
('%y-%m-%d')
ax
.xaxis
.set_major_locator
(mondays
)
ax
.xaxis
.set_minor_locator
(DayLocator
())
ax
.xaxis
.set_major_formatter
(weekFormatter
)
plt
.rcParams
['font.sans-serif']=['SimHei']
plt
.rcParams
['axes.unicode_minus']=False
ax
.set_title
("上证综指2015年3月份K线图")
candlestick_ohlc
(ax
,ssec15list
,width
=0.7,colorup
='r',colordown
='g')
plt
.setp
(plt
.gca
().get_xticklabels
(),rotation
=50,horizontalalignment
='center')
plt
.show
()
import tushare
as ts
from matplotlib
.dates
import DateFormatter
,WeekdayLocator
, DayLocator
,MONDAY
,date2num
from datetime
import datetime
import datetime
import matplotlib
.pyplot
as plt
import mpl_finance
from mpl_finance
import candlestick_ohlc
import jqdatasdk
hs300
= ts
.get_k_data
('hs300',start
='2015-03-02',end
='2015-03-31')
hs300
= hs300
.iloc
[:,:6]
hs300
.date
=[date2num
(datetime
.strptime
(date
,"%Y-%m-%d")) for date
in hs300
.date
]
hs300list
=list()
for i
in range (len(hs300
)):
hs300list
.append
(hs300
.iloc
[i
,:])
ax
=plt
.subplot
()
mondays
=WeekdayLocator
(MONDAY
)
weekFormatter
= DateFormatter
('%y-%m-%d')
ax
.xaxis
.set_major_locator
(mondays
)
ax
.xaxis
.set_minor_locator
(DayLocator
())
ax
.xaxis
.set_major_formatter
(weekFormatter
)
plt
.rcParams
['font.sans-serif']=['SimHei']
plt
.rcParams
['axes.unicode_minus']=False
ax
.set_title
("沪深300 2015年3月份K线图")
candlestick_ohlc
(ax
,hs300list
,width
=0.7,colorup
='r',colordown
='g')
plt
.setp
(plt
.gca
().get_xticklabels
(),rotation
=50,horizontalalignment
='center')
plt
.show
()
一、 利用python捕捉“早晨之星”的形态
#获取上证综指2012年的日度交易数据 #日期为2012年1月1日到2012年12月31日
import pandas
as pd
import numpy
as np
from pandas_datareader
import data
as web
import tushare
as ts
start
= '2012-01-01'
end
= '2012-12-31'
ssec2012
= ts
.get_k_data
('sh',start
='2012-01-01',end
='2012-12-31')
ssec2012
.index
= pd
.to_datetime
(ssec2012
.date
)
ssec2012
=ssec2012
.iloc
[:,1:6]
#提取收盘价数据
Close
= ssec2012
.close
#提取开盘价数据
Open
= ssec2012
.open
#接着计算每一个交易数据的收盘价与开盘价的差值 CL_OP
CLOp
= Close
- Open
CLOp
.head
()
CLOp
.describe
()
#捕捉绿色实体、十字星、和红色实体
Shape
=[0,0,0]
lag1CLOp
= CLOp
.shift
(1)
lag2CLOp
= CLOp
.shift
(2)
for i
in range (3,len(CLOp
)):
if all([lag2CLOp
[i
]<-11,abs(lag1CLOp
[i
])<2,CLOp
[i
]>6,abs(CLOp
[i
])>abs(lag2CLOp
[i
]*0.5)]):
Shape
.append
(1)
else:
Shape
.append
(0)
#查看Shape中元素第一次取值为1所在的index
Shape
.index
(1)
#然后定义十字星的实体的位置,十字星实体要在起前后绿色实体和红色实体的下方 #准备数据
lagOpen
= Open
.shift
(1)
lag2Close
= Close
.shift
(2)
lagClose
= Close
.shift
(1)
#捕捉符合十字星位置的蜡烛图
Doji
=[0,0,0]
for i
in range (3,len(Open
),1):
if all([lagOpen
[i
]<lag2Close
[i
],(lagClose
[i
]<lag2Close
[i
]),lagOpen
[i
]<Open
[i
],lagClose
[i
]<Open
[i
]]):
Doji
.append
(1)
else:
Doji
.append
(0)
Doji
.count
(1)
#刻画下跌趋势 #定义下跌趋势 #先计算收益率
ret
= Close
/Close
.shift
(1)-1
lag1ret
= ret
.shift
(1)
lag2ret
= ret
.shift
(2)
#寻找向下趋势
Trend
=[0,0,0]
for i
in range (3,len(ret
)):
if all ([lag1ret
[i
]<0,lag2ret
[i
]<0]):
Trend
.append
(1)
else:
Trend
.append
(0)
#3个条件刻画完以后,用python自动寻找“早晨之星”的形态。
StarSig
= []
for i
in range(len(Trend
)):
if all([Shape
[i
]==1,Doji
[i
]==1,Trend
[i
]==1]):
StarSig
.append
(1)
else:
StarSig
.append
(0)
for i
in range(len(StarSig
)):
if StarSig
[i
]==1:
print(ssec2012
.index
[i
])