Exemple #1
0
    def retrieve(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance)
        data = dict(serializer.data.copy())
        data['indicators'] = perform_str_to_indicator(data['indicators'])
        if data['stock_exchange'] != '':
            data.update(
                get_stock_exchange_params(data['stock_exchange'],
                                          BotConn(data['stock_exchange'])))

        data['isBotWorking'] = False
        return Response(data, status=status.HTTP_200_OK)
Exemple #2
0
def bot_start(kwargs):
    conn = BotConn(kwargs['stock_exchange'], kwargs['key'], kwargs['secret'])
    pair = '{}_{}'.format(kwargs['currency_1'], kwargs['currency_2'])
    for indicator in kwargs['indicators']:
        indicator['pair'] = pair
        indicator['candle_time'] = kwargs['candle_time']
        indicator['conn'] = conn

    bot = Bot(conn=conn, **kwargs)

    try:
        bot.start()
    except Exception as ex:
        get_conn('mongodb://*****:*****@localhost:27017/elbotesmio').insert_one(
                        {'msg': 'ERROR: {}'.format(str(ex)), 'user_id': kwargs['user_id'], 'date': datetime.now(),
                         'pair': pair, 'stock_exchange': kwargs['stock_exchange']})
    kwargs['v'].value = False
Exemple #3
0
class InputDataVerification:
    def __init__(self, stock_exchange: str, key='', secret=''):
        self.conn = BotConn(stock_exchange, key, secret)

    def verify_key_secret(self) -> bool:
        try:
            self.conn.get_balances()
            return True
        except BotException:
            raise VerifyException('Key or/and secret are not valid')

    def verify_pair(self, pair):
        try:
            self.conn.get_ticker_pair(pair)
            return True
        except KeyError:
            raise VerifyException('INVALID_MARKET')
        except BotException as ex:
            raise VerifyException(str(ex))

    def verify_balance(self, depo: float, currency: str):
        if depo < self.conn.get_balance(currency):
            return False
        else:
            raise VerifyException('Not enough balance')

    def verify_and_get_balance_percent(self, depo_percent: float, currency: str):
        depo = self.conn.get_balance(currency)
        return depo * depo_percent

    def verify_all(self, **kwargs):
        if 'depo_percent' in kwargs:
            verify_depo = True
        else:
            verify_depo = self.verify_balance(kwargs['depo'], kwargs['currency'])
        return self.verify_pair(kwargs['pair']) and verify_depo
Exemple #4
0
 def __init__(self, stock_exchange: str, key='', secret=''):
     self.conn = BotConn(stock_exchange, key, secret)
Exemple #5
0
from core.utils.BotConn import BotConn
from core.utils.Indicators.RSI import RSI


class RSI_signal:
    def __init__(self, conn: BotConn, length, value_1, value_2, pair, candle_time):
        self.conn = conn
        self.rsi = RSI(conn, candle_time, pair)
        self.length = length
        self.value_1 = value_1
        self.value_2 = value_2

    def is_signal_to_sell(self, price_list=list()):
        rsi_value = self.rsi.calculate_rsi(self.length, price_list)
        print(rsi_value)

        if rsi_value < self.value_1:
            return False
        elif rsi_value > self.value_2:
            return True
        else:
            return None


if __name__ == '__main__':
    rsi_signal = RSI_signal(BotConn('poloniex'), 10, 30, 70, 'USDT_BTC', 300)
    print(rsi_signal.is_signal_to_sell)
Exemple #6
0
        else:
            self.is_under = True

        return self.is_under

    def _get_method(self, ma_1, ma_2, pair, candle_time):
        mov_avg = MovingAverage(self.conn, candle_time, pair)
        if ma_1 == 'sma':
            return mov_avg.calculate_sma
        elif ma_1 == 'ema':
            return mov_avg.calculate_ema
        elif ma_1 == 'smma':
            return mov_avg.calculate_smma
        elif ma_1 == 'lwma':
            return mov_avg.calculate_lwma

        if ma_2 == 'sma':
            return mov_avg.calculate_sma
        elif ma_2 == 'ema':
            return mov_avg.calculate_ema
        elif ma_2 == 'smma':
            return mov_avg.calculate_smma
        elif ma_2 == 'lwma':
            return mov_avg.calculate_lwma


