デジタル通貨の高周波戦略の詳細

作者: リン・ハーン小草, 作成日:2023-03-10 10:09:13, 更新日:2023-09-18 20:13:58

img

[TOC] 低周波通信の戦略について 2020年に書いた記事で,https://www.fmz.com/digest-topic/6228『この記事は,私の高周波戦略が長期にわたって安定した収益を上げていたが,徐々に利益が低下し,一度停止した.ここ数ヶ月間,再び努力して改造し,現在も少しお金を稼いでいる.』 この記事は,私の高周波戦略のアイデアと,いくつかの簡素化されたコードを詳細に紹介し,引引金を投げ出す役割を果たします.

高周波取引条件

  • リターン・コミッションの口座,比安を例に挙げると,現在のmakerのリターン・コミッションは10万分の5で,1日の取引額が100万Uであれば,リターン・コミッションは5000Uである. もちろんテイカーもVIP率に基づいており,戦略が支払わなければ,VIPレベルは高周波戦略にほとんど影響しない.一般取引所には異なるグレードのリターン・コミッションがあり,高い取引額を維持する必要がある.

  • 速さ.高速なため,高速と呼ばれている.コロサーバーに加入すると,最小の遅延と最も安定した接続を得る条件も内卷の条件の一つとなる.内部の時間ができるだけ少なくなるようにする.この記事では,私が使用するウェブソケットのフレームワークについて説明します.

  • 適正な市場、高周波取引は量的な取引の真珠と呼ばれている.多くの程序化されたトレーダーは試したと思うが,ほとんどの人は儲からないし,改善する方向も見つけられないため,停止すべきだ.主な理由は,間違った取引市場を見つけることである.戦略の初期段階は,取引を行うのに比較的容易な市場を探すべきである.そうすれば有利な利害関係があり,改善されたフィードバックがあり,戦略の進歩に有利である.最初から最も激烈な競争市場で,多くの潜在的ライバルと競争している場合,どのように試みてもすぐに損をするなら,すぐに堅持できない.私は新しい永続契約取引を推奨する.

  • 競争に直面する.あらゆる取引の市場は動的変化であり,取引戦略は一度に一度に終わらない.高周波取引は,この市場に入ると,最も賢い,最も勤勉なトレーダーのグループと直接対抗する.ゼロとゲーム市場では,あなたが稼ぐことは,他の人の稼ぐよりも少ない.遅くなれば,入るほど,困難が高くなり,すでに市場で常に改善され,いつでも排除される可能性があります.

高周波原理

高周波戦略には様々な種類があります

  • 高周波ヘッジ,本取引所または他の取引所でヘッジを見つける機会,スピードの優位性によって注文を急いで食べて利益を得る
  • 高周波トレンドは,短期トレンド判断で利益を得る
  • 市場商として,売買双方で取引を記録し,保有をコントロールし,返済手数料で利益を得ます.
  • 物語の内容はこうです

私の戦略は,トレンドとマーケットメーカーの組み合わせで,トレンドを判断し,注文を掲示し,取引後にすぐに注文を掲示し,ストックを保持しない.

戦略構造

以下のコードは,Binance Perpetual Contract の基礎となるアーキテクチャであり,主にwebsocketの深深度オーダーストリーム・トレード市場,およびポジション位置情報をサブスクリプションしている.市場とアカウント情報が別々のサブスクリプションであるため,最新情報を取得するかどうかを判断するために常にread (−1) を使用する必要があるため,EventLoop (−1000) が使用されており,直接的な死回路を回避し,システム負荷を軽減している.EventLoop (−1000) はwssにブロックされるか,同時に任務を送信し,1000msを超えると戻ってくる.

var datastream = null
var tickerstream = null
var update_listenKey_time = 0

function ConncetWss(){
    if (Date.now() - update_listenKey_time < 50*60*1000) {
        return
    }
    if(datastream || tickerstream){
        datastream.close()
        tickerstream.close()
    }
    //需要APIKEY
    let req = HttpQuery(Base+'/fapi/v1/listenKey', {method: 'POST',data: ''}, null, 'X-MBX-APIKEY:' + APIKEY) 
    let listenKey = JSON.parse(req).listenKey
    datastream = Dial("wss://fstream.binance.com/ws/" + listenKey + '|reconnect=true', 60)
    //Symbols是设定的交易对
    let trade_symbols_string = Symbols.toLowerCase().split(',')
    let wss_url = "wss://fstream.binance.com/stream?streams="+trade_symbols_string.join(Quote.toLowerCase()+"@aggTrade/")+Quote.toLowerCase()+"@aggTrade/"+trade_symbols_string.join(Quote.toLowerCase()+"@depth20@100ms/")+Quote.toLowerCase()+"@depth20@100ms"
    tickerstream = Dial(wss_url+"|reconnect=true", 60)
    update_listenKey_time = Date.now()
}

