본문 바로가기

Little Investment/Study investing

주식 엔벨로프(Envelope)에 대해 알아보기

반응형

주식 엔벨로프(Envelope)에 대해 알아보기

이번 포스트에서는 주식 보조지표 중 엔벨로프(Envelope)에 대해서 알아보고자 한다.
엔벨로프가 무엇인지, 계산 방법 및 매매 방법을 한번 간단하게 정리해 보았으며, 키움증권 HTS/MTS(영웅문)의 차트에 적용하는 방법도 함께 알아보자.
그리고 Python으로 엔벨로프를 계산하고 차트를 구현하는 방법에 대한 코드도 함께 작성해보았다.

목차

엔벨로프(Envelope)란?

✔ Envelope

엔벨로프(Envelope)는 영어로 '봉투'라는 뜻을 가진 단어이다.
주식 시장에서의 Envelope는 주가의 움직임이 마치 봉투(일정 범위) 안에서 움직일 것이라는 개념에서 유래되었다.

이는 주가의 일정 백분율만큼의 상하한을 설정하여 그 범위 내에서 주가의 움직임을 관찰하는 기술적 분석 도구이다.
주가가 이 봉투 범위를 벗어나면 과도하게 상승하거나 하락했다고 판단할 수 있다.
Envelope는 주가의 변동성을 측정하고, 과매수나 과매도 구간을 식별하는 데 유용하게 사용된다.


Envelope

엔벨로프 계산 방법

✔ \(n\)일 기간동안의 이동평균 계산

\( \text{MA}(n) = \frac{\sum_{i=1}^{n} \text{종가}_i}{n} \)

주로 사용되는 이동평균은 단순 이동평균(SMA)이나 지수 이동평균(EMA)이다.
이동평균의 기간을 선택하여 해당 기간 동안의 주가 평균을 계산한다.

\(n\)은 보통 20 또는 50일을 사용한다.
단기적인 변동성을 살펴보려면 20일 이동평균을, 중장기적인 트렌드를 분석하려면 50일 이동평균을 사용할 수 있다.


✔ 저항선(Upper Envelope)

상위 경계선은 이동평균선에 주어진 비율(\(p\)%)를 더한 값으로 계산한다.

\( \text{Upper Envelope} = \text{MA}(n) \times (1 + \frac{p}{100}) \)


✔ 지지선(Lower Envelope)

하위 경계선은 이동평균선에서 주어진 비율(\(p\)%)를 뺀 값으로 계산한다.

\( \text{Lower Envelope} = \text{MA}(n) \times (1 - \frac{p}{100}) \)


이동평균선에서 일정 백분율만큼 위아래로 벗어나는 선을 그린다.
예를 들어, 5%의 엔벨로프를 설정한다면, 이동평균선에서 5% 위의 선과 5% 아래의 선을 그리는 것이다.

엔벨로프의 저항/지지선의 \(p\)는 1%~10% 사이로 설정된다.
이 백분율은 주식이나 금융 상품의 변동성에 따라 조절될 수 있다.
예를 들어, 변동성이 높은 주식의 경우 더 넓은 백분율을 설정하여 주가의 큰 움직임을 포착할 수 있다.


엔벨로프 HTS/MTS 적용 및 설정

여기서는 키움증권 HTS/MTS인 영웅문에서 적용하는 방법에 대해서만 알아보겠다.


✔ 영웅문 HTS에서 엔벨로프 적용

  1. 영웅문 HTS에서 종합차트를 실행한다.
  2. 종합차트 좌측에 메뉴항목검색에서 Envelope를 검색한다.
  3. 검색된 결과 중에 [기] Envelope를 더블 클릭하면 차트에 엔벨로프가 적용된다.

영웅문 HTS 엔벨로프 적용


✔ 영웅문 HTS에서 엔벨로프 설정

엔벨로프가 적용된 상태에서 차트 상단의 Envelope 중심/저항/지지선을 더블 클릭하거나, 차트에 나타나는 Envelope의 라인을 더블클릭하면 엔벨로프의 설정창을 실행할 수 있다.
해당 메뉴에서는 지표조건설정에서 Period(n일간의 이동평균 기준), Percent(저항/지지선의 퍼센트 \(p\))를 설정할 수 있다.
아래 이미지에서는 20일간의 이동평균(중심선) 기준으로 저항/지지선의 간격이 5%로 설정되어 있는 것을 볼 수 있다.
그리고 라인설정에서는 중심/저항/지지선 각각의 라인 스타일을 설정할 수 있다.


영웅문 HTS 엔벨로프 설정창



✔ 영웅문 MTS에서 엔벨로프 적용

  1. 차트 화면에서 설정(톱니바퀴) 버튼을 클릭한다.
  2. 지표설정 메뉴에서 '지표명 입력'에 Envelope를 검색한다.
  3. 검색된 결과에서 (보조) Envelope를 클릭한다.
  4. 보조지표 메뉴에 Envelope 좌측의 체크 표시를 클릭한다.

영웅문 MTS 엔벨로프 적용

영웅문 MTS 적용된 모습


✔ 영웅문 MTS에서 엔벨로프 설정

엔벨로프를 적용할 때 보조지표 메뉴에서 Envelope 체크하는 화면에서 우측에 설정 버튼(톱니바퀴)을 통해 지표 조건 및 라인 스타일을 설정할 수 있다.
Periode와 Percent의 설정방법은 HTS와 동일하다.


영웅문 MTS 엔벨로프 설정창

엔벨로프 매매방법

엔벨로프를 활용한 매매방법은 생각보다 매우 간단하다.

✔ 엔벨로프 활용

  • 과매수 구간
    주가가 엔벨로프의 저항선을 돌파 또는 근접하는 경우, 주가가 과도하게 상승했다고 판단하여 매도 신호로 간주될 수 있다.

  • 과매도 구간
    주가가 엔벨로프의 지지선을 돌파 또는 근접하는 경우, 주가가 과도하게 하락했다고 판단하여 매수 신호로 간주될 수 있다.

엔벨로프 매매 방법

엔벨로프의 한계
  • 설정 값의 주관성
    엔벨로프의 백분율 설정(\(p\))은 주관적이다.
    너무 큰 백분율을 설정하면 매매 신호를 놓칠 수 있으며, 너무 작은 백분율을 설정하면 자주 거짓 신호를 받을 수 있다.

  • 횡보하는 시장에서의 한계
    주가가 큰 트렌드 없이 횡보하는 시장에서는 엔벨로프의 매매 신호가 효과적이지 않을 수 있다.

  • 지연된 신호
    엔벨로프는 이동평균을 기반으로 하기 때문에, 실제 주가 움직임에 지연된 신호를 제공할 수 있다.

엔벨로프는 주가의 상대적인 과열 또는 과도한 하락을 감지하는 데 유용한 도구이지만, 그 자체만으로는 완벽한 매매 전략을 구성하기 어렵다.
따라서 다른 보조지표와 함께 사용하여 전체적인 시장 상황을 종합적으로 분석하는 것이 중요하다.

Python으로 엔벨로프 구현

아래 코드는 Python으로 엔벨로프를 계산하고 차트를 생성하는 코드이다.
각 코드에 대한 자세한 설명은 아래 포스트를 참고 부탁드린다.

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.dates import DateFormatter

df = pd.read_csv('../TEST.csv')
df['date'] = pd.to_datetime(df['date'])

# 이동평균 및 Envelope 계산
window_size = 20
envelope_percentage = 0.025

df['20D_MA'] = df['close'].rolling(window=window_size).mean()
df['Upper_Envelope'] = df['20D_MA'] * (1 + envelope_percentage)
df['Lower_Envelope'] = df['20D_MA'] * (1 - envelope_percentage)

# 진한 색상으로 변경
plt.figure(figsize=(14, 7))
plt.plot(df['date'], df['close'], label='Close', color='black', linewidth=1)
plt.plot(df['date'], df['Upper_Envelope'], label='Upper Envelope', color='#FF1493', linestyle='--')
plt.plot(df['date'], df['Lower_Envelope'], label='Lower Envelope', color='#1E90FF', linestyle='--')
plt.title('Close Price with Envelopes')
plt.xlabel('Date')
plt.ylabel('Price')

# x-axis 설정: 월 단위로 YYYY-MM 형식으로 설정
ax = plt.gca()
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.xticks(rotation=45)

plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

위 코드를 실행하면 아래와 같은 차트를 생성한다.


Python 엔벨로프 차트

오늘은 주식 보조지표 중 하나인 엔벨로프(Envelope)에 대해서 알아보는 시간을 가졌다.
엔벨로프의 경우 유명한 일본 주식 투자자인 BNF가 주로 사용하는 보조지표로도 알려져 있는 것으로 알고 있다.
한계점에서도 작성한 바와 같이 엔벨로프로만 판단을 내리지 말고 다른 보조지표와 함께 사용하여 종합적으로 판단하는 것이 가장 중요하다.

커피 한 잔으로
저를 응원해주세요!
반응형

loading