core

https://github.com/Golden-Goose-Lab/creon/blob/master/creon/core.py

COMWrapper

class COMWrapper 크레온 μœˆλ„μš°μ¦ˆ APIλ₯Ό μ†μ‰½κ²Œ 닀루기 μœ„ν•œ λž˜ν•‘ ν΄λž˜μŠ€μž…λ‹ˆλ‹€.

속성 com λ””μŠ€νŒ¨μΉ˜λœ μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆμž…λ‹ˆλ‹€.

λ©”μ†Œλ“œ def __init__(self, com) μƒμ„±μž ν•¨μˆ˜μž…λ‹ˆλ‹€. 인자둜 μ‚¬μš©ν•˜λ €λŠ” μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆμ„ λ°›μŠ΅λ‹ˆλ‹€.

def __getattr__(self, item) λ””μŠ€νŒ¨μΉ˜λœ μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ ν•¨μˆ˜λ‚˜ λ³€μˆ˜λ₯Ό λ°”λ‘œ 클래슀 λ„€μ΄ν‹°λΈŒμ²˜λŸΌ μ‚¬μš©ν•˜κΈ° μœ„ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. def block_request(self) μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ BlockRequest λ₯Ό λž˜ν•‘ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. def get_dib_msg1(self) μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ GetDibMsg1 λ₯Ό λž˜ν•‘ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. def get_dib_status(self) μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ GetDibStatus λ₯Ό λž˜ν•‘ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. def get_data_value(self, key, value) μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ GetDataValue λ₯Ό λž˜ν•‘ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. key, value 에 λŒ€ν•œ GetDataValue μ‹€ν–‰ 값을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. def get_header_value(self, key) μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ GetHeaderValue λ₯Ό λž˜ν•‘ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. key 에 λŒ€ν•œ GetHeaderValue μ‹€ν–‰ 값을 λ¦¬ν„΄ν•©λ‹ˆλ‹€. def set_input_value(self, key, value) μœˆλ„μš°μ¦ˆ API λͺ¨λ“ˆλ‚΄ SetInputValue λ₯Ό λž˜ν•‘ν•œ ν•¨μˆ˜μž…λ‹ˆλ‹€. key, value 에 λŒ€ν•œ SetInputValue μ‹€ν–‰ν•©λ‹ˆλ‹€.

Creon

class Creon 크레온 래퍼 ν΄λž˜μŠ€μž…λ‹ˆλ‹€. λͺ¨λ“  주식 νŠΈλ ˆμ΄λ”© κΈ°λŠ₯은 이 클래슀 객체λ₯Ό 기반으둜 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

속성 __codes__ (κΈ°λ³Έκ°’ None) 크레온 API μ½”λ“œ λͺ¨λ“ˆμΈ CpUtil.CpCodeMgr 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __utils__ (κΈ°λ³Έκ°’ None) 크레온 API μœ ν‹Έ λͺ¨λ“ˆμΈ CpTrade.CpTdUtil 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __trades__ (κΈ°λ³Έκ°’ None) 크레온 API 거래 λͺ¨λ“ˆμΈ CpTrade.CpTd0311 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __trade_actions__ (κΈ°λ³Έκ°’ {'sell': 1, 'buy': 2}) sell 와 buy 의 λ¬Έμžμ—΄μ„ 각 각 1, 2둜 μΉ˜ν™˜ μ΄μš©ν•˜κΈ° μœ„ν•œ λ”•μ…”λ„ˆλ¦¬ μž…λ‹ˆλ‹€. __markets__ (κΈ°λ³Έκ°’ None) 크레온 API μ‹œμž₯ λͺ¨λ“ˆμΈ DsCbo1.StockMst 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __wallets__ (κΈ°λ³Έκ°’ None) 크레온 API κ³„μ’Œ λͺ¨λ“ˆμΈ CpTrade.CpTd6033 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __stock_code__ (κΈ°λ³Έκ°’ None) 크레온 API 주식 μ½”λ“œ λͺ¨λ“ˆμΈ CpUtil.CpStockCode 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __chart__ (κΈ°λ³Έκ°’ None) 크레온 API 주식 차트 λͺ¨λ“ˆμΈ CpSysDib.StockChart 의 COMWrapper 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€. 속성 ν•¨μˆ˜λ‘œ 이용 κ°€λŠ₯ν•©λ‹ˆλ‹€. __logger__ (κΈ°λ³Έκ°’ Logger(__name__)) λ‘œκΉ…μ„ μœ„ν•œ 파이썬 λ‚΄μž₯ 둜거 객체가 ν• λ‹Ήλ©λ‹ˆλ‹€.

