# https://www.youtube.com/watch?v=5vofEMqMyGk&list=PLU9-uwewPMe3KKFMiIm41D5Nzx_fx2PUJ&index=3
# https://wikidocs.net/book/1665 # 파이썬을 이용한 비트코인 자동매매
# 과거 데이터로 전략을 테스트 해보는 것
# https://github.com/sharebook-kr/book-cryptocurrency/tree/master/ch07
# import pyupbit
# import pprint
#
# f = open("uptxt.txt")
# lines = f.readlines()
# access = lines[0].strip()
# secret = lines[1].strip()
# f.close()
#
# upbit = pyupbit.Upbit(access, secret) # 인스턴스 만들기
#
# print(upbit.get_balances())
# print(upbit.get_balance("KRW-XRP"))
# print(upbit.get_balance("KRW"))
import pyupbit
import numpy as np
import time
buy_per = 1
market = "KRW-ETC"
def buy(market):
print("buy : ", pyupbit.get_current_price(market))
def sell(market):
print("sell : ", pyupbit.get_current_price(market), "구매가격 : ", buy_price, "손익 : ", pyupbit.get_current_price(market) - buy_price)
df = pyupbit.get_ohlcv(market, "minute1", count=60*24)
# df = pyupbit.get_ohlcv("KRW-ETC", "minute3", count=60/3*24)
# df = pyupbit.get_ohlcv("KRW-ETC", "minute10", count=60/10*24)
# print(df)
# print(df.columns)
buy_price = []
state = False
while True:
# 변동폭 * k 계산, (고가 - 저가) * k값
# df['range'] = (df['high'] - df['low']) * 0.5
range = df['open'][0] * buy_per / 100
df['buy_target'] = df['open'][0] + range*0.5
print(pyupbit.get_current_price(market))
if state == False and pyupbit.get_current_price(market) > df['buy_target'].iloc[-1]:
buy(market)
buy_price.append(pyupbit.get_current_price(market))
state = True
if state == True:
df_last = pyupbit.get_ohlcv(market, "minute1", count=60 * 24)
if pyupbit.get_current_price(market) < (df_last['high'].iloc[-1] - range):
sell(market)
state = False
time.sleep(1)
# # 매매대상
# df['target'] = df['close'].shift(1)
# # target(매수가), range 컬럼을 한칸씩 밑으로 내림 (.shift(1))
# df['target'] = df['open'] + df['range'].shift(1)
# df['target'] = df['open'] + range
#
#
# fee = 0.0005
# ror(수익율), np.where(조건문, 참일 때 값, 거짓일때 값)
# df['ror'] = np.where(df['high'] > df['target'], # 매수가 진행된 상황
# df['close'] / df['target'] - fee, # 종가(판매가격)/ 목표가(매입가격) = 수익률
# 1) # 목표가에 도달하지 않았으므로 매매가 이루어지지 않아서 금액은 그대로
#
# 누적 곱 계산(cumprod) → 누적 수익률
# df['hpr'] = df['ror'].cumprod()
#
# 하락최대값 Draw Down 계산 (누적 최대 값과 현재 hpr 차이/ 누적 최대값 * 100)
# df['dd'] = (df['hpr'].cummax() - df['hpr']) / df['hpr'].cummax() * 100
#
# MDD 계산
# print("MDD(%): ", df['dd'].max())
# print("잔액 : ",1000000*df['hpr'].iloc[-1])
# print(df)
# df.to_excel("dd_bit.xlsx")