2. 해외선물/2-4. 해외선물 API (사용)

(키움증권 해외선물 OpenAPI-W) 상승/하락 추세 파악 (1) 양봉/음봉 개수 구하기

봄이오네 2023. 2. 4. 23:14
반응형
목 차
1. 들어가며
2. 사전설명
   1) 1분봉 양봉/음봉 설명
   2) 양봉/음봉에 대한 투자심리
3. 코드설명
4. 전체코드
5. 마치며

 

1. 들어가며

필자가 구상하고 있는 시스템은 볼린저밴드와 RSI를 통한 단기추세 반대매매에 해당한다. 다만, 금리상승의 악재 등에 따른 원웨이(one-way) 하방 때 long을 잡는다면 손실이 발생할 수 있다.

 

아래 < 그림 >은 나스닥(23년물, NQH23)이 3시간 정도 쭈욱 빠지는 모습이다. ('23.2.4.토. 새벽)

필자는 볼린저밴드의 하단 터치 + RSI가 35미만인 상황에서 long 진입을 가정하고 시스템을 돌릴 예정인데,  < 그림 >처럼 진행된 상황에서 계속 long만 잡는다면 손실이 계속 누적될 것이다.

 

어떻게 하면 원웨이 상/하방의 상황에서 수익을 낼 것인가?

  • 단기 상승장에서 short 진입은 최소화하고 long 진입을 하고,
  • 단기 하락장에서 long 진입은 최소화하고, short 진입을 하는 방법을 알아보자.

 

그림1. 나스닥(23.3월물)의 02:20 ~ 05:04 원웨이 하방으로 빠지고 있다.


2. 사전설명

1) 1분봉 양봉/음봉 설명

1분봉은 시가, 고가, 저가, 종가(이하 "OHLC")로 이루어진다. OHLC가 무엇인지는 인터넷 검색을 하길 권한다.

양봉/음봉이 되는 원리는 무엇일까?

 

  • 양봉 : 종가 - 시가 > 0이면 양봉이며, 차트에는 빨간색으로 나타난다.
  • 음봉 : 종가 - 시가 < 0이면 음봉이며, 차트에는 파란색으로 나타난다.
  • 보합 : 종가 - 시가 =0 이면 보합이며, 차트에는 선으로 표기된다.

 

보합은 주가의 가격 변화가 거의 없는 상태를 말하는데, 여기서는 "종가-시가"가 0인 경우로 한정해서 설명한다.

 

2) 양봉/음봉에 대한 투자심리

투자전략 중 하나로 적삼병, 흑삼병이 출현하면, 그 다음에 진입하는 전략이 있다.

  • 적삼병 : 3분(일) 연속 저가와 고가가 높아지는 추세를 고려하여, 4번째 봉에서 매수(long)로 진입하는 전략
  • 흑삼병 : 3분(일) 연속 저가와 고가가 낲아지는 추세를 고려하여, 4번째 봉에서 매도(short)로 진입하는 전략

물론 주식/선물이 그렇게 단순한 원리는 아니지만, 적삼병, 즉 3번의 양봉이 출현하고 4번째를 매수(long)으로 진입하는 심리는 계속 오르는 추세가 지속될 것이라는 투자자들의 마음이 반영될 결과물일 것이다.

 

필자가 관심있는 것은 적삼병의 4번째 진입이 관심있는 것이 아니라, 파이썬에서 양봉/음봉을 어떻게 구분할 수 있느냐이다. (흑삼병은 적삼병 반대로 구현하면 되니, 별도 설명하지 않을 것이다.)

 

 우리가 흔히 말하는 상승장이란 양봉이 많이 출현하는 경우를 말한다. 하락장은 음봉이 많이 나타나는 경우이다. 필자는 양봉/음봉 구분 후, 양/음봉 개수를 구해서 상승장과 하락장을 임의로 구분해 보는 건 어떨까?


3. 코드설명

시가와 종가의 차이를 생각해보면, 종가-시가 > 0이면 양봉이고, 종가-시가 < 0이면 음봉이다.

즉 시가 종가의 차이를 구해보자는 것이다.

 

그림2. 양봉과 음봉 개수를 구하는 방법

 

1즐 : 1분봉의 "종가 - 시가"의 차이 6개를 임의로 나타내보았다. 음봉 2개(-2, -1)이고 양봉 3개(1,2,3)이다.

2줄 : 양봉을 positive_price에 넣어준다.

3줄 : 음봉을 negative_price에 넣어준다.

5줄 : 1줄의 raw_data 리스트 개수를 구한다.

 

7줄 : for문을 통해 1줄(raw_data)의 요소를 추출한다.

8줄~9줄 : 양수이면 2줄의 positive_price에 넣는다.

10줄~11줄 : 음수이면 3줄의 negagive_pric에 넣는다.

 

13줄~16줄 : 양봉, 음봉의 모음을 출력한다.


4. 전체코드

양봉과 음봉 개수를 구하는 방법은 아래와 같다.

 

더보기
raw_data = [-2,-1,0,1,2,3]
positive_price = []
negative_price = []

print(len(raw_data))

for i in raw_data:
    if i > 0:
        positive_price.append(i)
    elif i < 0:
        negative_price.append(i)

print(positive_price)
print(len(positive_price))
print(negative_price)
print(len(negative_price))

 

 


5. 마치며

양봉과 음봉 개수를 알아보았다. 명확한 기준은 없지만, 우리가 흔히 말하는 상승/하락장은 양봉/음봉의 출현 개수를 보면서 상/하락장을 이야기한다.

 

단기 하락장에서 long 잡을 필요 없고, 단기 상승장에서 short을 잡을 필요는 없다.

다음 시간에는 양봉/음봉의 개수를 구현해보자.

반응형