Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sqlite3
- import logging
- import time
- import os
- import math
- from datetime import datetime
- from coinex.coinex import CoinEx
- #from somewhere_else import access_id, secret
- coinex = CoinEx("D2563748494031234876349876543478920", "F6543456776543567543456867645691234569898765345789642123453")
- settings = dict(
- symbol='DOGEUSDT', # Пара для отслеживания 15 JAN 2021 BTC=39000
- strategy="Long", # Стратегия - Long (повышение), Short (понижение)
- stop_loss_perc = 0.02, # % оставания от цены
- stop_loss_fixed = 1, # Изначальный stop-loss, можно установить руками нужную сумму, потом бот подтянет.
- # Можно указать 10000,short тогда бот высчитает, возьмет текущую цену и применит к ней процент
- amount = 5, # Кол-во монет, которое планируем продать (в случае Long) или купить (в случае Short)
- # Если указываем Long, то альты для продажи (Например, продать 0.1 ETH в паре ETHBTC)
- #amount = 11 13.5 # Если Short, то кол-во, на которое покупать, например купить на 0.1 BTC по паре ETHBTC
- startrate = 0 # Нефиг продавать себе в убыток
- )
- # public API
- # print(coinex.market_list())
- ##print (coinex.balance_info())
- ##res=coinex.order_market('DOGEUSDT', 'sell', 5)
- ##print (res)
- ##print (coinex.balance_info())
- # GET https://api.coinex.com/v1/market/info
- while True:
- try:
- print('Проверяю пару {pair}, стратегия SPOT {strategy}'.format(pair=settings['symbol'], strategy=settings['strategy']))
- # Получаем текущие курсы по паре
- # ПОЛУЧЕНИЕ ЦЕНЫ
- current_rates =coinex.market_depth(market=settings['symbol'], limit=5)
- bid=float(current_rates['bids'][0][0])
- ask=float(current_rates['asks'][0][0])
- print('BID=', bid, ' ASK=',ask)
- # МНОЖИТЕЛИ
- multiplier = -1 if settings['strategy'] == "Long" else 1
- mstart = 1 if settings['strategy'] == "Long" else -1 # startrate множитель
- # Если играем на повышение, то ориентируемся на цены, по которым продают, иначе на цены, по которым покупают
- curr_rate = bid if settings['strategy'] == "Long" else ask
- if settings['startrate'] == 0:
- settings['startrate'] = (curr_rate/100) * (settings['stop_loss_perc']*mstart+100) # авто трейлстоп стартовый
- print("Текущие курсы bid {bid:0.8f}, ask {ask:0.8f}, выбрана {cr:0.8f} stop_loss {sl:0.8f}".format(
- bid=bid, ask=ask, cr=curr_rate, sl=settings['stop_loss_fixed']
- ))
- # Считаем, каким был бы stop-loss, если применить к нему %
- curr_rate_applied = (curr_rate/100) * (settings['stop_loss_perc']*multiplier+100)
- print ('Applied=', curr_rate_applied)
- print ( 'Startrate=', settings['startrate'])
- if settings['strategy'] == "Long":
- # Выбрана стратегия Long, пытаемся продать монеты как можно выгоднее
- if curr_rate > settings['stop_loss_fixed']:
- print("Текущая цена выше цены Stop-Loss")
- if curr_rate_applied > settings['startrate']:
- if curr_rate_applied > settings['stop_loss_fixed']:
- print("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_applied))
- settings['stop_loss_fixed'] = curr_rate_applied
- else:
- # Текущая цена ниже или равна stop loss, продажа по рынку
- quantity=settings['amount']
- res=coinex.order_market('DOGEUSDT', 'buy', quantity)
- print('Результат создания ордера', res)
- if 'orderId' in res:
- # Создание ордера прошло успешно, выход
- break
- else:
- # Выбрана стратегия Short, пытаемся купить монеты как можно выгоднее
- if curr_rate < settings['stop_loss_fixed']:
- print("Текущая цена ниже stop-loss")
- if curr_rate_applied < settings['stop_loss_fixed']:
- if curr_rate_applied < settings['startrate']:
- print("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_applied))
- settings['stop_loss_fixed'] = curr_rate_applied
- else:
- # Цена поднялась выше Stop-Loss, Покупка по рынку
- # quantity = math.floor((settings['amount']/curr_rate)*(1/step_sizes[settings['symbol']]))/(1/step_sizes[settings['symbol']])
- quantity=settings['amount']
- print("Цена поднялась выше Stop-Loss, Покупка по рынку, кол-во монет {quantity:0.8f}".format(quantity=quantity))
- # math.Floor(coins*(1/stepSize)) / (1 / stepSize)
- res=coinex.order_market('DOGEUSDT', 'buy', quantity)
- ## res = bot.createOrder(
- ## symbol=settings['symbol'],
- ## recvWindow=15000,
- ## side='BUY',
- ## type='MARKET',
- ## quantity=quantity
- ## )
- print('Результат создания ордера', res)
- if 'orderId' in res:
- # Создание ордера прошло успешно, выход
- break
- except Exception as e:
- print(e)
- time.sleep(1)
Add Comment
Please, Sign In to add comment