Post
Topic
Board Trading Discussion
Re: Trading bot for sevenseas.exchange
by
Den11
on 09/09/2023, 08:18:56 UTC

Here is a bot that worked on txbit.io if anyone is interested.
I repeat, the risks are great.




from secrets import APIKEY, SECRET
from txbit import Txbit
import time
import requests

# Создание экземпляра класса Txbit
txbit = Txbit(APIKEY, SECRET)

# Торговая пара P3D/USDT
market = 'P3D/USDT'

# Функция для отмены всех ордеров на паре 'P3D/USDT'
def отменить_все_ордера():
    open_orders = txbit.getOpenOrders(market)
    for order in open_orders.result:
        order_id = order['OrderUuid']
        cancel_order = txbit.cancel(order_id)
        if cancel_order.success:
            print(f'Ордер {order_id} успешно отменен.')
        else:
            print(f'Не удалось отменить ордер {order_id}.')

# Отменить все ордеры перед запуском бота
отменить_все_ордера()

# Максимальная цена покупки и минимальная цена продажи
max_buy_price = 0.00860000
min_sell_price = 0.01000000

# Основной цикл бота
while True:
    try:
        # Проверка баланса P3D
        balance = txbit.getBalance('P3D')
        p3d_balance = float(balance.result['Available'])

        if p3d_balance >= 300:
            # Цикл продажи
            while True:
                # Получение ордербука на продажу
                sell_orderbook = txbit.getOrderBook(market, 'sell')
                # Получение ордербука на покупку
                buy_orderbook = txbit.getOrderBook(market, 'buy')

                # Проверка наличия ордеров в ордербуке на продажу
                if len(sell_orderbook.result) > 0:
                    # Получение лучшего ордера на продажу
                    best_sell_order = min(sell_orderbook.result, key=lambda x: x['Rate'])
                    best_sell_price = best_sell_order['Rate']

                    # Проверка наличия ордеров в ордербуке на покупку
                    if len(buy_orderbook.result) > 0:
                        # Получение лучшего ордера на покупку
                        best_buy_order = max(buy_orderbook.result, key=lambda x: x['Rate'])
                        best_buy_price = best_buy_order['Rate']

                        # Вычисление разницы в цене между продажей и покупкой в процентах
                        price_difference_percent2 = (best_sell_price - best_buy_price) / best_buy_price * 100

                        # Проверка разницы в цене
                        if price_difference_percent2 >= 3:
                            # Вывод разницы в цене между продажей и покупкой
                            print(f'Разница в цене между продажей и покупкой составляет {price_difference_percent2}%')

                            # Проверка минимальной цены продажи
                            if best_sell_price >= min_sell_price:
                                # Вычисление цены для нового ордера на продажу
                                sell_price = best_sell_price - 0.00000001
                                # Размер ордера на продажу
                                sell_quantity = txbit.getBalance('P3D').result['Available']
                                # Размещение ордера на продажу
                                sell_order = txbit.sellLimit(market, sell_quantity, sell_price)
                                print(f'Sell Order Placed for {sell_quantity} P3D at price {sell_price}')
                                # Ожидание 30 секунд
                                time.sleep(30)
                                # Отмена ордера на продажу
                                cancel_order = txbit.cancel(sell_order.result['uuid'])
                                print(f'Sell Order Cancelled: {cancel_order}')
                                # Проверка выполнения ордера на продажу
                                if cancel_order.success and cancel_order.result is not None and cancel_order.result['Quantity'] > 0:
                                    # Обновление размера ордера на продажу
                                    sell_quantity = float(cancel_order.result['Quantity'])
                            else:
                                print(f'Цена продажи {best_sell_price} ниже минимальной цены продажи {min_sell_price}')
                                # Ожидание 10 секунд
                                time.sleep(10)
                        else:
                            print('Ожидание разницы в цене...')
                            # Ожидание 10 секунд
                            time.sleep(10)
                    else:
                        print('Отсутствуют ордера на покупку')
                else:
                    print('Отсутствуют ордера на продажу')

                # Проверка баланса P3D
                balance = txbit.getBalance('P3D')
                p3d_balance = float(balance.result['Available'])
                if p3d_balance == 0:
                    # Переход к циклу покупки
                    break
        else:
            # Цикл покупки
            while True:
                # Получение ордербука на покупку
                buy_orderbook = txbit.getOrderBook(market, 'buy')
                # Получение ордербука на продажу
                sell_orderbook = txbit.getOrderBook(market, 'sell')

                # Проверка наличия ордеров в ордербуке на покупку
                if len(buy_orderbook.result) > 0:
                    # Получение лучшего ордера на покупку
                    best_buy_order = max(buy_orderbook.result, key=lambda x: x['Rate'])
                    best_buy_price = best_buy_order['Rate']

                    # Проверка наличия ордеров в ордербуке на продажу
                    if len(sell_orderbook.result) > 0:
                        # Получение лучшего ордера на продажу
                        best_sell_order = min(sell_orderbook.result, key=lambda x: x['Rate'])
                        best_sell_price = best_sell_order['Rate']

                        # Вычисление разницы в цене между покупкой и продажей в процентах
                        price_difference_percent1 = (best_sell_price - best_buy_price) / best_sell_price * 100

                        # Проверка разницы в цене
                        if price_difference_percent1 >= 3:
                            # Вывод разницы в цене между покупкой и продажей
                            print(f'Разница в цене между покупкой и продажей составляет {price_difference_percent1}%')

                            # Проверка максимальной цены покупки
                            if best_buy_price <= max_buy_price:
                                # Вычисление цены для нового ордера на покупку
                                buy_price = best_buy_price + 0.00000001
                                # Размер ордера на покупку
                                buy_quantity = 500
                                # Размещение ордера на покупку
                                buy_order = txbit.buyLimit(market, buy_quantity, buy_price)
                                print(f'Buy Order Placed for {buy_quantity} P3D at price {buy_price}')
                                # Ожидание 30 секунд
                                time.sleep(30)
                                # Отмена ордера на покупку
                                cancel_order = txbit.cancel(buy_order.result['uuid'])
                                print(f'Buy Order Cancelled: {cancel_order}')
                                # Проверка выполнения ордера на покупку
                                if cancel_order.success and cancel_order.result is not None and cancel_order.result['Quantity'] > 0:
                                    # Обновление размера ордера на покупку
                                    buy_quantity = 3 - float(cancel_order.result['Quantity'])
                            else:
                                print(f'Лучшая цена на покупку {best_buy_price} превышает максимальную цену покупки {max_buy_price}')
                                # Ожидание 10 секунд
                                time.sleep(10)
                        else:
                            print('Ожидание разницы в цене...')
                            # Ожидание 10 секунд
                            time.sleep(10)
                    else:
                        print('Отсутствуют ордера на продажу')
                else:
                    print('Отсутствуют ордера на покупку')

                # Проверка баланса P3D
                balance = txbit.getBalance('P3D')
                p3d_balance = float(balance.result['Available'])
                if p3d_balance >= 300:
                    # Переход к циклу продажи
                    break

    except requests.exceptions.RequestException:
        # Обработка ошибки отсутствия интернет-соединения
        print('Отсутствует интернет-соединение. Ожидание...')
        time.sleep(10)
        continue

    except Exception as e:
        # Обработка других исключений
        print(f'Произошла ошибка: {str(e)}')
        break