def test(instr,df60):
df1 = df60[df60['instrument']==instr]
df = df1[["high","low"]]
data = df.values.tolist()
data.reverse()
#print(data)
for i in range(len(data)):
if data[i+1][1] > min([x[1] for x in data[:i+1]]) and data[i+1][0] > max([x[0] for x in data[:i+1]]):
a=i+1
b=min([x[1] for x in data[:i+1]])
break
#print(a)
#print(b)
for i in range(len(data)):
if data[i+1+a][0] < max([x[0] for x in data[:i+1+a]]) and data[i+1+a][1] < min([x[1] for x in data[:i+1+a]]):
c = i+1+a
d = max([x[0] for x in data[:i+1+a]])
break
#print(c)
#print(d)
for i in range(len(data)):
if data[i+1+c][1] > min([x[1] for x in data[:i+1+c]]) and data[i+1+c][0] > max([x[0] for x in data[:i+1+c]]):
e = i+1+c
f = min([x[1] for x in data[:i+1+c]])
break
#print(e)
#print(f)
for i in range(len(data)):
if data[i+1+e][0] < max([x[0] for x in data[:i+1+e]]) and data[i+1+e][1] < min([x[1] for x in data[:i+1+e]]):
g = i+1+e
h = max([x[0] for x in data[:i+1+e]])
break
#print(g)
#print(h)
if (h-f)*0.585 < (d-b):
print(instr)
l=DataSource('bar1d_CN_STOCK_A').read(instruments=[],start_date='2021-08-27',end_date=None,fields=['open','close','high','low','amount','adjust_factor'])
l['open+']=l['open']/l['adjust_factor']
l['close+']=l['close']/l['adjust_factor']
l['high+']=l['high']/l['adjust_factor']
l['low+']=l['low']/l['adjust_factor']
c1 = l['date']>='2021-08-27'
c2 = l['amount']>1000000000
c3 = l['close+']>4.99
l1 = l.loc[c1&c2&c3,['instrument','date','open+','high+','close+','low','amount']]
xuangu= l1['instrument'].values.tolist()
df60 = DataSource("bar60m_CN_STOCK_A").read(instruments=xuangu,start_date="2021-06-10")
#print(df60)
for instr in xuangu:
test(instr,df60)