Ciò di cui stiamo parlando principalmente è l'implementazione di codici programmati in tempo reale per strategie di trading a media e bassa frequenza.
Strategia
La nascita di una strategia di trading quantitativo si basa generalmente sull'osservazione e sulla comprensione del mercato, sulla generazione di un'idea strategica, sulla progettazione dei dettagli specifici della strategia e sul test retrospettivo di molteplici varietà di dati per ottenere e verificare l'effetto di valori di parametri specifici. . Se l’effetto è buono e ha applicabilità universale, il passo successivo è testare il mercato reale con piccoli fondi. Se l’offerta reale fuori campione è fattibile, è possibile eventualmente aumentare i fondi e gestirla per un lungo periodo.
Al fine di prevenire la leva finanziaria, lasciatemi spiegare che ovviamente esistono altri metodi per generare strategie, come il data mining, lo scavo, lo scavo, i fattori di scavo. Esistono anche fattori di generazione automatica come l’apprendimento automatico e l’apprendimento per rinforzo. Tuttavia, questo tipo di metodo della scatola nera è difficile da mantenere durante il periodo di ritracciamento della strategia, perché non si sa quando e perché questi fattori di recupero falliranno. Quando si fa trading quantitativo, la cosa più importante è insistere sul trading fermo. Se il mercato non è buono, puoi ridurre la tua posizione, ma non puoi chiudere. Nessuno può sapere quando scoppierà il grande mercato. Se lo perdi, il tuo ritracciamento precedente sarà vano.
Un'analogia è che la progettazione e il backtesting delle strategie equivale al "calcolo del tempio" menzionato in "L'arte della guerra" di Sun Tzu "Colui che non ha battaglia ma il tempio è il vincitore deve calcolare di più; quello chi non ha combattuto ma il tempio è il perdente deve calcolare." Meno è di più. Più significa vittoria, meno significa meno, e niente conta!"
Pertanto, la strategia di trading deve essere ben pianificata e calcolata attentamente fin dal progetto iniziale, altrimenti perderai effettivamente prima che venga fatta l'offerta effettiva. Questo passaggio è il più difficile. Sebbene il codice successivo non sia semplice, la maggior parte è semplicemente noiosa. Se si dedica più tempo e impegno, è sempre possibile farlo bene. La chiave per un’offerta aziendale è il controllo del rischio.
Le strategie di trading, o regole di trading, ci consentono di "fare la cosa giusta" e l'implementazione specifica dell'offerta reale è "fare la cosa giusta". Molte volte, conoscere la giusta direzione è molto più difficile che percorrere una certa distanza. Proprio come nella barzelletta sulla riparazione delle attrezzature, tracciare una linea costa mille yuan. Disegnare la linea in sé vale solo 1 dollaro, ma sapere dove tracciarla costa 999.
Strategia + offerta reale insieme formano un sistema di trading. Per quanto riguarda la progettazione di un sistema di trading, puoi fare riferimento al precedente articolo: Sette elementi di un sistema di trading completo. La vera offerta qui sono in realtà le operazioni specifiche dei prossimi 4 passaggi del sistema di trading, "Inserimento e uscita da profitti e perdite". I primi tre passaggi vengono sostanzialmente determinati una volta completata la progettazione della strategia.
Tuttavia, anche se la strategia è buona, se non viene attuata effettivamente, l’effetto sarà notevolmente ridotto e anche la potenziale strategia originariamente buona verrà interrotta. Sviluppare una buona strategia non è facile, quindi non fallire nell’eseguirla. Una buona idea alla fine deve essere implementata con fermezza.
domanda
1. Tendenza improvvisa del mercato
Questo tipo di strategia verrà riscontrata solo se c'è un segnale all'interno della barra. All'interno della barra, non viene utilizzato il prezzo di chiusura o il prezzo di apertura di una determinata linea K, ma il prezzo intraday viene utilizzato per attivare il segnale.
Ecco un esempio di un problema riscontrato nell'offerta reale qualche giorno fa. Un esempio microscopico di un mercato commerciale. È abbastanza comune nel circolo valutario.
L'immagine sotto è la linea K di 10 secondi del contratto perpetuo BNB di pochi giorni fa (2023.7.10 17:21) (una barra è il significato di OHLCV aggregato dai dati della transazione entro 10 secondi).