if __name__ == '__main__':
    ma_signal = MA_signal(BotConn('poloniex'), 10, 50, 'sma', 'sma',
                          'USDT_BTC', 300)
    print(ma_signal.is_signal_to_sell)
Exemple #7
0
 def post(self, request):
     return Response(get_stock_exchange_params(
         request.data['stock_exchange'],
         BotConn(request.data['stock_exchange'])),
                     status=status.HTTP_200_OK)
Exemple #8
0
                    print('profit = ' + str(profit))
                    print('price_ask = ' + str(price_ask))

                    # Назначаем стоп-лосс и профит на значения по-умолчанию
                    stop_loss = 0
                    profit = sys.float_info.max

            # Ждем отведенное время
            time.sleep(3)
            print('sleep')


if __name__ == '__main__':
    key = 'F4AC1AI7-JAHWF8C6-0142HBVX-J3WEKLZQ'
    secret = '948c0bd67c9f673e5eb6610348d8773537e3ad36c59028a36f5aea6b344bfcd3d21645869cbc46dea4f5ce766756bd2b9bf954ba8a5cbe0ec47f0be907d941fd'
    bot = Bot(BotConn('poloniex', key, secret), 'USDT', 'BTC', 10, 50, stop_loss=2, profit=6, depo=100, am_1='sma', am_2='sma')
    bot.start()


def bot_start(kwargs):
    conn = BotConn(kwargs['stock_exchange'], kwargs['key'], kwargs['secret'])
    pair = '{}_{}'.format(kwargs['currency_1'], kwargs['currency_2'])
    for indicator in kwargs['indicators']:
        indicator['pair'] = pair
        indicator['candle_time'] = kwargs['candle_time']
        indicator['conn'] = conn

    bot = Bot(conn=conn, **kwargs)

    try:
        bot.start()
            print(ma_args)

    def check_sell(self, price_list):
        for method in self.methods:
            if method.is_signal_to_sell(price_list) is not True:
                return False
        return True

    def check_buy(self, price_list):
        for method in self.methods:
            if method.is_signal_to_sell(price_list) is not False:
                return False
        return True


if __name__ == '__main__':
    conn = BotConn('poloniex')
    price_list = conn.get_candle_info('USDT_BTC')
    cis = Check_indicators_signals(ma='sma',
                                   ma_args={
                                       'conn': BotConn('poloniex'),
                                       'length_1': 10,
                                       'length_2': 50,
                                       'ma_1': 'sma',
                                       'ma_2': 'sma',
                                       'pair': 'USDT_BTC',
                                       'candle_time': 300,
                                       'price_list': price_list
                                   })
    print(cis.check_sell)
Exemple #10
0
            return (float(self._smma(ma_list[:-1])) * (len(ma_list) - 1) + float(ma_list[-1]['close'])) / len(ma_list)
        else:
            return 0

    def calculate_lwma(self, length: int, price_list=list()):
        if price_list:
            pass
        else:
            price_list = self.conn.get_candle_info(self.pair, self.candle_time, self.time_stamp)

        n = len(price_list) - 1
        ma_list = price_list[n - length:n]

        sum1 = 0
        sum2 = 0
        count = 1
        for x in ma_list:
            sum1 += float(x['close']) * count
            sum2 += count
            count += 1

        return sum1/sum2


if __name__ == '__main__':
    am = MovingAverage(BotConn('poloniex'), 300, 'USDT_BTC')
    print(am.calculate_lwma(14))
    # a = [1,2,3,4]
    # a.reverse()
    # print(a)
Exemple #11
0
                 candle_time: int,
                 pair: str,
                 length_1=26,
                 length_2=12,
                 length_3=9):
        self.conn = conn
        self.candle_time = candle_time
        self.macd = MACD(conn=conn,
                         candle_time=candle_time,
                         pair=pair,
                         length_1=length_1,
                         length_2=length_2,
                         length_3=length_3,
                         time_stamp=candle_times.DAY * 12)

    @property
    def is_signal_to_sell(self, price_list=list()):
        macd_values = self.macd.calculate_list(price_list)

        pprint(macd_values)
        print('{}   {}'.format(macd_values['signal'][-1],
                               macd_values['macd'][-1]))
        if macd_values['signal'][-1] > macd_values['macd'][-1]:
            return True
        else:
            return False


if __name__ == '__main__':
    macd_signal = MACD_signal(BotConn('poloniex'), 300, 'USDT_BTC')
    print(macd_signal.is_signal_to_sell)