#记录K线

    科技2022-07-31  93

    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])
    Processed: 0.015, SQL: 8