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)
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
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
def __init__(self, stock_exchange: str, key='', secret=''): self.conn = BotConn(stock_exchange, key, secret)
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)
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)
def post(self, request): return Response(get_stock_exchange_params( request.data['stock_exchange'], BotConn(request.data['stock_exchange'])), status=status.HTTP_200_OK)
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)
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)
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)