λ©”μ†Œλ“œ def __init__(self, username: str = '', password: str = '', cert_password: str = '', path: str = '') μƒμ„±μž ν•¨μˆ˜μž…λ‹ˆλ‹€. κ΄€λ¦¬μž κΆŒν•œμ΄ μ—†μœΌλ©΄ PermissionError μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚€λ©° 크레온이 κ΅¬λ™λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©° run_creon_plus λ₯Ό 톡해 κ΅¬λ™ν•©λ‹ˆλ‹€.

@property def codes(self) -> COMWrapper 크레온 API μ½”λ“œ λͺ¨λ“ˆμΈ CpUtil.CpCodeMgr 의 μ‚¬μš©μ„ μœ„ν•œ 속성 ν•¨μˆ˜μž…λ‹ˆλ‹€. 졜초 μ‹€ν–‰μ‹œ __codes__ 속성에 COMWrapper 객체λ₯Ό ν• λ‹Ήν•˜λ©° 이후 __codes__ λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.

@property def trades(self) -> COMWrapper 크레온 API 거래 λͺ¨λ“ˆμΈ CpTrade.CpTd0311 의 μ‚¬μš©μ„ μœ„ν•œ 속성 ν•¨μˆ˜μž…λ‹ˆλ‹€. 졜초 μ‹€ν–‰μ‹œ __trades__ 속성에 COMWrapper 객체λ₯Ό ν• λ‹Ήν•˜λ©° 이후 __trades__ λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.

@property def markets(self) -> COMWrapper 크레온 API μ‹œ λͺ¨λ“ˆμΈ DsCbo1.StockMst 의 μ‚¬μš©μ„ μœ„ν•œ 속성 ν•¨μˆ˜μž…λ‹ˆλ‹€. 졜졜초 μ‹€ν–‰μ‹œ ___markets__ 속성에 COMWrapper 객체λ₯Ό ν• λ‹Ήν•˜λ©° 이후 ___markets__ λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€. http://cybosplus.github.io/cpdib_rtf_1_/stockmst.htm

@property def wallets(self) -> COMWrapper 크레온 API κ³„μ’Œ λͺ¨λ“ˆμΈ CpTrade.CpTd6033 의 μ‚¬μš©μ„ μœ„ν•œ 속성 ν•¨μˆ˜μž…λ‹ˆλ‹€. 졜초 μ‹€ν–‰μ‹œ __wallets__ 속성에 COMWrapper 객체λ₯Ό ν• λ‹Ήν•˜λ©° 이후 __wallets__ λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.

@property def stock_code(self) -> COMWrapper 크레온 API 주식 μ½”λ“œ λͺ¨λ“ˆμΈ CpUtil.CpStockCode 의 μ‚¬μš©μ„ μœ„ν•œ 속성 ν•¨μˆ˜μž…λ‹ˆλ‹€. 졜초 μ‹€ν–‰μ‹œ __stock_code__ 속성에 COMWrapper 객체λ₯Ό ν• λ‹Ήν•˜λ©° 이후 __stock_code__ λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.

@property def chart(self) -> COMWrapper 크레온 API 주식 차트 λͺ¨λ“ˆμΈ CpSysDib.StockChart 의 μ‚¬μš©μ„ μœ„ν•œ 속성 ν•¨μˆ˜μž…λ‹ˆλ‹€. 졜초 μ‹€ν–‰μ‹œ __chart__ 속성에 COMWrapper 객체λ₯Ό ν• λ‹Ήν•˜λ©° 이후 __chart__ λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.

@property def accounts(self) -> tuple utils 속성 ν•¨μˆ˜λ₯Ό 톡해 둜그인된 κ³„μ •μ˜ κ³„μ’Œλ²ˆν˜Έλ“€μ„ νŠœν”Œ ν˜•νƒœλ‘œ λ¦¬ν„΄ν•©λ‹ˆλ‹€.

