Ecco un esempio di script Python che implementa una semplice strategia di scalping utilizzando RSI e bande di Bollinger.
Installazione delle librerie richieste:
Per lavorare con l'API Binance e gli indicatori tecnici, è necessario installare le seguenti librerie:
pip installa python-binance TA-Lib
Codice di esempio per il bot:
tempo di importazione
importare talib
importa numpy come np
da binance.client importa Client
da binance.enums importa *
# Connettiti all'API Binance
api_key = 'LA_TUA_CHIAVE_API'
api_secret = 'IL_TUO_API_SEGRETO'
cliente = Cliente(chiave_api, segreto_api)
# Impostazioni del bot di trading
simbolo = 'BTCUSDT' # Coppia per la quale verrà effettuato il trading
intervallo = Client.KLINE_INTERVAL_1MINUTE # Intervallo di tempo per l'analisi
quantità = 0.001 # Importo di BTC per il trading
periodo_rsi = 14 # Periodo per il calcolo dell'RSI
upper_rsi = 70 # RSI per ipercomprato
lower_rsi = 30 # RSI per ipervenduto
periodo_bollinger = 20 # Periodo per il calcolo delle bande di Bollinger
take_profit = 1.02 # Livello per take profit (2% superiore a buy)
stop_loss = 0.98 # Livello per stop loss (2% sotto l'acquisto)
def get_klines(simbolo, intervallo, lookback):
"""Ottenere dati per l'analisi"""
klines = client.get_klines(simbolo=simbolo, intervallo=intervallo, limite=lookback)
chiude = [float(kline[4]) for kline in klines] # Prezzi di chiusura
ritorna np.array(chiude)
def trade_signal(prezzi):
"""Controllo dei segnali di entrata e uscita in base all'RSI e alle bande di Bollinger"""
rsi = talib.RSI(prezzi, periodo di tempo=rsi_period)
banda superiore, banda media, banda inferiore = talib.BBANDS(prezzi, periodo di tempo=periodo_di_bollinger)
# Ultimi valori dell'indicatore
current_rsi = rsi[-1]
current_price = prezzi[-1]
banda_inferiore = banda_inferiore[-1]
banda_superiore = banda_superiore[-1]
# Logica per entrare e uscire dalle operazioni
se current_rsi < lower_rsi e current_price <= lower_band:
return 'acquista' # Segnale di acquisto
elif current_rsi > upper_rsi e current_price >= upper_band:
return 'vendi' # Segnale di vendita
altro:
return 'mantieni' # Mantieni la posizione
def place_order(order_side, quantità, simbolo):
"""Effettuare un ordine"""
Tentativo:
ordine = client.crea_ordine(
simbolo=simbolo,
lato=ordine_lato,
tipo=TIPO_ORDINE_MERCATO,
quantità=quantità)
print(f"{order_side} ordine effettuato con successo")
ordine di reso
eccetto Eccezione come e:
print(f"Errore nell'inserimento dell'ordine {order_side}: {e}")
restituire Nessuno
def esegui_bot():
"""Logica di base del bot"""
position = None # Variabile per tracciare la posizione aperta
mentre Vero:
Tentativo:
# Ottieni i dati sui prezzi attuali
chiude = get_klines(simbolo, intervallo, lookback=bollinger_period + rsi_period)
segnale = trade_signal(chiude)
se il segnale == 'acquista' e la posizione è Nessuna:
# Acquista se non ci sono posizioni aperte
ordine = place_order(SIDE_BUY, quantità, simbolo)
se ordine:
buy_price = float(order['fills'][0]['price']) # Prezzo di acquisto
posizione = {'lato': 'acquista', 'prezzo': prezzo_acquisto}
print(f"Acquistato a {buy_price}")
segnale elif == 'vendi' e la posizione non è None e position['side'] == 'acquista':
# Vendi se c'è una posizione aperta
prezzo_di_vendita = chiude[-1]
se prezzo_vendita >= posizione['prezzo'] * take_profit o prezzo_vendita <= posizione['prezzo'] * stop_loss:
ordine = place_order(SIDE_SELL, quantità, simbolo)
se ordine:
print(f"Venduto a {prezzo_di_vendita}")
posizione = Nessuno # Chiude la posizione
time.sleep(60) # Attendi il minuto successivo per verificare nuovamente
eccetto Eccezione come e:
print(f"Errore nella logica del bot: {e}")
tempo.dormire(60)
# Avvia un bot di trading
esegui_bot()
Spiegazione del codice:
1. Ottenere dati di mercato:
La funzione get_klines scarica i prezzi storici da Binance per una coppia selezionata (ad esempio BTC/USDT) e intervalli di tempo (ad esempio 1 minuto).
2. Analisi del segnale:
La funzione trade_signal utilizza l'RSI e le bande di Bollinger per analizzare i dati di mercato.
Se l'RSI è inferiore a 30 e il prezzo si trova sulla banda di Bollinger inferiore, il bot invia un segnale di acquisto. Se l'RSI è superiore a 70 e il prezzo si trova sulla fascia superiore, il bot segnala una vendita.
3. Ordini:
La funzione place_order invia ordini di acquisto o vendita tramite l'API Binance.
4. Logica di base:
Nel ciclo, il bot controlla i dati di mercato ogni minuto, monitora i segnali di acquisto e vendita e gestisce gli ordini.
Dopo l'acquisto, il bot monitora il prezzo per impostare un profitto e fermare la perdita.
Opzioni da configurare:
simbolo: coppia di trading, ad esempio BTCUSDT.
intervallo: intervallo di tempo (1 minuto in questo caso).
quantità: dimensione della posizione.
RSI e Bollinger: i parametri dell'indicatore possono essere ottimizzati in base alla criptovaluta e al mercato selezionati.
Importante:
Prova la strategia su un conto di prova o con un piccolo capitale prima di utilizzarla sui mercati reali.
Considera sempre i rischi, poiché il trading automatizzato può portare a perdite in caso di cambiamenti improvvisi del mercato.
