Description du mécanisme de contre-test FMZ

Auteur:Je suis désolée., Créé à: 2022-03-23 10:06:22, mis à jour à: 2022-03-28 13:42:35

La plupart des stratégies nécessitent des backtests pour vérification avant d'être effectuées dans des bots. FMZ prend en charge les contrats au comptant, à terme et perpétuels de certaines crypto-monnaies, ainsi que toutes les variétés de contrats à terme sur matières premières. Cependant, le mécanisme de backtest de la plate-forme FMZ Quant est différent du backtest onbar commun, ce qui a causé des confusions pour de nombreux débutants.

Comment fonctionne un système de backtest?

img

Comme indiqué dans l'image ci-dessus, le temps entre le début du backtest et la fin du temps peut être considéré comme un axe temporel. Pendant le backtest, le point de temps du backtest se déplace de gauche à droite le long de l'axe pour commencer le backtest. À un moment donné, seules les données historiques avant ce point de temps peuvent être obtenues. Sur la base des données historiques, la stratégie effectue des achats et des ventes, et forme finalement le profit et la perte. Bien sûr, étant donné que plus les points de temps de backtest sont denses, plus le temps nécessaire est long, le système de backtest doit choisir entre précision et efficacité.

Système traditionnel de test de rétroaction onBar

Le mécanisme de backtest onbar est basé sur des K-lines, c'est-à-dire que chaque K-line génère un point de temps de backtest.

L'inconvénient de ce mécanisme est évident: sur une K-line, un seul commerce peut être généré, et le prix est généralement basé sur le prix de clôture de la K-line. Une K-line ne peut obtenir que quatre prix, à savoir les prix d'ouverture, de clôture, les prix les plus élevés et les prix les plus bas, mais ne peut pas obtenir les informations, telles que les changements de prix sur une K-line, et si le prix le plus bas se produit en premier ou le prix le plus élevé en premier. Prenez la K-line de 1 heure à titre d'exemple.

FMZ Quant onTick Système de contre-test

img

L'image ci-dessus montre l'interface des paramètres de backtest FMZ. Le mode de backtest est divisé en deux types, à savoir le niveau de simulation et le niveau réel du marché, qui seront présentés séparément ci-dessous:

C'est quoi une tique?

Contrairement aux données de la ligne K, le tick est le prix à un moment précis. Selon les données de la ligne K, nous ne savons en fait que quand le prix d'ouverture et le prix de clôture se sont produits. Il n'est pas clair quand le prix atteint la valeur la plus élevée dans la période de la ligne K. En fait, les données de la ligne K sont également générées sur la base du tick. Selon les données de la ligne K, il est également possible de simuler les changements d'un tick spécifique dans une période de la ligne K. Bien qu'il ne s'agisse pas d'un tick réel, cela peut rendre notre backtest plus précis.

Test de retour au niveau de simulation

Pour le backtest de niveau de simulation, vous devez sélectionner la période de la ligne K et la période de la ligne K sous-couche utilisée pour le backtest. Par exemple, si la stratégie utilise le backtest de ligne horaire et que la ligne K sous-couche est définie sur 5 minutes, l'intervalle des points de temps de backtest sera basé sur le tick simulé par la ligne K de 5 minutes, qui se reflète dans les changements continus du prix de clôture de la ligne K dans la dernière heure 1. Le mécanisme de génération de ticks dans les lignes K selon les lignes K est similaire à celui de MT4. Il y a des instructions détaillées dans ce post:https://www.fmz.com/bbs-topic/662

img
Nous utilisons une stratégie simple pour démontrer ce mécanisme; le code de stratégie:

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords can fill the parameters, and obtain K-lines of different periods 
      var ticker = exchange.GetTicker()
      Log('K-line close price: ', records[records.length-1].Close, 'ticker Buy1 Sell1 prices: ', ticker.Buy, ticker.Sell)
      //js backtest does not use Sleep, and it will skip to the next tick; Python needs 1 hour of sleep time 
  }
}

Résultat du test:img

Seuls les ticks ouverts et fermés de chaque ligne K sont fixés, et les 12 ticks simulés sont ajoutés au milieu, de sorte qu'une ligne K formera 14 points de temps de backtest. Si vous backtest pendant un jour avec la période de la ligne K sous-couche de 5 minutes, un total de 24 × 12 × 14 = 4032 points de temps sera généré, tandis que le backtest traditionnel onBar n'en a que 24, donc la précision est grandement améliorée. Les opérations d'ouverture et de fermeture de position peuvent également être effectuées dans une période de ligne K. Bien que les ticks générés intermédiaires soient simulés, cela n'affecte pas beaucoup. Dans le backtest, tant que le prix de l'ordre est plus grand que le prix de vente, et le prix de vente est inférieur au prix de vente, le backtest sera assorti.

Retour en arrière sur le niveau réel du marché

Le backtest au niveau du marché réel utilise le tick réel, et l'intervalle le plus court entre chaque point de temps n'est que de 1s. Ce type de backtest est précis au changement par seconde, mais en raison de la grande quantité de données, la vitesse du backtest est lente et le temps du backtest ne peut pas être trop long.

img

Différences entre le Backtest et le Bot

Même le backtest au niveau du marché réel et le trading bot réel présentent encore des lacunes évidentes en termes de données, telles que l'incapacité d'obtenir des transactions de l'historique des transactions, l'incapacité d'obtenir des changements de profondeur réels, des retards réels du réseau, etc. Malgré cela, le système de backtest actuel FMZ est relativement complet, et il existe de nombreuses petites fonctions, telles que la simulation d'erreurs réseau, qui peuvent être utilisées pour tester la tolérance aux pannes des stratégies, simuler les retards du réseau et dessiner des icônes de marché.

Questions fréquemment posées

Pourquoi seuls quelques paires et plateformes de trading sont prises en charge pour le backtest?

À l'heure actuelle, il n'existe que des données sur quelques paires de négociation courantes.

Peut-il simuler BitMEX pour facturer le taux de financement?

Bien sûr, vous pouvez choisir BitMEX backtest pour ouvrir le journal.img

Où est effectué le backtest?

Le backtest des stratégies JavaScript est effectué dans le navigateur, tandis que Python peut choisir le serveur FMZ ou son propre dock pour effectuer le backtest.

On peut télécharger les journaux des tests?

Il y a un bouton de téléchargement dans le coin droit.

Le backtest peut-il être effectué localement?

FMZ ouvre la source du moteur de backtest Python.https://www.fmz.com/bbs-topic/1687


Plus de