L'articolo precedente, Informazioni fondamentali: dettagli e riflessioni sull'offerta reale automatizzata del sistema di scambio quantitativo (I. Problemi e difficoltà), parlava di alcuni problemi fondamentali del commercio reale nel circolo valutario. Questo articolo parla dello scopo principale dell'offerta aziendale.

Penso che ce ne siano quattro principali:

1. Implementare la logica stabilita della strategia

Non ci sono dubbi su questo. Quando c'è un segnale devono essere effettuate le operazioni corrispondenti, posizioni di apertura e chiusura. Questo punto richiede che tu provi a non utilizzare gli ordini limite. Altrimenti, se la transazione non può essere completata, dovrai inseguire l'ordine. Il prezzo potrebbe essere andato troppo oltre. Alla fine, anche se inseguire l'ordine è una domanda .

Nel lungo periodo, lo slittamento causato dall'utilizzo degli ordini di mercato è più o meno simile allo slittamento causato dalla mancanza occasionale di ordini limite ma dall'inseguimento degli ordini, quindi è meglio entrare e uscire direttamente dal mercato, a meno che la tua strategia non sia molto speciale.

Inoltre, se utilizzi ordini limite, il tuo codice sarà più complicato perché dovrai gestire gli ordini limite non eseguiti e quindi eseguire gli ordini. E cosa succede se viene eseguita solo una parte dell'ordine limite? Gli ordini limite rimanenti sono sempre sospesi? Oppure dovrei perdermi la parte ed emettere un altro ordine di mercato? Questo tipo di operazione in un unico passaggio genera più ordini di transazione e anche la successiva revisione è problematica ed è facile confondersi. Pertanto, è meglio utilizzare semplicemente l'ordine di mercato. Finché l'invio ha esito positivo, la transazione sarà sostanzialmente garantita. Se si tratta effettivamente di una strategia sensibile allo slittamento, allora negozia solo con obiettivi con una buona liquidità.

Inoltre, per i contratti, la leva finanziaria non dovrebbe essere modificata a piacimento. È meglio utilizzare la leva finanziaria ideale per il backtesting e poi scontarla del 20%. Non prevedere il mercato in modo soggettivo e aggiustare manualmente la leva finanziaria. Anche cambiare posizione è un tabù nel trading automatizzato.

È meglio vincere o perdere automaticamente e ridurre la posizione. Quando il ritracciamento raggiunge un certo livello, la leva finanziaria dovrebbe essere ridotta. Non fare il contrario, pensando che il vento arriverà presto e aumentare la leva finanziaria (ma puoi aumentare la leva). capitale e ridurre la leva finanziaria). La cosa più importante è mantenere vivo il tuo account, quindi prima sii imbattuto. Puoi attendere che la curva del capitale superi il periodo di ritracciamento prima di ripristinare la leva finanziaria. Tuttavia, se viene utilizzato il modello dell’interesse composto, si tratta già di un semplice contratto con vincita e perdita automatica.

2. Ridurre al minimo lo slittamento

Questo è stato menzionato nell'articolo precedente. Lo slittamento non può essere eliminato, può solo essere mitigato. Ciò richiede che tu ottenga informazioni sui prezzi di mercato il prima possibile, nonché vari fondi e informazioni sulla posizione nel conto di scambio, in modo da poter rispondere rapidamente.

In termini di struttura complessiva dell’offerta reale, ci sono molte sottostrategie e richiede l’acquisizione tempestiva di varie informazioni. Pertanto, è necessario un market center websocket dedicato per condividere i compiti. Dotato del centro mercato Plan B di Restful per il backup. In questo modo, se il websocket è disconnesso e non può essere connesso, ci sarà comunque un prezzo relativamente nuovo per giudicare se sia necessario uscire dal mercato. Quando corri, devi essere veloce. È meglio correre nella direzione sbagliata che rimanere bloccati nel traffico e non sapere cosa riserva il futuro.

3. Funzionamento a lungo termine

Questo è stato menzionato nell'articolo precedente. Il circolo valutario funziona 7*24 e il tuo codice non può essere disattivato. Ciò richiede che il codice non venga interrotto da varie eccezioni generate e che sia presente codice per gestire varie situazioni impreviste. Inoltre, non dovrebbero esserci bug come perdite di memoria, altrimenti il ​​programma si bloccherà nel tempo e persino l'intero server verrà bloccato. Fortunatamente, Python non è soggetto a tali problemi poiché dispone di un meccanismo automatico di riciclo della memoria. Se non funziona, puoi riavviare manualmente il programma di trading ogni giorno o qualche giorno. In ogni caso, si tratta di trading a media e bassa frequenza. Questi sono requisiti di base per lo sviluppo del codice back-end e sono facili da raggiungere.

Generalmente, il trading quantitativo utilizza Python. Una caratteristica importante di Python, un linguaggio di scripting, è la compilazione dinamica, che ha un'efficienza di esecuzione leggermente inferiore perché non è facile da eseguire il debug perché viene compilata ed eseguita allo stesso tempo (ma non influirà sulle transazioni a media e bassa frequenza a Tutto). Se c'è un problema implicito nella logica del codice, potrebbe non essere facile da individuare. Ad esempio, se ci sono 100 righe di codice e si verifica un problema sulla riga 99, ma ogni volta viene eseguito solo fino alla riga 95, il problema non verrà rilevato perché l'errore deve essere trovato dopo l'esecuzione fino alla riga 99 e l'attivazione del codice codice pertinente. Ma potrebbe essere troppo tardi e il programma si bloccherà direttamente se non provi a catturare l'eccezione.