def get_account_flags(self, account: str, account_filter: AccountFilter) -> tuple utils 속성 ν•¨μˆ˜λ₯Ό 톡해 κ³„μ’Œ ν”Œλž˜κ·Έμ„ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. 인자둜 κ³„μ’Œ λ²ˆν˜Έμ™€ κ³„μ’Œ μœ ν˜•μ„ λ°›μŠ΅λ‹ˆλ‹€. κ³„μ’Œ ν”Œλž˜κ·ΈλŠ” 거래 ν•¨μˆ˜λ“±μ— μ‚¬μš©λ©λ‹ˆλ‹€.

def get_all_codes(self, category: str, with_name: bool = False) -> tuple codes 속성 ν•¨μˆ˜λ₯Ό 톡해 μ‹œμž₯(kospi, kosdaq)을 λ¬Έμžμ—΄λ‘œ 인자둜 λ°›μ•„ ν•΄λ‹Ή μ‹œμž₯의 λͺ¨λ“  μ’…λͺ©μ„ νŠœν”Œλ‘œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. with_name μΈμžκ°€ True이면 (μ½”λ“œ, 이름) ν˜•νƒœμ˜ νŠœν”Œλ“€μ„ λ¦¬ν„΄ν•©λ‹ˆλ‹€. def get_price_data(self, code: str) -> dict markets 속성 ν•¨μˆ˜λ₯Ό 톡해 μ‹œμ„Έ 정보λ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ λ¦¬ν„΄ν•©λ‹ˆλ‹€. λ°˜ν™˜ν•˜λŠ” λ°μ΄ν„°λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

ν‚€

κ°’

code

μ’…λͺ© μ½”λ“œ

name

μ’…λͺ© 이름

time

μ‹œκ°„4

diff

μ „ 일 λŒ€λΉ„

price

κ°€

close_price

μ’…κ°€

high_price

κ³ κ°€

low_price

μ €κ°€

offer

λ§€λ„ν˜Έκ°€

bid

λ§€μˆ˜ν˜Έκ°€

volume

κ±°λž˜λŸ‰

volume_price

κ±°λž˜μ•‘

expect_flag

μ˜ˆμƒ 체결 ꡬ뢄 ν”Œλž˜κ·Έ

'0' - λ™μ‹œν˜Έκ°€ 및 μž₯ 이외 μ‹œκ°„

'1' - λ™μ‹œ ν˜Έκ°€ μ‹œκ°„

'2' - μž₯λ‚΄

expect_price

μ˜ˆμƒ 체결가

expect_diff

μ „ 일 λŒ€λΉ„ μ˜ˆμƒ 체결가

expect_volume

μ˜ˆμƒ 체결 μˆ˜λŸ‰

def fetch_ohlcv(self, code: str, timeframe: tuple, since: datetime, limit: int, fill_gap=False, use_adjusted_price=True) -> List[Candle]: chart 속성 ν•¨μˆ˜λ₯Ό 톡해 κ³Όκ±° μ‹œμ„Έ 정보 OHLCV(μ‹œκ°€, κ³ κ°€, μ €κ°€, μ’…κ°€, κ±°λž˜λŸ‰) λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ μž…λ‹ˆλ‹€. μ’…λͺ© μ½”λ“œ, νƒ€μž„ν”„λ ˆμž„(μ‹œκ°„κ°’, TimeFrameUnit), 쑰회일, μ΅œλŒ€μ‘°νšŒμˆ˜ λ₯Ό 인자둜 λ°›μŠ΅λ‹ˆλ‹€. fill_gap 선택 인자λ₯Ό True 둜 ν•˜λ©΄ 갭보정을 적용 ν•  수 있으며 use_adjusted_price μ„ νƒμΈμžλ₯Ό False 둜 ν•˜λ©΄ μˆ˜μ •μ£Όκ°€ μ‚¬μš©μ„ μ•ˆ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ§ν¬μ—μ„œ 예제λ₯Ό 확인할 수 있으며 λ°˜ν™˜ν•˜λŠ” λ°μ΄ν„°λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

start_time

μ‹œμž‘μΌ

end_time

μ’…λ£ŒμΌ

open_price

μ‹œκ°€

high_price

κ³ κ°€

low_price

μ €κ°€

close_price

μ’…κ°€

volume

κ±°λž˜λŸ‰

