Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2022, 10:47   #1
Rosvo
Новичок
Джуниор
 
Регистрация: 21.11.2022
Сообщений: 0
По умолчанию Требуется исправить код, python.

Уважаемые форумчане, требуется исправить часть кода, язык python. Оплата в USDT ( TRC 20 ), сумма обговаривается перед выполнением.

Описание процесса : торговый бот совершает ордер на покупку, после этого включается функция trailing stop ( процесс подтягивания стоп-лосса к растущему тренду ), часть кода, отвечающая за отслеживание trailing stop, прилагается. После того, как срабатывает стоп-лосс, начинается новый цикл, а именно: сначала ордер на покупку, затем снова функция trailing stop и т.д.

Суть проблемы : после срабатывания стоп-лосса и последующей покупки по рынку новый цикл с trailing stop начинает отслеживать цену выбранной пары со стоп-лоссом, оставшимся от предыдущего цикла, т.е. новое значение стоп-лосса не высчитывается на основе новых данных.

Задание: требуется исправить код, отвечающий за функцию trailing stop, таким образом, чтобы при начале нового торгового цикла стоп-лосс высчитывался заново , использую актальные на данный момент данные.

Это код, отвечающий за функцию trailing stop:
Цитата:
# Если ордер на покупку
if orders_info[order]['order_type'] == 'buy':
if not orders_info[order]['buy_verified']:
# По ордеру не были получены сделки
order_trades = get_order_trades(
order_id=orders_info[order]['order_id'],
pair=orders_info[order]['order_pair'], bot=bot
)

avg_rate = calc_buy_avg_rate(order_trades, log)
if avg_rate > 0:
update_buy_rate(cursor, conn, orders_info[order]['order_id'], avg_rate)
else:
log.debug("Не удается вычислить цену покупки, пропуск")
continue

# Если ордер уже исполнен
if order_status == 'FILLED':
got_qty = float(stock_order_data['executedQty'])
log.info("""
Ордер {order} выполнен, получено {exec_qty:0.8f}.
Проверяем, не стоит ли создать ордер на продажу
""".format(
order=order, exec_qty=got_qty
))

multiplier = -1 if settings['strategy'] == "Long" else 1

log.debug("Получаем настройки пар с биржи")
symbols = bot.exchangeInfo()['symbols']
step_sizes = {symbol['symbol']:symbol for symbol in symbols}
for symbol in symbols:
for f in symbol['filters']:
if f['filterType'] == 'LOT_SIZE':
step_sizes[symbol['symbol']] = float(f['stepSize'])

log.debug('Проверяю пару {pair}, стратегия {strategy}'.format(pair=settings['symbol'], strategy=settings['strategy']))
# Получаем текущие курсы по паре
current_rates = bot.depth(symbol=settings['symbol'], limit=5)

bid=float(current_rates['bids'][0][0])
ask=float(current_rates['asks'][0][0])

# Если играем на повышение, то ориентируемся на цены, по которым продают, иначе на цены, по которым покупают
curr_rate = bid if settings['strategy'] == "Long" else ask

if settings['stop_loss_fixed'] == 0:
settings['stop_loss_fixed'] = (curr_rate/100) * (settings['stop_loss_perc']*multiplier+100)

log.debug("Текущие курсы 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)

if settings['strategy'] == "Long":
# Выбрана стратегия Long, пытаемся продать монеты как можно выгоднее
if curr_rate > settings['stop_loss_fixed']:
log.debug("Текущая цена выше цены Stop-Loss")
if curr_rate_applied > settings['stop_loss_fixed']:
log.debug("Пора изменять stop-loss, новое значение {sl:0.8f}".format(sl=curr_rate_appl ied))
settings['stop_loss_fixed'] = curr_rate_applied
else:
# Текущая цена ниже или равна stop loss, продажа по рынку
res = bot.createOrder(
symbol=settings['symbol'],
recvWindow=15000,
side='SELL',
type='MARKET',
quantity=settings['amount']
)
log.debug('Текущая цена ниже или равна stop loss, Ордер на продажу по рынку исполнен', res)
if 'orderId' in res:
log.info("Сработал Стоп-Лосс. Создан ордер на продажу по рынку {res}".format(res=res))
store_sell_order(cursor, conn, order, res['orderId'], got_qty, 0)

order_trades = get_order_trades(
order_id=res['orderId'],
pair=orders_info[order]['order_pair'], bot=bot
)

avg_rate = calc_sell_avg_rate(order_trades, log)
if avg_rate > 0:
update_sell_rate(cursor, conn, res['orderId'], avg_rate)

# Получаем из базы все ордера, по которым есть торги, и исключаем их из списка, по которому будем создавать новые ордера
for row in get_db_running_pairs(cursor):
del all_pairs[row]

# Если остались пары, по которым нет текущих торгов
if all_pairs:
log.debug('Найдены пары, по которым нет неисполненных ордеров: {pairs}'.format(pairs=list(all_pair s.keys())))
for pair_name, pair_obj in all_pairs.items():
try:
log.debug("Работаем с парой {pair}".format(pair=pair_name))

# Получаем лимиты пары с биржи
for elem in limits['symbols']:
if elem['symbol'] == pair_name:
CURR_LIMITS = elem
break
else:
raise Exception("Не удалось найти настройки выбранной пары " + pair_name)
Rosvo вне форума Ответить с цитированием
Старый 21.11.2022, 11:04   #2
Fair Lucid
Новичок
Джуниор
 
Регистрация: 29.05.2019
Сообщений: 2
По умолчанию

Пишите Telegram @zelopax - обсудим.

П.С. -> работаю без предоплаты
Fair Lucid вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно исправить ошибку в python DiGiLi Помощь студентам 1 19.12.2019 20:58
перевести с с++ на python. Помогите исправить ошибку qwertyuio123 Помощь студентам 4 09.02.2019 12:19
[Python] Помогите понять и исправить ошибки! Bob123 Помощь студентам 4 01.11.2017 11:07
Списки в языке Python. Помогите исправить! Young_programmer Python 9 31.01.2017 20:11
исправить и скомпилировать скрипт в Python rimo Фриланс 4 13.02.2014 17:11