2014年のシンプルなビットコイン 高周波戦略ロボット

作者: リン・ハーン小草, 日付: 2014年10月21日 22:58:44
タグ:高周波

戦略の紹介

戦略共有アドレス:https://www.fmz.com/strategy/1088この戦略は,仮想通貨を始めて以来,私の主な戦略であり,その後,常に改良され,修正され,複雑になりました. しかし,主な考えは変わっていません. 共有されているバージョンは,明らかなバグのない最初のバージョンであり,最もシンプルで明確です. ポジション管理はありません. 2014年8月から今年初めまで取引所から手数料が徴収されるまで,この戦略は実行され,損失はほとんどなかった.資金は初期200元から80ビットコインに急上昇した.具体的プロセスは見ることができます.小草の新浪ブログリー仮想通貨の自動化への道シリアル記事.

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

1. 取引所が手数料を請求した後,私の場合も例外なく,ほぼすべての高周波戦略を殺しました. 2. 長い間何も共有していなかったので,この記事を書きたかった. 3. みんなと交流し,学びましょう.

戦略の原理

この戦略の原理は極めてシンプルで,近似的に高周波の市場策として理解できる. この戦略は,ほとんど誰もが書くことができるのに,お金を稼ぐことができます. 私は最初はこれほど効果的になるとは予想していなかった. この戦略は,すべての高周波戦略と同様に,オーダーブックに基づいています.img左側が決済券であり,異なる価格の掛付券の数を示し,右側が販売券である. 想像してみてください. もし,人がビットコインを買おうとしている場合,掛付券を待たしたくない場合は,購入券のみを選択することができます. もし,彼の単位の比率が大きい場合は,販売券を大量に取引させ,価格に衝撃を与えます. しかし,この衝撃は一般的に継続しています. この図の掲示板の例として,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. "お金やコインがないとどうする?" この状況は,私のお金が少ないときに非常に一般的であり,ほとんどの場合,片側だけ掛ける单元ですが,大きな問題ではありません. 実際,コインのバランスの論理に加入することができますが,バランスのプロセスでは損失が避けられません. 結局,すべての取引は確率の利己主義です.
  2. ポジションはどのように管理されていますか? 当初は満場で買い売りされ,その後,異なるパラメータに基づいて異なるグループに分けられ,一度に完全に完成しません.
  3. 停滞はないのか? 戦略には,買い物・売り物リストの完全な論理があり,私はストップロスの必要がない (議論できる) と思うが,また,確率の偏見があり,取引はチャンスであり,ストップロスは残念である.
  4. の戦略をどのように調整するか? このときのパラメータは対称である.つまり,上8コインの累積売り切手と下8コインの累積支払いが少し不均衡である.例えば,上15コインの累積売り切手に変更されるように,コインの売り切手が難しくなり,より低い価格で返ってくる可能性が高くなり,コインをい,逆にお金を稼げる.実際,以前の戦略は効果的であり,コインとお金は増加している.

コード解説

完全なコードは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.5sで,各ループは元の单元を撤回し,リストをリハングする.

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行以上で,とてもシンプルに見えたが,当時も1週間以上かかった.これはbotvsプラットフォームのケースだった.最大の利点は早いスタートだった.2014年には,市場が移動を主として,格子や抢盤口の頻度が多くなかったため,戦略は魚のように水を得ることになった.その後,競争は避けられないほど激しくなった.私のお金も増えた. しかし,高周波の定量化戦略を必要としない場合,大きな余地があります.


/*
就是我刚开始编写机器人的源代码,几乎没有改动,参数也是原来的参数。这个版本的程序有许多
需要改进的地方,但即使如此,它也当时表现除了惊人的盈利能力,在我本金不多时,不加杠杆平
均每天盈利在5%左右。当然无论从哪一方面,它都不适应今天的市场。
我同时也发了一篇文章在社区,大家可以看看。
by 小草
*/

//稍微改了一下,用了平台的容错函数_C(),和精度函数_N().
//取消全部订单
function CancelPendingOrders() {
    var orders = _C(exchange.GetOrders);
    for (var j = 0; j < orders.length; j++) {
          exchange.CancelOrder(orders[j].Id, orders[j]);}
}

//计算将要下单的价格
function GetPrice(Type,depth) {
    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
}
 
function onTick() {
    var depth=_C(exchange.GetDepth);
    var buyPrice = GetPrice("Buy",depth);
    var sellPrice= GetPrice("Sell",depth);
    //买卖价差如果小于预设值diffprice,就会挂一个相对更深的价格
    if ((sellPrice - buyPrice) <= diffprice){
            buyPrice-=10;
            sellPrice+=10;}
    //把原有的单子全部撤销,实际上经常出现新的价格和已挂单价格相同的情况,此时不需要撤销
    CancelPendingOrders() 
    //获取账户信息,确定目前账户存在多少钱和多少币
    var account=_C(exchange.GetAccount);
    //可买的比特币量
    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);
}
    
function main() {
    while (true) {
        onTick();
    }
}

関連性

もっと

グオワ取引所では,現金の一部が手数料無料になっているようで,

a624587332BitcoinのBTC現金取引は手数料無料ですか?

abcdsfasdfhzw についてコードが売れていないか? 売れていないか? 売れていないか?

ティミュアなぜ今使えないのか? 今使える戦略はありますか?

ビジアスオ改善されたバージョンを期待します.

クイナーグありがとうございました. ありがとうございました. ありがとうございました. ブログの記事では,この記事へのトラックバック一覧です. ありがとうございました!

ロガやってみよう