Astranome

C3

Sep 4th, 2021 (edited)
1,551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.36 KB | None | 0 0
  1. import sqlite3
  2. import logging
  3. import time
  4. import os
  5. import math
  6.  
  7. from datetime import datetime
  8.  
  9.  
  10. from coinex.coinex import CoinEx
  11. #from somewhere_else import access_id, secret
  12.  
  13. coinex = CoinEx("D567892987546782984762567282901987466728", "F72636634674829201014664648287367273")
  14. settings = dict(
  15.     symbol='DOGEUSDT',            # Пара для отслеживания 15 JAN 2021 BTC=39000
  16.     strategy="Short",           # Стратегия - Long (повышение), Short (понижение)          
  17.     stop_loss_perc = 0.02,       # % оставания от цены
  18.     stop_loss_fixed = 1,        # Изначальный stop-loss, можно установить руками нужную сумму, потом бот подтянет.
  19.                                 # Можно указать 10000,short тогда бот высчитает, возьмет текущую цену и применит к ней процент
  20.     amount = 5,             # Кол-во монет, которое планируем продать (в случае Long) или купить (в случае Short)
  21.                                 # Если указываем Long, то альты для продажи (Например, продать 0.1 ETH в паре ETHBTC)
  22.     #amount = 11  13.5              # Если Short, то кол-во, на которое покупать, например купить на 0.1 BTC по паре ETHBTC
  23.     startrate = 0       # Нефиг продавать себе в убыток
  24. )
  25. # public API
  26. # print(coinex.market_list())
  27. ##print (coinex.balance_info())
  28. ##res=coinex.order_market('DOGEUSDT', 'sell', 5)
  29. ##print (res)
  30. ##print (coinex.balance_info())
  31.  
  32. # GET https://api.coinex.com/v1/market/info
  33.  
  34. while True:
  35.     try:
  36.         print('Проверяю пару {pair}, стратегия SPOT {strategy}'.format(pair=settings['symbol'], strategy=settings['strategy']))
  37.             # Получаем текущие курсы по паре
  38.  
  39.         # ПОЛУЧЕНИЕ ЦЕНЫ
  40.         current_rates =coinex.market_depth(market=settings['symbol'], limit=5)
  41.         bid=float(current_rates['bids'][0][0])
  42.         ask=float(current_rates['asks'][0][0])
  43.  
  44.         print('BID=', bid, ' ASK=',ask)
  45.         # МНОЖИТЕЛИ
  46.         multiplier = -1 if settings['strategy'] == "Long" else 1
  47.         mstart = 1 if settings['strategy'] == "Long" else -1 # startrate множитель
  48.  
  49.         # Если играем на повышение, то ориентируемся на цены, по которым продают, иначе на цены, по которым покупают
  50.         curr_rate = bid if settings['strategy'] == "Long" else ask
  51.  
  52.         if settings['startrate'] == 0:
  53.             settings['startrate'] = (curr_rate/100) * (settings['stop_loss_perc']*mstart+100) # авто трейлстоп стартовый
  54.          
  55.         print("Текущие курсы bid {bid:0.8f}, ask {ask:0.8f}, выбрана {cr:0.8f} stop_loss {sl:0.8f}".format(
  56.             bid=bid, ask=ask, cr=curr_rate, sl=settings['stop_loss_fixed']
  57.         ))
  58.         # Считаем, каким был бы stop-loss, если применить к нему %
  59.         curr_rate_applied = (curr_rate/100) * (settings['stop_loss_perc']*multiplier+100)
  60.         print ('Applied=', curr_rate_applied)
  61.         print ( 'Startrate=', settings['startrate'])
  62.         if settings['strategy'] == "Long":
  63.             # Выбрана стратегия Long, пытаемся продать монеты как можно выгоднее
  64.             if curr_rate > settings['stop_loss_fixed']:
  65.                 print("Текущая цена выше цены Stop-Loss")
  66.                 if curr_rate_applied > settings['startrate']:
  67.                    if curr_rate_applied > settings['stop_loss_fixed']:
  68.                     print("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_applied))                    
  69.                     settings['stop_loss_fixed'] = curr_rate_applied
  70.             else:
  71.                 # Текущая цена ниже или равна stop loss, продажа по рынку
  72.                 quantity=settings['amount']
  73.                 res=coinex.order_market('DOGEUSDT', 'buy', quantity)                    
  74.            
  75.                 print('Результат создания ордера', res)
  76.                 if 'id' in res:
  77.                     # Создание ордера прошло успешно, выход
  78.                     break
  79.         else:
  80.             # Выбрана стратегия Short, пытаемся купить монеты как можно выгоднее
  81.             if curr_rate < settings['stop_loss_fixed']:
  82.                 print("Текущая цена ниже stop-loss")
  83.                 if curr_rate_applied < settings['stop_loss_fixed']:
  84.                    if curr_rate_applied < settings['startrate']:               
  85.                     print("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_applied))                    
  86.                     settings['stop_loss_fixed'] = curr_rate_applied
  87.             else:
  88.                 # Цена поднялась выше Stop-Loss, Покупка по рынку
  89.                 #   quantity = math.floor((settings['amount']/curr_rate)*(1/step_sizes[settings['symbol']]))/(1/step_sizes[settings['symbol']])
  90.                 quantity=settings['amount']
  91.                 print("Цена поднялась выше Stop-Loss, Покупка по рынку, кол-во монет {quantity:0.8f}".format(quantity=quantity))
  92.                 # math.Floor(coins*(1/stepSize)) / (1 / stepSize)
  93.                 res=coinex.order_market('DOGEUSDT', 'buy', quantity)
  94. ##                res = bot.createOrder(
  95. ##                    symbol=settings['symbol'],
  96. ##                    recvWindow=15000,
  97. ##                    side='BUY',
  98. ##                    type='MARKET',
  99. ##                    quantity=quantity
  100. ##                )
  101.                 print('Результат создания ордера', res)
  102.                 if 'money_fee' in res:
  103.                     # Создание ордера прошло успешно, выход
  104.                     break
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.        
  112.     except Exception as e:
  113.             print(e)
  114.     time.sleep(1)
  115.  
Add Comment
Please, Sign In to add comment