L'article précédent, Informations de base - Détails et réflexions sur l'offre réelle automatisée du système de trading quantitatif (I. Problèmes et difficultés), traitait de certains problèmes fondamentaux du trading réel dans le cercle des devises. Cet article parle de l'objectif principal de l'offre ferme.

Je pense qu'il y en a quatre principaux :

1. Mettre en œuvre la logique établie de la stratégie

Cela ne fait aucun doute. Lorsqu'il y a un signal, les opérations correspondantes doivent être effectuées, positions d'ouverture et de fermeture. Ce point nécessite que vous essayiez de ne pas utiliser d'ordres limités. Sinon, si la transaction ne peut pas être finalisée, vous devrez poursuivre l'ordre. Le prix est peut-être déjà allé trop loin. En fin de compte, la poursuite de l'ordre est également une question. question.

À long terme, le dérapage provoqué par l'utilisation des ordres de marché est à peu près similaire au dérapage provoqué par des ordres limités manquant occasionnellement mais par la poursuite d'ordres, il est donc préférable d'entrer et de sortir directement du marché, à moins que votre stratégie ne soit très spéciale.

De plus, si vous utilisez des ordres limités, votre code sera plus compliqué car vous devrez gérer les ordres limités non exécutés puis chasser les ordres. Et si seulement une partie de l’ordre limité était exécutée ? Les ordres limités restants sont-ils toujours en suspens ? Ou dois-je rater la pièce et émettre un autre ordre au marché ? Ce type d'opération en une seule étape génère plusieurs ordres de transaction, et l'examen ultérieur est également difficile et facile à confondre. Par conséquent, il est préférable d’utiliser simplement l’ordre au marché. Tant que la soumission réussit, la transaction sera fondamentalement garantie. S'il s'agit effectivement d'une stratégie sensible au dérapage, n'échangez que des cibles présentant une bonne liquidité.

De plus, pour les contrats, l'effet de levier ne doit pas être modifié à volonté. Il est préférable d'utiliser l'effet de levier idéal pour le backtesting, puis de le réduire de 20 %. Ne prédisez pas le marché de manière subjective et ajustez l’effet de levier manuellement. Changer de position est également un tabou dans le trading automatisé.

Il est préférable de gagner ou de perdre automatiquement et de réduire la position. Lorsque le retracement atteint un certain niveau, l'effet de levier doit être réduit. Ne faites pas l'inverse en pensant que le vent arrive bientôt et augmentez l'effet de levier. principal et réduire l'effet de levier) . La chose la plus importante est de garder votre compte en vie, alors soyez d’abord invaincu. Vous pouvez attendre que la courbe des capitaux dépasse la période de retracement avant de rajouter de l'effet de levier. Cependant, si le modèle des intérêts composés est utilisé, il s’agit déjà d’un simple contrat automatiquement gagnant et perdant.

2. Minimiser le glissement

Cela a été mentionné dans l'article précédent. Le glissement ne peut pas être éliminé, il peut seulement être atténué. Cela nécessite que vous obteniez dès que possible des informations sur les prix du marché, ainsi que diverses informations sur les fonds et les positions sur le compte d'échange, afin que vous puissiez réagir rapidement.

En termes de structure globale de l'offre réelle, il existe de nombreuses sous-stratégies et cela nécessite l'acquisition en temps opportun de diverses informations. Par conséquent, un centre de marché Websocket dédié est nécessaire pour partager les tâches. Équipé du centre de marché Plan B de Restful pour la sauvegarde. De cette façon, si le websocket est déconnecté et ne peut pas être connecté, il y aura toujours un prix relativement nouveau pour juger s'il est nécessaire de quitter le marché. Quand on court, il faut être rapide. Il vaut mieux courir dans la mauvaise direction que de se retrouver coincé dans un embouteillage et de ne pas savoir ce que l’avenir nous réserve.

3. Fonctionnement à long terme

