Iată un exemplu de script Python care implementează o strategie simplă de scalping folosind RSI și benzile Bollinger.
Instalarea bibliotecilor necesare:
Pentru a lucra cu API-ul Binance și cu indicatorii tehnici, trebuie să instalați următoarele biblioteci:
pip install python-binance TA-Lib
Exemplu de cod pentru bot:
timpul de import
import talib
import numpy ca np
de la binance.client import Client
din import binance.enums *
# Conectați-vă la API-ul Binance
api_key = „TAIA_API_VOASTRĂ”
api_secret = 'YOUR_API_SECRET'
client = Client(api_key, api_secret)
# Setările botului de tranzacționare
simbol = 'BTCUSDT' # Perechea pentru care va fi tranzacționată
interval = Client.KLINE_INTERVAL_1MINUTE # Interval de timp pentru analiză
cantitate = 0,001 # Suma de BTC pentru tranzacționare
rsi_period = 14 # Perioada pentru calcularea RSI
upper_rsi = 70 # RSI pentru supracumparare
lower_rsi = 30 # RSI pentru supravândure
bollinger_period = 20 # Perioada pentru calcularea benzilor Bollinger
take_profit = 1,02 # Nivel pentru take profit (cu 2% mai mare decât buy)
stop_loss = 0,98 # Nivel pentru stop loss (2% sub achiziție)
def get_klines(simbol, interval, lookback):
"""Obținerea datelor pentru analiză"""
klines = client.get_klines(simbol=simbol, interval=interval, limit=lookback)
closes = [float(kline[4]) pentru kline în klines] # Prețuri de închidere
returnează np.array (închide)
def trade_signal(preturi):
"""Verificarea semnalelor de intrare și de ieșire pe baza RSI și a benzilor Bollinger"""
rsi = talib.RSI(prețuri, timeperiod=rsi_period)
bandă superioară, bandă medie, bandă inferioară = talib.BANDS(prețuri, perioadă de timp=perioada_bollinger)
# Ultimele valori ale indicatorului
current_rsi = rsi[-1]
preț_actual = prețuri[-1]
banda_inferioară = banda inferioară[-1]
upper_band = upperband[-1]
# Logica pentru intrarea și ieșirea din tranzacții
dacă current_rsi < low_rsi și current_price <= low_band:
returnează „cumpără” # Cumpără semnal
elif current_rsi > upper_rsi și current_price >= upper_band:
return 'sell' # Semnal de vânzare
altceva:
return 'hold' # Hold position
def place_order(partea_comanda, cantitate, simbol):
"""Plasarea unei comenzi"""
încerca:
comanda = client.create_order(
simbol=simbol,
side=order_side,
tip=ORDER_TYPE_MARKET,
cantitate=cantitate)
print(f"comanda {order_side} plasată cu succes")
comanda de retur
cu excepția excepției ca e:
print(f"Eroare la plasarea comenzii {order_side}: {e}")
return Niciunul
def run_bot():
"""Logica de bază a botului"""
poziție = Nici unul # Variabilă pentru urmărirea poziției deschise
în timp ce este adevărat:
încerca:
# Obțineți date actuale despre preț
closes = get_klines(simbol, interval, lookback=bollinger_period + rsi_period)
semnal = trade_signal (închide)
dacă semnalul == „cumpără” și poziția este Niciunul:
# Cumpărați dacă nu există o poziție deschisă
comanda = place_order(SIDE_BUY, cantitate, simbol)
daca comanda:
buy_price = float(order['fills'][0]['price']) # Preț de cumpărare
poziție = {'side': 'buy', 'price': buy_price}
print(f"Cumparat la {buy_price}")
elif signal == „vinde” și poziția nu este Niciunul și poziția [„partea”] == „cumpără”:
# Vindeți dacă există o poziție deschisă
sell_price = se închide[-1]
if sell_price >= position['price'] * take_profit sau sell_price <= position['price'] * stop_loss:
comanda = place_order(SIDE_SELL, cantitate, simbol)
daca comanda:
print(f"Vândut la {sell_price}")
poziție = Niciunul # Închideți poziția
time.sleep(60) # Așteptați următorul minut pentru a verifica din nou
cu excepția excepției ca e:
print(f"Eroare în logica botului: {e}")
timp.somn(60)
# Lansați un bot de tranzacționare
run_bot()
Explicația codului:
1. Obținerea datelor de piață:
Funcția get_klines descarcă prețurile istorice din Binance pentru o pereche selectată (de exemplu, BTC/USDT) și intervale de timp (de exemplu, 1 minut).
2. Analiza semnalului:
Funcția trade_signal folosește RSI și benzi Bollinger pentru a analiza datele pieței.
Dacă RSI este sub 30 și prețul este pe banda inferioară Bollinger, botul trimite un semnal de cumpărare. Dacă RSI este peste 70 și prețul este pe banda superioară, botul semnalează o vânzare.
3. Comenzi:
Funcția place_order trimite comenzi de cumpărare sau vânzare prin API-ul Binance.
4. Logica de bază:
În buclă, botul verifică datele pieței în fiecare minut, monitorizează semnalele de cumpărare și vânzare și gestionează comenzile.
După cumpărare, botul monitorizează prețul pentru a stabili un take profit și pentru a opri pierderile.
Opțiuni de configurare:
simbol: pereche de tranzacționare, de exemplu, BTCUSDT.
interval: interval de timp (1 minut în acest caz).
cantitate: dimensiunea poziției.
RSI și Bollinger: parametrii indicatorilor pot fi optimizați în funcție de criptomoneda și piața selectate.
Important:
Testați strategia pe un cont de test sau cu un capital mic înainte de a o folosi pe piețele reale.
Luați în considerare întotdeauna riscurile, deoarece tranzacționarea automată poate duce la pierderi în cazul unor schimbări bruște pe piață.