파이썬으로 윈도용 프로그램을 자동 제어하는 방법으로는 몇가지 있는데 대표적으로 아래와 같습니다.

 - pywinauto

 - UiAutomation

 - pyautogui

 

python에서 윈도용 프로그램을 제어하려면 win32com 프로그램을 설치합니다.

https://sourceforge.net/projects/pywin32/files/?source=navbar 

 

Python for Windows Extensions - Browse Files at SourceForge.net

×

sourceforge.net

상기 폴더중 가장 download 횟수가 높은 것으로 다운로드 받습니다. (안정성이 보증된 것이므로)

 

위의 내용은 python으로 제어하는 방법입니다. 윈도용 프로그램의 동작을 보여줘야 python을 통해 제어할 수 있습니다. 이에 윈도용 프로그램 제어 정보를 얻을 수 있는 프로그램을 다운로드 받아야 합니다.

Accessibility insights라는 프로그램인데 아래의 링크에서 다운받을 수 있습니다.

https://accessibilityinsights.io/en/downloads/

 

Accessibility Insights

Solve accessibility issues before they reach your customers.

accessibilityinsights.io

바탕화면에 아래와 같은 아이콘이 생성됩니다.

상기 프로그램 실행시 아래와 같은 메인 페이지가 실행됩니다.

상기와 같은 프로그램 실행 후 notepad나 계산기등을 실행시키면 프로그램 실행에 따른 제어 화면 정보가 보여집니다. 이를 토대로 python에서 코드를 구현할 수 있는 정보를 제공해줍니다. 각 python 모듈 사용법을 참고하여 해당 제어 정보를 이용하여 윈도용 자동화 프로그램 제작을 할 수 있습니다.

참고하시길..

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

최근 talib라는 모듈을 접하게 되었는데 신세계네요. RSI 계산하는 함수 만들 때 50줄 넘게 몇시간동안 씨름하던 기억을 떠올려보면 왜 진작 몰랐는지 억울한 생각까지 드네요.

https://mrjbq7.github.io/ta-lib/

 

TA-Lib

About This is a Python wrapper for TA-LIB based on Cython instead of SWIG. From the homepage: TA-Lib is widely used by trading software developers requiring to perform technical analysis of financial market data. Includes 150+ indicators such as ADX, MACD,

mrjbq7.github.io

위 사이트 참고해보시면 정말 잘 만든 모듈입니다. 주식 관련 차트의 기술적 분석을 위한 모든게 담겨져 있습니다.

 

MOMENTUM 지수

VOLUME 지수

VOLATILITY 지수

PRICE TRANSFORM

CYCLE INDICATOR

PATTERN RECOGNITION

STATIC FUNCTION

MATH TRANSFORM

MATH OPERATION

보조 지표

 

주식차트에서 그릴 수 있는 모든 지표들이 총망라되어 있습니다. 특이한 건 봉차트의 모양까지도 인식하여 상승은 100 하락은 -100의 형식으로 표시를 해줍니다. 봉차트 매매에 관심있는 분들에게는 좋을 것 같습니다.

수십줄의 코드가 단 1줄로 끝나네요. 차트 분석이라는게 차트의 원리만 알면되지 코드까지 일일이 짤 수 있는 수준까지는 과하지 않나 싶은 생각이 들었었는데 talib가 이런 평소의 제 생각을 꾀뚫어 본 것 같습니다.

 

다만 도구가 아무리 좋아도 기술이 좋아야 하는데... 이런 좋은 도구를 가지고 활용할 수 있는 전략이 없다는게 가장 큰 문제인 것 같습니다. 혹시라도 전략이 있는데 도구가 마음에 안드시는 분이라면 참고하시면 정말 좋은 모듈입니다.

참고하시고 행운을 빕니다.

 

 

+ Recent posts