Абсолютно! Вот полное пошаговое руководство на английском для запуска ETHUSDT Grid Bot на Binance Futures (Windows).
Вы можете поделиться этим с кем угодно, чтобы помочь им настроить и запустить бота с нуля.
✅ ETHUSDT Grid Bot – Полное руководство на английском (Windows)
1. Создайте учетную запись на Binance и включите фьючерсы
· Зарегистрируйтесь на Binance.
· Включите торговлю фьючерсами в вашей учетной записи.
2. Генерация вашего API ключа
· Перейдите в свой профиль > Управление API.
· Создайте новый API ключ (назовите его, например, "GridBot").
· Включите:
o Включите чтение
o Включите спотовую и маржинальную торговлю (по желанию)
o Включите фьючерсы (обязательно)
· Не включайте вывод средств для безопасности.
· Скопируйте и сохраните ваш API Key и API Secret в безопасном месте.
3. Установите Python и необходимые библиотеки
· Скачайте и установите Python (рекомендуется версия 3.9+).
· Во время установки установите флажок "Добавить Python в PATH".
· Откройте PowerShell или командную строку и проверьте установку:
python --version
pip --version
Вы должны видеть номера версий.
· Установите необходимые библиотеки:
pip install python-binance numpy
4. Подготовьте код бота
· Откройте Блокнот или любой текстовый редактор.
· Скопируйте полный код бота (см. следующий раздел).
· Сохраните файл как:
ethusdt_gridbot.py
(Убедитесь, что расширение .py, а не .txt)
5. Измените настройки вашего бота
· В начале кода введите ваш API_KEY и API_SECRET в одинарных кавычках '...'.
· Настройте остальные параметры по вашему желанию (диапазон цен, уровни сетки, целевая прибыль, капитал на заказ).
6. Запустите бота
· Откройте PowerShell или CMD.
· Перейдите в папку, где вы сохранили бота:
cd C:\Users\ВашеИмяПользователя\Рабочий стол
· Запустите бота:
python ethusdt_gridbot.py
7. Мониторинг бота
· Бот выведет сводку ваших настроек.
· Он автоматически разместит заказы на покупку/продажу сетки.
· Он будет контролировать прибыль и сбрасывать сетку, когда цель будет достигнута или цена достигнет пределов вашего диапазона.
· Вы можете отслеживать открытые заказы и позиции на Binance или в консоли.
8. Безопасность и лучшие практики
· Сначала протестируйте с небольшой суммой или на тестовой сети Binance.
· Никогда не делитесь своими API ключами с кем-либо.
· Не оставляйте бота без присмотра на длительное время, особенно во время высокой волатильности.
· Вы можете легко улучшить код или добавить уведомления позже.
📄 Пример кода бота (Готов к использованию)
import time
import numpy as np
from binance.client import Client
from binance.enums import *
from binance.exceptions import BinanceAPIException
# ====== ВАШИ НАСТРОЙКИ ======
API_KEY = 'ВАШ_API_KEY'
API_SECRET = 'ВАШ_API_SECRET'
SYMBOL = 'ETHUSDT'
LEVERAGE = 15
BOTTOM = 2000 # Минимальная цена для запуска бота
TOP = 2900 # Максимальная цена для запуска бота
GRID_LEVELS = 100 # Количество уровней сетки (50 ниже и 50 выше текущей цены)
TP_PROFIT = 0.25 # Целевая прибыль за цикл в USD
USDT_PER_ORDER = 10 # Оценочный капитал на заказ
# ==========================
client = Client(API_KEY, API_SECRET)
def get_current_price():
return float(client.futures_symbol_ticker(symbol=SYMBOL)['price'])
def get_balance():
for asset in client.futures_account()['assets']:
if asset['asset'] == 'USDT':
return float(asset['walletBalance'])
return 0.0
def get_realized_profit():
income = client.futures_income_history(symbol=SYMBOL, limit=100)
return round(sum(float(i['income']) for i in income if i['incomeType'] == 'REALIZED_PNL'), 4)
def cancel_all_orders():
client.futures_cancel_all_open_orders(symbol=SYMBOL)
def close_all_positions():
positions = client.futures_position_information(symbol=SYMBOL)
for pos in positions:
amt = float(pos['positionAmt'])
if amt != 0:
side = SIDE_SELL if amt > 0 else SIDE_BUY
try:
client.futures_create_order(
symbol=SYMBOL,
side=side,
type=ORDER_TYPE_MARKET,
quantity=abs(amt),
reduceOnly=True
)
except Exception as e:
print(f"[!] Ошибка закрытия позиции: {e}")
def get_order_size(price):
qty = round(USDT_PER_ORDER / price, 4)
return max(qty, 0.001)
def place_grid_orders():
price = get_current_price()
grid_prices = np.linspace(BOTTOM, TOP, GRID_LEVELS)
buy_prices = [p for p in grid_prices if p < price]
sell_prices = [p for p in grid_prices if p > price]
for p in buy_prices:
qty = get_order_size(p)
try:
client.futures_create_order(
symbol=SYMBOL,
side=SIDE_BUY,
type=ORDER_TYPE_LIMIT,
price=str(round(p,2)),
quantity=qty,
timeInForce=TIME_IN_FORCE_GTC
)
except BinanceAPIException as e:
print(f"[!] Ошибка покупки по цене {p}: {e}")
for p in sell_prices:
qty = get_order_size(p)
try:
client.futures_create_order(
symbol=SYMBOL,
side=SIDE_SELL,
type=ORDER_TYPE_LIMIT,
price=str(round(p,2)),
quantity=qty,
timeInForce=TIME_IN_FORCE_GTC
)
except BinanceAPIException as e:
print(f"[!] Ошибка продажи по цене {p}: {e}")
print(f"[✓] Сетка размещена вокруг цены {price}")
def set_leverage():
try:
client.futures_change_leverage(symbol=SYMBOL, leverage=LEVERAGE)
except Exception as e:
print(f"[!] Ошибка установки плеча: {e}")
def print_start_message():
est_capital = USDT_PER_ORDER * GRID_LEVELS
print("="*60)
print(f"ETHUSDT Grid Bot - Binance Futures")
print(f"Диапазон: {BOTTOM} до {TOP}")
print(f"Уровни сетки: {GRID_LEVELS}")
print(f"Оценочный используемый капитал: {est_capital} USDT")
print(f"Целевая прибыль за цикл: {TP_PROFIT} USDT")
print(f"Бот закроет сетку только если будет достигнута прибыль или цена достигнет BOTTOM/TOP")
print("="*60)
def main():
set_leverage()
print_start_message()
while True:
try:
cancel_all_orders()
close_all_positions()
place_grid_orders()
initial_profit = get_realized_profit()
print(f"Начальная реализованная прибыль: {initial_profit} USDT")
while True:
price = get_current_price()
current_profit = get_realized_profit()
net_profit = current_profit - initial_profit
print(f"Текущая цена: {price:.2f} | Чистая прибыль: {net_profit:.4f} USDT", end='\r')
if net_profit >= TP_PROFIT:
print(f"\n[💰] Целевая прибыль достигнута: {net_profit:.4f} USDT, сброс сетки...")
cancel_all_orders()
close_all_positions()
break
if price <= BOTTOM or price >= TOP:
print(f"\n[!] Цена достигла предела диапазона ({price:.2f}). Закрытие сетки и ожидание...")
cancel_all_orders()
close_all_positions()
time.sleep(60) # Подождите минуту перед повторной попыткой
break
time.sleep(10)
except Exception as e:
print(f"[!] Общая ошибка: {e}")
time.sleep(15)
if __name__ == "__main__":
main()
Резюме
· Создайте учетную запись Binance и включите фьючерсы
· Генерация API ключа (с включенными фьючерсами)
· Установите Python + библиотеки
· Сохраните и измените код бота
· Запустите бота и следите за ним