Les ressources ont été chargées... Je charge...

Analyse des données de séries temporelles et vérification des données de tics

Auteur:FMZ~Lydia, Créé à: 2023-01-06 15:27:16, Mis à jour à: 2023-09-20 10:12:15

img

Analyse des données de séries temporelles et vérification des données de tics

Données de séries chronologiques

Les séries chronologiques se réfèrent aux séries de données obtenues dans un intervalle continu de temps égal. Dans l'investissement quantitatif, ces données se reflètent principalement dans le prix et le mouvement des points de données de l'objet d'investissement suivi. Par exemple, pour les cours des actions, les données de séries chronologiques enregistrées régulièrement dans une période de temps spécifiée peuvent se référer au graphique suivant, qui donnera aux lecteurs une compréhension plus claire:

img

Comme vous pouvez le voir, la date est sur l'axe x et le prix est affiché sur l'axe y. Dans ce cas, intervalle de temps continu signifie que les jours sur l'axe x sont séparés par 14 jours: notez la différence entre le 7 mars 2005 et le point suivant, le 31 mars 2005, le 5 avril 2005 et le 19 avril 2005.

Cependant, lorsque vous utilisez des données de séries temporelles, vous verrez souvent plus que ce type de données qui ne contient que deux colonnes: date et prix. Dans la plupart des cas, vous utiliserez cinq colonnes de données: période de données, prix d'ouverture, prix le plus élevé, prix le plus bas et prix de clôture. Cela signifie que si votre période de données est définie sur le niveau quotidien, les changements de prix élevés, ouverts, bas et fermés de la journée seront reflétés dans les données de cette série temporelle.

Quelles sont les données de Tick?

Les données Tick sont la structure de données commerciales la plus détaillée de l'échange. Il s'agit également d'une forme étendue des données de séries chronologiques mentionnées ci-dessus, y compris: prix d'ouverture, prix le plus élevé, prix le plus bas, dernier prix, quantité de négociation et chiffre d'affaires. Si les données de transaction sont comparées à une rivière, les données Tick sont les données de la rivière à une certaine section transversale.

Chaque action des bourses étrangères sera poussée vers le marché en temps réel, tandis que le change national vérifie deux fois par seconde. S'il y a des actions dans cette période, un instantané sera généré et poussé. En comparaison, la poussée de données ne peut être considérée que comme OnTime au mieux, pas OnTick.

Tous les codes et l'acquisition de données de séries temporelles dans ce tutoriel seront complétés sur la plateforme FMZ Quant.

Marquer les données sur le FMZ Quant

Bien que les données Tick domestiques ne soient pas un vrai Tick, elles peuvent être infiniment proches et restaurer la réalité au moins en utilisant ces données pour le backtesting. Chaque tick affiche les principaux paramètres du produit sur le marché à ce moment-là, et notre code dans le vrai bot est calculé selon le Tick théorique de deux fois par seconde.

img

Non seulement cela, sur le FMZ Quant, même si les données avec une période de 1 heure sont chargées, la granularité des données peut encore être ajustée, comme ajuster la granularité des données à 1 minute. À ce moment-là, la ligne K de 1 heure est composée de données de 1 minute. Bien sûr, plus la granularité est petite, plus la précision est élevée. Ce qui est plus puissant, c'est que si vous passez les données à un vrai bot Tick, vous pouvez restaurer l'environnement du vrai bot de manière transparente. C'est-à-dire les données réelles du Tick Exchange de deux fois par seconde.

img

Maintenant que vous avez appris les concepts de base que vous devez comprendre pour compléter ce tutoriel. ces concepts reviendront bientôt, et vous en apprendrez plus sur eux plus tard dans ce tutoriel.

Mettre en place un environnement de travail

