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

Analyse des données de séquence chronologique et retouche des données Tick

Auteur:La bonté, Créé: 2019-08-08 10:05:45, Mis à jour: 2024-12-19 00:24:00

img

Données chronologiques

Les séquences chronologiques sont des séquences de données obtenues sur des intervalles de temps égaux et continus. Dans l'investissement quantitatif, ces données se manifestent principalement par le mouvement des prix et des points de données sur lesquels l'indicateur d'investissement est suivi. Par exemple, le prix d'une action, les données chronologiques enregistrées régulièrement sur une période de temps spécifique.

img

On peut voir que la date se trouve sur l'axe x et que le prix est indiqué sur l'axe y. Dans ce cas, une période de temps d'intervalle de 4 jours signifie qu'il y a 14 jours d'intervalle sur l'axe x: 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équence chronologique, vous verrez souvent plus que ces données qui ne contiennent que les deux colonnes de date et de prix. Dans la plupart des cas, vous utiliserez des données qui contiennent cinq colonnes: cycle de données, prix d'ouverture, prix le plus élevé, prix le plus bas et prix de clôture. Cela signifie que si votre cycle de données est configuré à l'échelle de la ligne du jour, les changements de prix élevés, élevés, bas et élevés du jour sont répercutés dans les données de cette séquence chronologique.

Qu'est ce que les données Tick?

Les ticks sont la structure de données de transaction la plus complète d'un échange. Ils sont également une forme étendue de données de séquence chronologique mentionnées ci-dessus, comprenant: prix d'ouverture, prix le plus élevé, prix le plus bas, prix le plus récent, volume de transactions, volume de transactions.

img

Comme le montre le graphique ci-dessus, chaque mouvement des devises nationales est poussé vers le marché en temps réel; tandis que les échanges nationaux, qui sont vérifiés deux fois par seconde, génèrent un instantané et le poussent s'il y a un mouvement dans ce laps de temps. En comparaison, la quantité de poussée de données ne peut être considérée que comme OnTime et non comme OnTick.

Tous les codes et les données de séquence chronologique de ce tutoriel sont obtenus sur la plateforme de quantification des inventeurs.

Les données Tick quantifiées par l'inventeur

Bien que les données de Tick domestiques ne soient pas vraiment des Tick, elles peuvent être utilisées pour effectuer des retests, ce qui permet au moins d'approcher l'infinité et de réduire la réalité. Chaque Tick montre les principaux paramètres du produit sur le marché à l'époque, et notre code sur le disque réel, qui suit la théorie de Tick 2 fois par seconde, est en cours de calcul.

img

De plus, dans la quantification de l'inventeur, même si les données sont chargées sur un cycle d'une heure, la granularité des données peut encore être ajustée, par exemple en ajustant la granularité des données à 1 minute. À ce stade, la ligne K d'une heure est composée de données d'une minute. Bien sûr, plus la granularité est petite, plus la précision est élevée.

img

Maintenant, vous avez compris les concepts de base pour terminer ce tutoriel. Ces concepts reviendront bientôt et vous en apprendrez plus dans la suite de ce tutoriel.

Pour les amis intéressés par le contenu de cette section, veuillez écrire à:https://www.fmz.com/bbs-topic/1651Voir plus d'informations

Créer un environnement de travail

Pour le reste, il faut d'abord déployer des administrateurs avant de pouvoir quantifier les plateformes des inventeurs. Pour les lecteurs ayant une certaine expérience de programmation, le concept de l'administrateur peut être imaginé comme un système Docker officiellement emballé, dans lequel les interfaces API publiques des principales plateformes d'échange sont emballées, ainsi que les détails techniques de la fin des branches pour la rédaction et la réévaluation des stratégies.

  • Déploiement du système d'administration de la plateforme de quantification des inventeurs

Le déploiement de l'administrateur se fait de deux façons:

La méthode A: les utilisateurs louent ou achètent eux-mêmes des serveurs et les déploient sur les principales plateformes de cloud computing telles que AWS, Ali Cloud, Digital Ocean et Google Cloud. L'avantage est que la sécurité stratégique ou la sécurité du système sont toutes garanties.

Pour en savoir plus sur cette partie, le lecteur peut se référer à:https://www.fmz.com/bbs-topic/2848

