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.