
Einführung in die Strategie
Adresse für den Strategieaustausch:
https://www.fmz.com/strategy/1088
Diese Strategie ist meine Hauptstrategie, seit ich mit dem Handel mit virtuellen Währungen begonnen habe. Sie ist durch kontinuierliche Verbesserungen und Modifikationen viel komplizierter geworden, aber die Grundidee hat sich nicht geändert. Die Version, die ich teile, ist die erste Version ohne offensichtliche Fehler. Es ist die einfachste und übersichtlichste Version ohne Positionsmanagement. Jede Transaktion erfolgt mit voller Position, ohne Einfrieren oder Neustarten usw., aber es reicht aus, um das Problem zu veranschaulichen.
Die Strategie lief von August 2014 bis die Börse Anfang dieses Jahres begann, Gebühren zu erheben. Das Unternehmen lief in diesem Zeitraum recht gut und wies nur sehr wenige Verluste auf. Der Betrag wurde von anfänglich 200 Yuan auf 80 Bitcoins erhöht. Der konkrete Vorgang ist ersichtlichXiaocaos Sina-BloginnenDer Weg zum automatisierten KryptowährungshandelArtikelserie.
Die folgende Abbildung zeigt die Gewinnkurve der OKcoin-Plattform, die ich speziell berechnet habe. Das Anfangskapital beträgt 1.000 Yuan. Sie können sehen, dass das Anfangskapital stetig gestiegen ist. Die gerade Linie in der Mitte ist der Punkt, an dem meine Strategie endete. Später, weil die Strategie wurde in eine Münzgewinnstrategie geändert, die in RMB denominierten Die Renditen schwanken dramatisch. Der spezifische Prozess istZweijahresübersicht zum strategischen HandelEine Beschreibung gibt es im Artikel.
Die folgende Abbildung zeigt die Kurve des Gesamtvermögens umgerechnet in Währung:

