Aujourd’hui, nous allons parler de l’importance d’optimiser la structure du code.
Pour le pari, les choses les plus importantes sont les suivantes: 1) l’utilisation des fonds; 2) la vitesse des enchères;
La vitesse d’envoi des commandes peut généralement dépendre de la proximité du serveur de l’échange, de l’achat d’un meilleur réseau, etc. Mais en réalité, pour la plupart des débutants, le simple fait d’optimiser la structure du code peut accélérer la stratégie de quelques dizaines de millisecondes, tout à fait comme l’effet d’un changement de réseau meilleur. Cependant, le coût est beaucoup plus faible.
Cependant, l’optimisation de la structure du code est souvent moins rapide que 1 ms lorsqu’il n’y a qu’une seule paire de transactions, et la différence est presque imperceptible.
L’amélioration de l’utilisation des fonds, qui nécessite souvent la même somme d’argent pour observer plusieurs paires de transactions en même temps, entraîne une augmentation du nombre de cycles logiques, à ce moment-là, les avantages de l’optimisation de la structure du code sont évidents. La complexité de la polygraphie multi-échanges multi-transactions est généralement de O (n), qui peut être complètement réduite à O (n) ou même O (n).*m) ((m) lorsque les paires atteignent des centaines et que les bourses observent simultanément des dizaines de paires.
Il y a un problème que j’ai souvent rencontré, à savoir qu’il y a deux voies d’arbitrage, A-C et A-B-C, et qu’il y a deux voies d’arbitrage, A-C et A-B-C. Les deux chemins doivent être calculés deux fois, une fois pour calculer les bénéfices que le chemin peut apporter, en supposant que p1 et p2, une fois pour calculer le prix et la quantité de chaque échange spécifique et de ses transactions pour les besoins de facturation spécifiques.
La méthode la plus courante consiste à écrire une fonction qui calcule le profit, en indiquant spécifiquement price et amount. Ensuite, l’appel de cette fonction est répété, et après avoir obtenu le profit de chaque chemin, le plus grand profit est sélectionné pour la transaction.
Il est évident que nous n’avons besoin que de calculer le profit pour la comparaison, sans avoir besoin de calculer le prix et le montant des factures en premier lieu.
Ainsi, lors de l’optimisation, il est possible de séparer profit et mention 2 fonctions ≠ les fonctions qui appellent profit en premier cycle, pour obtenir le profit de chaque chemin, puis sélectionner le plus grand profit pour effectuer la transaction ≠ ainsi, logiquement, les fonctions de mention sont appelées à partir de chaque cycle, et ne sont appelées qu’une seule fois ≠ la complexité temporelle est passée de O (((2n) à O (((n+1), n étant le nombre total de chemins de négociation ≠
Ensuite, si vous analysez le code plus en profondeur, vous trouverez que dans la plupart des cas, une fois qu’un chemin est rentable, il est généralement arbitrable par quelqu’un d’autre. Il est donc très difficile d’avoir plusieurs chemins qui sont rentables en même temps.
Nous pouvons donc optimiser encore plus notre stratégie, en mettant en place un cycle, un cycle d’affirmations if, qui, s’il y a un profit sur un chemin, le casse, et ensuite calculer le nombre de citations et le prix de ce chemin.
La complexité est alors simplifiée de O{\displaystyle O} à n+1 pour O{\displaystyle O} à m+1, m
Par exemple, en analysant la structure de l’optimisation logique par une simple fonction de décomposition, on peut réduire la complexité temporelle de O{\displaystyle O} à O{\displaystyle O} n/2+1).
En fait, quand on écrit du code, il y a beaucoup de scénarios qui peuvent être optimisés, et j’écris souvent du code après l’avoir écrit, et je trouve souvent qu’il y a une logique d’optimisation qui peut optimiser un certain O (n!) en O (n).*(n+1)). Parfois, il est même possible d’optimiser une logique qui n’a pas été exécutée avant plusieurs centaines de millisecondes à moins de 1 ms.
Comme un petit peu de temps peut réduire considérablement l’intervalle entre les enquêtes stratégiques, il est recommandé d’optimiser la structure du code.