Partage tardif: Robot à haute fréquence Bitcoin avec 5% de rendement quotidien en 2014

Auteur:Je ne sais pas., Créé à partir de: 2023-01-17

img

Partage tardif: Robot à haute fréquence Bitcoin avec 5% de rendement quotidien en 2014

Introduction de la stratégie

La stratégie a été partagée par:https://www.fmz.com/strategy/1088La stratégie est ma stratégie principale depuis que j'ai commencé avec la monnaie numérique. Après des améliorations et des modifications continues, elle est devenue plus compliquée, mais l'idée principale n'a pas changé. La version partagée est la version originale sans bogues évidents. C'est la plus simple et la plus claire. Il n'y a pas de gestion de position. Chaque transaction est pleine, et il n'y a pas de redémarrage, mais cela suffit pour expliquer le problème. La stratégie s'est déroulée d'août 2014 au début de cette année, lorsque les frais de change. Au cours de la période, l'opération était assez bonne, et le temps de perte était très faible. Le capital a augmenté de 200 yuans à 80 Bitcoin. Le processus spécifique peut être vu dansLe mode de transaction automatisé de la monnaie virtuellesérie d'articles dansLe blog de Sina de XiaocaoJe suis désolée. La figure suivante est la courbe de rendement de la plate-forme OKcoin que j'ai spécifiquement comptée. Le capital initial est de 1000 yuans. Vous pouvez voir que le capital initial a augmenté régulièrement. La ligne du milieu est que ma stratégie s'est arrêtée. Plus tard, parce que la stratégie a été changée en une stratégie de gain de monnaie, les rendements en RMB fluctuent fortement. Le processus spécifique est décrit dans l'article du résumé de deux ans du trading de stratégie.

img

Le graphique suivant montre la courbe des actifs totaux convertis en monnaie:

img

Pourquoi partager cette stratégie?

  1. Après l'échange, presque toutes les stratégies de haute fréquence ont été détruites, et la mienne n'est pas une exception.
  2. Je n'ai rien partagé depuis longtemps. J'ai longtemps voulu écrire cet article.
  3. Communiquer et apprendre avec vous tous.

Principe de stratégie

Le principe de cette stratégie est très simple. Elle peut être comprise comme une stratégie de création de marché à quasi-haute fréquence. Vous voudrez peut-être frapper les gens après l'avoir lue, peut-elle faire de l'argent?! À l'époque, presque tout le monde pouvait l'écrire. Je ne m'attendais pas à ce qu'elle soit si efficace au début. On peut voir que nous devrions faire attention à la pratique dès que nous avons des idées en tête. En 2014, lorsque les robots Bitcoin sont apparus pour la première fois, il était trop facile d'écrire des stratégies de création d'argent. Comme toutes les stratégies à haute fréquence, cette stratégie est également basée sur le carnet de commandes.

img

