예제 #1
0
 def bull_market(self, ticker, num):
     dayData = pybithumb.get_ohlcv(ticker)
     ma = dayData["close"].rolling(num).mean()
     last_ma = ma[-2]
     price = pybithumb.get_current_price(ticker)
     state = None
     if price > last_ma:
         state = "상승장"
     else:
         state = "하락장"
     return price, last_ma, state
예제 #2
0
def get_target_price(ticker):
    df = pybithumb.get_ohlcv("XRP")
    yesterday = df.iloc[-2]

    today_open = yesterday['close']
    yesterday_high = yesterday['high']
    yesterday_low = yesterday['low']
    target = today_open + (yesterday_high - yesterday_low) * 0.5
    target = int(target)

    return target
예제 #3
0
def get_ror(k=0.5):
    df = pybithumb.get_ohlcv("BTC")
    df['range'] = (df['high'] - df['low']) * k
    df['target'] = df['open'] + df['range'].shift(1)

    fee = 0.0032
    df['ror'] = np.where(df['high'] > df['target'],
                         df['close'] / df['target'] - fee, 1)

    ror = df['ror'].cumprod()[-2]
    return ror
예제 #4
0
def get_ma2_min(Coin):

    df = pybithumb.get_ohlcv(Coin, 'minute1')

    df['MA20'] = df['close'].rolling(20).mean()

    period = 5
    slope, intercept, r_value, p_value, stderr = stats.linregress(
        [i for i in range(period)], df.MA20[-period:])

    return slope
예제 #5
0
    def get_market_infos(self, ticker):
        df = pybithumb.get_ohlcv(ticker)
        ma5 = df['close'].rolling(window=5).mean()
        price = pybithumb.get_current_price(ticker)
        last_ma5 = ma5[-2]

        state = None
        if price > last_ma5:
            state = '상승장'
        else:
            state = '하락장'
        return price, last_ma5, state
예제 #6
0
def get_target_price(ticker):
    df = pybithumb.get_ohlcv("BTC")  # 비트코인의 일봉 정보를 dataframe 객체로 얻어온다.
    yesterday = df.iloc[
        -2]  # 끝에서 두 번째 행 (전일 데이터)를 가져온다. yesterday에는 전일 데이터가 Series 객체로 바인딩된다.

    today_open = yesterday['close']  # 당일 시가를 얻어온다.
    yesterday_high = yesterday['high']  # 전일 고가를 얻어온다.
    yesterday_low = yesterday['low']  # 전일 저가를 얻어온다.
    target = today_open + (
        yesterday_high - yesterday_low
    ) * 0.5  # 래리 윌리엄스 변동성 돌파 전략의 목표가를 계산한다. 목표가 = (당일 시가 + 레인지 x 0.5)
    return target
def inquiry_high_prices(tickers):
    try:
        high_prices = {}
        for ticker in tickers:
            df = pybithumb.get_ohlcv(ticker, interval="hour")
            cur_hour = df.iloc[-1]
            cur_hour_high = cur_hour['high']
            high_prices[ticker] = cur_hour_high

        return high_prices
    except:
        return {ticker: 0 for ticker in tickers}
def cal_target():
    try:
        df = pybithumb.get_ohlcv("BTC")
        yesterday = df.iloc[-2]

        today_open = yesterday['close']
        yesterday_high = yesterday['high']
        yesterday_low = yesterday['low']
        target = today_open + (yesterday_high - yesterday_low) * 0.5
        return target
    except:
        return None
예제 #9
0
    def loadCoinHistory(self):
        try:
            coin = self.comboBox_coinName.currentText()
            period = self.comboBox_periodType.currentText()

            self.df = pybithumb.get_ohlcv(coin, period)

            self.dateTimeEdit_start.setDateTime(self.df.index[1])
            self.dateTimeEdit_end.setDateTime(self.df.index[len(self.df) - 1])

        except Exception as err:
            QMessageBox.information(self, "Error", str(err))
