3
フォロー
1444
フォロワー

遅ればせながら、2014年に1日あたり5%の利益を上げたビットコイン高頻度ロボットが一般公開されました

作成日:: 2017-11-30 14:15:27, 更新日:: 2024-12-26 21:36:00
comments   28
hits   38119

遅ればせながら、2014年に1日あたり5%の利益を上げたビットコイン高頻度ロボットが一般公開されました

戦略入門

戦略共有アドレス: https://www.fmz.com/strategy/1088 この戦略は、私が仮想通貨の取引を始めたときからの主な戦略です。継続的な改善と修正により、はるかに複雑になりましたが、基本的な考え方は変わっていません。私が共有しているバージョンは、明らかなバグのない初期バージョンです。最も単純なものです。ポジション管理のない最も明確なバージョンです。すべてのトランザクションは完全なポジションで実行され、フリーズや再起動などは行われませんが、問題を説明するには十分です。 この戦略は2014年8月から今年初めに取引所が手数料を徴収し始めるまで実行された。期間中、損失はほとんどなく、順調に運営されました。資金は当初の200元から80ビットコインに増加した。具体的なプロセスは小草のSinaブログ内部暗号通貨の自動取引への道一連の記事。 以下の図は、私が具体的に計算したOKcoinプラットフォームの利益曲線です。初期資本は1,000元です。初期資金が着実に増加していることがわかります。真ん中の直線は、私の戦略が停止したときです。その後、戦略がコイン獲得戦略に変更され、利益は人民元建てになりました。収益は劇的に変動します。具体的なプロセスは次のとおりです。戦略的取引の2年間の概要記事内に説明がございます。 遅ればせながら、2014年に1日あたり5%の利益を上げたビットコイン高頻度ロボットが一般公開されました 次の図は、通貨に換算した総資産の曲線です。 遅ればせながら、2014年に1日あたり5%の利益を上げたビットコイン高頻度ロボットが一般公開されました

なぜこの戦略を共有するのですか?

  1. 取引所が取引手数料を課した後、私のものも含め、すべての高頻度取引戦略がほぼ消滅しました。しかし、戦略を修正すればまだ機能する可能性があるので、それを研究することができます。
  2. 長い間何もシェアしていなかったので、この記事をずっと書きたかったんです。
  3. みんなとコミュニケーションを取り、学びましょう。

戦略の原則

この戦略の原理は非常に単純で、準高頻度マーケットメイキング戦略として理解できます。これを読んだ後、誰かを攻撃したくなるかもしれません。これはお金を稼ぐことができ、当時はほとんど誰でも書くことができたからです。時間。最初はこんなに効果があるとは思っていませんでした。アイデアが浮かんだらすぐに実践してみると、予想外の驚きが得られるかもしれないということがわかります。 2014 年にビットコイン ロボットが初めて登場したとき、収益性の高い戦略を作成するのは非常に簡単でした。 すべての高頻度戦略と同様に、この戦略も注文帳に基づいています。次の図は、典型的なビットコイン取引所の注文分布を示しています。 遅ればせながら、2014年に1日あたり5%の利益を上げたビットコイン高頻度ロボットが一般公開されました 左側には買い注文があり、さまざまな価格で保留中の注文の数が表示され、右側には売り注文があることがわかります。ビットコインを購入したい場合、注文して待つのではなく、注文を受けることしかできないと考えられます。注文が多ければ、売り注文が大量に発生します。注文が執行され、価格に影響を与えるが、この影響は一般的に永久に続くものではない。それが継続し、注文を受けて売りたい人がまだいる場合は、価格はおそらく非常に短期間で回復するだろう。逆に、誰かが通貨を売りたい場合も同様です。 図の保留中の注文を例に挙げると、5枚のコインを直接購入する場合、価格は10377になります。このとき、誰かが5枚のコインを直接販売する場合、価格は10348になります。このスペースが利益です。スペース。戦略としては、10377 よりわずかに低い価格、たとえば 10376.99 で注文し、10348 よりわずかに高い価格、たとえば 10348.01 で買います。今のような状況になった場合、明らかに差額を稼ぐことになります。毎回完璧というわけではありませんが、確率の影響で、実は儲かる可能性は意外と高いのです。 現在の戦略のパラメータを使用して具体的な操作を説明しましょう。もちろん、このパラメータはもう使用できません。これは単なる説明です。 8枚のコインの累積売り注文の価格、ここでは10377を探します。この時の売り価格はこの価格から0.01を引いたものです(マイナスの金額はランダムです)。同様に、 8 枚のコインの累積購入注文は 10348 で、この時点での売却価格は 10348.01 であり、購入価格と売却価格の差は 10376.99-10348.01=28.98 となり、これは戦略によって事前に設定された差 1.5 よりも大きくなります。次に、この2つの価格で注文を出し、取引を待ちます。価格差が1.5未満の場合は、市場価格プラスマイナス10などの注文を出す価格も見つけ、漏れを待ちます。 (さらに深く探求し続けることがより適切でしょう)。 また、この戦略は現在の保留注文の深さにのみ関連しており、過去の市場状況や自身の過去の取引には関係ないことにも注意してください。また、この戦略には単一の損失の概念はありません。実際、単一の勝率は非常に高いです。

