Beispiel #1
0
def collect_dayprice_everyday():

    tickers = pybithumb.get_tickers()
    name_dic = {'name': []}
    name_list = []

    for ticker in tickers:

        df = pybithumb.get_ohlcv(ticker)
        df = df.reset_index()

        flag = datetime(2019, 1, 1)

        if df['time'].iloc[0] < flag:

            df = df.set_index('time')
            df.to_csv("./coin/" + ticker + ".csv")
            name = ticker + ".csv"
            name_list.append(name)
            time.sleep(0.1)

        else:
            print(ticker, df['time'].iloc[0])
            continue

        name_dic['name'] = name_list
        df = pd.DataFrame(name_dic)
        df.to_csv("tickerlist.csv")
Beispiel #2
0
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        # Widget Initialize
        self.pushButton_saveExcel.setEnabled(False)
        self.comboBox_coinName.addItems(pybithumb.get_tickers())

        #Event Handler Connect
        self.comboBox_coinName.currentIndexChanged.connect(
            self.loadCoinHistory)
        self.comboBox_periodType.currentIndexChanged.connect(
            self.loadCoinHistory)
        self.pushButton_simulate.clicked.connect(self.simulate)
        self.pushButton_saveExcel.clicked.connect(self.saveExcel)

        self.loadCoinHistory()
Beispiel #3
0
    def __init__(self):

        super().__init__()

        self.setupUi(self)
        self.timer=QTimer(self)
        self.timer.start(1000)

        self.coin = ""

        self.comboBox.addItems(pybithumb.get_tickers())
        self.comboBox.currentIndexChanged.connect(self.changeCoin)

        self.pastPrice = pybithumb.get_current_price(self.coin)

        self.btnStart.clicked.connect(self.btn_start)
        self.btnStop.clicked.connect(self.btn_stop)
Beispiel #4
0
    def strategy1(self):
        '''
        title : 변동성 돌파전략
        '''
        now = datetime.datetime.now()

        # 당일 청산 (23:50:00 ~ 23:50:10)
        if sell_time1 < now < sell_time2:
            try_sell(tickers)  # 각 가상화폐에 대해 매도 시도
            holdings = {ticker: True
                        for ticker in tickers}  # 당일에는 더 이상 매수되지 않도록
            time.sleep(10)

        # 새로운 거래일에 대한 데이터 셋업 (00:01:00 ~ 00:01:10)
        if setup_time1 < now < setup_time2:
            tickers = pybithumb.get_tickers()  # 티커 목록 갱신
            try_sell(tickers)  # 매도 되지 않은 코인에 대해서 한 번 더 매도 시도

            noises = cal_noise(tickers)
            targets = inquiry_targets(tickers)  # 목표가 갱신
            mas = inquiry_moving_average(tickers)  # 이동평균 갱신
            budget_per_coin = cal_budget()  # 코인별 최대 배팅 금액 계산

            sell_time1, sell_time2 = make_sell_times(now)  # 당일 매도 시간 갱신
            setup_time1, setup_time2 = make_setup_times(now)  # 다음 거래일 셋업 시간 갱신

            holdings = {ticker: False
                        for ticker in tickers}  # 모든 코인에 대한 보유 상태 초기화
            high_prices = {ticker: 0 for ticker in tickers}  # 코인별 당일 고가 초기화
            time.sleep(10)

        # 현재가 조회
        prices = inquiry_cur_prices(tickers)
        update_high_prices(tickers, high_prices, prices)
        print_status(now, tickers, prices, targets, noises, mas, high_prices)

        # 매수
        if prices is not None:
            try_buy(tickers, prices, targets, noises, mas, budget_per_coin,
                    holdings, high_prices)

        # 익절
        try_profit_cut(tickers, prices, targets, holdings)

        time.sleep(INTERVAL)
Beispiel #5
0
    def update_info(self):
        '''
        title : 전략 업데이트(매일 자정 실행)
        '''
        ## 필드변수 초기화##
        now = datetime.datetime.now()
        sell_time1, sell_time2 = make_sell_times(now)
        setup_time1, setup_time2 = make_setup_times(now)

        tickers = pybithumb.get_tickers()

        noises = cal_noise(tickers)
        targets = inquiry_targets(tickers)
        mas = inquiry_moving_average(tickers)
        budget_per_coin = cal_budget()

        holdings = {ticker: False for ticker in tickers}
        high_prices = inquiry_high_prices(tickers)