def inquiry_high_prices(tickers):
    try:
        high_prices = {}
        for ticker in tickers:
            df = pybithumb.get_ohlcv(ticker)
            today = df.iloc[-1]
            today_high = today['high']
            high_prices[ticker] = today_high
        return high_prices
    except:
        logger.info("inquiry_high_prices error")
        return {ticker: 0 for ticker in tickers}
    def get_market_infos(self, ticker):
        df = pybithumb.get_ohlcv(ticker)
        ma5 = df['close'].rolling(window=5).mean()
        ma20 = df['close'].rolling(window=20).mean()
        volume = df['volume'][-1]
        # 전일 이동 편균
        last_ma5 = ma5[-2]
        last_ma20 = ma20[-2]
        price = pybithumb.get_current_price(ticker)

        #all_data = pybithumb.get_current_price("ALL")
        # for ticker, data in all.items()
        return price, volume, last_ma5, last_ma20
예제 #12
0
def get_target_price(ticker):
    df = pybithumb.get_ohlcv(ticker)
    # -1 today
    yesterday = df.iloc[-2]

    today_open = yesterday['close']
    yesterday_high = yesterday['high']
    yesterday_low = yesterday['low']
    #가격 변동폭 : 전일 고가 - 전일 저가
    #매수 기준 :당일 시간에서 (변동폭 * 0.5) 이상 상승하면 매수
    #매도 기준: 당일 종가에 매도
    target = today_open + (yesterday_high - yesterday_low) * 0.5
    return target
예제 #13
0
def getATR(currency, interval):
    df = pybithumb.get_ohlcv(currency, interval)
    close = df['close'][-15:-1]
    high = df['high'][-15:-1]
    low = df['low'][-15:-1]

    TRs = []
    TRs.append(high[0] - low[0])
    for i in range(1, 14):
        TRs.append(
            max(abs(high[i] - low[i]), abs(high[i] - close[i - 1]),
                abs(low[i] - close[i - 1])))
    return sum(TRs) / len(TRs)
    def get_market_infos(self, ticker):
        try:

            df = pybithumb.get_ohlcv(ticker)
            ma5 = df['close'].rolling(window=5).mean()
            ma20 = df['close'].rolling(window=20).mean()
            # 전일 이동 편균
            last_ma5 = ma5[-2]
            last_ma20 = ma20[-2]
            price = pybithumb.get_current_price(ticker)
            return price, last_ma5, last_ma20
        except:
            None, None, None
예제 #15
0
파일: 09.py 프로젝트: sharebook-kr/books
def get_ror(ticker):
    df = pybithumb.get_ohlcv(ticker, interval="day")
    df = df["2019"]

    df["변동성"] = (df['high'] - df['low']) * 0.5
    df["목표가"] = df["open"] + df["변동성"].shift(1)

    df["수익률"] = np.where(df['high'] > df['목표가'],
                            df['목표가'] / df['close'],
                            1)

    df["기간수익률"] = df["수익률"].cumprod()
    return df["기간수익률"].iloc[-1]
예제 #16
0
    def get_market_infos(self, ticker):       # 나머지 데이터 추가하기
        df = pybithumb.get_ohlcv(ticker)
        ma5 = df['close'].rolling(window=5).mean()
        last_ma5 = ma5[-2]
        price = pybithumb.get_current_price(ticker)

        state = None
        if price > last_ma5:
            state = "상승장"
        else:
            state = "하락장"

        return price, last_ma5, state
예제 #17
0
    def bull_market(self, ticker):
        ohlcv_btc = pybithumb.get_ohlcv(ticker, "KRW", "day")
        ma5 = ohlcv_btc['close'].rolling(window=5).mean()  # 5일 이동평균선 연산.
        price = pybithumb.get_current_price(ticker)
        last_ma5 = ma5[-2]

        state = None
        if price > last_ma5:
            state = "상승장"
        else:
            state = "하락장"

        return price, last_ma5, state