Come puoi vedere, l'ampiezza della grande linea positiva è del 3,53% e la transazione è stata di circa 30 milioni di dollari. Completato in 10 secondi. Prima dell’inizio di questo mercato, la tendenza era quasi tranquilla.
Guarda l'immagine qui sotto che è la linea k di 1 secondo in quel momento, puoi ottenere maggiori dettagli.

Fondamentalmente ci vogliono circa 4 secondi per sollevarsi completamente. È aumentato di oltre 2 punti nel primo secondo. Questi sono fondamentalmente i risultati di strategie ad alta frequenza (guidate dagli eventi, tendenze ad alta frequenza, market making, ecc.) e ordini algoritmici che possono essere organizzati in anticipo.
Diamo un’occhiata alla linea K di 4 ore di BNB. La linea positiva più grande è il periodo di tempo in cui è uscita la notizia. Ampiezza 4,05%.

Confrontando le linee K di questi periodi, possiamo vedere che questo tipo di fluttuazioni guidate dalle notizie (questa volta la notizia è il nuovo IEO di Binance, ARKM), vengono generalmente completate istantaneamente. L'aumento di 4 ore in realtà non è molto diverso da 10 secondi, e l'avvio reale dura solo circa 4 secondi. Questo tipo di campo di battaglia appartiene a quelle strategie ad alta frequenza armate fino ai denti. Tuttavia, può anche influenzare le strategie a media e bassa frequenza, causando uno slittamento maggiore.
Non studieremo qui le strategie ad alta frequenza. Cosa significa per le strategie a media e bassa frequenza? Ci sono due cose principali che mi vengono in mente:
1. Alcune tendenze scoppiano all’improvviso e si completano in un breve periodo di tempo, quindi la strategia non può essere sospesa casualmente. L'offerta reale nel circolo valutario deve essere garantita online 24 ore su 24, soprattutto se c'è una posizione, e non può essere disconnessa.
2. Lo slittamento effettivo può raggiungere i 2 punti percentuali. Guarda la linea K di 1 secondo qui sopra Se il tuo segnale di acquisto è basato su un certo prezzo e questo prezzo sembra uscire nella parte inferiore della grande linea K, allora non importa quale, il prezzo dopo essere entrato. il mercato potrebbe scivolare di 2~3 punti percentuali. Il peggiore può essere pari a 4 punti percentuali e gli ordini di acquisto sono sulla punta dell’ago. Tuttavia, se vendi, otterrai profitti superiori alle tue aspettative. Tuttavia, secondo la legge di Murphy, il pane che cade cade sempre dal lato imburrato. Nel lungo termine, vi è un’alta probabilità che si verifichi un ulteriore slittamento.
La cosa buona, però, è che ciò accade solo un numero limitato di volte. Finché la strategia è valida e lo slittamento è maggiore, si tratta solo di una presa di profitto e non influirà sui rendimenti positivi a lungo termine. È come sopportare un altro shock e usura.
Un modo per mitigare questo problema è utilizzare websocket per ottenere il prezzo più recente. Il documento afferma che si aggiorna ogni 250 millisecondi, ma a volte in realtà si aggiorna più velocemente, quindi è possibile rispondere immediatamente. Un altro vantaggio di websocket è che non occupa il limite di frequenza dell'API Restful dell'exchange. Questo verrà menzionato in dettaglio più avanti.
2. La quotazione oraria
Ciò si riscontra in molte strategie di trend, poiché la maggior parte di esse utilizza il prezzo della posizione di cambio per calcolare i segnali di entrata e di uscita. Poi appena passa l'ora, tutti si mettono in moto uno dopo l'altro.
Ogni ora, soprattutto i multipli di 8, perché non importa quale sia il ciclo della tua strategia, questi tre punti dovrebbero tutti soddisfare il tempo del divisore comune. Forse le strategie automatizzate di tutti entreranno in azione e le frequenze alte, medie e basse verranno compresse insieme generare i propri segnali, rivali degli altri.
Inoltre, in questo momento, anche lo scambio necessita di regolamento e consegna. Sebbene il contratto perpetuo non venga consegnato, potrebbero essere effettuate altre operazioni per calcolare la commissione di consegna. Per circa 6 secondi dopo le tre ore dell'8/00/16, il websocket di Binance non ha inviato informazioni sulla linea K, si è fermato! Ti sto solo chiedendo cosa fare? In realtà, spesso non c’è soluzione.
La cosa più grave è che il mercato avrà risonanza, soprattutto quando il mercato è in calo, e il panico sarà più contagioso. I server dell'exchange sono ancora più occupati e molte piccole monete con condizioni di mercato feroci vengono immediatamente disattivate. Gli ordini non possono essere effettuati e tutti sono errori 1001. Quando effettui un ordine in fretta e ci riesci, gli ordini scambiati sulla punta dello spillo potrebbero essere tuoi.
Pertanto, lo slittamento è davvero inevitabile. È il destino. Accettarlo. Ottimizzare eccessivamente il codice non sarà di grande utilità. Come accennato in precedenza, trattalo semplicemente come un ulteriore stop loss.
Ci sono però anche alcuni consigli da condividere.
Il runout del segnale può essere calcolato in anticipo n secondi prima dell'ora. A quel punto, la congestione non è iniziata, perché la maggior parte delle strategie automatizzate può attendere fino all'uscita del prezzo di chiusura della linea K dell'ora prima di iniziare a calcolare il segnale. Tuttavia, il problema con questa operazione è che potrebbe generare falsi segnali. Ad esempio, il prezzo torna indietro immediatamente. Non dovrebbe esserci alcun segnale e si verifica un falso positivo. A questo punto dipende dalla tua scelta se vuoi farlo oppure no. Tuttavia, puoi aggiungere una certa soglia e attivarla quando la supera, in modo da evitare falsi segnali causati dai rendimenti dei prezzi a breve termine. Lo slittamento può essere leggermente ridotto.
Esiste anche il metodo di utilizzare segnali di offset come time offset o shift k line, che non genera segnali allo scoccare dell'ora, non si coinvolge con gli altri ed evita meglio l'affollamento. Esistono anche metodi come TWAP.
Tuttavia, questi richiedono alcune competenze e renderanno il codice vero e proprio più difficile.
offerta ferma
Una strategia CTA di base a frequenza medio-bassa In generale, il codice vero e proprio è molto semplice. Esiste una sola strategia per una varietà, non vi è alcuna addizione o sottrazione di posizioni e nessuna informazione incrociata viene mescolata insieme. Quindi il codice locale non ha bisogno di mantenere alcuno stato, perché lo scambio registra tutto per te. Se c'è una posizione, quanto margine è richiesto, se l'ordine è stato completato, ecc. Poiché la frequenza è media e bassa, puoi controllare le informazioni sul conto dello scambio in qualsiasi momento quando necessario, e questo è il più immediato e accurato. Ciò elimina il problema di utilizzare un database locale per registrare lo stato delle transazioni.
Questa semplice strategia è effettivamente fattibile, ma il problema è che il ritracciamento potrebbe essere più ampio, non sufficientemente diversificato, e il rischio è elevato. Un singolo prodotto potrebbe non avere mercato, fluttuare e ripercorrere senza tornare indietro, o incontrare condizioni di mercato estreme, e un altro grande buco apparirà sulla curva del capitale. Se lo prendi sul serio, avrai paura e interromperai la tua strategia se non riesci a sopportarlo. Se lo prendi alla leggera, l'esperienza di trading sarà molto peggiore. Si noti che questi sono tutti nelle condizioni di posizioni ragionevoli. Altrimenti, se la posizione è troppo leggera, il ritracciamento sarà piccolo, ma anche il reddito sarà ridotto, e i profitti e le perdite proverranno dalla stessa fonte, e sarebbe un peccato perdere l'occasione se la posizione lo è; troppo pesante, sarà un errore, e prima o poi finirà.
Tuttavia, si raccomanda ai principianti di iniziare con l’implementazione in tempo reale di questa strategia. Solo attraverso la pratica puoi migliorare rapidamente il tuo livello di trading. Ma assicurati di mantenere la tua posizione leggera e la leva finanziaria dovrebbe essere inferiore. È meglio non utilizzare la leva finanziaria, in modo da poter persistere per un periodo di tempo più lungo.
Se vuoi essere più professionale, ridurre i rischi puntuali, la curva del capitale sarà più liscia e avrai meno di cui preoccuparti quando verrà fatta l’offerta (come accennato prima, in posizioni ragionevoli, questo è in realtà molto importante, perché (è più facile attenersi alla strategia e attendere fino a quando il rischio) è generalmente un modello multi-varietà, multi-strategia e multi-parametro, e poi ci sono addizioni e sottrazioni di posizioni. Ciò non significa necessariamente aggiungere o sottrarre posizioni su una strategia, ma può anche essere ottenuto mediante più sottostrategie per ottenere l'effetto di aggiungere o sottrarre posizioni. Tuttavia, in questo caso, la strategia sarà più affollata. Se si vuole anche ridurre al minimo lo slittamento delle posizioni di apertura e chiusura, la complessità del codice salirà alle stelle.
Parliamo delle difficoltà causate da questo modello multivarietà, multistrategia e multiparametro.
difficoltà
1. Limite di frequenza API
La prima difficoltà con più strategie è il limite di frequenza API. Esistono molte varietà e strategie Per ottenere prezzi, posizioni, ordini e altre informazioni in tempo reale, è necessario visitare costantemente la borsa. Come accennato in precedenza, se la frequenza è bassa e lenta, il prezzo ottenuto potrebbe non essere l’ultimo e lo slittamento potrebbe essere molto maggiore.
Le risorse del server dello scambio sono limitate, quindi esiste un limite alla frequenza di accesso dell'API. Il limite di Binance è di 2.400 al minuto, poi c'è un limite di 10 secondi e ci sono altre cosiddette modalità di apprendimento automatico per rilevare comportamenti dannosi. In ogni caso, sicuramente non funzionerà se è troppo frequente Se non funziona, lo scambio ha l'ultima parola. In questo caso, sai, non esiste una formula.
Anche se si dice che sia 2400, l'ho testato casualmente utilizzando la concorrenza. Se richiedo K linee, anche se sono le 99 linee più corte alla volta (il peso dell'API è 1), se richiedo circa 75 monete contemporaneamente. , verrò bannato per qualche minuto. Pertanto, non è facile sfidare i limiti.
Se lo violi, riceverai errori 429, 418 e il tuo IP verrà bannato per alcuni minuti o alcuni giorni. In questo momento, se hai una posizione, sarà infelice (non ci sono restrizioni sull'effettuazione degli ordini , soprattutto liquidando le posizioni esistenti, ma non hai informazioni sul prezzo, a meno che non ci sia anche websocket)
La soluzione a questo problema è utilizzare websocket per ottenere i dati, in modo che l'exchange possa trasmetterli attivamente in modo tempestivo senza occupare l'API. Può ridurre un po' lo slittamento. Il problema è che devi mantenere un altro market center basato su websocket. La difficoltà del codice live è aumentata ed è diventata più complicata. Non deve essere disconnesso per 24 ore e, se viene disconnesso, deve essere ricollegato automaticamente in tempo, ecc.
2. Stato della strategia
Come accennato in precedenza, se le strategie diventano più complesse, è necessario registrare lo stato di ciascuna strategia, altrimenti le posizioni dell'exchange non sapranno quale strategia ha aperto, quanto ha aperto ciascuna, ecc. E se vuoi rivederlo in seguito, dovrai registrare più dati.
A questo punto, devi introdurre un database (ovviamente puoi anche utilizzare i record di file, la stessa idea).
L'introduzione di un database comporta i problemi del database. Tuttavia, questo è simile allo sviluppo di software in altri settori e non presenta nulla di nuovo. Soprattutto nel settore dell’e-commerce, poiché si tratta di saldi di fondi, gestione degli ordini e altre cose simili, anche chi non ha esperienza può leggere questi libri e articoli.
Va notato che molti passaggi richiedono operazioni atomiche simili alle transazioni del database, ovvero un insieme di operazioni o tutte hanno successo. Una volta che un determinato passaggio fallisce, non è necessario fare nulla e ripristinare lo stato originale.
Quindi, poiché dopotutto si tratta di una transazione con denaro reale, per le operazioni del database relative alle informazioni sugli ordini, è meglio utilizzare il livello più alto dei quattro livelli di isolamento, Serializzabile, per eliminare la possibilità di tutte le letture sporche, letture non ripetibili e letture fantasma. Vale a dire, non viene utilizzata alcuna concorrenza, multi-threading o addirittura uso asincrono per leggere e scrivere le informazioni chiave del database. Tutte le operazioni vengono completate in un thread. Attuazione delle operazioni.
Non prendere alla leggera la sfida della programmazione simultanea. Se c'è un problema con questo tipo di sistema, probabilmente è impossibile risolverlo. È il bug più difficile da trovare nello sviluppo del software. Coloro che riescono a completare bene questo tipo di lavoro sono programmatori con uno stipendio mensile di oltre 50.000.
Non ce ne sono molti che mi vengono in mente che utilizzino il multi-threading o l'asincrono (multi-threading e asincrono, si consiglia di utilizzare il multi-threading, perché l'asincrono è come una malattia infettiva in Python. Una volta utilizzato, deve essere utilizzato in una catena di chiamate) Ciò che è veramente utile è inviare segnali di avviso DingTalk e simili. Poiché il servizio DingTalk è in Cina e i server di cambio valuta sono all'estero, il server del codice dovrebbe essere distribuito all'estero, più vicino allo scambio, quindi quando si invia DingTalk, a volte ci vogliono diversi secondi per tornare, e talvolta viene addirittura bloccato dura più di dieci secondi.
infine
In effetti, non importa se non puoi fare molte cose. Finché si ha la consapevolezza di accettare uno slittamento maggiore, è possibile ottenere quasi 1/5 o anche più profitti. La cosa più importante è la strategia Aspettarsi rendimenti positivi ed essere in grado di correre senza tempi di inattività è la chiave.
In breve, la prima priorità di un’offerta aziendale è quella di continuare ed eseguire stabilmente la logica stabilita della strategia. Lo slippage fa parte del trading, cerca solo di ridurlo purché non ti rompa i muscoli.
Strategia di prima classe, vengono implementati 2 e 3 flussi, non ci sono grossi problemi. Ma se la strategia non è all'altezza degli standard, il codice di trading reale superiore non aiuterà e la perdita sarà comunque una perdita. Pertanto, scrivere semplicemente un buon codice non può fare bene il trading quantitativo. La strategia è buona e il codice live è robusto Ovviamente è il migliore. Tuttavia, quando il tempo è limitato, concentrati sulla strategia.
Continua
