Qu'est-ce que vous gagnez en suivant ce cours? Tout d'abord, ce cours est basé sur les langages de programmation JavaScript et Python. Le langage n'est qu'une technologie. Enfin, nous devrions appliquer cette technologie dans une industrie. Le commerce quantitatif est une industrie émergente, qui est actuellement à un stade de développement rapide et a une forte demande de talents.
Grâce à l'apprentissage systématique de ce cours, vous pouvez avoir une compréhension plus approfondie du domaine du trading quantitatif. Si vous êtes un étudiant qui se prépare à entrer dans le domaine du trading quantitatif, cela vous aidera également. Si vous êtes un passionné d'investissement en actions ou en contrats à terme, le trading quantitatif peut vous aider dans votre trading subjectif. En développant des stratégies de trading, vous pouvez gagner des profits sur le marché financier, et également élargir les canaux et les plateformes pour votre investissement et votre gestion financière.
Avant cela, laissez-moi vous parler de mon expérience personnelle de trading. Je ne suis pas spécialiste en finance, j'ai étudié les statistiques. Au début, j'ai commencé à négocier des actions subjectivement à l'école. Plus tard, je suis devenu un praticien de trading quantitatif de fonds de capital-investissement nationaux, principalement engagé dans la recherche et le développement de stratégies.
Je suis dans ce cercle depuis plus de dix ans, et j'ai développé différents types de stratégies. Ma philosophie d'investissement est la suivante: le contrôle des risques est avant tout et se concentre sur les rendements absolus. Le sujet de notre sujet est: du trading quantitatif à la gestion d'actifs - Développement de stratégie CTA pour un rendement absolu.
Quelqu'un peut se demander ce qu'est un CTA? Qu'est-ce que le CTA exactement? Le CTA est appelé conseiller en négociation de matières premières dans les pays étrangers et gestionnaire d'investissement en Chine. Le CTA traditionnel consiste à recueillir les fonds de la majorité des investisseurs, puis à les confier à des institutions d'investissement professionnelles, et enfin à investir dans des contrats à terme sur indices boursiers, des contrats à terme sur matières premières premières et des contrats à terme sur obligations du Trésor par l'intermédiaire de conseillers en négociation (à savoir le CTA).
Mais en fait, avec le développement et l'expansion continus du marché mondial des contrats à terme, le concept de CTA s'étend également et sa portée dépasse de loin les contrats à terme traditionnels. Il peut investir non seulement sur le marché des contrats à terme, mais également sur le marché des taux d'intérêt, le marché boursier, le marché des changes et le marché des options. Tant qu'il existe une certaine quantité de données historiques pour cette variété, il peut développer des stratégies de CTA correspondantes basées sur ces données historiques.
À cette époque, la plupart des traders jugeaient la tendance future des contrats à terme sur matières premières en dessinant manuellement des indicateurs techniques, tels que l'indice William, KDJ, RSI, MACD, CCI, etc. Plus tard, les traders ont mis en place un fonds CTA spécial pour aider les clients à gérer les actifs.
Variations de la taille de la gestion des fonds CTA
En milliards de dollars
En particulier avec l'essor du trading quantitatif, l'échelle des fonds CTA mondiaux est passée de 130,6 milliards de dollars en 2005 à plus de 300 milliards de dollars en 2015.
L'indice CTA de Barclay est un indicateur représentatif de l'industrie pour les conseillers mondiaux en matière de négociation de matières premières. De la fin de 1979 à la fin de 2016, le rendement cumulé de l'indice CTA de Barclay était de 28,95 fois, le rendement annualisé était de 9,59%, le ratio Sharp était de 0,37 et le retrait maximum était de 15,66%.
En effet, dans le portefeuille d'allocation d'actifs, la stratégie CTA maintient généralement une corrélation très faible avec les autres stratégies. Comme le montre le cercle rouge ci-dessous, pendant le marché boursier mondial de 2000 à 2002 et la crise mondiale des subprimes en 2008, l'indice du fonds Barclay CTA n'a pas seulement pas chuté, mais a également obtenu des rendements positifs. Lorsque le marché boursier et le marché obligataire étaient en crise, CTA pouvait fournir de forts rendements.
Le développement de la CTA en Chine n'a eu lieu que ces dix dernières années, mais la dynamique est très forte. Cela est principalement dû à l'environnement de négociation relativement ouvert des contrats à terme sur matières premières nationaux, au faible seuil des fonds de négociation, à l'utilisation du système de marge pour négocier des positions longues et courtes, aux faibles coûts de transaction, à la structure technique plus avancée de l'échange par rapport aux actions et au système de négociation plus facile.
Depuis 2010, les fonds CTA existent principalement sous forme de fonds privés. Avec l'ouverture progressive de la portée d'investissement du compte spécial du fonds dans les politiques nationales, les fonds CTA ont commencé à exister sous forme de compte spécial du fonds.
Les stratégies CTA sont également plus appropriées pour les traders individuels que les autres stratégies de trading en termes de facilité d'entrée, de seuil de capital, d'exécution des stratégies de trading et de connectivité API. Les contrats à terme nationaux sont très petits. Par exemple, la farine de maïs ou de soja peut être négociée pour des milliers de yuans, et il n'y a presque pas de seuil de capital.
Le processus de conception de la stratégie CTA est également relativement simple. Tout d'abord, les données historiques sont traitées initialement, puis entrées dans le modèle quantitatif. Le modèle quantitatif comprend la stratégie de trading formée par la modélisation mathématique, la conception de programmation et d'autres outils, et le signal de trading est généré en calculant et en analysant ces données. Bien sûr, dans le développement réel, ce n'est pas aussi simple que le graphique ci-dessus.
Du point de vue de la stratégie de négociation, la stratégie CTA est également diversifiée: elle peut être une stratégie de tendance ou une stratégie d'arbitrage; elle peut être une stratégie à moyen et long terme à grande période, ou une stratégie à court terme intraday; la logique de la stratégie peut être basée sur l'analyse technique ou l'analyse fondamentale; elle peut être une transaction subjective ou une transaction système.
La stratégie CTA a différentes méthodes de classification. Selon la méthode de transaction, elle peut être divisée en transaction subjective et transaction système. Le développement de la stratégie CTA étrangère est relativement avancé et la stratégie CTA de transaction système est proche de 100%. Selon la méthode d'analyse, elle peut être divisée en analyse de base et analyse technique. Selon la source de revenu, elle peut être divisée en trading de tendance et trading oscillant.
En général, la stratégie CTA représente environ 70% du marché de négociation total, la stratégie de tendance représente environ 25% et la stratégie de contre-tendance ou d'inversion de tendance représente environ 5%. Parmi elles, la stratégie de tendance avec la plus grande proportion peut être divisée en négociation à haute fréquence, négociation intrajournalière, négociation à court et moyen terme et négociation à moyen et long terme selon la période de position.
À l'heure actuelle, il existe deux stratégies principales de négociation à haute fréquence sur le marché: l'une est la stratégie de création de marché à haute fréquence, l'autre est la stratégie d'arbitrage à haute fréquence. La stratégie de création de marché consiste à fournir de la liquidité sur le marché de la négociation. C'est-à-dire, sur le marché de la négociation avec un créateur de marché, si quelqu'un veut négocier, le créateur de marché doit s'assurer que son ordre peut être négocié. S'il y a une liquidité insuffisante sur le marché et que l'ordre ne peut pas être négocié, le créateur de marché doit acheter ou vendre l'ordre de la contrepartie.
L'arbitrage à haute fréquence se réfère à la négociation de deux actions ou portefeuille d'ETF et d'ETF fortement corrélés. Selon la méthode de calcul de l'ETF, le prix attendu d'un ETF peut être calculé de la même manière. Le prix de l'indice ETF peut soustraire le prix attendu de l'ETF pour obtenir une différence de prix. Habituellement, la différence de prix se déroulera dans un canal de prix. Si la différence de prix traverse les canaux supérieur et inférieur, vous pouvez échanger la différence de prix, attendre le retour de la différence de prix et en tirer des revenus.
Dans le sens littéral, tant qu'il n'y a pas de position du jour au lendemain, on peut l'appeler stratégie de trading intrajournalier. En raison de la courte période de détention du trading intrajournalier, il est généralement impossible de réaliser des bénéfices immédiatement après être entré sur le marché, puis de quitter le marché rapidement. Par conséquent, ce mode de trading comporte un faible risque de marché. Cependant, comme le marché change rapidement dans un court laps de temps, la stratégie intrajournalière a généralement des exigences plus élevées pour les traders.
En théorie, plus la période de détention est longue, plus la capacité stratégique est grande et plus le ratio risque-rendement sera faible. En particulier dans les transactions institutionnelles, en raison de la capacité limitée des stratégies à court terme, les gros fonds ne peuvent pas entrer et sortir du marché dans un court laps de temps, des stratégies plus à long terme seront allouées. Généralement, la période de position est de plusieurs jours et mois, voire plus.
De manière générale, la stratégie CTA est étudiée avec des données mensuelles, horaires et quotidiennes, qui comprennent: prix d'ouverture, prix le plus élevé, prix le plus bas, prix de clôture, volume de négociation, etc. Seulement quelques stratégies CTA utiliseront des données Tick, telles que le prix d'achat, le prix de vente, le volume d'achat, le volume de vente et d'autres données approfondies dans les données L2.
En ce qui concerne l'idée de base de la stratégie CTA, la première chose à laquelle nous pensons est basée sur les indicateurs techniques traditionnels, car il existe de nombreux documents de référence publics dans ce domaine, et la logique est généralement simple, dont la plupart sont basés sur des principes statistiques.
Il existe également des modèles de négociation classiques sur le marché, qui peuvent également être utilisés à titre de référence et améliorés, notamment: combinaison de moyennes mobiles multiples, DualThrust, R-Breaker, méthode de négociation Turtle, méthode de négociation par grille, etc.
Toutes ces stratégies de trading sont basées sur l'analyse technique traditionnelle. Le processus consiste à extraire des facteurs ou des conditions de trading avec des avantages de probabilité en fonction des données historiques et des concepts de trading corrects, et à supposer que le marché aura encore de telles lois à l'avenir. Enfin, la stratégie de trading est réalisée par code et trading entièrement automatique.
Le plus grand avantage de la stratégie CTA est que, peu importe si le marché actuel est en hausse ou en baisse, il peut obtenir des rendements absolus, en particulier lorsque le marché change rapidement, ou la tendance du marché est évidemment lisse, l'avantage de la stratégie est évident, en bref, s'il y a une tendance, il y a un gain. Cependant, si le marché est dans une situation volatil ou si la tendance n'est pas évidente, la stratégie peut acheter à un point élevé et vendre à un point bas, et arrêter la perte et en arrière.
La stratégie des contrats à terme CTA est rentable principalement en raison des points suivants:
En outre, la caractéristique commerciale du suivi des tendances est de perdre une petite quantité d'argent quand il n'y a pas de marché, et de faire une grande fortune quand le marché arrive. Cependant, les gens qui ont fait du trading savent que le marché est volatil la plupart du temps, et que le marché de tendance n'est que dans une petite quantité de temps. Par conséquent, la stratégie de suivi des tendances a un faible taux de gain dans le trading, mais le profit et la perte globaux de chaque transaction sont relativement importants.
Parce que la stratégie de suivi de tendance est instable en termes de revenus, de nombreuses institutions d'investissement utiliseront plusieurs variétés et stratégies pour construire un portefeuille, qui sera également configuré avec un certain nombre de stratégies d'inversion.
Corrélation entre l'OTC et les actifs traditionnels
En théorie, diverses stratégies avec des styles différents ou une corrélation relativement faible donneront parfois les mêmes et parfois des signaux de trading différents en même temps face à divers changements de prix du marché.
De ce point de vue, on peut conclure qu'il est préférable de développer plusieurs sous-stratégies modérées que de développer une stratégie principale. Comment contrôler ces stratégies? Ici, nous pouvons apprendre de l'algorithme de forêt aléatoire dans l'apprentissage automatique. La forêt aléatoire n'est pas un algorithme indépendant, c'est un cadre de décision contenant plusieurs arbres de décision.
Nous pouvons évaluer la liquidité, la rentabilité et la stabilité de chaque variété sur l'ensemble du marché des contrats à terme sur matières premières afin de détecter le portefeuille de variétés de contrats à terme sur matières premières avec une faible volatilité des bénéfices, puis procéder à un dépistage neutre du secteur, réduire davantage la volatilité globale grâce à la dispersion du portefeuille dans l'industrie, et finalement construire le portefeuille multi-variétés réel de contrats à terme sur matières premières grâce à une correspondance de la valeur marchande pour la négociation.
Chaque variété peut également être configurée avec des stratégies multi-paramètres, et elle peut sélectionner la combinaison de paramètres avec de bonnes performances dans le backtest. Lorsque la tendance du marché est évidente, les stratégies multi-paramètres fonctionneront généralement de manière cohérente, ce qui équivaut à ajouter des positions; Lorsque le marché est dans une situation volatile, les performances de plusieurs ensembles de stratégies de paramètres seront généralement incohérentes, de sorte qu'elles peuvent couvrir les risques en allant long ou court, respectivement, ce qui équivaut à réduire les positions. Cela peut réduire davantage le taux de backtest maximum du portefeuille, tout en maintenant le taux de rendement global inchangé.
Newton a dit un jour: si je vois plus loin que les autres, c'est parce que je me tiens sur les épaules de géants.
Les stratégies de CTA disponibles sur le marché comprennent la stratégie SMA, la stratégie des bandes de Bollinger, les règles de trading de tortue, la stratégie de dynamique, la stratégie d'arbitrage, etc. Les stratégies de trading quantitatives ont une caractéristique, à savoir qu'elles échoueront lentement une fois rendues publiques. Mais cela ne nous empêche pas d'apprendre de ces stratégies et d'apprendre de leur essence, afin de résoudre les problèmes sur les épaules des géants.
L'analyse fondamentale n'a pas besoin de se soucier de la tendance des prix à court terme. On pense que la valeur se reflétera dans le prix en fin de compte. Il s'agit davantage d'analyser les facteurs derrière le prix pour déterminer la valeur de la variété. Généralement, la méthode d'analyse descendante est adoptée: à partir de facteurs macro, de facteurs de variété et d'autres facteurs.
Nous pouvons voir du graphique ci-dessus qu'il y a beaucoup de facteurs qui affectent les prix des matières premières, et ces données changent constamment.
En fait, l'analyse fondamentale des contrats à terme sur matières premières ne consiste pas à analyser tous les facteurs. Nous avons seulement besoin de saisir les éléments de base de l'analyse fondamentale pour découvrir les règles à partir des informations complexes.
Les données macroéconomiques sont complexes et changeantes. Chaque jour, à chaque instant, de nombreuses données économiques sont publiées, de la politique nationale, des banques centrales, des banques d'investissement, officielles et non officielles. En plus de la crise politique et économique, la macroanalyse est un bon matériel pour discuter, mais pas pratique.
Dans l'analyse fondamentale, l'analyse de la variété consiste principalement à analyser les primes et les rabais, les relations d'offre et de demande, l'inventaire des matières premières, les bénéfices industriels, etc. On peut dire que la maîtrise de l'analyse des facteurs de variété des contrats à terme sur matières premières peut juger la plupart des tendances du marché.
Comme les amis qui ont fait des contrats à terme le savent, les contrats à terme sur les produits de base domestiques peuvent être simplement divisés en produits industriels et produits agricoles. Les méthodes d'analyse des produits industriels et des produits agricoles sont différentes. Nous allons détailler les deux aspects de l'offre et de la demande. Dans les produits industriels, l'offre est relativement stable. À moins qu'il n'y ait une percée technologique majeure, la capacité de production ne changera probablement pas de manière significative dans un court laps de temps. Par conséquent, le principal facteur affectant le prix des produits industriels est la demande. La demande de produits agricoles est relativement stable. À long terme, la demande de produits agricoles change, mais à court terme, la demande de produits agricoles a tendance à être stable, de sorte que le principal facteur affectant le prix des produits agricoles est l'offre.
Par conséquent, selon les lois de l'économie, c'est la relation entre l'offre et la demande qui détermine finalement le prix des biens. En théorie, tant que les données de l'offre et de la demande peuvent être obtenues, le prix futur des biens peut être déterminé. Pour les produits industriels, les données d'offre sont faciles à obtenir, mais il est difficile d'obtenir les données de demande. Pour les produits agricoles, les données de demande sont faciles à obtenir et il est difficile d'obtenir les données d'offre.
En fait, nous pouvons encore soustraire. Le résultat mutuel de l'offre et de la demande sur le marché économique est l'inventaire. Nous pouvons juger de la force de la relation entre l'offre et la demande du marché à travers les données d'inventaire. Si l'inventaire d'un produit est très élevé, cela signifie que l'offre du marché est supérieure à la demande, et le prix du produit diminuera si les conditions extérieures restent inchangées. Si l'inventaire d'un produit est très faible, cela signifie que la demande du marché est supérieure à l'offre, et le prix du produit augmentera si les conditions extérieures restent inchangées.
En plus d'analyser l'inventaire des matières premières, nous devons également analyser la différence de prix entre le marché au comptant et le marché des contrats à terme, également appelée différence de base. Si le prix des contrats à terme est supérieur au prix au comptant, nous l'appelons la prime des contrats à terme; si le prix des contrats à terme est inférieur au prix au comptant, nous l'appelons le rabais des contrats à terme. Selon le système de livraison des contrats à terme, à la date de livraison des contrats à terme, le prix des contrats à terme doit être égal au prix au comptant.
Indépendamment de la prime ou de l'escompte, en raison des contraintes du système de livraison de contrats à terme, le prix des contrats à terme à la date de livraison devrait être égal au prix au comptant en théorie.
Selon le principe ci-dessus, nous pouvons utiliser l'inventaire et la différence de base pour déterminer les prix futurs des contrats à terme en même temps. Si l'inventaire d'un produit est faible, et si le prix des contrats à terme est beaucoup plus bas que le prix au comptant, nous pouvons juger que la demande du marché au comptant est supérieure à l'offre, et la probabilité que le prix au comptant augmente à l'avenir est grande; également en raison du système de livraison des contrats à terme, à mesure que la date de livraison approche, le prix des contrats à terme augmentera, et il sera égal au prix au comptant.
Enfin, nous jugons la direction probable du prix futur à travers la différence d'inventaire et de base, mais il n'y a pas de point précis d'achat et de vente, nous devons donc coopérer avec l'analyse technique pour donner un signal clair d'entrée et de sortie.
Quand il s'agit de stratégies de trading, nous devons parler des règles de trading représentatives de la tortue. La règle de trading de la tortue provient de l'expérience la plus célèbre de l'histoire du trading. Richard Dennis, un spéculateur sur les matières premières, veut savoir si de grands traders naissent ou sont formés. À cette fin, en 1983, il a recruté 13 personnes et leur a enseigné les concepts de base du trading à terme, ainsi que ses propres méthodes et principes de trading. Ces étudiants ont été appelés
Dans les quatre années suivantes, les tortues ont atteint un intérêt annuel composé moyen de 80%. Dennis a prouvé qu'avec un système et des règles simples, les personnes ayant peu ou pas d'expérience de trading peuvent devenir d'excellents traders. Cependant, certaines tortues vendent des règles de trading de tortues sur le site Web pour le profit.
Après que la vérité soit sortie, les gens ont découvert que les règles de trading Turtle adoptaient le canal Donchian optimisé et utilisaient des indicateurs ATR pour la gestion de position.
Voyons maintenant ce que disent les règles de négociation des tortues.
Ainsi, nous pouvons voir que bien que les règles de trading Turtle semblent très simples, en fait, il a formé un sens réel du prototype du système de trading. Il couvre tous les aspects d'un système de trading complet, ne laissant aucune place pour les traders à prendre des décisions subjectives imaginatives, ce qui rend simplement les avantages du fonctionnement programmé du système jouer, y compris: règles d'entrée et de sortie, gestion de fonds et contrôle des risques, etc.
Le plus grand avantage de la méthode de trading de tortue est de nous aider à établir un ensemble de méthodes de trading efficaces. Il s'agit d'une combinaison d'ouverture de lot, de stop profit dynamique et de stop loss, et de la stratégie de suivi de tendance du marché, en particulier l'utilisation de la valeur ATR et le concept de gestion de position, ce qui vaut la peine d'être appris. Bien sûr, il a également un problème commun avec la stratégie de suivi de tendance, à savoir le profit flottant et la récupération. Il est probable que tous les bénéfices flottants obtenus en achetant les gagnants seront retirés en raison de la vague suivante de chutes brusques. Il est très fort dans la tendance générale, et pas aussi bon que prévu sur le marché volatil.
À la fin du siècle dernier, une méthode de trading très étonnante a commencé à prévaloir dans le domaine de l'investissement financier aux États-Unis. Après des milliers de personnes ayant pratiqué, les gens ont constaté que cette méthode avait une efficacité et une grande valeur pratique. En même temps, elle a été reconnue par de nombreux experts en investissement et traders professionnels. Jusqu'à présent, elle peut être parfaitement appliquée à presque tous les domaines d'investissement financier, qu'il s'agisse de devises, d'or, d'actions, de contrats à terme, de pétrole brut ou d'indice et d'obligations, qui est une méthode d'opération de chaos.
Le mot chaos fait référence à la description de l'état chaotique de l'univers à l'origine. Son idée est que le résultat est inévitable, mais parce que les connaissances existantes ne peuvent pas calculer le résultat, parce que le calcul lui-même change également le résultat, le résultat maximum ou minimum peut apparaître enfin, mais il n'y a pas de résultat inévitable. C'est très similaire au marché de négociation. Les participants changent également le marché lorsqu'ils analysent le marché et achètent et vendent. Le marché a une variabilité éternelle. Lorsque les participants comprennent la nouvelle forme du marché, le marché comprend également qu'il est reconnu par les participants, de sorte que la variation se produit. Et il aura tendance à changer dans la direction inconnue des participants. Il a suffisamment de sagesse pour empêcher les participants de saisir ses règles de changement, c'est-à-dire que le marché n'est pas stable et que la compréhension du passé du marché ne peut pas représenter l'avenir.
La méthode d'opération du chaos est un ensemble complet d'idées d'investissement, de stratégies de trading et de signaux d'entrée et de sortie, inventé par Bill Williams. À l'heure actuelle, de nombreux investisseurs dans le monde adoptent l'opération du chaos pour participer aux transactions de marché.
Comme son nom l'indique, la base théorique de la méthode d'opération du chaos est la théorie du chaos, proposée par le météorologue Edward Lorenz. C'était l'une des plus grandes découvertes scientifiques de la fin du XXe siècle. Il a proposé le célèbre "effet papillon". Bill Williams a appliqué la théorie du chaos au domaine de l'investissement financier de manière créative, combinée à la géométrie fractale, à la dynamique non linéaire et à d'autres disciplines, et a créé une série d'indicateurs d'analyse technique très efficaces.
L'ensemble de la méthode d'opération Chaos est composée de cinq dimensions principales (indicateurs techniques):
Le crocodile
Le fractal
L'élan
Accélération
La ligne d'équilibre
L'Alligator est un ensemble de lignes d'équilibre utilisant la géométrie fractale et la dynamique non linéaire. Son essence est d'étendre la moyenne mobile pondérée exponentiellement, qui est une sorte de ligne moyenne, mais sa méthode de calcul est légèrement plus compliquée que la ligne moyenne ordinaire.
// Parameters
N1:=11;
N2:=21;
// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
D'abord, nous définissons 2 paramètres externes N1 et N2, puis calculons la moyenne HL du prix le plus élevé et du prix le plus bas selon les paramètres externes, puis calculons la moyenne HL avec différents paramètres. Pour les dents, c'est la moyenne de la période moyenne de la ligne médiane, et la mâchoire est la moyenne de la grande période de la ligne médiane.
Dans la méthode de l'opération chaos, un concept de fractal est défini de manière vivante. Nous pouvons faire une analogie: ouvrir la paume de la main, avec les doigts tournés vers le haut, le doigt du milieu est le fractal supérieur, le petit doigt gauche et l'anneau, et respectivement l'index droit et le pouce, représentent la ligne K sans record de hauteur. Un fractal de base est composé de ces cinq lignes K. Vous pouvez alors définir le fractal avec le code suivant:
// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
Après avoir calculé l'alligator et le fractal, nous pouvons écrire une stratégie d'opération de chaos simple basée sur ces deux conditions, et utiliser un groupe de lignes moyennes mobiles pondérées exponentiellement comme prix de référence pour calculer l'indice d'alligator et de fractal.
// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);
Pour faciliter la compréhension, j'ai écrit les commentaires détaillés dans le code directement.
Ensuite, voyons à quoi ressemblent réellement les résultats de ce backtest de stratégie d'opération de chaos simple. Afin de rendre le backtest plus proche de l'environnement réel du marché, la commission est réglée à deux fois le taux de change et les positions d'ouverture et de fermeture sont soumises à un point de glissement de deux sauts chacune. Le type de données du backtest est l'indice de la barre d'armature et le type de trading est la force principale continue de la barre d'armature, avec une position d'ouverture fixe de 1 lot. Voici le rapport préliminaire de performance du backtest au niveau de 1 heure.
En ce qui concerne les variétés de barres d'armature, la tendance est à la volatilité élevée et à la tendance à la volatilité générale.
En un mot, l'essence de la méthode d'opération du chaos est de trouver un tournant, sans se soucier de la façon dont le marché se déroule ou s'il s'agit d'une véritable ou fausse rupture.
George Soros a proposé une proposition importante dans
Selon les principes ci-dessus, nous pouvons savoir que dans un marché des contrats à terme inefficace, la raison pour laquelle l'impact du marché sur les contrats de livraison à différentes périodes n'est pas toujours synchrone et la tarification n'est pas complètement efficace.
Comme les contrats à terme sur matières premières, la monnaie numérique possède également un portefeuille de contrats d'arbitrage interpériodique. Par exemple, dans l'échange OKEX, il y a: ETC la semaine en cours, ETC la semaine prochaine, ETC trimestre. Par exemple, supposons que la différence de prix entre la semaine en cours d'ETC et le trimestre d'ETC reste autour de 5 pendant longtemps. Si la différence de prix atteint 7 un jour, nous nous attendons à ce que la différence de prix revienne à 5 à l'avenir. Ensuite, nous pouvons vendre ETC cette semaine et acheter ETC trimestre en même temps pour réduire la différence de prix, et vice versa.
Bien que cette différence de prix existe, il existe de nombreuses incertitudes dans l'arbitrage manuel en raison des opérations manuelles chronophages, de la mauvaise précision et de l'impact des changements de prix.
Ce cours vous apprendra à utiliser la plateforme de trading FMZ Quant et le contrat à terme ETC sur l'échange OKEX pour démontrer comment saisir les opportunités d'arbitrage instantanées, saisir les bénéfices qui peuvent être vus à chaque fois et couvrir les risques pouvant être rencontrés dans le trading de devises numériques avec une stratégie d'arbitrage simple.
Créer une stratégie d'arbitrage interpériodique pour la monnaie numériqueDifficulté: normale
Environnement stratégique
La logique de la stratégie
Ce qui précède est une description logique simple de la stratégie d'arbitrage de période croisée de la monnaie numérique.
function Data() {} // Basic data function
Data.prototype.mp = function () {} // Position function
Data.prototype.boll = function () {} // Indicator function
Data.prototype.trade = function () {} // Order placement function
Data.prototype.cancelOrders = function () {} // Order withdrawal function
Data.prototype.isEven = function () {} // Processing single contract function
Data.prototype.drawingChart = function () {} // Drawing function
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // Create a basic data object
var accountStocks = data.accountData.Stocks; // Account balance
var boll = data.boll(dataLength, timeCycle); // Calculate the technical indicators of boll
data.trade(); // Calculate trading conditions to place an order
data.cancelOrders(); // Cancel orders
data.drawingChart(boll); // Drawing
data.isEven(); // Processing of holding individual contract
}
//Entry function
function main() {
while (true) { // Enter the polling mode
onTick(); // Execute onTick function
Sleep(500); // Sleep for 0.5 seconds
}
}
Imaginez à quoi ressemble notre processus de négociation dans le trading de surveillance. Il n'y a pas de différence essentielle dans les transactions du système. Il ne s'agit que d'acquérir des données, de calculer des données, de placer une transaction d'ordre et de traiter après avoir placé un ordre. Il en va de même dans le programme. Tout d'abord, le programme exécutera la fonction principale à la ligne 20, qui est une convention. Lorsque le programme terminera le pré-traitement de la stratégie de négociation (le cas échéant), il entrera en mode boucle infinie, c'est-à-dire le mode de sondage.
Ensuite, dans la fonction onTick, c'est notre processus de négociation dans la transaction subjective: d'abord, obtenir les données de prix de base, puis obtenir le solde du compte, puis calculer l'indice, puis calculer les conditions de négociation et passer la commande, et enfin le traitement après avoir passé la commande, y compris l'annulation de la commande, le tirage et le traitement d'un seul contrat.
Le cadre stratégique peut être facilement mis en place en fonction de l'idée stratégique et du processus de transaction.
Ensuite, nous devons remplir le code de détail nécessaire dans le cadre de la stratégie en fonction du processus de transaction réel et des détails de la transaction.
var chart = {}
var ObjChart = Chart ( chart )
var bars = []
var oldTime = 0
var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
this.accountData = _C(exchange.GetAccount); // Get account information
this.positionData = _C(exchange.GetPosition); // Get position information
var recordsData = _C(exchange.GetRecords); // Get K-line data
exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
// Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // Get position information
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // Temporary objects
// Median value of positive arbitrage price difference and negative arbitrage price difference
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // Compare two depth data timestamps
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // Pass in the price difference data object into the K-line array according to the specified time period
if (bars.length > num * 2) {
bars.shift(); // Control the length of the K-line array
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
return {
up: boll[0][boll[0].length - 1], // boll indicator upper track
middle: boll[1][boll[1].length - 1], // boll indicator middle track
down: boll[2][boll[2].length - 1] // boll indicator down track
} // Return a processed boll indicator data
}
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // If the order is placed in contract A
askPrice = this.askA; // set askPrice
bidPrice = this.bidA; // set bidPrice
} else if (tradeType == tradeTypeB) { // If the order is placed in contract B
askPrice = this.askB; // set askPrice
bidPrice = this.bidB; // set bidPrice
}
switch (type) { // Match order placement mode
case "buy":
exchange.SetDirection(type); // Set order placement mode
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // Set order placement mode
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // Set order placement mode
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // Set order placement mode
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
Data.prototype.cancelOrders = function () {
Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
if (orders.length > 0) { // If there are unfilled orders
for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
Sleep(500); // Delay 0.5 seconds
}
return false; // Return false if an unfilled order is cancelled
}
return true; // Return true if there are no unfilled orders
}
Data.prototype.isEven = function () {
var positionData = this.positionData; // Get position information
var type = null; // Switch position direction
// If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
if (positionData[i].Type == 0) { // If it is a long order
type = 10; // Set order parameters
} else if (positionData[i].Type == 1) { // If it is a short order
type = -10; // Set order parameters
}
// Close all positions
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3