Cela a été mentionné dans l'article précédent. Le cercle monétaire fonctionne 7*24 et votre code ne peut pas être arrêté. Cela nécessite que le code ne soit pas interrompu par diverses exceptions levées et qu'il doit y avoir du code pour gérer diverses situations inattendues. Il ne devrait pas non plus y avoir de bogues tels que des fuites de mémoire, sinon le programme tombera en panne avec le temps et même l'ensemble du serveur sera arrêté. Heureusement, Python n'est pas sujet à de tels problèmes. Il dispose d'un mécanisme de recyclage automatique de la mémoire. Si cela ne fonctionne pas, vous pouvez redémarrer manuellement le programme de trading tous les jours ou quelques jours. Quoi qu'il en soit, il s'agit d'un trading à moyenne et basse fréquence. Il s’agit d’exigences de base en matière de développement de code back-end et elles sont faciles à réaliser.

Généralement, le trading quantitatif utilise Python. Une caractéristique majeure de Python, un langage de script, est la compilation dynamique, qui a une efficacité d'exécution légèrement inférieure car elle n'est pas facile à déboguer car elle est compilée et exécutée en même temps (mais elle n'affectera pas les transactions moyennes et basses fréquences à tous). S’il existe un problème implicite dans la logique du code, il peut ne pas être facile à détecter. Par exemple, s'il y a 100 lignes de code et qu'il y a un problème à la ligne 99, mais qu'il ne s'exécute qu'à la ligne 95 à chaque fois, le problème ne sera pas découvert car l'erreur doit être trouvée après avoir exécuté la ligne 99 et déclenché le code pertinent. Mais cela peut être trop tard et le programme plantera directement si vous n'essayez pas d'attraper l'exception.

Une autre fonctionnalité est en fait incluse dans le problème mentionné ci-dessus. Python étant fortement typé, les conversions implicites sont rares. Si vous faites trop confiance au type de données envoyé par le serveur, en particulier à ces nombres, vous risquez de subir une perte, car parfois les nombres deviendront des chaînes. Différentes devises dans l'échange, différentes versions d'API et les mêmes données renvoyées par Websocket et Rest peuvent être de types différents. Par conséquent, en principe, vous devez forcer la transformation à chaque fois, ou d'abord déterminer s'il est nécessaire de transformer.

Aussi, ne mélangez pas les positions d’ouverture et de clôture entre différentes stratégies, notamment celles de la même devise, et faites un bon travail en les isolant. Sinon, dans certaines conditions de marché extrêmes, la stratégie A fermera la position de la stratégie B, ce qui finira par entraîner un désalignement. Vous devrez peut-être arrêter l'offre réelle et recommencer, ce qui sera incohérent et vous risquez de manquer les tendances clés du marché.

En un mot, tout est prévu pour un fonctionnement à long terme entièrement automatisé et sans intervention de la vraie affaire.

Cependant, si la stratégie est trop complexe, il ne sera peut-être pas facile de parvenir à une approche totalement sans intervention. Simplifier la stratégie est aussi un point de départ, ne la compliquez pas trop. Par exemple, des signaux tels que OBV doivent être utilisés avec parcimonie, car OBV a besoin de tracer des informations sur les prix et les volumes à long terme, et les transactions réelles doivent conserver trop de données. Chaque interruption et redémarrage est un problème. En dernier recours, évitez de tels facteurs.

4. Contrôle des risques

Il s’agit de la priorité absolue des exigences de l’offre ferme.

Le plus dangereux est de ne pas pouvoir clôturer une position. Le marché est allé dans la direction opposée et a continué à se déchaîner. En conséquence, votre code de sortie était hors de contrôle. Quelle qu'en soit la raison, la position a été clôturée avec des pertes. Dans le cercle monétaire, les altcoins peuvent augmenter plusieurs fois en peu de temps. Par conséquent, dans le cas de ventes à découvert, même si vous n'utilisez pas de levier et que vous avez toujours une demi-position, pensant que vous n'avez rien à craindre, le résultat peut être que votre position soit effacée le matin.

Il est donc nécessaire de s’assurer que le mécanisme de sortie entre en vigueur. Si vous manquez l'occasion d'ouvrir une position, au moins ce ne sera pas fatal. Si vous manquez l'occasion, ce sera tout au plus dommage, mais si vous manquez l'occasion de clôturer la position, cela causera de gros problèmes.

Voici brièvement deux solutions, et j'en parlerai en détail plus tard lorsque j'aurai le temps.

Le premier point est qu’il est préférable d’avoir un stop loss dur, qui est similaire à un stop loss à ratio de perte fixe. Par exemple, si une grande devise perd plus de 10 % et une petite devise perd 15 %, la position sera immédiatement fermée et s'enfuira.

Pour la méthode du hard stop loss, le prix du stop loss doit être fixé au moment de l’ouverture de la position. Par conséquent, les ordres stop-loss algorithmiques (certains également appelés ordres conditionnels) doivent être soumis dès que possible après l’ouverture d’une position, et il n’est pas nécessaire de modifier le prix à mi-chemin. De cette façon, la bourse vous aidera à surveiller le prix en temps réel, puis à soumettre un ordre de marché pour quitter le marché après son déclenchement. Il peut y avoir beaucoup de dérapages dans cette approche, mais elle est plus susceptible d'être plus stable et fiable que le stop loss que vous avez fixé vous-même. Et même si quelque chose ne va pas et qu'il ne se déclenche pas, vous pouvez toujours vous adresser à l'échange. revendiquer des droits (vous devez donc vous rendre au premier échange).

Bien entendu, ce type de stop loss est utilisé pour couvrir le fond et devrait être rarement déclenché. Il est préférable de contrôler le moment de la sortie en fonction de votre propre stratégie, afin que le retracement soit probablement plus petit.

Le deuxième point est que le programme n’ouvrira pas de positions au hasard. N'ouvrez pas de positions en continu, mais pensez qu'elles ne le sont pas et finissez par ouvrir une exposition importante. Ce n'est pas grave si le prix ne fluctue pas sur une courte période. Il est possible d'intervenir manuellement pour le corriger. S'il s'inverse soudainement, votre position peut être liquidée. Bien sûr, il s’agit d’une erreur de bas niveau, mais cela arrive. Surtout après avoir itéré et mis à niveau le code à mi-chemin, il peut ne pas être examiné attentivement.

Dans ce cas, vous devez d'abord ralentir le rythme d'ouverture d'une position et vous devez attendre le retour des résultats d'ouverture de position. De plus, vous devez vérifier et confirmer les informations du compte à ce moment-là avant d'ouvrir une position. N'ouvrez pas de positions en continu. Bien entendu, vous pouvez également enregistrer toutes les opérations localement, ce qui permettra d'économiser le nombre de requêtes API et le temps nécessaire pour interroger celles de la bourse. Statut du compte.

De plus, plus efficacement, il est possible de limiter à l’avance l’effet de levier maximum d’un échange. Cela peut être ajusté par vous-même. Binance est par défaut de 20 fois, mais vous pouvez le modifier à 3 fois ou même 2 fois (bien sûr, cela nécessite que votre stratégie elle-même n'utilise pas un effet de levier élevé, sinon vous ne pourrez pas ouvrir un effet de levier élevé lorsque vous le devriez). Ainsi, peu importe à quel point le code est fou, il est impossible de créer une grande exposition pendant que vous dormez. C'est plus sûr.

En bref, parfois la véritable offre n'est pas seulement le code de transaction, mais doit également prévoir d'autres lignes de défense pour éviter d'être pénétrée par des événements de type cygne noir. Ne le prenez jamais à la légère et essayez de combler les angles morts.