요새 제테크가 한창인데요.. 참고로 저는 주식 6년차 제테커?입니다 ㅎ...
주식자동매매를 구현하고싶었는데, 제가 쓰는 증권사는 API를 지원하지않아서 간간히 단타치는 코인으로 주제를 돌렸습니다.
준비사항
Python
VS CODE
업비트 회원가입 및 잔고에 돈충전, API 등록


TEST.PY 로그인이 되나 잔액이 확인되나 확인하는 VSCODE 터미널창에 확인가능

bestk.py 8달전부터 상승장이 시작되어서 240일의 최적 k를 구하는 테스트코드
k는 코드가 목표가를 설정 할 때 곱하기 가 되는 숫자.

0.4가 최적의 k로 선정되어 실제 설정할때 0.4로 설정할 예정
아래는 실제 자동매매하는 코드입니다. 위에없어도 아래는 가능함.
하지만 자신이 생각하는 일수의 K 를 구해서 최적의 코드를 하시면 좋음.
저는 개발자로써 그냥 흥미를 갖고 하게된것이지 매매로 절.대 사용하지 않습니다.
import time
import pyupbit
import datetime
access = "API 발급받고 본인것을 넣으세요"
secret = "API 발급받고 본인것을 넣으세요"
def get_target_price(ticker, k):
"""변동성 돌파 전략으로 매수 목표가 조회"""
df = pyupbit.get_ohlcv(ticker, interval="day", count=일수)
target_price = df.iloc[0]['close'] + \
(df.iloc[0]['high'] - df.iloc[0]['low']) * k
return target_price
def get_start_time(ticker):
"""시작 시간 조회"""
df = pyupbit.get_ohlcv(ticker, interval="day", count=1)
start_time = df.index[0]
return start_time
def get_ma15(ticker):
"""15일 이동 평균선 조회"""
df = pyupbit.get_ohlcv(ticker, interval="day", count=15)
ma15 = df['close'].rolling(15).mean().iloc[-1]
return ma15
def get_balance(ticker):
"""잔고 조회"""
balances = upbit.get_balances()
for b in balances:
if b['currency'] == ticker:
if b['balance'] is not None:
return float(b['balance'])
else:
return 0
return 0
def get_current_price(ticker):
"""현재가 조회"""
return pyupbit.get_orderbook(tickers=ticker)[0]["orderbook_units"][0]["ask_price"]
# 로그인
upbit = pyupbit.Upbit(access, secret)
print("autotrade start")
# 자동매매 시작
while True:
try:
now = datetime.datetime.now()
start_time = get_start_time("KRW-BTC")
end_time = start_time + datetime.timedelta(days=1)
if start_time < now < end_time - datetime.timedelta(seconds=10):
target_price = get_target_price("KRW-BTC", K)
ma15 = get_ma15("KRW-BTC")
current_price = get_current_price("KRW-BTC")
if target_price < current_price and ma15 < current_price:
krw = get_balance("KRW")
if krw > 5000:
upbit.buy_market_order("KRW-BTC", krw*0.9995)
else:
btc = get_balance("BTC")
if btc > 0.00008:
upbit.sell_market_order("KRW-BTC", btc*0.9995)
time.sleep(1)
except Exception as e:
print(e)
time.sleep(1)
개발자가 아닌 일반인도 쉽게할수 있지만, 개발의 절반은 환경세팅입니다.
오류가 날수도있고, 구현했지만 실행이 안되고 에러가 뜨는 경우가 있을 수도 있습니다.
그리고 투자에 대해서는 개인의 몫이고 신중히 판단하시기 바라며, 현재 코인이 하락장이라 15일 이평선 위 일때만 매수하는 로직도 함께 넣어놨습니다.
글로 이해가안가실 수도 있으니 유투브 조코딩님의 비트코인 자동매매를 참고하시어 개발하시면 더욱 편리합니다^^.
조코딩님영상에서 AWS 서버를 이용한 개발방법도있으니 참고하시기 바랍니다.
AWS로 구현은 완료했으나, VPN을 사용안하면 접속이안되고 VPN을 사용하면 인터넷이 너무느려져서 AWS관한 포스팅은 뻈습니다.

-
오른쪽 정렬왼쪽 정렬가운데 정렬
-
- 사진 편집
-
-
작게문서 너비옆트임
-
- 삭제
사진 설명을 입력하세요.
'IT > python' 카테고리의 다른 글
파이썬 Django 세팅 (0) | 2024.03.18 |
---|---|
프로그래머스 : 덧셈식 출력하기 (파이썬) (1) | 2024.03.18 |
프로그래머스 : 특수문자 출력하기 (파이썬) (0) | 2024.03.17 |
프로그래머스 : 대소문자 바꿔서 출력하기 (파이썬) (0) | 2024.03.06 |
파이썬 자주쓰는 기본문법 정리 (메모용) (0) | 2024.02.17 |