Nous pouvons voir l'ordre d'achat sur la gauche, montrant le nombre d'ordres à différents prix, et sur le côté droit est l'ordre de vente. On peut imaginer que si quelqu'un veut acheter Bitcoin, s'il ne veut pas attendre l'ordre et attendre, il peut choisir de prendre l'ordre seulement. S'il a un grand nombre d'ordres, cela provoquera un grand nombre de transactions pour vendre l'ordre et la liste, ce qui aura un impact sur le prix. Cependant, cet impact ne se poursuivra pas. Certaines personnes veulent prendre l'ordre et vendre, et le prix se rétablira probablement dans un temps très court. Inversement, c'est similaire à comprendre que quelqu'un veut vendre des pièces. Prenons l'ordre en attente dans la figure à titre d'exemple. Si vous voulez acheter 5 pièces directement, le prix atteindra 10377. À ce moment-là, si quelqu'un veut vendre 5 pièces directement, le prix atteindra 10348. La différence de prix est la marge de profit. La stratégie pendra un ordre à un prix légèrement inférieur à 10377, comme 10376.99, et achètera à un prix légèrement supérieur à 10348, comme 10348.01. Expliquez l'opération spécifique avec les paramètres de la stratégie actuelle. Ce paramètre n'est bien sûr pas disponible, juste pour illustration. Il cherchera un prix avec un montant cumulé de 8 pièces, ici est 10377, puis le prix de vente à ce moment-là est le prix moins 0,01 (le montant peut être aléatoire). De même, il cherchera vers le bas pour un montant cumulé de 8 pièces, ici est 10348, puis le prix de vente à ce moment-là est 10348,01, et la différence entre le prix d'achat et de vente à ce moment-là est 10376,99-10348,01 = 28,98, ce qui est plus grand que la différence de prix prédéfinie de 1,5, donc il trouvera un ordre d'attente de la transaction avec ces deux prix, si la différence de prix est inférieure à 1,5, il trouvera également un prix à regarder un ordre, comme le prix d'ouverture plus ou moins 10, et attendre plus (il est approprié de continuer à suivre la profondeur de la pendule). En outre, il est à noter que cette stratégie n'est liée qu'aux commandes en attente profondes actuelles et ne se soucie pas du marché historique et de sa propre transaction historique.

Autres explications

    1. Que dois-je faire si je suis à court d'argent ou de monnaie? Cette situation est très courante lorsque j'ai moins d'argent. La plupart du temps, je ne pend qu'un côté de l'ordre, mais ce n'est pas un gros problème. En fait, nous pouvons ajouter la logique de l'équilibrage de la monnaie et de l'argent, mais il est inévitable de perdre dans le processus d'équilibrage. Après tout, chaque transaction est une question de probabilité. Je choisis d'attendre la transaction d'un côté. Bien sûr, cela gaspille également l'opportunité de transaction de l'autre côté.
    1. Comment les postes sont-ils gérés? Au début, ils étaient tous en pleine position d'achat et de vente. Plus tard, ils ont été divisés en différents groupes selon différents paramètres, et ils ne seraient pas complètement fermés en même temps.
    1. Il y a un stop-loss? La stratégie a une logique complète des ordres d'achat et de vente. Je pense qu'il n'y a pas besoin d'arrêter la perte (ce qui peut être discuté), et il y a aussi la préférence de la probabilité. La transaction est une opportunité, et l'arrêt de la perte est dommage.
    1. Comment s'adapter à la stratégie de gagner de l'argent? À ce moment-là, les paramètres sont symétriques, c'est-à-dire que les ordres de vente cumulés de 8 pièces vers le haut et les ordres d'achat cumulés de 8 pièces vers le bas sont légèrement déséquilibrés. Par exemple, les ordres de vente cumulés de 15 pièces vers le haut rendent les opportunités de vente plus difficiles et il y a une plus grande chance qu'ils soient retournés à un prix inférieur, ce qui générera de la monnaie et, à son tour, de l'argent. En fait, la stratégie précoce est si efficace que la monnaie et l'argent sont augmentés.
    1. Comment gérer les pertes flottantes? Bien sûr, il y aura des pertes dans une seule transaction, comme la hausse du prix de la monnaie après la vente et la baisse du prix de la monnaie après l'achat.
    1. Comment prévenir les cygnes noirs? Bitcoin a beaucoup de temps de Black Swan, parfois il descend tout le chemin, et il n'y a aucune chance de le vendre. Cette situation ne devrait pas être trop inquiétante, parce que le temps de Black Swan apporte souvent une forte volatilité, et la stratégie fait exactement cette partie de l'argent, et la perte peut également être gagnée rapidement.

Explication du code