さらなる説明

  1. お金やコインがない場合はどうすればいいですか? お金が少ないときにこのような状況がよく起こり、ほとんどの場合、片側だけの注文しか行いませんが、大きな問題ではありません。実際には、通貨とお金のバランスのロジックを追加できますが、バランスをとる過程で損失は避けられません。結局のところ、すべての取引は確率によって有利になります。私は一方の取引を待ち続けることを選択します。もちろん、これは相手側での取引機会も無駄になります。
  2. ポジションはどのように管理されますか? 当初、すべての取引は完全な売買モードで行われていました。その後、さまざまなパラメータに応じて異なるグループに分割され、取引は一度に完了しなくなりました。
  3. ストップロスはありませんか? この戦略には、買い注文と売り注文の完全なロジックがあります。ストップロスは必要ないと思います(議論の余地あり)。また、確率も重要です。取引はチャンスなので、ストップロスは残念です。
  4. コインを獲得するための戦略を調整するにはどうすればいいですか? このときのパラメータは対称的であり、つまり、8コインの上向きの累積売り注文と8コインの下向きの累積買い注文です。バランスがわずかに不均衡な場合、たとえば15コインの上向きの累積売り注文は、コインをより希少価値の高いものに売るチャンスです。より低い価格で買い戻せる可能性が高くなり、コインを獲得して、結果的にお金を稼ぐことができます。実際、初期の戦略は非常に効果的だったため、コインとお金の両方が増加しました。
  5. 浮動損失にどう対処するか? もちろん、1回の取引では損失が発生します。たとえば、通貨の価格が売却後に上昇し、購入後に下落した場合、取引は非常に頻繁に行われ、通常は1 日に何千もの取引があります。利益の確率が高い限り、浮動損失は正常です。
  6. ブラックスワンを防ぐには? ビットコインにはブラックスワンイベントが数多くあります。時には売るチャンスもなく下落し続けることもあります。この場合、ブラックスワンイベントはしばしば高いボラティリティをもたらすため、あまり心配する必要はありません。これが戦略の重要な部分です。お金を稼ぐ。失ったお金はすぐに取り戻すことができます。

コードの説明

完全なコードについては、www.fmz.com で私の戦略共有をご覧ください。ここでは、コアロジック関数についてのみ説明します。 botvsに付属するシミュレーションディスクは、変更を加えなくても、実際には完全に正常に動作します。これは3年以上前の戦略ですが、プラットフォームは今でもそれをサポートしています。とても感動的です。 まず、GetPrice()を使用してビッド価格とアスク価格を取得する必要があります。注文の深さ情報を取得する必要があります。異なるプラットフォームの注文の深さ情報の長さは異なり、すべての注文を走査したとしても、必要な数量がない場合(後の段階で、0.01 グリッドの注文が多くなり、この状況につながります)、購入価格を取得するには GetPrice(‘Buy’) を呼び出します。

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
}

各ループの主な機能は onTick() です。ループ時間は 3.5 秒に設定されています。各ループは元の注文をキャンセルし、新しい注文を配置します。シンプルであればあるほど、バグが発生する可能性は低くなります。

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);
}

しっぽ

プログラム全体はわずか 40 行ほどで非常にシンプルに見えますが、botvs プラットフォーム上で完成させるのに 1 週​​間以上かかりました。最大の利点は、早く始めたことです。2014年、市場は裁定取引に支配されており、高頻度グリッドやグラブポジションは多くなく、戦略は水の中のアヒルのようでした。その後、競争は必然的に激しくなり、ますます激しくなり、お金もどんどん増えていきました。課題はどんどん増えてきており、それに対処するために時々大きな変更を加えなければなりませんが、全体的には順調に進んでいます。取引プラットフォームが手数料を請求しない場合、それはプログラマティック取引の楽園です。手数料を請求しないため、高頻度取引と裁定取引の余地があるため、個人投資家は取引する傾向があります。これらすべては基本的に0.1で実現されます。 -0.2% 双方向取引手数料が廃止されました。これは単に手数料が課せられるという問題ではなく、市場全体の活動の低下も意味します。 しかし、高頻度を必要としない定量戦略には、まだ多くの余地があります。