Вот пример скрипта на Python, который реализует простую стратегию скальпинга с использованием RSI и полос Боллинджера.

Установка необходимых библиотек:

Для работы с Binance API и техническими индикаторами, необходимо установить следующие библиотеки:

pip install python-binance TA-Lib

Пример кода для бота:

время импорта

импорт талиба

импортировать numpy как np

из binance.client импорт клиента

из binance.enums импорт *

# Подключение к Binance API

api_key = 'ВАШ_API_КЛЮЧ'

api_secret = 'ВАШ_API_СЕКРЕТ'

клиент = Клиент(api_key, api_secret)

# Настройки торгового бота

symbol = 'BTCUSDT' # Пара, по которой будет вестись торговля

interval = Client.KLINE_INTERVAL_1MINUTE # Таймфрейм для анализа

quantity = 0.001 # Количество BTC для торговли

rsi_period = 14 # Период для расчета RSI

upper_rsi = 70 # RSI для перекупленности

lower_rsi = 30 # RSI для перепроданности

bollinger_period = 20 # Период для расчета полос Боллинджера

take_profit = 1.02 # Уровень для тейк-профита (на 2% выше покупки)

stop_loss = 0.98 # Уровень для стоп-лосса (на 2% ниже покупки)

def get_klines(символ, интервал, обратный просмотр):

"""Получаем данные для анализа"""

klines = client.get_klines(символ=символ, интервал=интервал, предел=обратный просмотр)

closes = [float(kline[4]) for kline in klines] # Закрывающие цены

вернуть np.array(закрывает)

def trade_signal(цены):

"""Проверяем сигналы для входа и выхода на основе RSI и полос Боллинджера"""

rsi = талиб.RSI(цены, период времени=период_rsi)

верхняя полоса, средняя полоса, нижняя полоса = талиб.BBANDS(цены, период времени=период_боллингера)

# Последние значения индикаторов

текущий_rsi = rsi[-1]

текущая_цена = цены[-1]

нижняя_полоса = нижняя_полоса[-1]

верхняя_полоса = верхняя_полоса[-1]

# Логика для входа и выхода из сделок

если current_rsi < lower_rsi и current_price <= lower_band:

return 'buy' # Сигнал на покупку

elif current_rsi > upper_rsi и current_price >= upper_band:

return 'sell' # Сигнал о продаже

еще:

return 'hold' # Держим позицию

def place_order(сторона_заказа, количество, символ):

"""Размещение ордера"""

пытаться:

заказ = клиент.создать_заказ(

символ=символ,

сторона=сторона_заказа,

тип=ЗАКАЗ_ТИП_РЫНОК,

количество=количество)

print(f"{order_side} заказ успешно размещен")

возврат заказа

за исключением исключения как e:

print(f"Ошибка размещения заказа {order_side}: {e}")

возврат Нет

определение run_bot():

"""Основная логика бота"""

position = None # Переменная для отслеживания открытой позиции

в то время как Истина:

пытаться:

# Получаем актуальные данные по цене

закрывает = get_klines(символ, интервал, lookback=bollinger_period + rsi_period)

сигнал = торговый_сигнал(закрывает)

если сигнал == «купить» и позиция равна None:

# Покупаем, если нет открытой позиции

заказ = место_заказа(SIDE_BUY, количество, символ)

если заказать:

buy_price = float(order['fills'][0]['price']) # Цена покупки

позиция = {'сторона': 'купить', 'цена': цена_купить}

print(f"Куплено по {buy_price}")

elif signal == 'sell' и position не None и position['side'] == 'buy':

# Продаем, если есть открытая позиция

цена_продажи = закрытие[-1]

если цена_продажи >= позиция['цена'] * тейк_профит или цена_продажи <= позиция['цена'] * стоп_лосс:

заказ = место_заказа(SIDE_SELL, количество, символ)

если заказать:

print(f"Продано по цене {sell_price}")

position = None # Закрываем позицию

time.sleep(60) # Ждем следующей минуты для новой проверки

за исключением исключения как e:

print(f"Ошибка в логике бота: {e}")

время.сна(60)

# Запуск торгового бота

запустить_бот()

Объяснение кода:

1. Получение рыночных данных:

Функция get_klines загружает исторические цены с Binance по выбранной паре (например, BTC/USDT) и временным интервалам (например, 1 минута).

2. Анализ сигналов:

Функция trade_signal использует RSI и полосы Боллинджера для анализа рыночных данных.

Если RSI ниже 30 и цена на нижней полосе Боллинджера, бот отправляет сигнал на покупку. Если RSI выше 70 и цена на верхней полосе, бот сигнализирует продажу.

3. Ордера:

Функция place_order отправляет ордера на покупку или продажу через Binance API.

4. Основная логика:

В цикле бот проверяет рыночные данные каждую минуту, следит за сигналами на покупку и продажу и управляет ордерами.

После покупки бот отслеживает цену для установки тейк-профита и стоп-лосса.

Параметры для настройки:

symbol: Торговая пара, например, BTCUSDT.

interval: Временной интервал (1 минута в данном случае).

количество: Количество предметов.

RSI и Bollinger: Параметры индикаторов можно оптимизировать в зависимости от выбранной криптовалюты и рынка.

Важный:

Протестируй стратегию на тестовом аккаунте или с малым капиталом перед использованием на реальных рынках.

Всегда учитывай риски, так как автоматическая торговля может привести к потерям в случае резких изменений на рынке.