function ReadWss(){
    let data = datastream.read(-1)
    let ticker = tickerstream.read(-1)
    while(data){
        data = JSON.parse(data)
        if (data.e == 'ACCOUNT_UPDATE') {
            updateWsPosition(data)
        }
        if (data.e == 'ORDER_TRADE_UPDATE'){
            updateWsOrder(data)
        }        
        data = datastream.read(-1)
    }
    while(ticker){
        ticker = JSON.parse(ticker).data
        if(ticker.e == 'aggTrade'){
            updateWsTrades(ticker)
        }
        if(ticker.e == 'depthUpdate'){
            updateWsDepth(ticker)
        }
        ticker = tickerstream.read(-1)
    }
    makerOrder()
}

function main() {
    while(true){
        ConncetWss()
        ReadWss()
        worker()
        updateStatus()
        EventLoop(1000)
    }
}

戦略指標

先ほど述べたように,私の高周波戦略は,トレンドを判断し,セールスを実行する事前である.短期トレンドを判断する方法は,主に取引の方向性,価格,量,取引時間などを含む,購読中のaggTradeの取引データに基づいており,購入の主な参照は深さと取引量である.以下の詳細は,注意すべき指標である.ほとんどの指標は,2つのグループに分けられ,特定の時間ウィンドウで動的統計であり,私の戦略の時間ウィンドウは10秒以内にあります.

  • 取引単位で取引される平均取引量,取引単位で取引される平均取引量は,100ms以内に同じ方向と価格で異なる注文の総和であり,買取注文の大きさを反映している.このデータ重量は高く,買取注文の取引量が売れ注文よりも大きい場合,この時点で買い手主導市場であると仮定することができる.
  • 注文頻度または注文間隔は,同じく単行本取引データに基づいている.前回の平均取引量は時間概念に関係なく,完全に正確ではない.一方的な注文が平均的な取引量が小さいが,頻度が高い場合,この方向の強度にも寄与する.平均的な取引量*注文頻度は固定間隔の総取引量を代表し,直接比較するために使用できる.特定のイベントに届く注文は,パッパーソン分布に適合し,単一の位置への参照を提供するために,合計注文の到着時間の間隔がどのくらいか簡単な推定に使用することができます.
  • 平均格差は,この比方が理解しやすい,つまり1割1買える.現在の格差の大半は1ティックの格差で,格差が大きくなった場合,しばしば市場が存在することを表しています.
  • 平均買取価格,各取引の買取価格を比較し,最新の価格と比較する.例えば,最近の買取価格が平均買取価格よりも大きい場合,開拓が発生したとの予備判断ができます.

戦略的論理

短期的な傾向を判断する

//bull代表短期看涨,bear短期看跌
let bull =  last_sell_price > avg_sell_price && last_buy_price > avg_buy_price &&
            avg_buy_amount / avg_buy_time > avg_sell_amount / avg_sell_time;
let bear =  last_sell_price < avg_sell_price && last_buy_price < avg_buy_price && 
            avg_buy_amount / avg_buy_time < avg_sell_amount / avg_sell_time;

最新の販売価格が販売注文の平均価格よりも高く,最新の購入価格が購入注文の平均価格よりも高く,固定間隔の購入価格が販売注文の価格よりも高くなった場合,短期看板を判断する.

注文価格

function updatePrice(depth, bid_amount, ask_amount) {

    let buy_price = 0
    let sell_price = 0
    let acc_bid_amount = 0
    let acc_ask_amount = 0

    for (let i = 0; i < Math.min(depth.asks.length, depth.bids.length); i++) {
        acc_bid_amount += parseFloat(depth.bids[i][1])
        acc_ask_amount += parseFloat(depth.asks[i][1])
        if (acc_bid_amount > bid_amount  && buy_price == 0) {
            buy_price = parseFloat(depth.bids[i][0]) + tick_size
        }
        if (acc_ask_amount > ask_amount  && sell_price == 0) {
            sell_price = parseFloat(depth.asks[i][0]) - tick_size
        }
        if (buy_price > 0 && sell_price > 0) {
            break
        }
    }
    return [buy_price, sell_price]
}

ここで古い考え方を採用し,必要な量まで深さを繰り返す.ここで1s以内に10コインの支払いを処理できると仮定し,新しい契約を考慮しない場合,販売单の価格を10コインの支払いの衝撃位置に設定します.具体的にはどのくらいの時間窓口を設定する必要があります.

注文数

let buy_amount = Ratio * avg_sell_amount / avg_sell_time
let sell_amount = Ratio * avg_buy_amount / avg_buy_time

Ratioは,購入量が最近販売された注文数に固定された割合を表す固定比率を表します.この戦略は,現在の購入活動に応じて注文サイズに適応します.

下記の条件

if(bull && (sell_price-buy_price) > N * avg_diff) {
    trade('buy', buy_price, buy_amount)
}else if(position.amount < 0){
    trade('buy', buy_price, -position.amount)
}
if(bear && (sell_price-buy_price) >  N * avg_diff) {
    trade('sell', sell_price, sell_amount)
}else if(position.amount > 0){
    trade('sell', sell_price, position.amount)
}