Les meilleurs outils font du bon travail. Nous devons d'abord déployer un docker sur la plate-forme FMZ Quant. En ce qui concerne le concept d'un docker, les lecteurs ayant une expérience en programmation peuvent l'imaginer comme un système Docker officiellement emballé, qui a encapsulé les interfaces API publiques de divers échanges traditionnels et les détails techniques de la rédaction de stratégies et du backtesting. L'intention initiale de l'établissement de ce système est de faire en sorte que les traders quantitatifs se concentrent sur la rédaction et la conception de stratégies lors de l'utilisation de la plate-forme FMZ Quant. Ces détails techniques sont présentés aux rédacteurs de stratégies dans une formule encapsulée pour leur faire économiser beaucoup de temps et d'efforts.

  • Déploiement du système de docker de la plateforme FMZ Quant Il existe deux méthodes pour déployer un dock:

Méthode A: Les utilisateurs peuvent louer ou acheter eux-mêmes des serveurs et les déployer sur diverses plateformes de cloud computing, telles que AWS, Alibaba Cloud, Digital Ocean et Google Cloud. L'avantage est que la sécurité de la stratégie et la sécurité du système sont toutes deux garanties. Pour la plateforme FMZ Quant, les utilisateurs sont encouragés à utiliser cette méthode. Le déploiement distribué élimine le danger caché des attaques de serveurs (que ce soit le client ou la plate-forme elle-même).

Méthode B: Utilisez le serveur public de la plateforme FMZ Quant pour le déploiement, la plateforme fournit quatre emplacements pour le déploiement à Hong Kong, Singapour, Japon et dans l'Est des États-Unis. Les utilisateurs peuvent déployer en fonction de l'emplacement de l'échange qu'ils souhaitent échanger et du principe de proximité. L'avantage de cet aspect est qu'il est simple et facile à compléter en un clic, ce qui est particulièrement approprié pour les utilisateurs débutants. Il n'a pas besoin de savoir beaucoup de choses sur l'achat de serveurs Linux, et il économise également du temps et de l'énergie pour apprendre les commandes Linux. Le prix est relativement bon marché. Pour les utilisateurs ayant de petits fonds, la plateforme recommande d'utiliser cette méthode de déploiement.

img

Pour les débutants, cet article adoptera la méthode B.

Les opérations spécifiques sont les suivantes:FMZ.COM, cliquez sur Dashboard, Docker, et cliquez sur One-click Rent a docker VPS pour louer le docker.

Entrez le mot de passe, comme indiqué ci-dessous après déploiement réussi:

img

  • La relation entre le concept de système de robot et le docker Comme mentionné plus haut, le docker est comme un système de docker, et un système de docker est comme un ensemble de normes. Nous avons déployé cet ensemble de normes. Ensuite, nous devons générer une instance pour cette norme, qui est un robot.

La création d'un robot est très simple. Après avoir déployé le docker, cliquez sur la colonne Bot à gauche, cliquez sur Ajouter bot, remplissez un nom dans le nom de la balise et sélectionnez le docker qui vient d'être déployé.

img

Jusqu'à présent, notre environnement de travail a été construit. On peut voir qu'il est très simple et efficace, et chaque fonction remplit ses propres fonctions. Ensuite, nous allons commencer à écrire une stratégie quantitative.

Mettre en œuvre une stratégie EMA simple en Python

Nous avons mentionné les concepts de données de séries chronologiques et de données Tick ci-dessus.

  • Le principe de base de la stratégie de l'EMA

L'EMA de la période lente, comme l'EMA de 7 jours, et l'EMA de la période rapide, comme l'EMA de 3 jours. Ils sont appliqués au même graphique de ligne K. Lorsque l'EMA de la période rapide traverse l'EMA de la période lente, nous l'appelons Golden Cross; Lorsque l'EMA de la période lente descend à travers l'EMA de la période rapide, nous l'appelons Bearish Crossover.

La base pour ouvrir une position est d'ouvrir des positions longues avec une croix d'or, et d'ouvrir des positions courtes avec un croisement baissier.

On ouvre.FMZ.COM, connectez-vous au compte, tableau de bord, bibliothèque de stratégie, et créez une nouvelle stratégie. Sélectionnez Python dans le langage d'écriture de stratégie dans le coin supérieur gauche. Voici le code de cette stratégie. Chaque ligne contient des commentaires détaillés. Veuillez prendre votre temps pour comprendre. Cette stratégie n'est pas une véritable stratégie de bot. Ne faites pas d'expérience avec de l'argent réel. Le but principal est de vous donner une idée générale de la rédaction de stratégie et un modèle pour apprendre.

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.

