01) 삼성전자 매주 1주씩 매수하기
https://wikidocs.net/165446

위 포스팅에 기반해서, 모의투자계좌를 이용한 매일 1개의 네이버(Naver)의 주식을 구매하는 코딩을 작성해보자.
제발 좀 올라라 네이버, 카카오


코딩에 들어가기 전에, DCA에 대해서 조금은 알고 들어가자. 뭔지는 알고 해야지…
https://ko.wikipedia.org/wiki/%EB%A7%A4%EC%9E%85%EC%9B%90%EA%B0%80_%ED%8F%89%EA%B7%A0%EB%B2%95

매입원가 평균법(Dollar cost averaging, DCA, 달러 비용 평균화)는 가치 투자 원칙을 일반 투자에 적용하는 것을 목표로 하는 투자 전략. 벤저민 그레이엄에 따르면 매입원가 평균법은 “간단히 실무자가 매월 또는 분기마다 동일한 금액을 보통주에 투자하는 것을 의미한다. 이러한 방식으로 그는 시장이 높을 때보다 낮을 때 더 많은 주식을 사며, 그는 결국 그의 모든 보유 자산에 대해 전반적으로 만족스러운 가격을 얻게 된다.
이 기법은 매입한 주식의 평균 비용을 줄일 수 있는 잠재력 때문에 그렇게 불린다. 고정된 금액으로 구매할 수 있는 주식의 수는 가격에 반비례하므로 DCA는 가격이 낮을 때 더 많은 주식을 구매하고, 가격이 비쌀 때 더 적은 주식을 구매하도록 유도한다. 결과적으로 DCA는 투자의 주당 총 평균 비용을 낮춰 투자자가 시간이 지남에 따라 구매한 주식에 대한 전체 비용을 낮출 수 있다.


매일 한개의 네이버 주식을 산다는 것은 DCA 투자 전략의 의도(이점, 장점)와는 거리가 멀어보이지만… 내 돈아니니까

0. 객체 생성

기존에는 한국투자증권 API 접속에 필요한 정보를 변수에 직접 입력했는데, 기존 포스팅과 마찬가지로 텍스트 파일로 저장해서 가져다 쓰도록하자.

import mojito
import pprint


with open("./api_info") as f:
    lines = f.readlines()
    key = lines[0].strip()
    secret = lines[1].strip()
    acc_no = lines[2].strip()


# 객체 생성
broker = mojito.KoreaInvestment(
    api_key=key,
    api_secret=secret,
    acc_no=acc_no # 모의투자계좌라면 mock=True 추가
)

1. 잔고 조회 및 현재 Naver의 시장가 조회.

현재 보유한 주식계좌의 예수금보다 Naver 주식 현재가 보다 적다면 매매를 하지 않도록 조건을 걸어야 한다.

balance = broker.fetch_balance()
deposit = int(balance['output2'][0]['dnca_tot_amt'])
print(deposit)

SYMBOL = "035420" # Naver 주식코드
price = broker.fetch_price(symbol=SYMBOL)
curr_price = price['output']['stck_prpr']
print(curr_price)

# 매수
QUANTITY=1
if curr_price < deposit:
    broker.create_market_buy_order(symbol=SYMBOL, quantity=QUANTITY)

그런데, 뭔가 아직은 mojito2 라이브러리가 완성된게 아닌지 에러가 상당히 많이 발생한다…

위 코드를 돌려보면, fetch_balance_domestic 메서드를 호출하는 과정에서 ‘tr_cont’ 관련 Key Error가 발생하는데, 그냥 mojito2를 참고해서 한국투자증권 API의 기능을 우선적으로 테스트 하는게 좋아 보인다.

Reference