L'andamento del mercato di ieri sera per Big Pie e Two Pie è stato davvero tempestivo. Non era un andamento così regolare da molto tempo.

Questa volta parliamo di come utilizzare i record storici delle transazioni di B.

I funzionari di B'an hanno condiviso molti dati sulle transazioni. È presente una pagina Github dove è possibile visualizzare in dettaglio quali categorie di dati sono disponibili e come scaricarli. Qui presenterò principalmente il download, l'organizzazione e l'uso dei record di transazione aggregati aggTrades.

aggTrades è il record della transazione dopo l'aggregazione, ovvero Binance aggrega diverse transazioni consecutive eseguite contemporaneamente, nella stessa direzione e allo stesso prezzo in un record, simile a una linea K, ma con un solo prezzo e nessun prezzo più alto, prezzo più basso e così via. Ad esempio, se al mercato viene effettuato un grosso ordine e vengono effettuati molti piccoli ordini per consumarlo, allora questi ordini che arrivano contemporaneamente in un tempo molto breve (millisecondi) verranno aggregati insieme. Oppure potrebbe essere l'ordine con cui il motore di corrispondenza può corrispondere contemporaneamente.

Il vantaggio dei dati aggTrades è che possono avere record di transazioni a livello di millisecondi, ma non hanno un volume di dati così grande come le transazioni pure (cioè i dati più originali, non aggregati allo stesso prezzo), che è un buon compromesso per il piano dati ad alta frequenza.

Generalmente, le strategie ad alta frequenza utilizzano tali dati aggregati. Questi dati ad alta frequenza generalmente utilizzano dati sulle transazioni e sul registro degli ordini. La quantità di dati è molto grande ed è molto scomoda da elaborare. Se non vengono utilizzati, non ce n'è bisogno. Non solo consuma risorse, ma aumenta anche la difficoltà di programmazione.

aggTrades può essere utilizzato per sintetizzare linee K brevi di qualsiasi livello, come linee K brevi di 5, 10 e 15 secondi. È ancora possibile utilizzare tali linee K per alcune strategie di trading intraday.

Ad esempio, quella che segue è la linea k di livello 1 secondo pubblicata in precedenza.

图片

Esiste anche l'arbitraggio ad alta frequenza. Oggi è difficile guadagnare con l'arbitraggio ordinario ed è molto rischioso. Se la frequenza è più alta, potrebbero esserci alcune opportunità.

Questo tipo di dati tick per tick può essere utilizzato anche per sintetizzare k-line alternative, come barre uguali e simili. L'uso di aggTrades è molto più accurato rispetto all'utilizzo di k-line minute rispetto alle normali strategie della linea k complementari. Potrei scrivere su come sintetizzare questo tipo di barra nei prossimi articoli.

Quella che segue è l'introduzione del codice (la maggior parte del codice è in allegato, perché è troppo e troppo lungo, non lo pubblicherò nel testo). Il codice di download è l'esempio di Binance, ma con alcune lievi modifiche, e il mio codice di elaborazione.

Ecco un esempio di dati mensili (Binance fornisce anche dati giornalieri). Il codice è tutto a thread singolo ed eseguito in modo sincrono, senza asincrono o multi-threading. Poiché tali download vengono eseguiti una volta al mese o n giorni, puoi semplicemente aspettare un po' e non è necessario complicare le cose.

Generalmente non ci sono problemi con l'utilizzo di dati più vecchi per il backtesting di base, perché il backtesting dei dati ad alta frequenza svolge principalmente un ruolo analitico e dipende principalmente dal prezzo effettivo, perché lo slittamento potrebbe essere ampio o l'ordine pendente potrebbe non essere completato, e il follow-up L'ordine non è stato preso, lo scambio è stato ritardato, ecc.

Ma successivamente ho anche il codice per scaricare i dati in tempo reale, ovvero scaricare i dati aggTrades della giornata per verificare istantaneamente i mancati prezzi di mercato. I dati giornalieri di Binance sono disponibili solo con un ritardo di diversi giorni. Se vuoi usarlo urgentemente, devi scansionarlo tu stesso utilizzando l'API di scambio.

1 scaricamento

La prima parte del codice sono i due file agg.py e utility.py, quindi use

python3 agg.py -y 2022 -m 6 -t um -cartella /il percorso specificato

Ecco un esempio di comando per scaricare tutti i dati aggTrades del contratto perpetuo per giugno 2022. Di solito il download richiede circa dieci minuti. I dati vengono scaricati compressi, quindi il passaggio successivo è decomprimerli.

2. Decomprimere

Per decomprimere, usa il file unzip.py È un codice molto breve con solo due funzioni, una per decomprimere i dati mensili e l'altra per decomprimere i dati giornalieri.

Dopo aver estratto il file zip, diventa un file CSV. Il problema con i file CSV è che occupano più spazio sul disco rigido e sono più lenti a caricarsi. Quindi il passaggio successivo è convertire il file CSV in un file pickle. Puoi comprimere o non comprimere in base alla tua situazione. Se il tuo disco rigido è grande, si consiglia di non comprimerlo. In genere, i dati sostenibili sono di circa 50 GB al mese, quindi dipende dalla tua situazione. In genere è possibile acquistare un disco rigido SSD esterno più veloce. Oggigiorno 1TB costa solo poche centinaia di yuan, il che è già economico. Inoltre si carica molto velocemente durante il backtest.

3. Converti la compressione in pickle

Il codice di conversione è in csv_to_pkl.py. Come accennato in precedenza, è più facile da salvare e utilizzare dopo la conversione.

Dopo la conversione ho cancellato manualmente il file csv, altrimenti occuperebbe l'hard disk. Non esiste un codice per implementare questo passaggio. Come accennato in precedenza, si tratta di operazioni a frequenza molto bassa e non necessitano di essere completamente automatizzate. Utilizzo la compressione gzip di livello 2 nel codice di esempio. In genere, i dati di un mese sono inferiori a 10 GB dopo la compressione.

CSV non solo occupa spazio, ma si carica anche lentamente. Si consiglia di utilizzare il formato pickle. Nel complesso, le sue prestazioni sono buone, ma la chiave è una buona compatibilità. Se desideri utilizzare server cloud o molti altri pacchetti open source, sono più compatibili di Feather e simili.

Ok, ora che i dati sono pronti, puoi iniziare a studiare le strategie.

4. Download immediato dei dati

Come accennato in precedenza, i dati sul server dati di Binance sono in ritardo di uno o due giorni. Se hai bisogno di verificare come si comporterà la tua strategia nelle attuali condizioni di mercato, ma non hai pubblicato in tempo il prezzo reale di una determinata valuta, puoi utilizzare il seguente codice per scaricare aggTrades indietro all'ora specificata. Di solito lo uso per scaricare le attuali 12 ore di dati per vedere come potrebbe funzionare la strategia.

Se viene utilizzato il seguente codice, è necessario modificarlo all'ultima ora di inizio.

图片

I dati scaricati sono così. Puoi fare riferimento alla documentazione di Binance e alle transazioni recenti (accumulo) per vedere i loro significati specifici.

图片

Con tali dati grezzi, puoi utilizzare df.resample(bar_size).agg() per aggregarli in qualsiasi livello k-line di cui hai bisogno e puoi fare quello che vuoi.

infine

Fondamentalmente questa è la preparazione dei dati aggTrades che ho usato prima. Le strategie odierne stanno diventando sempre più volumetriche e è possibile sviluppare più categorie di strategie utilizzando dati più granulari. La complementarità tra le strategie è la chiave della multistrategia.

Se hai bisogno del codice sopra, puoi contattarci per ottenerlo.