def main(): # The main function, where the strategy logic begins.
    STATE_IDLE = -1 # Mark position status variables
    state = STATE_IDLE # Mark the current position status
    initAccount = ext.GetAccount() # The spot digital currency trading class library (python version) is used here. Remember to check it when writing the strategy to obtain the initial account information.
    while True: # Enter the loop
        if state == STATE_IDLE : # Here begins the logic of opening positions.
            n = ext.Cross(FastPeriod,SlowPeriod) # The indicator crossover function is used here, for details please see: https://www.fmz.com/strategy/21104.
            if abs(n) >= EnterPeriod : # If n is greater than or equal to the market entry observation period, the market entry observation period here is to prevent positions from being opened indiscriminately as soon as the market opens.
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # Opening position quantity, for the usage of _N, please check the official API documentation.
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # Create a variable to store the open position status and execute the open position operation.
                if Dict :  # Check the dict variable and prepare for the following log output.
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # Both PD_LONG and PD_SHORT are global constants used to represent long and short positions, respectively.
                    Log("Details of opening positions",Dict,"Cross-period",n) # Log information
        else: # Here begins the logic of closing positions.
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # The indicator crossover function.
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # If the market exit observation period has passed and the current account status is in the position status, then you can determine the Golden Cross or Bearish Crossover.
                nowAccount = ext.GetAccount() # Refresh and get account information again.
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # The logic of closing a position is to close the long position if it is a long position and close the short position if it is a short position.
                state = STATE_IDLE # Mark the position status after closing positions.
                nowAccount = ext.GetAccount() # Refresh and get account information again.
                LogProfit(nowAccount.Balance - initAccount.Balance,'money:',nowAccount.Balance,'currency:',nowAccount.Stocks,'The details of closing positions',Dict2,'Cross-over period:',n) # Log information
        Sleep(Interval * 1000) # Pause the loop for one second to prevent the account from being restricted due to too fast API access frequency.
  • Test de la stratégie de l'EMA en arrière plan Sur la page d'édition de la stratégie, nous avons terminé l'écriture de la stratégie. Ensuite, nous devons faire un backtest de la stratégie pour voir comment elle fonctionne sur le marché historique. Le backtesting joue un rôle important dans tout développement de stratégie quantitative, mais il ne peut être utilisé que comme une référence importante. Le backtesting n'est pas égal à la garantie de profit, car le marché change constamment, et le backtesting n'est qu'un acte de rétrospective, qui appartient toujours à la catégorie de l'induction, le marché est déductif.

Cliquez sur le backtest, vous pouvez voir qu'il existe de nombreux paramètres réglables, qui peuvent être modifiés directement. Pour l'avenir, la stratégie est de plus en plus complexe et les paramètres sont de plus en plus nombreux. Cette méthode de modification peut aider les utilisateurs à éviter le problème de modifier le code un par un, ce qui est pratique, rapide et clair.

img

Les options d'optimisation suivantes permettent d'optimiser les paramètres définis automatiquement. Le système tentera divers paramètres optimaux pour aider les développeurs de stratégie à trouver le choix optimal.

D'après les exemples ci-dessus, nous pouvons voir que la base du trading quantitatif est l'analyse des données de séries temporelles et l'interaction de backtesting des données de tick. Quelle que soit la complexité de la logique, elle ne peut pas être séparée de ces deux éléments de base. La différence est simplement la différence de dimension. Par exemple, les transactions à haute fréquence nécessitent des aspects de données plus détaillés et plus de données de séries temporelles. Un autre exemple est le trading d'arbitrage, qui nécessite beaucoup de données de l'échantillon de backtest. Il peut nécessiter des données approfondies continues de deux objets de trading pendant plus de dix ans pour connaître les résultats statistiques de leur expansion et réduction de marge d'intérêt. Dans les articles futurs, j'introduirai les stratégies de trading à haute fréquence et de trading d'arbitrage l'une après l'autre. S'il vous plaît, attendez-vous à cela.


Relationnée

Plus de