본문 바로가기
카테고리 없음

BII 보조지표(Bostian's Intraday Intensity Index) 파이썬 코드

by 인천고래 quant

안녕하세요. 주식투자 관련 지식을 공유하는 인천고래입니다.

 

BII지표에 대해 생소하신 분들이 계실 텐데 장중 세력 진입 여부를 판단할 수 있는 지표로서 유용하게 사용할 수 있으며 하락 추세 이탈 및 상승 추세 이탈 등에 사용 가능한 지표로 알아두시면 투자에 도움이 될 것입니다.

 

자세한 내용은 아래의 코드에 제공되오니 확인 바랍니다.

인천고래 아이콘

 

1. BII 보조지표 생성 코드

def calculate_intraday_intensity(df):
    """
    Bostian's Intraday Intensity(II)와 Cumulative II를 구하는 함수

    Parameters
    ----------
    df : pd.DataFrame
        High, Low, Close, Volume 열을 포함

    Returns
    -------
    pd.DataFrame
        df에 새로운 컬럼 [II, CII]가 추가된 DataFrame
    """
    # 고가-저가 차이가 0이 되는 상황 방어
    df['range'] = df['High'] - df['Low']
    df['range'] = df['range'].replace(0, np.nan)  # 분모=0 -> NaN 처리

    # Intraday Intensity (II) 계산
    df['II'] = ((2 * df['Close'] - df['High'] - df['Low']) / df['range']) * df['Volume']

    # Cumulative II (CII) = II의 누적 합
    df['CII'] = df['II'].cumsum()

    # NaN 보정 (기본 예시)
    df['II'] = df['II'].fillna(0)
    df['CII'] = df['CII'].fillna(method='ffill').fillna(0)

    return df

 

2. BII 지표를 차트에 적용하기

if __name__ == '__main__':
    # ===== 1) FinanceDataReader로 삼성전자 주가 불러오기 =====
    df = fdr.DataReader('229640', start='2024-06-01')

    # df의 기본 컬럼(일봉): ['Open', 'High', 'Low', 'Close', 'Volume', ... ]
    # 인덱스(Index)는 Date(YYYY-MM-DD)가 기본으로 들어옴

    # ===== 2) 결측값 처리 (필요 시) =====
    df.dropna(subset=['Close', 'Volume'], inplace=True)

    # ===== 3) Intraday Intensity 지표 계산 =====
    df = calculate_intraday_intensity(df)

    # ===== 4) 차트 시각화 =====
    # plt.subplots(nrows=3) : (가격 / 거래량 / 보조지표) 3개 구역
    fig, axes = plt.subplots(nrows=3, figsize=(12, 8), sharex=True)

    # 4-1) [첫 번째 Subplot] 종가 차트
    axes[0].plot(df.index, df['Close'], color='blue', label='Close')
    axes[0].set_ylabel('Price')
    axes[0].legend(loc='upper left')
    axes[0].grid(True)

    # 4-2) [두 번째 Subplot] 거래량(Volume) 차트 (Bar 형태)
    axes[1].bar(df.index, df['Volume'], color='gray', label='Volume')
    axes[1].set_ylabel('Volume')
    axes[1].legend(loc='upper left')
    axes[1].grid(True)

    # 4-3) [세 번째 Subplot] Intraday Intensity 지표 (II, CII)
    axes[2].plot(df.index, df['II'], color='green', label='II')
    axes[2].plot(df.index, df['CII'], color='red',   label='CII')
    axes[2].set_ylabel("Bostian's Intraday Intensity / CII")
    axes[2].legend(loc='upper left')
    axes[2].grid(True)

    # 레이아웃 간격 조정
    plt.tight_layout()

    # 화면에 표시
    plt.show()

 

3. 차트 적용 이미지

BII 샘플 차트

 

 

 

 


 

자신만의 매매법을 자동매매 프로그램으로 만들거나 

기법이 확률이 떨어진다면 백테스팅을 사용해서 확률을 높여야 합니다. 

아래의 링크를 통해서 요청하시면 요청하신 이상(가격대비 성능의 최대치)의 결과물을 받아 보실 수 있습니다.

 

한 방에 주식 데이터 만들기 - 크몽

인천고래 전문가의 IT·프로그래밍 서비스를 만나보세요. <p>퀀트 매매, 수익률 높은 매매, 확률 높은 매매, 잃지 않는 매매 등<...

kmong.com

 


 

다른 보조지표에 대해서는 아래의 링크 글을 통해 자세히 알아 볼 수 있습니다.

 

보조지표 리스트 (추세, 모멘텀, 채널, 변동성, 거래량, 기타 지표)

안녕하세요. 주식을 통해 삶을 영위할 수 있는 방법을 찾으며  인생 후반을 준비하고 있는 인천고래입니다.이전부터 보조지표에 대해서 글을 작성해 왔지만 중요한 것 위주로 작성을 하다보니

i-whale.com


 

단기적인 스윙 및 세력 매집 분석에 용이한 기준봉에 대해서는 아래의 링크 글을 통해 자세히 알아 볼 수 있습니다.

 

'주식 기준봉' 카테고리의 글 목록

주식 투자에 필요한 교육 내용을 제공하고 시장 정보 및 통계 등 수록하고 기록함을 원칙으로 하되 데이터마이닝을 통해 객관적인 자료를 구축하여 보다 경제적 자유를 얻기 위하여 사이트를

i-whale.com

 

-

댓글