주식공부/파이썬 주식

파이썬 주식, 지지선과 저항선 순번 매기기 - 1

일찍자요 2022. 10. 3. 23:37
반응형

일단 아이디어만 구현 해본다.

아래와 같은 순서로 진행한다.

1) list에 현재가 추가하고 를 오름차순으로 중복제거 정렬한다.
2) 딕셔너리화 하여 순번을 value값으로 넣어준다.
3) 모든 키값의 value에서 현재가 value를 빼준다. 물론 현재가 value에서도 그렇게 한다.
4) 현재가 value가 0 즉, 기준점이 되고, 오름차순 이므로, 좌측으로는 -1,-2,-3 이렇게 지지점 value가 매겨지고, 우측으로는 1,2,3 이렇게 저항점 value가 매겨짐.
5) 지지라인 개수 카운팅하고, 저항라인 개수 카운팅해서 순서대로 base1,base2, base3 또는 우측으로 res1,res2,res3 이렇게 value를 추가해준다.

 

아이디어 예시로, 아래와 같이 지지선과 저항선이 list에 마구 담겼다고 생각해보자.

뭔가 정렬이 필요할 것 같다.

현재가는 입력해준다.

from collections import OrderedDict

data = [2,3,11,4,56,100,34,13,134,235534,12,13,232,1354354,32,3123414,413,31,5,6,6,7,33,3,1246,1,1,456,6,34,5,6,3]
b = input("현재가 입력하세요 : ")

 

1. 일단 현재가를 data에 담기

  - append로 추가해주고, 내림차순 후 정렬해준다.

## 데이터에 현재가 추가하기
data.append(int(b))
new_list= list(OrderedDict.fromkeys(sorted(data, reverse=False)))  # sorted로 내림차순정렬하고 OrderedDict로 중복제거

2. 지지와 저항 value를 관리해 줄 딕셔너리를 정의하고 담아준다.

 - key값으로 지지,저항의 가격을 넣어주고, value 값으로 align(순번), 'name'을 정해준다.

 - name에다가 추후 지지와 저항 순번을 매겨서 넣어줄 예정이다.

# 딕셔너리 정의하고 순번 정하기
new_dict = {}
cnt = 0
for price in new_list:
    new_dict.update({price : {'align' : cnt, 'name' : ''}})
    cnt = cnt + 1

 

3. 지지,저항 순번 구분하고 이름 달아주기

 - 현재가를 베이스로 할 것이므로, 각각의 value값들에서 현재가의 value를 빼준다.

 - 아래 코드에서 gap이 그것이고, gap은 곧 순번이 된다.

  ex) 14번째 지지선은 -14, 현재가는 0, 3번째 저항은 3이 된다.

  - 그렇게 하고 위에서 정의되었던 align값을 gap 결과로 바꿔준다.     

  - 그리고, 음수는 지지선 이므로 base라고 하고, 양수는 저항선이므로 res 라고 해주자. 현재가는 그냥 현재가.

# 현재가를 베이스로 지지(-),저항(+) 순번 구분하기
for price in new_dict.keys():    
    gap = new_dict[price]['align']-new_dict[int(b)]['align']        
    # print(gap)
    # print('base' + str(abs(gap)))
    # print(new_dict[price]['align'])
    new_dict[price]['align'] = gap
    if gap < 0 :                
        new_dict[price]['name'] = 'base' + str(abs(gap))
    elif gap == 0:        
        new_dict[price]['name'] = '현재가'
    elif gap > 0:        
        new_dict[price]['name'] = 'res' + str(abs(gap))

그리고, 돌려보면..

현재가 50을 넣은 기준으로 보면 잘 출력이 되는 걸 확인 할 수 있다.

물론, 실제 매수,매도 시에는 이렇게나 많은 지지,저항 라인을 따질 일은 없다...

그만큼 분할매수 할 시드도 없을것이고, 

그렇게 분할매수 많이 들어가는건 이미 잘못 진입한거다.ㅎㅎ

 

 

다음번 포스팅 시에는 실제 종목의 주가 정보로 결과를 뽑아 보겠습니다.

 

반응형