Méthode B: déploiement de serveurs publics en utilisant la plate-forme de quantification des inventeurs, la plate-forme offre trois déploiements à Hong Kong, Londres et Hangzhou, les utilisateurs peuvent être déployés selon le principe de proximité en fonction de l'emplacement de l'échange sur lequel ils souhaitent négocier.

img

Pour les débutants, nous utiliserons la méthode B.

Il a été tué par un policier.登陆FMZ.COMCliquez sur le bouton "Control Center", puis sur "Administrateur", puis sur "Administrateur à louer" sur la page "Administrateur".

Le code a été entré et le déploiement a été réussi, comme le montre le graphique suivant:

img

  • Le concept de système robotique et la relation entre les gestionnaires

Comme mentionné ci-dessus, un hôte est comme un système de docker, un système de docker est comme un ensemble de normes que nous déployons correctement, et nous devons ensuite générer un exemple de pile pour cette norme, qui est un robot.

La création d'un robot est simple: après avoir déployé un bon hôte, cliquez sur le menu de robot à gauche, cliquez sur créer un robot, remplissez un nom dans le nom de la balise et sélectionnez l'hôte que vous venez de déployer. La sélection de paramètres dans la boîte de dialogue ci-dessous et le cycle de ligne K peuvent être sélectionnés en fonction de la situation, principalement en fonction de la sélection de stratégie de transaction.

img

À ce stade, notre environnement de travail a été construit et, comme vous pouvez le voir, il est très simple et efficace, toutes les fonctionnalités ont leurs fonctions.

Vous pouvez utiliser Python pour réaliser une stratégie simple en ligne moyenne.

Nous avons mentionné ci-dessus les concepts de données de séquence chronologique et de données Tick, et nous allons ensuite relier les deux concepts avec une simple stratégie d'équilibre.

  • Les principes de base de la stratégie homogène

En passant par une ligne moyenne à cycles lents, comme une ligne moyenne de 7 jours, et une ligne moyenne à cycles rapides, comme une ligne moyenne de 3 jours. Les appliquer sur le même schéma de K, lorsque la ligne moyenne à cycles rapides traverse une ligne moyenne à cycles lents, nous appelons cela une fourchette dorée; lorsque la ligne moyenne à cycles lents traverse une ligne moyenne à cycles rapides, nous appelons cela une fourchette morte.

La base de l'ouverture de l'échange est que la fourchette d'or est ouverte plusieurs fois, la fourchette morte est ouverte deux fois, et l'équilibre est le même.

让我们打开FMZ.COMDans le langage de programmation de la stratégie, dans le coin supérieur gauche, sélectionnez Python. Ci-dessous, le code de cette stratégie, chaque ligne a des commentaires très détaillés, s'il vous plaît, les lecteurs à prendre du recul.

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • Une réévaluation de la stratégie uniforme

Sur la page d'édition de la stratégie, nous avons terminé la rédaction de la stratégie. Ensuite, nous allons revoir cette stratégie pour voir comment elle se présente dans le secteur historique. La reprise joue un rôle important dans le développement de toute stratégie quantitative, mais elle ne peut être utilisée que comme référence importante.

En cliquant sur l'analyse d'analogie, vous pouvez voir qu'il y a beaucoup de paramètres qui peuvent être ajustés, qui peuvent être modifiés directement à l'intérieur, pour une stratégie ultérieure de plus en plus complexe, de plus en plus de paramètres.

img

Les options de réglage à l'arrière permettent d'optimiser automatiquement les paramètres définis, et le système essaie une variété de paramètres optimaux pour aider les développeurs à trouver le meilleur choix.

À partir des exemples ci-dessus, nous pouvons voir que la base de la transaction quantitative est l'analyse des données de séquence temporelle et l'interaction de la réévaluation des données de tick, puis une logique complexe, qui ne peut être séparée des deux éléments fondamentaux. Les différences sont seulement de dimension, par exemple, les transactions à haute fréquence nécessitent une coupe de données plus détaillée et des données de séquence temporelle plus riches. Par exemple, les transactions à taux d'intérêt nécessitent des données plus élevées pour les échantillons de réévaluation, et peuvent nécessiter des données de profondeur consécutives de plusieurs décennies pour certains deux indicateurs de négociation afin de trouver les statistiques de résultats de leurs écarts de profits.


Relationnée

Plus de