본문 바로가기
주식분석/Quant 분석(프로그래밍)

급등주 매수 신호

by hustler78 2023. 3. 26.
728x90
반응형

 

주식 시세를 보다 보면 갑자기 급등하는 주식이 있습니다. 시가 대비 한 15% 정도 이상 올라 장대 양봉을 기록합니다. 

이런 주식이 다음날 시가에 떠서 시작하는데, 결국은 하락하여 음봉으로 마감하는 경우가 있습니다. 하지만 종가상으로 봤을 땐 전일 대비 상승하는 경우가 있죠.

이런 경우를 관찰하다보니, 조만간 시세를 한번 줄 때가 많았습니다.

 

 

위의 차트는 갤럭시아에스엠(011420) 이라는 주식의 차트입니다. 2023년 1월 20일 날 큰 폭으로 오르고(사실 상한가였습니다.) 다음날 시가가 떠서 시작하더니 결국 음봉을 만들며 일봉을 마감했습니다. 종가로만 봤을 때는 전일대비 상승이었고요. 

그 후에 이어진 시세를 보니 아주 큰 상승이 나타났습니다. 다른 관심종목들에서도 이러한 현상이 나타나 보이길래 이를 매수 신호로 인식해 보기로 했습니다.

 

 

 

급등주 매수 시점

위의 갤럭시아에스엠 예제를 다듬어 다음과 같은 로직을 세워 보겠습니다.

 

 

 

이제 Python 으로 코딩을 한번 해볼까요?

 

 

 

 

Python Code : 급등주 매수신호

 

 

import pandas as pd
import numpy as np
import yfinance
from mpl_finance import candlestick_ohlc
import mplfinance
import matplotlib.dates as mpl_dates
import matplotlib.pyplot as plt
import datetime
from dateutil.relativedelta import relativedelta
import FinanceDataReader as fdr
from matplotlib import gridspec


def load_data(stock_code, start_date, end_date):
    df = fdr.DataReader(stock_code, start_date, end_date)
    return df

def Soaring_Stock():
    end_date = datetime.datetime.today()
    start_date = end_date - relativedelta(months=6)
    
    # 급등주 매수 simulation 종목들 (주석을 적용/해제 하면서 테스트)
    stk_code = '357550'    # 석경에이티
    stk_code = '001390'    # KG케미칼
    stk_code = '058850'    # KTcs
    stk_code = '014100'    # 메디앙스
    stk_code = '001460'    # BYC

    df = load_data(stk_code, start_date, end_date)
    df.index = df.index.map(mpl_dates.date2num)
    df['Date'] = df.index
    

    rate = 0.15    # 전일 장대양봉의 시가대비 종가 수익률
    up_condition = df.Close > df.Close.shift(1)   # 전일 종가대비 오늘 종가 상승 조건
    neg_candle_condition = df.Close < df.Open     # 오늘 candle은 음봉
    pos_candle_condition = df.Close.shift(1) > df.Open.shift(1) * (1 + rate)
                                                  # 어제시가 대비 어제종가는 rate=15% 이상
                                                  # rate를 바꿔가면서 최적의 값 찾기 가능

    # 위의 세 조건을 만족할 때 signal 출현
    df['signal'] = up_condition & neg_candle_condition & pos_candle_condition
    

    
    df_ohlc = df[['Date', 'Open', 'High', 'Low', 'Close']]
    fig, ax = plt.subplots(1, 1, sharex=True, figsize=(10, 6))  # share x axis and set a figure size
    date_format = mpl_dates.DateFormatter('%y/%b/%d')
    ax.xaxis.set_major_formatter(date_format)
    
    # candle chart 그림
    candlestick_ohlc(ax, df_ohlc.values, width=0.6, \
                     colorup='red', colordown='blue', alpha=0.8)
    
    # signal 발생일자에 circle marker 
    ax.scatter(df[df['signal'] == True].index, df[df['signal'] == True].High * 1.02,
               marker='o', c='black', label='signal', s=100)

    ax.legend()
    plt.title(f'{stk_code}')

    plt.show()
 
if __name__ == '__main__':
    Soaring_Stock()

 

 

BYC(001460)

 

 

변동성이 커진만큼 신호 가 뜬 다음부터 출렁이는 모습을 보이지만 결국 급등의 모습이 나옵니다.

 

 

 

메디앙스(014100)

 

 

신호가 뜬 후 큰 조정을 받다가 긴 꼬리를 단 양봉이 출현합니다. 이때 고점에서 팔 수 있으면 좋으련만.. 그 이후에는 급등한 시세를 다 반납한 모습이죠.

 

 

 

KG케미칼(001390)

 

 

역시 신호가 뜬 후 극도의 출렁임을 보이지만, 결국 장대양봉을 하나 더 선사해 주네요.

 

 

 

 

 

석경에이티(357550)

 

 

 

역시 출렁거립니다. 하지만 큰 시세를 보여줍니다.

 

 

 

 

이치럼 급등주 신호 뒤에는 어지러운 장세가 연출됩니다. 따라서 장기적인 투자보다는 방망이를 짧게 잡고 단기 투자로 조금의 수익만을 얻는다는 전략으로 접근하면 좋을 것 같습니다. 물론 신호 뒤 살아난 변동성으로 인한 출렁거림은 감수를 좀 해야 될 수도 있겠습니다.

 

 

728x90
반응형

댓글