글

라벨이 알고리즘인 게시물 표시

[Algorithm #정리] Python의 sorting 알고리즘 및 예제 코드

이미지
정렬(Sorting) 데이터를 특정 기준에 따라 순서대로 나열하는 것. 정렬 알고리즘 selection sort (선택정렬) 가장 작은것 탐색 ⇒ 자리 변경 ⇒ 반복 시간복잡도 N-1만큼 작은것 탐색, {N*(N+1)}/2 ⇒ O(N^2) insertion sort (삽입 정렬) 하나씩 ⇒ 적절한 위치에 삽입 무조건 자리를 바꾸는 선택정렬과의 차이 ⇒ 삽입정렬은 필요시에만 자리 변경 발생 시간복잡도 반복문 2번 사용 O(N^2), 단 최선(완벽하게 정렬된)의 경우 O(N) quick sort (퀵 정렬) 기준이 되는 요소(pivot)지정, 한쪽 끝 ⇒ 한쪽은 pivot보다 작은것, 다른쪽은 pivot보다 큰 것⇒ 큰 것 ↔ 작은 것 자리 교환 ⇒ 반복 ⇒ 큰 것 탐색과 작은 것 탐색 간 교차 발생 시 ⇒ 작은 것 ↔ pivot 간 자리 교환(분할, partition 발생) → 파티션 기준 데이터 분할 발생 ⇒ pivot 다시 선정 ⇒ 반복 ⇒ 분할된 리스트의 요소가 1이거나 비는 경우 ⇒ 종료 시간복잡도 평균 O(NlogN) 단, 최악의 경우 O(N^2). 데이터가 이미 정렬되어 있는 경우다. <code1> array = [ 5 , 7 , 9 , 0 , 3 , 1 , 6 , 2 , 4 , 8 ] def quick_sort ( array , start , end ): if start >= end : return pivot = start print ( 'pivot element is ' , pivot , end = ':' ) left = start + 1 right = end while left <= right : while left <= end and array [ left ] <= array [ pivot ]: ...

[Python_trading] 파이썬 알고리즘 트레이딩_종목코드로 데이터값 찾기

#[Python_trading] 파이썬 알고리즘 트레이딩_종목코드로 데이터값 찾기 import win32com.client instMarketEye = win32com.client.Dispatch('CpSysDib.MarketEye') instMarketEye.SetInputValue(0,(17,4,67,70,111)) instMarketEye.SetInputValue(1,'A003540') instMarketEye.BlockRequest() print("종목명 : ",instMarketEye.GetDataValue(1,0)) //type : 종목코드 배열, value : 종목코드 print("현재가 : ",instMarketEye.GetDataValue(0,0)) //type : 필드값, value : 종목코드 print('PER : ',instMarketEye.GetDataValue(2,0)) print('EPS : ',instMarketEye.GetDataValue(3,0)) print('최근 분기 연월 : ',instMarketEye.GetDataValue(4,0)) ===MANUAL=== MarketEye : 주식, 지수, 선물/옵션 등의 여러종목의 필요항목들을 한번에 수신한다 Request/Reply 방식 object.SetInputValue(type,value) : type 에 해당되는 입력 데이터를 value 값으로 지정한다.

[Python_trading] 파이썬 알고리즘 트레이딩_해당 주의 종목코드 찾기

#파이썬 알고리즘 트레이딩_해당 주의 종목코드 찾기 import win32com.client instCpStockCode = win32com.client.Dispatch("CpUtil.CpStockCode") ncode = instCpStockCode.NameToCode('NAVER') # 종목이름 : 네이버를 찾을 것이다. #CodeToIndex(code) : code에 해당되는 Index를 반환한다. naverindex = instCpStockCode.CodeToIndex(ncode) # 네이버의 종목 코드가 들어간다. print(ncode) print(naverindex) ===Result=== C:\Anaconda3\python.exe "G:/내 드라이브/python_API_Programming/ch10/06-2.py" A035420 883 ===MANUAL=== value=object.NameToCode(name) : name에 해당되는 코드를 반환한다. value=object.CodeToName(code)  : code에 해당되는 종목명을 반환한다. value=object.GetData(type,index) : 해당 인덱스의 종목데이터를 구한다. - type : 데이터 종류 (0 : 종목코드, 1 : 종목명, 2 : FullCode)

[Python_trading] 파이썬 알고리즘 트레이딩_해당 주의 거래량으로 의사결정하기

#파이썬 알고리즘 트레이딩_해당 주의 거래량으로 의사결정하기 import win32com.client #종목의 거래량 #'A00340' 종목에 대한 거래량을 SetInputValue(5,8) 을 통해 받아온다. 여기서 5는 필드, 8은 거래량을 말한다. instStockChart = win32com.client.Dispatch('CpSysDib.StockChart') instStockChart.SetInputValue(0,"A003540") instStockChart.SetInputValue(1,ord('2')) instStockChart.SetInputValue(4,60) instStockChart.SetInputValue(5,8) instStockChart.SetInputValue(6,ord('D')) instStockChart.SetInputValue(9,ord('1')) instStockChart.BlockRequest() volumes=[] numData = instStockChart.GetHeaderValue(3) for i in range(numData):     volume=instStockChart.GetDataValue(0,i)     volumes.append(volume) print(volumes) #avg = 60개 데이터에 대한 거래량에서 금일 거래량을 제외한 것 / 59개의 데이터 #이것이 바로 평균 거래량이며, 평균 거래량 대비 금일 거래량이 10배가 넘는다면 '대박주'를 출력하고 아니하면 '일반주' 를 출력한다. avg = (sum(volumes) - volumes[0]) / (len(volumes)-1) if(volumes[0] > avg*10):     print('대박주') else:     print('일반주',volu...