Beispiel #6
0
def get_up_market():
    tickers = pybithumb.get_tickers()
    start_time = datetime.datetime.now()

    for ticker in tickers :
        df = pybithumb.get_ohlcv(ticker)
        ma5 = df['close'].rolling(5).mean()
        
        price = pybithumb.get_current_price(ticker)

        last_ma5 = ma5[-2]

        if price > last_ma5 : 
            print(ticker, "상승장")
        else:
            print(ticker, '하락장')

    end_time = datetime.datetime.now()

    print("소요시간:[",end_time - start_time, "]")
Beispiel #7
0
def get_coin_dayprice():

    try:
        if not os.path.exists("coin"):
            os.makedirs("coin")
    except OSError:
        print("Error: Creating directory")


    dont_buy = ['KMD','ADX','LBC','IGNIS','DMT','EMC2','TSHP','LAMB','EDR','PXL','PICA','RDD','RINGX'\
                ,'VITE','ITAM','SYS','NXT','BFT','NCASH','FSN','PI','RCN','PRO','ANT','BASIC','CON','BTT','NEO']

    tickers = pybithumb.get_tickers()
    name_dic = {'name': []}
    name_list = []

    for ticker in tickers:

        df = pybithumb.get_ohlcv(ticker)
        df = df.reset_index()

        flag = datetime(2021, 1, 1)

        if df['time'].iloc[0] < flag:

            if ticker in dont_buy:
                continue
            df = df.set_index('time')
            df.to_csv("./coin/" + ticker + ".csv")
            name = ticker + ".csv"
            name_list.append(name)
            time.sleep(0.1)

        else:
            print(ticker, df['time'].iloc[0])
            continue

        name_dic['name'] = name_list
        df = pd.DataFrame(name_dic)
        df.to_csv("tickerlist.csv")
    def __init__(self):
        interval_list = [
            '24h', '12h', '6h', '1h', '30m', '10m', '5m', '3m', '1m'
        ]
        tickers = pybithumb.get_tickers()
        if tickers != None:
            print(tickers)
            for ticker in tickers:
                try:
                    if ticker == "CON":
                        ticker = "CON_"
                        os.mkdir('./data/' + str(ticker))
                    else:
                        os.mkdir('./data/' + str(ticker))
                except:
                    print("Folder is exist!")

                retry_cnt = 1
                for interval in interval_list:
                    self.get_candlestick(ticker, interval, retry_cnt)
        else:
            print("Bithumb API Error : Cannot fetch tickers")
    def parse_detail(self):
        tickers = pybithumb.get_tickers()

        for ticker in tickers:
            # price = pybithumb.get_current_price(ticker)   # 현재가 조회
            detail = pybithumb.get_market_detail(
                ticker)  # 저가, 고가, 평균 거래 금액, 거래량
            print(ticker, detail)

            orderbook = pybithumb.get_orderbook(
                ticker)  # 시점, 거래화폐, 코인명, 매도호가, 매수호가
            print(
                orderbook["order_currency"] + " / " +
                orderbook["payment_currency"],
                datetime.datetime.fromtimestamp(
                    int(orderbook["timestamp"]) / 1000))
            for bid in orderbook['bids']:
                print("매수호가: ", bid['price'], "매수잔량: ", bid['quantity'])
            for ask in orderbook['asks']:
                print("매도호가: ", bid['price'], "매도잔량: ", bid['quantity'])

            time.sleep(0.1)
Beispiel #10
0
 def get_tickers(self):
     """
     사용중인 ticker리스트를 출력
     - caching json object
     """
     cache = self.cache
     d = cache.get(CACHE_get_tickers)
     if d:
         return json.loads(d)
     else:
         tickers = pybithumb.get_tickers()
         # upbit를 통해서 교차 검증
         tickers = list(
             filter(
                 lambda x: requests.get(
                     f"https://static.upbit.com/logos/{x}.png").status_code
                 == 200,
                 tickers,
             ))
         print("tickers list : ", tickers)  # tickers list
         print("tickers len : ", len(tickers))  # 97 장 형성
         cache.setex(CACHE_get_tickers, CACHE_get_tickers_TIME,
                     json.dumps(tickers))
     return tickers
Beispiel #11
0
import pybithumb

tickers = pybithumb.get_tickers()
print(tickers)
print(len(tickers))
print(type(tickers))
            print(
                "{:<6} {:0.2f} 목표가: {:>8.0f} 이동평균: {:>8.0f} 현재가: {:>8.0f} 고가: {:>8.0f} 수익률: {:>3.1f}"
                .format(ticker, noise, target, ma, price, high_price, gain))
    except:
        logger.info("print_status error")
        pass


