티스토리 뷰

목적 : KOSPI와 KOSDAQ에서 거래됐던 1분 단위 주식 데이터를 이용하여 어느 종목이 일간 변동폭이 큰지 또는 작은지를 판단하여 1일 거래 시 최적의 수익 구조를 얻고자 함.

분석 결과

  • I01 : 전 시간 대(1분 전) 고점 대비 현 시간 대 고점 사이의 증가분
  • I02 : 전 시간 대(1분 전) 저점 대비 현 시간 대 고점 사이의 증가분
  • I03 : 전 시간 대(1분 전) 고점 대비 현 시간 대 고점 사이의 증가분
  • I04 : 전 시간 대(1분 전) 저점 대비 현 시간 대 저점 사이의 증가분
  • D01 : 전 시간 대(1분 전) 고점 대비 현 시간 대 고점 사이의 감소분
  • D02 : 전 시간 대(1분 전) 저점 대비 현 시간 대 고점 사이의 감소분
  • D03 : 전 시간 대(1분 전) 고점 대비 현 시간 대 고점 사이의 감소분
  • D04 : 전 시간 대(1분 전) 저점 대비 현 시간 대 저점 사이의 감소분
	def AnalyzeData_10080(self, datas, yesterPrice=None):
		if not datas: return None
		if len(datas) < 180: 
			print('Not enough data number')
			#return None

		if not yesterPrice:
			yesterPrice = datas[0]['curr']
		low1 = datas[0]['low']
		high1 = datas[0]['high']
		Increase01 = 0
		Increase02 = 0
		Increase03 = 0
		Increase04 = 0
		Decrease01 = 0
		Decrease02 = 0
		Decrease03 = 0
		Decrease04 = 0
		Amplitude = 0
		count1 = 0
		valid30min = True
		valid60min = True
		for data1 in datas:
			if valid30min and (data1['time']>='093000'):
				valid30min = False
				Increase01_30 = Increase01
				Increase02_30 = Increase02
				Increase03_30 = Increase03
				Increase04_30 = Increase04
				Decrease01_30 = Decrease01
				Decrease02_30 = Decrease02
				Decrease03_30 = Decrease03
				Decrease04_30 = Decrease04
				Count_30 = count1
				Amplitude_30 = Amplitude
			if valid60min and (data1['time']>='100000'):
				valid60min = False
				Increase01_60 = Increase01
				Increase02_60 = Increase02
				Increase03_60 = Increase03
				Increase04_60 = Increase04
				Decrease01_60 = Decrease01
				Decrease02_60 = Decrease02
				Decrease03_60 = Decrease03
				Decrease04_60 = Decrease04
				Count_60 = count1
				Amplitude_60 = Amplitude
			Diff01 = data1['high'] - high1
			Diff02 = data1['high'] - low1
			Diff03 = data1['low'] - high1
			Diff04 = data1['low'] - low1
			Diff05 = data1['high'] - data1['low']
			if Diff01 > 0: Increase01 += Diff01
			if Diff02 > 0: Increase02 += Diff02
			if Diff03 > 0: Increase03 += Diff03
			if Diff04 > 0: Increase04 += Diff04
			if Diff01 < 0: Decrease01 -= Diff01
			if Diff02 < 0: Decrease02 -= Diff02
			if Diff03 < 0: Decrease03 -= Diff03
			if Diff04 < 0: Decrease04 -= Diff04
			Amplitude += Diff05

			high1 = data1['high']
			low1 = data1['low']
			count1 += 1
			try:
				if Increase01_30 < 0:
					Increase01_30 = Increase01
			except:
				Increase01_30 = Increase01
				Increase02_30 = Increase02
				Increase03_30 = Increase03
				Increase04_30 = Increase04
				Decrease01_30 = Decrease01
				Decrease02_30 = Decrease02
				Decrease03_30 = Decrease03
				Decrease04_30 = Decrease04
				Count_30 = count1
				Amplitude_30 = Amplitude
			try:
				if Increase01_60 < 0:
					Increase01_60 = Increase01
			except:
				Increase01_60 = Increase01
				Increase02_60 = Increase02
				Increase03_60 = Increase03
				Increase04_60 = Increase04
				Decrease01_60 = Decrease01
				Decrease02_60 = Decrease02
				Decrease03_60 = Decrease03
				Decrease04_60 = Decrease04
				Count_60 = count1
				Amplitude_60 = Amplitude


		ret1 = {
			'I01': format(Increase01/yesterPrice, '.3f'),
			'I02': format(Increase02/yesterPrice, '.3f'),
			'I03': format(Increase03/yesterPrice, '.3f'),
			'I04': format(Increase04/yesterPrice, '.3f'),
			'D01': format(Decrease01/yesterPrice, '.3f'),
			'D02': format(Decrease02/yesterPrice, '.3f'),
			'D03': format(Decrease03/yesterPrice, '.3f'),
			'D04': format(Decrease04/yesterPrice, '.3f'),
			'Amp': format(Amplitude/yesterPrice, '.3f'),
			'I01_30': format(Increase01_30/yesterPrice, '.3f'),
			'I02_30': format(Increase02_30/yesterPrice, '.3f'),
			'I03_30': format(Increase03_30/yesterPrice, '.3f'),
			'I04_30': format(Increase04_30/yesterPrice, '.3f'),
			'D01_30': format(Decrease01_30/yesterPrice, '.3f'),
			'D02_30': format(Decrease02_30/yesterPrice, '.3f'),
			'D03_30': format(Decrease03_30/yesterPrice, '.3f'),
			'D04_30': format(Decrease04_30/yesterPrice, '.3f'),
			'Amp_30': format(Amplitude_30/yesterPrice, '.3f'),
			'Cn_60': Count_60,
			'I01_60': format(Increase01_60/yesterPrice, '.3f'),
			'I02_60': format(Increase02_60/yesterPrice, '.3f'),
			'I03_60': format(Increase03_60/yesterPrice, '.3f'),
			'I04_60': format(Increase04_60/yesterPrice, '.3f'),
			'D01_60': format(Decrease01_60/yesterPrice, '.3f'),
			'D02_60': format(Decrease02_60/yesterPrice, '.3f'),
			'D03_60': format(Decrease03_60/yesterPrice, '.3f'),
			'D04_60': format(Decrease04_60/yesterPrice, '.3f'),
			'Amp_60': format(Amplitude_60/yesterPrice, '.3f'),
			'Cn_30': Count_30,

			'Cn': count1
		}

		return ret1

 

반응형