Un'altra funzionalità è in realtà inclusa nel problema menzionato sopra. Poiché Python è fortemente tipizzato, le conversioni implicite sono rare. Se ti fidi troppo del tipo di dati inviato dal server, in particolare di quelli numerici, rischierai di subire una perdita, perché a volte i numeri diventeranno stringhe. Valute diverse nello scambio, versioni API diverse e gli stessi dati di ritorno da websocket e resto possono essere di tipi diversi. Pertanto, in linea di principio, è necessario forzare la trasformazione ogni volta o determinare prima se è necessaria la trasformazione.

Inoltre, non confondere le posizioni di apertura e chiusura tra varie strategie, soprattutto quelle della stessa valuta, e fai un buon lavoro isolandole. Altrimenti, in alcune condizioni di mercato estreme, la strategia A chiuderà la posizione della strategia B, il che alla fine porterà a un disallineamento. Potrebbe essere necessario interrompere l’offerta reale e ricominciare, il che sarà incoerente e potresti perdere le principali tendenze del mercato.

In una parola, tutto serve per un funzionamento a lungo termine completamente automatizzato e senza interventi del vero affare.

Tuttavia, se la strategia è troppo complessa, potrebbe non essere facile ottenere un approccio completamente privo di interventi. Anche semplificare la strategia è un punto di partenza, non renderla troppo complicata. Ad esempio, segnali come OBV dovrebbero essere usati con parsimonia, perché OBV deve tracciare informazioni sui prezzi e sui volumi a lungo termine e il trading reale richiede il mantenimento di troppi dati. Ogni interruzione e riavvio è una questione problematica. Come ultima risorsa, evitare tali fattori.

4. Controllo del rischio

Questa è la massima priorità dei requisiti di offerta dell'impresa.

La cosa più pericolosa è non riuscire a chiudere una posizione. Il mercato è andato nella direzione opposta e ha continuato a impazzire. Di conseguenza, il tuo codice di uscita era fuori controllo, qualunque fosse il motivo, la posizione è stata chiusa con perdite. Nel circolo valutario, le altcoin possono salire più volte in un breve periodo di tempo. Pertanto, in caso di vendita allo scoperto, anche se non utilizzi la leva finanziaria e hai ancora una mezza posizione, pensando di non avere nulla di cui preoccuparti, la posizione potrebbe essere stata cancellata al mattino.

Pertanto è necessario garantire che il meccanismo di uscita abbia effetto. Se perdi l'opportunità di aprire una posizione, almeno non sarà fatale. Se perdi l'opportunità, sarà al massimo un peccato, ma se perdi l'opportunità di chiudere la posizione, causerà grossi problemi.

Ecco brevemente due soluzioni e ne parlerò in dettaglio più tardi quando avrò tempo.

Il primo punto è che è meglio avere uno stop loss rigido, che è simile a uno stop loss con rapporto di perdita fisso. Ad esempio, se una valuta grande perde più del 10% e una valuta piccola perde il 15%, la posizione verrà chiusa immediatamente e scapperà.

Per il metodo hard stop loss, il prezzo dello stop loss dovrebbe essere fissato al momento dell’apertura della posizione. Pertanto, gli ordini algoritmici stop-loss (alcuni chiamati anche ordini condizionati) dovrebbero essere inviati il ​​prima possibile dopo l'apertura di una posizione e non è necessario modificare il prezzo a metà strada. In questo modo, l'exchange ti aiuterà a monitorare il prezzo in tempo reale e quindi a inviare un ordine di mercato per uscire dal mercato dopo che è stato attivato. Potrebbero esserci molti slittamenti in questo approccio, ma è più probabile che sia più stabile e affidabile dello stop loss che hai impostato. E anche se qualcosa va storto e non viene attivato, potresti comunque ricorrere allo scambio rivendicare i diritti (quindi devi andare allo scambio principale).

Naturalmente, questo tipo di stop loss viene utilizzato per coprire il fondo e dovrebbe essere attivato raramente. È meglio controllare i tempi di uscita in base alla propria strategia, in modo che il ritracciamento sia probabilmente inferiore.

Il secondo punto è che il programma non aprirà le posizioni in modo casuale. Non aprire posizioni continuamente ma pensi che non lo siano, e finirai per aprire una grande esposizione. Va bene se il prezzo non fluttua in un breve periodo di tempo. È possibile intervenire manualmente per correggerlo. Se si inverte improvvisamente, la tua posizione potrebbe essere liquidata. Naturalmente questo è un errore di basso livello, ma succede. Soprattutto dopo aver ripetuto e aggiornato il codice a metà, potrebbe non essere considerato attentamente.

In questo caso, è necessario prima rallentare il ritmo di apertura di una posizione e attendere la restituzione dei risultati di apertura della posizione. Inoltre, devi controllare e confermare le informazioni del conto in quel momento prima di aprire una posizione. Non aprire posizioni continuamente. Naturalmente, puoi anche registrare tutte le operazioni localmente, il che farà risparmiare il numero di richieste API e il tempo per interrogare quelle dello scambio. stato dell'account.

Inoltre, in modo più efficace, è possibile limitare in anticipo la leva massima di un exchange. Questo può essere regolato da solo. Per impostazione predefinita Binance è 20 volte, ma puoi modificarlo a 3 o anche 2 volte (ovviamente, ciò richiede che la tua strategia stessa non utilizzi una leva elevata, altrimenti non sarai in grado di aprire una leva elevata quando dovresti). Quindi, non importa quanto sia folle il codice, è impossibile creare una grande esposizione mentre dormi. Questo è più sicuro.

Insomma, a volte la vera offerta non è solo il codice della transazione, ma occorre predisporre anche altre linee di difesa per evitare di essere penetrati da eventi del cigno nero. Non prenderla mai alla leggera e cercare di isolare i punti ciechi.