Demark 지수라고해서 전날 일봉데이터를 토대로 오늘의 주가 범위를 판단하는 지표인 것 같습니다. 당일 매매에서 유용할 것 같습니다. 현재의 주가가 저평가인지, 고평가인지 판단할 수 있는 지표인 것 같습니다. 지표 하단에서 매수한다고 저가이고, 지표 상단에서 매수한다고 고가인 것은 아니지만 그나마 판단 근거를 주니까 참고용으로 사용할 수 있을 것 같습니다.
이를 Python 코드로 간단히 구현해 봤습니다.
저는 sqlite를 사용하고 있어서 DB에 저장된 일봉 데이터 OHLCV를 읽어오는 것으로 시작합니다. 전날 양봉인 경우 OHLCV에서 H에 가중치를, 음봉인 경우 L에 가중치를 주어서 계산을 합니다. 다른 블로그를 참고해보면 "시가 + 종가 + 고가 + 저가"에 대한 정의가 잘못되어 키움 영웅문에서 확인한 수치와 달라서 애먹었는데 아래의 식으로 적용해보니 키움 영웅문과 동일하게 값이 나오네요. 혹시나 시스템 매매에 참고하시어 도움이 되시기 바랍니다.
def Calculation_Demark(stockCode) :
stockcode = stockCode
d_low = 0
d_high = 0
isDayStockChart = os.path.isfile('source\Candle_DataBase_Day.db')
if isDayStockChart :
conn = sqlite3.connect('source\Candle_DataBase_Day.db')
sqlCode = "SELECT * From '%s'" % str(stockcode)
Day_Data_df = pd.read_sql(sqlCode, conn, index_col=None)
else :
return d_low, d_high
Day_Data_df = Day_Data_df.sort_values(by=['date'], axis=0, ascending=True)
if Day_Data_df['open'].iloc[-2] > Day_Data_df['close'].iloc[-2] :
x = (Day_Data_df['low'].iloc[-2] + Day_Data_df['high'].iloc[-2] + Day_Data_df['close'].iloc[-2] +
Day_Data_df['low'].iloc[-2]) / 2
elif Day_Data_df['open'].iloc[-2] < Day_Data_df['close'].iloc[-2] :
x = (Day_Data_df['low'].iloc[-2] + Day_Data_df['high'].iloc[-2] + Day_Data_df['close'].iloc[-2] +
Day_Data_df['high'].iloc[-2]) / 2
else :
x = (Day_Data_df['low'].iloc[-2] + Day_Data_df['high'].iloc[-2] + Day_Data_df['close'].iloc[-2] +
Day_Data_df['close'].iloc[-2]) / 2
d_high = x - Day_Data_df['low'].iloc[-2]
d_low = x - Day_Data_df['high'].iloc[-2]
return d_low, d_high
'파이썬(PYTHON)' 카테고리의 다른 글
재무제표, 투자지표의 Python 코드 구현 (0) | 2021.08.27 |
---|---|
RPA를 위한 Python 활용 (0) | 2021.08.21 |
TALIB Library 모듈 (0) | 2021.07.01 |
KRX VIX 지수 웹크롤링 (0) | 2021.06.29 |
python 문자열 응용 (0) | 2021.02.16 |