예제 #18
0
def bull_market(ticker):
    df = pybithumb.get_ohlcv(ticker)  # 티커의 과거 시세 가져오기
    ma5 = df['close'].rolling(window=5).mean()  # close(종가)를 5개씩 그룹화하여 평균을 낸다.
    price = pybithumb.get_current_price(ticker)  # 티커의 현재가 가져오기
    last_ma5 = ma5[-2]  # 끝에서 두 번째 위치한 전일 이동평균을 last_ma5 변수에 바인딩한다.

    if price > last_ma5:
        print("TICKER : {}, 상승장, 현재가격 : {},  전일이동평균 : {}".format(
            ticker, price, last_ma5))
        return True
    else:
        print("TICKER : {}, 하락장, 현재가격 : {},  전일이동평균 : {}".format(
            ticker, price, last_ma5))
        return False
예제 #19
0
    def get_market_infos(self, ticker):
        try:
            df = pybithumb.get_ohlcv(ticker)
            ma5 = df['close'].rolling(window=5).mean()
            ma5_last = ma5[-2]

            price = pybithumb.get_current_price(ticker)
            if price > ma5_last:
                status = "상승장"
            else:
                status = "하락장"

            return price, ma5_last, status
        except:
            return None, None, None
def cal_moving_average(ticker="BTC", window=5):
    '''
    5일 이동평균을 계산
    :param ticker:
    :param window:
    :return:
    '''
    try:
        df = pybithumb.get_ohlcv(ticker)
        close = df['close']
        ma_series = close.rolling(window=window).mean()
        yesterday_ma = ma_series[-2]
        return yesterday_ma
    except:
        return None
예제 #21
0
def get_hpr(ticker):
    df = pybithumb.get_ohlcv(ticker)
    df = df['2018']

    df['ma5'] = df['close'].rolling(window=5).mean().shift(1)
    df['range'] = (df['high'] - df['low']) * 0.5
    df['target'] = df['open'] + df['range'].shift(1)
    df['bull'] = df['open'] > df['ma5']

    fee = 0.0032
    df['ror'] = np.where((df['high'] > df['target']) & df['bull'],
                         df['close'] / df['target'] - fee, 1)

    df['hpr'] = df['ror'].cumprod()
    df['dd'] = (df['hpr'].cummax() - df['hpr']) / df['hpr'].cummax() * 100
    return df['hpr'][-2]
def get_ror(k):
    df = pybithumb.get_ohlcv("BTC")
    # df = df['2019']
    df['range'] = (df['high'] - df['low']) * k
    df['target'] = df['open'] + df['range'].shift(1)

    fee = 0.0032

    # 최고가가 타겟가 보다 높은 건 매수가 일어난 것이고, 일어난 매수의 수익률은 종가/타겟가의 비율. 매수가 안일어나면 1
    df['ror'] = np.where(df['high'] > df['target'],
                         df['close'] / df['target'] - fee, 1)
    # df.to_excel('btc.xlsx')

    #각 거래의 수익 비율들의 곱은 전체 수익률이 됨.
    ror = df['ror'].cumprod()[-2]
    return ror
예제 #23
0
def cal_target(ticker):
    '''
    각 코인에 대한 목표가 저장
    :param ticker: 티커, 'BTC'
    :return: 목표가
    '''
    try:
        df = pybithumb.get_ohlcv(ticker)
        yesterday = df.iloc[-2]
        today_open = yesterday['close']
        yesterday_high = yesterday['high']
        yesterday_low = yesterday['low']
        target = today_open + (yesterday_high - yesterday_low) * LARRY_K
        return target
    except:
        return None
