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.
Le graphique suivant montre la courbe des actifs totaux convertis en monnaie:
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.
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.
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 (
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);
}
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.