中にはavg_diffが平均取引の差値で,当時の注文の買い売り差額が一定倍数以上の値で,見込みの時にのみ決済を行う.空き注文を保持した場合,このときも平衡し,長期請求書を避ける.下注文は,注文の取引を保証するために,オンリーメーカーの注文を下すことができます.また,Bian安のカスタムオーダーIDを使用して,注文の返還を待つ必要がないようにすることができます.

同期アーキテクチャー

var tasks = []
var jobs = []

function worker(){
    let new_jobs = []
    for(let i=0; i<tasks.length; i++){
        let task = tasks[i]
        jobs.push(exchange.Go.apply(this, task.param))
    }
    _.each(jobs, function(t){
        let ret = t.wait(-1)
        if(ret === undefined){
            new_jobs.push(t)//未返回的任务下次继续等待
        }
    })
    jobs = new_jobs
    tasks = []
}

/*
需要的任务参数写在param里
tasks.push({'type':'order','param': ["IO", "api", "POST","/fapi/v1/order",
        "symbol="+symbol+Quote+"&side="+side+"&type=LIMIT&timeInForce=GTX&quantity="+
        amount+"&price="+price+"&newClientOrderId=" + UUID() +"&timestamp="+Date.now()]})
*/

監視されたデータ

  • 遅延,高周波戦略のスピードの重要性が強調されている. 戦略では,下注,撤回,ポジション返還,深さ,オーダーフロー,ポジション,全体循環など,さまざまな遅延を監視し記録する. 不正な遅延がある場合は,適切なタイミングで分類し,全体的な戦略遅延を短縮する方法を探します.
  • 取引量の比率,統計上の取引量の比率は総取引量の比率であり,比率が低い場合,上昇する余地がある.ピーク時に,戦略の比率は総取引量の10%以上に達することも可能である.
  • 平成の収益率,統計的に平均的な平成の収益率は,戦略が有効かどうかを判断する最も重要な基準である.
  • 報酬率,統計的な報酬率が総利益の比率として,戦略が報酬に依存する程度を反映する.すべての異なる報酬レベルを取引し,利益のない戦略は,報酬が1レベル高い場合,利益を得ることができる.
  • 下令の失敗率は,注文が手配のみの取引であり,下令の遅延により,掛ける事ができない可能性があります.この比率が高くなった場合,戦略のスピードが良くないことを示します.
  • 取引された注文の割合は,プラットフォームが取引率に要求する傾向があり,低すぎると,戦略的な撤回が頻繁すぎることを示し,解決する必要がある.
  • 戦略的な注文と開示の間隔を反映した平均的な買い売り注文距離は,ほとんどが買い売りの位置を占めていることが見られます.

その他の提案

  • 多通貨取引,本文の高周波戦略は,単一の取引所単一の通貨単行市場にのみ言及するものである. 限界は大きい. ほとんどの状況とほとんどの通貨は利益にならないが,将来どの通貨が利益をもたらすかを予測することはできません. そのため,複数の通貨またはすべての通貨を取引することができます. 機会を逃さないでください.
  • 収益率によって単位の量と注文条件が決定される. 多通貨取引は試みるコストが高くなり,モニタリングが利便性がない場合,最小限の取引量で取引頻度を減らして,戦略動的モニタリングで収益率が正になるまで取引量を増やして収益を上げる.
  • より多くの情報を得るため,高周波取引のもう一つの特徴は,処理されるデータの量がより多く,使用される情報はより多くである. 単一の取引所の内蔵取引ペアのすべての市場情報は参照されるべきであり,永続的に現貨のデータも参照することができる. また,他の取引所のデータも参照することができる. データが増えるほど,相応の利点も大きい. 例えば,BinanceはSymbolの好ましい上記情報に購読することができます. 深さと注文流の最短推送は100msであり,これだけがリアルタイムであり,高周波戦略に非常に価値があります.
  • ビナンのサーバーはaws東京にあり,他の取引所のサーバーは異なります.
  • 本文の策略コードは簡潔な例文コードに過ぎず,多くの面倒な但し考慮しなければならない詳細を削除し,使用する指標は直接的な使用ではなく参照のみである.真の高周波策略を実行するには,注意を払う必要がある詳細が多く,忍耐と修飾が必要である.

関連性

もっと

mztcoin草神 野蛮

ダンゴウ草神牛波1

77924998草神は何のAWSサーバを使っているの?

クキティ暴力を振るう

ブクシアックグラス・ゴンは,高周波の授業で支払いをします.

心のままにこの戦略は,コピーできるなら使えるのか?

脚本家 トレッドマン高周波取引の入門を学ぶために,より多くの教えることを望んで,草神を呼び出す~

♪風口の波の中で ♪野蛮な

fmゼロ草の神様 野蛮!

オーク量化野蛮な

小草目の当たりにならないほど,意味がない.