예제 #24
0
def get_ror(k=0.8):

    df = pybithumb.get_ohlcv("BTC")
    df['range'] = (df['high'] - df['low']) * k
    df['target'] = df['open'] + df['range'].shift(1)

    df['ror'] = np.where(df['high'] > df['target'],
                         df['close'] / df['target'] - FEE, 1)
    # df = df['2020']  2020년의 수익률을 알아보기 위한 코드

    # 거래일 마다의 기간 수익률
    df['hpr'] = df['ror'].cumprod()

    df['dd'] = (df['hpr'].cummax() - df['hpr']) / df['hpr'].cummax() * 100
    MDD = df['dd'].max()
    print(MDD)
    return df
예제 #25
0
def get_target_price(tickers):
    for k, v in tickers.items():
        # 매수 목표 가격 만들기
        df = pybithumb.get_ohlcv(k)
        yesterday = df.iloc[-2]
        today_open = yesterday['close']
        yesterday_high = yesterday['high']
        yesterday_low = yesterday['low']
        target_price = round(today_open + (yesterday_high - yesterday_low) * K, 1)

        # 이동평균 값 만들기
        close = df['close']
        ema13 = close.ewm(span=13).mean()[-2]

        # 매수 목표 가격, 지수이동평균 값, 24시간 가격 변동률, 매수 여부, 20% 이상 가격 상승 시 메세지 전송 여부
        target_prices[k] = [target_price, ema13, True, True]  
    return target_prices
예제 #26
0
파일: 05_11.py 프로젝트: jeeHwon/pyPJ
    def get_market_infos(self, ticker):
        try:
            df = pybithumb.get_ohlcv(ticker)
            ma5 = df['close'].rolling(window=5).mean()

            price = pybithumb.get_current_price(ticker)
            last_ma5 = ma5[-2]

            state = None
            if price > last_ma5:
                state = "상승장"
            else:
                state = "하락장"

            return (price, last_ma5, state)
        except:
            return (None, None, None)
예제 #27
0
def cal_multiple_moving_average(ticker="BTC"):
    '''
    3일 ~ 20일의 18개의 이동 평균값을 계산
    :param ticker: 티커
    :return:
    '''
    try:
        df = pybithumb.get_ohlcv(ticker)
        close = df['close']

        multiple_ma = []
        for window in range(3, 21):
            ma_series = close.rolling(window=window).mean()
            ma = ma_series[-2]
            multiple_ma.append(ma)
        return multiple_ma
    except:
        return None
def cal_target(ticker):
    '''
    각 코인에 대한 목표가 계산
    :param ticker: 코인에 대한 티커
    :return:
    '''
    try:
        df = pybithumb.get_ohlcv(ticker)
        yesterday = df.iloc[-2]
        today = df.iloc[-1]
        today_open = today['open']
        yesterday_high = yesterday['high']
        yesterday_low = yesterday['low']
        target = today_open + (yesterday_high - yesterday_low) * LARRY_K
        return target
    except:
        logger.info("cal_target error {}".format(ticker))
        return None
def cal_target(ticker):
    '''
    각 코인에 대한 목표가 저장
    :param ticker: 티커, 'BTC'
    :return: 목표가
    '''
    try:
        df = pybithumb.get_ohlcv(ticker, interval="hour")
        one_hour_ago = df.iloc[-2]
        cur_hour = df.iloc[-1]
        cur_hour_open = cur_hour['open']
        one_hour_ago_high = one_hour_ago['high']
        one_hour_ago_low = one_hour_ago['low']
        target = cur_hour_open + (one_hour_ago_high -
                                  one_hour_ago_low) * LARRY_K
        return target
    except:
        return None
예제 #30
0
def cal_target(ticker, kvalues):
    '''
    각 코인에 대한 목표가 저장
    :param ticker: 티커, 'BTC'
    :return: 목표가
    '''
    try:
        df = pybithumb.get_ohlcv(ticker)
        k = cal_adaptive_k(df)
        kvalues[ticker] = k
        yesterday = df.iloc[-2]

        today_open = yesterday['close']
        yesterday_high = yesterday['high']
        yesterday_low = yesterday['low']
        target = today_open + (yesterday_high - yesterday_low) * k
        return target
    except:
        return None