Le code complet peut être vu dans mon partage de stratégie àwww.fmz.com. Ici, seules les fonctions logiques de base sont expliquées. Sans aucun changement, le bot de simulation fourni avec botvs fonctionne en fait parfaitement. C'est une stratégie il y a plus de trois ans, et la plate-forme la prend toujours en charge maintenant. C'est très émouvant. Tout d'abord, pour obtenir la fonction GetPrice, vous devez obtenir l'information de profondeur de commande. Notez que la longueur de l'information de profondeur de commande de différentes plateformes est différente, et même si toutes les commandes sont traversées, il n'y a toujours pas de quantité requise (cette situation sera causée par de nombreux ordres de la grille 0.01 à un stade ultérieur). L'appel est GetPrice (Buy), qui est d'obtenir le prix d'achat.

function GetPrice(Type) {
   //_C() is the fault-tolerant function of the platform
    var depth=_C(exchange.GetDepth);
    var amountBids=0;
    var amountAsks=0;
    //Calculate the buy price and get the cumulative depth to a preset price
    if(Type=="Buy"){
       for(var i=0;i<20;i++){
           amountBids+=depth.Bids[i].Amount;
           //The parameter floatamountbuy is the preset accumulated depth
           if (amountBids>floatamountbuy){
               //Add 0.01 to make the order in the front
              return depth.Bids[i].Price+0.01;}
        }
    }
    //Calculate the selling price similarly
    if(Type=="Sell"){
       for(var j=0; j<20; j++){
    	   amountAsks+=depth.Asks[j].Amount;
            if (amountAsks>floatamountsell){
            return depth.Asks[j].Price-0.01;}
        }
    }
    //After traversing the full depth but still not meeting the demand, a price is returned to avoid bugs
    return depth.Asks[0].Price
}

La fonction principale de chaque boucle est onTick ((). Le temps de boucle défini ici est de 3,5 s. Chaque boucle annulera l'ordre d'origine et re-pend l'ordre. Plus il est simple, moins il rencontrera un bug.

function onTick() {
    var buyPrice = GetPrice("Buy");
    var sellPrice= GetPrice("Sell");
    //diffprice is the preset spread, if the bid/ask spread is less than the preset spread, it will pend a relatively deeper price.
    if ((sellPrice - buyPrice) <= diffprice){
            buyPrice-=10;
            sellPrice+=10;}
    //Cancel all the original orders. In fact, the new price is often the same as the price of the order. At this time, it is not necessary to cancel.
    CancelPendingOrders() 
    //Get account information to determine how much money and how many currencies are currently in the account.
    var account=_C(exchange.GetAccount);
    //The amount of Bitcoins that can be bought, _N() is the precision function of the platform.
    var amountBuy = _N((account.Balance / buyPrice-0.1),2); 
    //The amount of Bitcoin that can be sold, note that there is no position limit, buy and sell as much as you can, as I had very little money at the time.
    var amountSell = _N((account.Stocks),2); 
    if (amountSell > 0.02) {
        exchange.Sell(sellPrice,amountSell);}
    if (amountBuy > 0.02) {
        exchange.Buy(buyPrice, amountBuy);}
    //Sleep and enter the next loop
    Sleep(sleeptime);
}

Finition

L'ensemble du programme n'est que de plus de 40 lignes, ce qui semble très simple, mais cela m'a également pris plus d'une semaine à l'époque, qui était sur la plate-forme botvs. Le plus grand avantage est qu'il a commencé tôt. En 2014, le marché était dominé par les briques en mouvement, et la stratégie à haute fréquence de grille et de saisie d'inventaire n'était pas trop, ce qui a rendu la stratégie comme un poisson dans l'eau. Plus tard, la concurrence est devenue de plus en plus féroce, et j'avais plus d'argent et j'ai fait face à de nombreux défis. Je devais faire des changements majeurs à chaque fois pour y faire face, mais c'était généralement lisse. À la condition que la plate-forme de trading ne facture pas, c'est un paradis pour le trading programmé. Parce que les investisseurs de détail ont tendance à opérer s'il n'y a pas de frais, cela offre l'occasion de frais de haute fréquence et d'arbitrage. Tout Cependant, il y a encore beaucoup de place pour des stratégies quantitatives à haute fréquence.


Relationnée

Plus de