#----------------------------------------------------------------------------------------------------------------------
# 매매 알고리즘 시작
#---------------------------------------------------------------------------------------------------------------------
now = datetime.datetime.now()  # 현재 시간 조회
sell_time1, sell_time2 = make_sell_times(now)  # 초기 매도 시간 설정
setup_time1, setup_time2 = make_setup_times(now)  # 초기 셋업 시간 설정

tickers = pybithumb.get_tickers()  # 티커 리스트 얻기

noises = cal_noise(tickers)
targets = inquiry_targets(tickers)  # 코인별 목표가 계산
mas = inquiry_moving_average(tickers)  # 코인별로 5일 이동평균 계산
budget_per_coin = cal_budget()  # 코인별 최대 배팅 금액 계산

holdings = {ticker: False for ticker in tickers}  # 보유 상태 초기화
high_prices = inquiry_high_prices(tickers)  # 코인별 당일 고가 저장

while True:
    now = datetime.datetime.now()

    # 당일 청산 (23:50:00 ~ 23:50:10)
    if sell_time1 < now < sell_time2:
        try_sell(tickers)  # 각 가상화폐에 대해 매도 시도
Beispiel #13
0
import pybithumb
import time

con_key = ""
sec_key = ""

#객체 생성
bithumb = pybithumb.Bithumb(con_key, sec_key)

#티커의 잔고 얻기
for ticker in pybithumb.get_tickers():
    balance = bithumb.get_balance(ticker)
    print(ticker, ":", balance)
    time.sleep(0.1)

## 매수
#지정가 매수
order = bithumb.buy_limit_order("BTC", 3900000, 개수)
print(order)
#비트코인은 최소 0.001개를 주문해야 함. 빗썸은 소수점 넷째 자리까지의 주문만 가능
#'호가 단위' 1,000원 단위로 비트코인의 가격이 결정

#시장가 매수
order = bithumb.buy_market_order("BTC", 개수)
print(order)

#본인 계좌의 보유 원화를 조회하고, 최우선 매도 호가 금액을 얻어와 매수할 수 있는 비트코인 개수를 계산
krw = bithumb.get_balance("BTC")[2]
orderbook = pybithumb.get_orderbook("BTC")