def get_holding_stocks(self, account_number: str, flag: str, count: int = 50) -> dict wallets 속성 ν•¨μˆ˜λ₯Ό 톡해 μ’…ν•© 보유 μžμ‚° 정보λ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ λ¦¬ν„΄ν•©λ‹ˆλ‹€. κ³„μ’Œλ²ˆν˜Έμ™€ κ³„μ’Œ ν”Œλž˜κ·Έλ₯Ό 인자둜 λ°›μœΌλ©° κ°œμˆ˜λŠ” 50개둜 선택 인자둜 λ°›μŠ΅λ‹ˆλ‹€. κ³„μ’Œ ν”Œλž˜κ·ΈλŠ” get_account_flags λ₯Ό 톡해 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. λ°˜ν™˜ν•˜λŠ” λ°μ΄ν„°λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

ν‚€

total_expect_valuation

총 평가 κΈˆμ•‘

remain_deposit

예수금

stocks

보유 주식 λ”•μ…”λ„ˆλ¦¬ 리슀트 λ”•μ…”λ„ˆλ¦¬ 예 { 'code': μ’…λͺ©μ½”λ“œ, 'name': μ’…λͺ©λͺ…, 'quantity': μˆ˜λŸ‰, 'bought_price': λ§€μž…κΈˆμ•‘, 'expect_price': ν‰κ°€κΈˆμ•‘,

'expect_profit': ν‰κ°€μˆ˜μ΅, }

def _order(self, account: str, code: str, quantity: int, price: int, flag: str, action: str) -> bool trades 속성 ν•¨μˆ˜λ₯Ό 톡해 μ§€μ •κ°€ μ£Όλ¬Έν•˜μ—¬ 주문의 성곡(체결 X) μ—¬λΆ€λ₯Ό True / False 둜 λ¦¬ν„΄ν•©λ‹ˆλ‹€. κ³„μ’Œλ²ˆν˜Έ, μ’…λͺ©μ½”λ“œ, μˆ˜λŸ‰, 가격, κ³„μ’Œ ν”Œλž˜κ·Έ, μ•‘μ…˜(맀수 or 맀도) λ₯Ό 인자둜 λ°›μœΌλ©° μ•‘μ…˜μ€ 'buy', 'sell' λ¬Έμžμ—΄λ‘œ λ°›μ•„ __trade_actions__ 속성을 톡해 값을 μΉ˜ν™˜ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€. κ³„μ’Œ ν”Œλž˜κ·ΈλŠ” get_account_flags λ₯Ό 톡해 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

def buy(self, account: str, code: str, quantity: int, price: int, flag: str) -> bool _order ν•¨μˆ˜λ₯Ό 톡해 μ§€μ •κ°€ 맀수λ₯Ό ν•©λ‹ˆλ‹€. κ³„μ’Œλ²ˆν˜Έ, μ’…λͺ©μ½”λ“œ, μˆ˜λŸ‰, 가격, κ³„μ’Œ ν”Œλž˜κ·Έκ°€ ν•„μš”ν•©λ‹ˆλ‹€. κ³„μ’Œ ν”Œλž˜κ·ΈλŠ” get_account_flags λ₯Ό 톡해 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

def sell(self, account: str, code: str, quantity: int, price: int, flag: str) -> bool _order ν•¨μˆ˜λ₯Ό 톡해 μ§€μ •κ°€ 맀도λ₯Ό ν•©λ‹ˆλ‹€. κ³„μ’Œλ²ˆν˜Έ, μ’…λͺ©μ½”λ“œ, μˆ˜λŸ‰, 가격, κ³„μ’Œ ν”Œλž˜κ·Έκ°€ ν•„μš”ν•©λ‹ˆλ‹€. κ³„μ’Œ ν”Œλž˜κ·ΈλŠ” get_account_flags λ₯Ό 톡해 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

def code_to_name(self, code: str) stock_code 속성 ν•¨μˆ˜λ₯Ό 톡해 μ’…λͺ© μ½”λ“œλ₯Ό μ’…λͺ© μ΄λ¦„μœΌλ‘œ λ¦¬ν„΄ν•©λ‹ˆλ‹€.

def name_to_code(self, name: str) stock_code 속성 ν•¨μˆ˜λ₯Ό 톡해 μ’…λͺ© 이름을 μ’…λͺ© μ½”λ“œλ‘œ λ¦¬ν„΄ν•©λ‹ˆλ‹€.

Last updated

Was this helpful?