Warum diese Strategie teilen?
Grundsätze der Strategie
Das Prinzip dieser Strategie ist äußerst einfach und kann als quasi-Hochfrequenz-Market-Making-Strategie verstanden werden. Nachdem Sie dies gelesen haben, möchten Sie vielleicht jemanden schlagen, denn damit lässt sich Geld verdienen und fast jeder hätte es damals schreiben können. Zeit. Ich hätte zunächst nicht gedacht, dass es so effektiv ist. Es zeigt, dass man, wenn man eine Idee im Kopf hat, diese schnell in die Tat umsetzen sollte, und dass man möglicherweise unerwartete Überraschungen erlebt. Im Jahr 2014, als die ersten Bitcoin-Roboter auftauchten, war es zu einfach, profitable Strategien zu schreiben.
Wie alle Hochfrequenzstrategien basiert auch diese Strategie auf Orderbüchern. Die folgende Abbildung zeigt die Auftragsverteilung einer typischen Bitcoin-Börse.
Sie können sehen, dass sich links Kaufaufträge mit der Anzahl der ausstehenden Aufträge zu unterschiedlichen Preisen befinden und dass sich rechts Verkaufsaufträge befinden. Es ist denkbar, dass eine Person, die Bitcoin kaufen möchte, keine Bestellung aufgeben und warten möchte, nur die Möglichkeit hat, die Bestellung anzunehmen. Wenn sie viele Bestellungen hat, führt dies zu einer großen Anzahl von Verkaufsaufträgen. ausgeführt werden, was Auswirkungen auf den Preis hat, aber diese Auswirkungen werden im Allgemeinen nicht ewig anhalten. Wenn sie anhalten und es immer noch Leute gibt, die die Bestellung annehmen und verkaufen wollen, wird sich der Preis wahrscheinlich in sehr kurzer Zeit erholen. Umgekehrt Ähnlich verhält es sich, wenn jemand die Währung verkaufen möchte.
Nehmen Sie als Beispiel die ausstehende Bestellung in der Abbildung. Wenn Sie 5 Münzen direkt kaufen möchten, erreicht der Preis 10377. Wenn zu diesem Zeitpunkt jemand 5 Münzen direkt verkaufen möchte, erreicht der Preis 10348. Dieser Raum ist der Gewinn Raum. Die Strategie besteht darin, eine Bestellung zu einem Preis aufzugeben, der etwas unter 10377 liegt, z. B. 10376,99, und zu einem Preis zu kaufen, der etwas über 10348 liegt, z. B. 10348,01. Wenn die Situation gerade erst eintritt, verdienen Sie offensichtlich die Differenz. Obwohl es aufgrund des Wahrscheinlichkeitseffekts nicht immer perfekt sein wird, sind die Chancen, Geld zu verdienen, tatsächlich überraschend hoch.
Lassen Sie uns die spezifischen Operationen mit den Parametern der aktuellen Strategie erklären. Natürlich kann dieser Parameter nicht mehr verwendet werden, es handelt sich nur um eine Erklärung. Es wird nach dem Preis mit einer kumulierten Verkaufsorder von 8 Münzen gesucht, der hier 10377 beträgt. Der Verkaufspreis zu diesem Zeitpunkt ist dieser Preis minus 0,01 (der Minusbetrag kann zufällig sein). Ebenso wird nach dem Preis mit einem kumulative Kauforder von 8 Münzen, hier ist 10348, dann ist der Verkaufspreis zu diesem Zeitpunkt 10348,01 und die Differenz zwischen den Kauf- und Verkaufspreisen ist 10376,99-10348,01=28,98, was größer ist als die durch die Strategie voreingestellte Differenz von 1,5. Dann platzieren Sie eine Bestellung zu diesen beiden Preisen und warten auf die Transaktion. Wenn der Preisunterschied weniger als 1,5 beträgt, finden wir auch einen Preis, um eine Bestellung aufzugeben, beispielsweise den Marktpreis plus oder minus 10, und warten auf ein Leck (es wäre angemessener, weiter nach mehr Tiefe zu suchen).
Beachten Sie auch, dass sich diese Strategie nur auf die aktuelle Tiefe der ausstehenden Aufträge bezieht und sich nicht um historische Marktbedingungen und ihre eigenen historischen Transaktionen kümmert. Die Strategie hat auch nicht das Konzept eines einzelnen Verlusts. Tatsächlich ist die einzelne Gewinnrate ist sehr hoch.
Weitere Erläuterung
Code Erklärung
Den vollständigen Code finden Sie in meiner Strategieerklärung unter www.fmz.com. Hier erkläre ich nur die Kernlogikfunktionen. Ohne Änderungen funktioniert die mit Botvs gelieferte Simulationsdiskette tatsächlich völlig normal. Dies ist eine Strategie von vor über 3 Jahren, und die Plattform unterstützt sie bis heute. Es ist so rührend. Zuerst müssen wir GetPrice() verwenden, um den Gebots- und Briefkurs abzurufen. Wir müssen die Informationen zur Auftragstiefe abrufen. Beachten Sie, dass die Längen der Informationen zur Auftragstiefe auf verschiedenen Plattformen unterschiedlich sind, und selbst wenn alle Aufträge durchlaufen werden, gibt es immer noch keine erforderliche Menge (im späteren Stadium führen viele 0,01-Rasteraufträge zu dieser Situation), der Aufruf lautet GetPrice(‘Buy’), um den Kaufpreis zu erhalten.
function GetPrice(Type) {
//_C()是平台的容错函数
var depth=_C(exchange.GetDepth);
var amountBids=0;
var amountAsks=0;
//计算买价,获取累计深度达到预设的价格
if(Type=="Buy"){
for(var i=0;i<20;i++){
amountBids+=depth.Bids[i].Amount;
//参数floatamountbuy是预设的累计深度
if (amountBids>floatamountbuy){
//稍微加0.01,使得订单排在前面
return depth.Bids[i].Price+0.01;}
}
}
//同理计算卖价
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;}
}
}
//遍历了全部深度仍未满足需求,就返回一个价格,以免出现bug
return depth.Asks[0].Price
}
Die Hauptfunktion jeder Schleife ist onTick(). Die Schleifenzeit ist auf 3,5 Sekunden eingestellt. Jede Schleife storniert die ursprüngliche Bestellung und platziert eine neue Bestellung. Je einfacher sie ist, desto unwahrscheinlicher ist es, dass Fehler auftreten.
function onTick() {
var buyPrice = GetPrice("Buy");
var sellPrice= GetPrice("Sell");
//diffprice是预设差价,买卖价差如果小于预设差价,就会挂一个相对更深的价格
if ((sellPrice - buyPrice) <= diffprice){
buyPrice-=10;
sellPrice+=10;}
//把原有的单子全部撤销,实际上经常出现新的价格和已挂单价格相同的情况,此时不需要撤销
CancelPendingOrders()
//获取账户信息,确定目前账户存在多少钱和多少币
var account=_C(exchange.GetAccount);
//可买的比特币量,_N()是平台的精度函数
var amountBuy = _N((account.Balance / buyPrice-0.1),2);
//可卖的比特币量,注意到没有仓位的限制,有多少就买卖多少,因为我当时的钱很少
var amountSell = _N((account.Stocks),2);
if (amountSell > 0.02) {
exchange.Sell(sellPrice,amountSell);}
if (amountBuy > 0.02) {
exchange.Buy(buyPrice, amountBuy);}
//休眠,进入下一轮循环
Sleep(sleeptime);
}
Schwanz
Das gesamte Programm ist nur etwa 40 Zeilen lang und sieht sehr einfach aus, aber ich habe mehr als eine Woche gebraucht, um es fertigzustellen, und das auf der Botvs-Plattform. Der größte Vorteil ist, dass ich früh angefangen habe. Im Jahr 2014 war der Markt von Arbitrage dominiert, und es gab nicht viele Hochfrequenzgitter und Greifpositionen, was die Strategie wie eine Ente im Wasser machte. Später wurde der Wettbewerb zwangsläufig mehr und heftiger und mein Geld wurde immer mehr. Es kommen immer mehr Herausforderungen auf uns zu und wir müssen von Zeit zu Zeit größere Änderungen vornehmen, um mit ihnen umzugehen, aber insgesamt läuft es reibungslos. Wenn die Handelsplattform keine Bearbeitungsgebühren erhebt, ist sie ein Paradies für den programmatischen Handel. Privatanleger sind geneigt, zu handeln, weil sie keine Bearbeitungsgebühren erheben, was Raum für hohe Frequenz und Arbitrage bietet. All dies wird im Grunde mit dem 0,1 erreicht -0,2 % Die Gebühren für Zweiwegetransaktionen sind abgeschafft. Es geht nicht nur darum, dass Gebühren erhoben werden, sondern auch um einen Rückgang der gesamten Marktaktivität. Es gibt jedoch noch viel Spielraum für quantitative Strategien, die keine hohen Frequenzen erfordern.