asks = orderbook['asks']
Beispiel #14
0
class Strategy:
    print("안녕")
    """
    Strategy

    'Strategy' : log class
    'Date' : 2021.03.29
    'Author' : 최푸름
    'func' : 전략수립 클래스 
         - 1. 변동성 돌파 전략
         - 2. 실시간 기울기 파악매매법(작성중)
    """

    ############# 필드 상수  #####################################################################################
    INTERVAL = 3  # 매수 시도 interval (1초 기본)
    DEBUG = False  # True: 매매 API 호출 안됨, False: 실제로 매매 API 호출

    COIN_NUMS = 10  # 분산 투자 코인 개수 (자산/COIN_NUMS를 각 코인에 투자)
    LARRY_K = 0.5
    BALANCE = 0.5  # 자산의 50%만 투자 50%는 현금 보유

    GAIN = 0.3  # 30% 이상 이익시 50% 물량 익절
    DUAL_NOISE_LIMIT1 = 0.75  # 듀얼 노이즈가 0.75 이하인 종목만 투자
    #############################################################################################################

    MIN_ORDERS = {
        "BTC": 0.001,
        "ETH": 0.01,
        "DASH": 0.01,
        "LTC": 0.01,
        "ETC": 0.1,
        "XRP": 10,
        "BCH": 0.001,
        "XMR": 0.01,
        "ZEC": 0.01,
        "QTUM": 0.1,
        "BTG": 0.1,
        "EOS": 0.1,
        "ICX": 1,
        "VEN": 1,
        "TRX": 100,
        "ELF": 10,
        "MITH": 10,
        "MCO": 10,
        "OMG": 0.1,
        "KNC": 1,
        "GNT": 10,
        "HSR": 1,
        "ZIL": 100,
        "ETHOS": 1,
        "PAY": 1,
        "WAX": 10,
        "POWR": 10,
        "LRC": 10,
        "GTO": 10,
        "STEEM": 10,
        "STRAT": 1,
        "ZRX": 1,
        "REP": 0.1,
        "AE": 1,
        "XEM": 10,
        "SNT": 10,
        "ADA": 10
    }

    #변수#
    logger = Logger.Logger()

    now = datetime.datetime.now()  # 현재 시간 조회
    sell_time1, sell_time2 = make_sell_times(now)  # 초기 매도 시간 설정
    setup_time1, setup_time2 = make_setup_times(now)  # 초기 셋업 시간 설정

    tickers = pybithumb.get_tickers()  # 티커 리스트 얻기
    targets = inquiry_targets(tickers)  # 코인별 목표가 계산
    mas = inquiry_moving_average(tickers)  # 코인별로 5일 이동평균 계산
    budget_per_coin = cal_budget()  # 코인별 최대 배팅 금액 계산

    portfolio = select_portfolio(tickers)  # 듀얼 노이즈 전략 기반으로 portfolio 선정
    holdings = {ticker: False for ticker in tickers}  # 보유 상태 초기화
    high_prices = inquiry_high_prices(tickers)  # 코인별 당일 고가 저장

    def strategy1(self):
        '''
        title : 변동성 돌파전략
        '''
        now = datetime.datetime.now()

        # 당일 청산 (23:50:00 ~ 23:50:10)
        if sell_time1 < now < sell_time2:
            try_sell(tickers)  # 각 가상화폐에 대해 매도 시도
            holdings = {ticker: True
                        for ticker in tickers}  # 당일에는 더 이상 매수되지 않도록
            time.sleep(10)

        # 새로운 거래일에 대한 데이터 셋업 (00:01:00 ~ 00:01:10)
        if setup_time1 < now < setup_time2:
            tickers = pybithumb.get_tickers()  # 티커 목록 갱신
            try_sell(tickers)  # 매도 되지 않은 코인에 대해서 한 번 더 매도 시도

            noises = cal_noise(tickers)
            targets = inquiry_targets(tickers)  # 목표가 갱신
            mas = inquiry_moving_average(tickers)  # 이동평균 갱신
            budget_per_coin = cal_budget()  # 코인별 최대 배팅 금액 계산

            sell_time1, sell_time2 = make_sell_times(now)  # 당일 매도 시간 갱신
            setup_time1, setup_time2 = make_setup_times(now)  # 다음 거래일 셋업 시간 갱신

            holdings = {ticker: False
                        for ticker in tickers}  # 모든 코인에 대한 보유 상태 초기화
            high_prices = {ticker: 0 for ticker in tickers}  # 코인별 당일 고가 초기화
            time.sleep(10)

        # 현재가 조회
        prices = inquiry_cur_prices(tickers)
        update_high_prices(tickers, high_prices, prices)
        print_status(now, tickers, prices, targets, noises, mas, high_prices)

        # 매수
        if prices is not None:
            try_buy(tickers, prices, targets, noises, mas, budget_per_coin,
                    holdings, high_prices)

        # 익절
        try_profit_cut(tickers, prices, targets, holdings)

        time.sleep(INTERVAL)

    def update_info(self):
        '''
        title : 전략 업데이트(매일 자정 실행)
        '''
        ## 필드변수 초기화##
        now = datetime.datetime.now()
        sell_time1, sell_time2 = make_sell_times(now)
        setup_time1, setup_time2 = make_setup_times(now)

        tickers = pybithumb.get_tickers()

        noises = cal_noise(tickers)
        targets = inquiry_targets(tickers)
        mas = inquiry_moving_average(tickers)
        budget_per_coin = cal_budget()

        holdings = {ticker: False for ticker in tickers}
        high_prices = inquiry_high_prices(tickers)
Beispiel #15
0

# ------ VALUE SET ------#
Volume_Ratio = 5
CoinVolume = 20
Resetcnt = 1
Coins = None

# ----- GUI SET ------#
app = QApplication(sys.argv)

while True:

    # ------- INPUT COIN -------#
    if Resetcnt == 1:
        Coinlist = pybithumb.get_tickers()  # 새로 찍어줘야함 ( 새로운 코인 탄생 )
        Fluclist = []  # 새로 찍을때만 초기화

        while True:
            try:
                for Coin in Coinlist:
                    tickerinfo = pybithumb.get_market_detail(Coin)
                    data = tickerinfo['data']
                    fluctate = data['fluctate_rate_24H']
                    Fluclist.append(fluctate)
                    time.sleep(1 / 90)
                break
            except Exception as e:
                Fluclist.append(None)
                print(e)
Beispiel #16
0
# ch05/05_01.py
import pybithumb

tickers = pybithumb.get_tickers()  # ticker 목록 얻기
print(tickers)