3. 输出该股票所有开盘价比前日收盘价跌幅超过5%的日期
In [232]: df.head()
Out[232]:
open close high low ma5 ma30
date
2007-03-01 21.254 19.890 21.666 19.469 NaN NaN
2007-03-02 19.979 19.728 20.166 19.503 NaN NaN
2007-03-05 19.545 18.865 19.626 18.504 NaN NaN
2007-03-06 18.704 19.235 19.554 18.597 NaN NaN
2007-03-07 19.252 19.758 19.936 19.090 19.4952 NaN
In [233]: df.shape
Out[233]: (2888, 6)
In [234]: df = df.dropna()
In [235]: df.shape
Out[235]: (2859, 6)
In [236]: golden_cross = []
In [237]: death_cross = []
In [238]: for i in range(1,len(df)):
...: if df['ma5'][i]>=df['ma30'][i] and df['ma5'][i-1]<df['ma30'][i-1]:
...: golden_cross.append(df.index[i].to_pydatetime())
...: if df['ma5'][i]<=df['ma30'][i] and df['ma5'][i-1]>df['ma30'][i-1]:
...: death_cross.append(df.index[i].to_pydatetime())
...:
In [239]: golden_cross
Out[239]:
[datetime.datetime(2007, 6, 14, 0, 0),
datetime.datetime(2007, 12, 10, 0, 0),
datetime.datetime(2008, 4, 23, 0, 0),
datetime.datetime(2008, 7, 30, 0, 0),
datetime.datetime(2008, 8, 6, 0, 0),
datetime.datetime(2008, 8, 26, 0, 0),
datetime.datetime(2008, 11, 14, 0, 0),
datetime.datetime(2008, 12, 5, 0, 0),
datetime.datetime(2009, 3, 6, 0, 0),
datetime.datetime(2009, 5, 6, 0, 0),
datetime.datetime(2009, 6, 2, 0, 0),
datetime.datetime(2009, 9, 14, 0, 0),
datetime.datetime(2010, 3, 22, 0, 0),
datetime.datetime(2010, 6, 23, 0, 0),
datetime.datetime(2010, 12, 9, 0, 0),
datetime.datetime(2011, 2, 18, 0, 0),
datetime.datetime(2011, 3, 4, 0, 0),
datetime.datetime(2011, 4, 6, 0, 0),
datetime.datetime(2011, 6, 30, 0, 0),
datetime.datetime(2011, 10, 28, 0, 0),
datetime.datetime(2012, 1, 13, 0, 0),
datetime.datetime(2012, 4, 17, 0, 0),
datetime.datetime(2012, 6, 13, 0, 0),
datetime.datetime(2012, 9, 13, 0, 0),
datetime.datetime(2012, 9, 27, 0, 0),
datetime.datetime(2012, 12, 7, 0, 0),
datetime.datetime(2013, 4, 22, 0, 0),
datetime.datetime(2013, 5, 9, 0, 0),
datetime.datetime(2013, 8, 14, 0, 0),
datetime.datetime(2013, 10, 14, 0, 0),
datetime.datetime(2013, 11, 1, 0, 0),
datetime.datetime(2014, 1, 21, 0, 0),
datetime.datetime(2014, 4, 2, 0, 0),
datetime.datetime(2014, 5, 28, 0, 0),
datetime.datetime(2014, 7, 4, 0, 0),
datetime.datetime(2014, 9, 5, 0, 0),
datetime.datetime(2014, 10, 31, 0, 0),
datetime.datetime(2015, 3, 17, 0, 0),
datetime.datetime(2015, 5, 25, 0, 0),
datetime.datetime(2015, 6, 8, 0, 0),
datetime.datetime(2015, 9, 22, 0, 0),
datetime.datetime(2015, 12, 4, 0, 0),
datetime.datetime(2015, 12, 17, 0, 0),
datetime.datetime(2016, 3, 4, 0, 0),
datetime.datetime(2016, 4, 14, 0, 0),
datetime.datetime(2016, 5, 31, 0, 0),
datetime.datetime(2016, 7, 1, 0, 0),
datetime.datetime(2016, 8, 9, 0, 0),
datetime.datetime(2016, 11, 1, 0, 0),
datetime.datetime(2017, 1, 18, 0, 0),
datetime.datetime(2017, 3, 24, 0, 0),
datetime.datetime(2017, 4, 26, 0, 0),
datetime.datetime(2017, 8, 22, 0, 0),
datetime.datetime(2017, 10, 12, 0, 0),
datetime.datetime(2017, 12, 8, 0, 0),
datetime.datetime(2017, 12, 21, 0, 0),
datetime.datetime(2018, 1, 12, 0, 0),
datetime.datetime(2018, 3, 19, 0, 0),
datetime.datetime(2018, 6, 6, 0, 0),
datetime.datetime(2018, 7, 24, 0, 0),
datetime.datetime(2018, 8, 9, 0, 0),
datetime.datetime(2018, 8, 24, 0, 0),
datetime.datetime(2018, 10, 22, 0, 0),
datetime.datetime(2018, 11, 6, 0, 0),
datetime.datetime(2018, 11, 19, 0, 0),
datetime.datetime(2019, 1, 21, 0, 0)]
In [240]: death_cross
Out[240]:
[datetime.datetime(2007, 6, 4, 0, 0),
datetime.datetime(2007, 11, 6, 0, 0),
datetime.datetime(2007, 12, 13, 0, 0),
datetime.datetime(2008, 5, 20, 0, 0),
datetime.datetime(2008, 7, 31, 0, 0),
datetime.datetime(2008, 8, 13, 0, 0),
datetime.datetime(2008, 9, 8, 0, 0),
datetime.datetime(2008, 11, 24, 0, 0),
datetime.datetime(2009, 3, 3, 0, 0),
datetime.datetime(2009, 4, 28, 0, 0),
datetime.datetime(2009, 5, 18, 0, 0),
datetime.datetime(2009, 8, 11, 0, 0),
datetime.datetime(2009, 11, 26, 0, 0),
datetime.datetime(2010, 4, 29, 0, 0),
datetime.datetime(2010, 11, 16, 0, 0),
datetime.datetime(2010, 12, 20, 0, 0),
datetime.datetime(2011, 2, 23, 0, 0),
datetime.datetime(2011, 3, 17, 0, 0),
datetime.datetime(2011, 5, 5, 0, 0),
datetime.datetime(2011, 7, 21, 0, 0),
datetime.datetime(2011, 11, 21, 0, 0),
datetime.datetime(2012, 3, 9, 0, 0),
datetime.datetime(2012, 6, 5, 0, 0),
datetime.datetime(2012, 7, 27, 0, 0),
datetime.datetime(2012, 9, 17, 0, 0),
datetime.datetime(2012, 10, 29, 0, 0),
datetime.datetime(2013, 2, 25, 0, 0),
datetime.datetime(2013, 4, 24, 0, 0),
datetime.datetime(2013, 5, 13, 0, 0),
datetime.datetime(2013, 10, 9, 0, 0),
datetime.datetime(2013, 10, 17, 0, 0),
datetime.datetime(2013, 12, 23, 0, 0),
datetime.datetime(2014, 1, 28, 0, 0),
datetime.datetime(2014, 5, 19, 0, 0),
datetime.datetime(2014, 6, 25, 0, 0),
datetime.datetime(2014, 8, 26, 0, 0),
datetime.datetime(2014, 9, 15, 0, 0),
datetime.datetime(2015, 2, 2, 0, 0),
datetime.datetime(2015, 5, 18, 0, 0),
datetime.datetime(2015, 6, 2, 0, 0),
datetime.datetime(2015, 6, 18, 0, 0),
datetime.datetime(2015, 12, 1, 0, 0),
datetime.datetime(2015, 12, 10, 0, 0),
datetime.datetime(2016, 1, 5, 0, 0),
datetime.datetime(2016, 4, 12, 0, 0),
datetime.datetime(2016, 5, 6, 0, 0),
datetime.datetime(2016, 6, 27, 0, 0),
datetime.datetime(2016, 8, 8, 0, 0),
datetime.datetime(2016, 9, 29, 0, 0),
datetime.datetime(2016, 12, 20, 0, 0),
datetime.datetime(2017, 3, 2, 0, 0),
datetime.datetime(2017, 4, 13, 0, 0),
datetime.datetime(2017, 8, 11, 0, 0),
datetime.datetime(2017, 9, 20, 0, 0),
datetime.datetime(2017, 12, 7, 0, 0),
datetime.datetime(2017, 12, 18, 0, 0),
datetime.datetime(2017, 12, 29, 0, 0),
datetime.datetime(2018, 2, 8, 0, 0),
datetime.datetime(2018, 3, 28, 0, 0),
datetime.datetime(2018, 6, 25, 0, 0),
datetime.datetime(2018, 8, 7, 0, 0),
datetime.datetime(2018, 8, 16, 0, 0),
datetime.datetime(2018, 10, 15, 0, 0),
datetime.datetime(2018, 10, 31, 0, 0),
datetime.datetime(2018, 11, 14, 0, 0),
datetime.datetime(2018, 11, 20, 0, 0)]
In [241]:
In [260]: death_cross = df[sr1 & sr2.shift(1)].index
In [261]: golden_cross = df[~(sr1 | sr2.shift(1))].index
In [262]: golden_cross
Out[262]:
DatetimeIndex(['2007-04-12', '2007-06-14', '2007-12-10', '2008-04-23',
'2008-07-30', '2008-08-06', '2008-08-26', '2008-11-14',
'2008-12-05', '2009-03-06', '2009-05-06', '2009-06-02',
'2009-09-14', '2010-03-22', '2010-06-23', '2010-12-09',
'2011-02-18', '2011-03-04', '2011-04-06', '2011-06-30',
'2011-10-28', '2012-01-13', '2012-04-17', '2012-06-13',
'2012-09-13', '2012-09-27', '2012-12-07', '2013-04-22',
'2013-05-09', '2013-08-14', '2013-10-14', '2013-11-01',
'2014-01-21', '2014-04-02', '2014-05-28', '2014-07-04',
'2014-09-05', '2014-10-31', '2015-03-17', '2015-05-25',
'2015-06-08', '2015-09-22', '2015-12-04', '2015-12-17',
'2016-03-04', '2016-04-14', '2016-05-31', '2016-07-01',
'2016-08-09', '2016-11-01', '2017-01-18', '2017-03-24',
'2017-04-26', '2017-08-22', '2017-10-12', '2017-12-08',
'2017-12-21', '2018-01-12', '2018-03-19', '2018-06-06',
'2018-07-24', '2018-08-09', '2018-08-24', '2018-10-22',
'2018-11-06', '2018-11-19', '2019-01-21'],
dtype='datetime64[ns]', name='date', freq=None)
In [263]: death_cross
Out[263]:
DatetimeIndex(['2007-06-04', '2007-11-06', '2007-12-13', '2008-05-20',
'2008-07-31', '2008-08-13', '2008-09-08', '2008-11-24',
'2009-03-03', '2009-04-28', '2009-05-18', '2009-08-11',
'2009-11-26', '2010-04-29', '2010-11-16', '2010-12-20',
'2011-02-23', '2011-03-17', '2011-05-05', '2011-07-21',
'2011-11-21', '2012-03-09', '2012-06-05', '2012-07-27',
'2012-09-17', '2012-10-29', '2013-02-25', '2013-04-24',
'2013-05-13', '2013-10-09', '2013-10-17', '2013-12-23',
'2014-01-28', '2014-05-19', '2014-06-25', '2014-08-26',
'2014-09-15', '2015-02-02', '2015-05-18', '2015-06-02',
'2015-06-18', '2015-12-01', '2015-12-10', '2016-01-05',
'2016-04-12', '2016-05-06', '2016-06-27', '2016-08-08',
'2016-09-29', '2016-12-20', '2017-03-02', '2017-04-13',
'2017-08-11', '2017-09-20', '2017-12-07', '2017-12-18',
'2017-12-29', '2018-02-08', '2018-03-28', '2018-06-25',
'2018-08-07', '2018-08-16', '2018-10-15', '2018-10-31',
'2018-11-14', '2018-11-20'],
dtype='datetime64[ns]', name='date', freq=None)
In [264]: