BIBOT
BIBOT
BIBOT
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • 경제뉴스 일기 (11)
    • 바이낸스 (17)
    • 코딩 (15)
    • 기술적 트레이딩 (27)
    • 기타 (1)
    • 경제상식 (6)
    • 일상 (1)

블로그 메뉴

  • 홈
  • 선물거래 계산기
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 서버
  • 파이썬
  • 파이썬 바이낸스
  • 우분투

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BIBOT
기술적 트레이딩

기술적 트레이딩 5. 볼린저밴드(Bollinger Bands)

기술적 트레이딩 5. 볼린저밴드(Bollinger Bands)
기술적 트레이딩

기술적 트레이딩 5. 볼린저밴드(Bollinger Bands)

2023. 3. 1. 20:00

볼린저밴드(Bollinger Bands)란?

볼린저밴드(Bollinger Bands)는 가격의 변동성을 측정하는 기술적 분석 지표 중 하나입니다. 볼린저밴드는 1980년대에 존 볼린저(John Bollinger)가 개발한 지표로, 상대적인 가격 수준을 나타내며, 상한선, 중심선, 하한선으로 이루어진 밴드 형태로 표시됩니다.

  1. 볼린저밴드 구성 요소
    볼린저밴드는 크게 세 가지 요소로 구성됩니다.
  • 중심선(Middle Band)
  • 상한선(Upper Band)
  • 하한선(Lower Band)

중심선은 가격의 이동평균(Moving Average, MA)을 나타내며, 일반적으로 20일 이동평균을 사용합니다. 이동평균은 최근 20일간의 종가를 평균한 값으로, 가격의 흐름을 부드럽게 나타냅니다.

상한선과 하한선은 중심선을 기준으로 일정한 거리에 위치한 선으로, 이 거리는 표준편차(Standard Deviation, SD)를 이용하여 계산됩니다. 보통은 중심선에서 2SD를 더한 것이 상한선이 되고, 중심선에서 2SD를 뺀 것이 하한선이 됩니다. 이때, SD는 주가 변동성의 지표로서, 과거의 가격 데이터를 이용하여 계산됩니다.

  1. 볼린저밴드의 해석

볼린저밴드의 상하한선은 가격의 변동성에 따라 위아래로 움직입니다. 일반적으로 가격이 상한선 위에 있을수록 과매수 상태로 판단하여 매도 포지션을 취하고, 가격이 하한선 아래에 있을수록 과매도 상태로 판단하여 매수 포지션을 취합니다. 중심선은 가격의 추세를 나타내며, 상승 추세에서는 중심선 위에서 가격이 움직이고, 하락 추세에서는 중심선 아래에서 가격이 움직입니다.

볼린저밴드는 가격의 변동성이 커질수록 밴드의 폭이 넓어지며, 가격의 변동성이 작아질수록 밴드의 폭이 좁아집니다. 따라서, 밴드 폭이 좁아지는 구간에서는 가격의 변동이 크게 일어날 가능성이 작아지는 것을 말합니다. 이때, 변동성이 크게 증가하는 구간에서는 매매를 조심해야 하며, 가격이 밴드 상한선이나 하한선에 도달할 때마다 매매 결정을 내리는 것이 적절합니다. 또한, 볼린저밴드는 다른 기술적 분석 지표와 함께 사용될 때 더욱 효과적입니다. 예를 들어, 볼린저밴드와 RSI를 함께 사용하면, RSI가 과매수나 과매도 상태일 때 볼린저밴드의 상한선과 하한선을 참고하여 매매 포지션을 취할 수 있습니다.

  1. 볼린저밴드의 한계점

볼린저밴드는 가격의 변동성을 측정하는 데 유용하지만, 모든 상황에서 완벽한 지표는 아닙니다. 예를 들어, 과거의 데이터를 이용하여 밴드를 계산하기 때문에, 과거와 현재의 시장 상황이 다를 경우에는 올바른 매매 시점을 찾기 어려울 수 있습니다. 또한, 고점과 저점에서 밴드가 충돌하는 경우도 있는데, 이 경우에는 가격의 추세를 나타내는 지표로 볼린저밴드를 사용하는 것이 어렵습니다.

  1. 결론

볼린저밴드는 가격의 변동성을 측정하는 데 유용한 기술적 분석 지표 중 하나입니다. 볼린저밴드는 중심선, 상한선, 하한선으로 구성되어 있으며, 이를 활용하여 과매수 상태와 과매도 상태를 파악할 수 있습니다. 하지만, 볼린저밴드를 단독으로 사용하는 것은 위험을 내포하고 있으므로, 다른 기술적 분석 지표와 함께 사용하는 것이 좋습니다. 또한, 과거의 데이터를 이용하여 밴드를 계산하기 때문에, 현재 시장 상황과 과거의 시장 상황이 다를 경우에는 올바른 매매 시점을 찾기 어려울 수 있습니다. 따라서, 볼린저밴드는 다른 지표와 함께 사용하고, 시장 상황을 종합적으로 고려하여 매매 결정을 내리는 것이 중요합니다.

 

파이썬과 바이낸스 API로 볼린저밴드(Bollinger Bands) 출력하기

파이썬에서는 TA-Lib(Technical Analysis Library)이라는 라이브러리를 이용하여 볼린저밴드를 계산할 수 있습니다. TA-Lib은 다양한 기술적 분석 지표를 계산할 수 있는 라이브러리로, 파이썬에서도 사용할 수 있습니다.

TA-Lib을 설치하기 위해서는 먼저 다음 명령어를 실행하여 ta-lib을 설치합니다.

pip install ta-lib

이후, 다음 코드와 같이 볼린저밴드를 계산할 수 있습니다.

import talib
import pandas as pd

def get_bollinger_bands(close, window=20, deviation=2):
    upper, middle, lower = talib.BBANDS(close, timeperiod=window, nbdevup=deviation, nbdevdn=deviation, matype=0)
    bb_data = pd.DataFrame({
        'upper_band': upper,
        'middle_band': middle,
        'lower_band': lower
    }, index=close.index)
    return bb_data

위 코드에서는 talib.BBANDS() 함수를 사용하여 볼린저밴드를 계산하고 있습니다. 이때, close는 종가 데이터이며, window는 이동평균의 기간, deviation은 상한선과 하한선을 계산하기 위한 표준편차의 배수입니다.

위 함수를 적용하면, close 데이터에 대해 볼린저밴드를 계산한 결과를 반환합니다. 이때, 반환된 값은 DataFrame으로, upper_band, middle_band, lower_band 열로 이루어져 있습니다. 이후, 이 값을 시각화하여 볼린저밴드를 그래프로 나타낼 수 있습니다.

import requests
import json
import pandas as pd
import numpy as np
import talib

# 바이낸스 API 정보 설정
BASE_URL = 'https://api.binance.com'
API_KEY = 'your_api_key'
SECRET_KEY = 'your_secret_key'

# 종목 설정
symbol = 'BTCUSDT'

# 데이터 가져오기
def get_data(symbol, interval, limit):
    url = BASE_URL + '/api/v3/klines'
    params = {
        'symbol': symbol,
        'interval': interval,
        'limit': limit
    }
    res = requests.get(url, params=params)
    data = json.loads(res.text)
    df = pd.DataFrame(data)
    df.columns = ['Open time', 'Open', 'High', 'Low', 'Close', 'Volume', 'Close time', 'Quote asset volume', 'Number of trades', 'Taker buy base asset volume', 'Taker buy quote asset volume', 'Ignore']
    df = df.astype(float)
    df['Open time'] = pd.to_datetime(df['Open time'], unit='ms')
    df.set_index('Open time', inplace=True)
    return df

# 볼린저밴드 계산 함수
def get_bollinger_bands(close, window=20, deviation=2):
    upper, middle, lower = talib.BBANDS(close, timeperiod=window, nbdevup=deviation, nbdevdn=deviation, matype=0)
    bb_data = pd.DataFrame({
        'upper_band': upper,
        'middle_band': middle,
        'lower_band': lower
    }, index=close.index)
    return bb_data

# 최근 종가 가져오기
def get_recent_close_price(symbol):
    url = BASE_URL + '/api/v3/ticker/price'
    params = {'symbol': symbol}
    res = requests.get(url, params=params)
    data = json.loads(res.text)
    return float(data['price'])

# 실행
interval = '1h' # 1시간 간격 데이터
limit = 500 # 최근 500개 데이터
df = get_data(symbol, interval, limit)
close_prices = df['Close']
bollinger_bands = get_bollinger_bands(close_prices)
recent_close_price = get_recent_close_price(symbol)

# 결과 출력
print('종목: ', symbol)
print('최근 종가: ', recent_close_price)
print('최근 종가 위치: ', (recent_close_price - bollinger_bands['lower_band'][-1]) / (bollinger_bands['upper_band'][-1] - bollinger_bands['lower_band'][-1]))
print('볼린저밴드 정보: ')
print(bollinger_bands.tail())
 
반응형
저작자표시 비영리 변경금지 (새창열림)
    '기술적 트레이딩' 카테고리의 다른 글
    • 기술적 트레이딩 7. 현대 포트폴리오 이론(Modern Portfolio Theory, MPT)
    • 기술적 트레이딩 6. 스토캐스틱(Stochastic Oscillator)
    • 기술적 트레이딩 4. 상대강도지수(Relative Strength Index, RSI)
    • 기술적 트레이딩 3. 엘리어트 파동이론(Elliot Wave Theory)
    BIBOT
    BIBOT

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.