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

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

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

pip install python-binance TA-Lib

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

import time

import talib

import numpy as np

from binance.client import Client

from binance.enums import *

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

api_key = 'YOUR_API_KEY'

api_secret = 'YOUR_API_SECRET'

client = Client(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(symbol, interval, lookback):

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

klines = client.get_klines(symbol=symbol, interval=interval, limit=lookback)

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

return np.array(closes)

def trade_signal(prices):

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

rsi = talib.RSI(prices, timeperiod=rsi_period)

upperband, middleband, lowerband = talib.BBANDS(prices, timeperiod=bollinger_period)

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

current_rsi = rsi[-1]

current_price = prices[-1]

lower_band = lowerband[-1]

upper_band = upperband[-1]

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

if current_rsi < lower_rsi and current_price <= lower_band:

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

elif current_rsi > upper_rsi and current_price >= upper_band:

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

else:

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

def place_order(order_side, quantity, symbol):

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

try:

order = client.create_order(

symbol=symbol,

side=order_side,

type=ORDER_TYPE_MARKET,

quantity=quantity)

print(f"{order_side} order placed successfully")

return order

except Exception as e:

print(f"Error placing {order_side} order: {e}")

return None

def run_bot():

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

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

while True:

try:

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

closes = get_klines(symbol, interval, lookback=bollinger_period + rsi_period)

signal = trade_signal(closes)

if signal == 'buy' and position is None:

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

order = place_order(SIDE_BUY, quantity, symbol)

if order:

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

position = {'side': 'buy', 'price': buy_price}

print(f"Bought at {buy_price}")

elif signal == 'sell' and position is not None and position['side'] == 'buy':

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

sell_price = closes[-1]

if sell_price >= position['price'] * take_profit or sell_price <= position['price'] * stop_loss:

order = place_order(SIDE_SELL, quantity, symbol)

if order:

print(f"Sold at {sell_price}")

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

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

except Exception as e:

print(f"Error in bot logic: {e}")

time.sleep(60)

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

run_bot()

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

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 минута в данном случае).

quantity: Размер позиции.

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

Важно:

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

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