資源の読み込みに... 荷物...

デジタル通貨におけるリード-ラグ套路の紹介 (3)

作者: リン・ハーン小草作成日:2024年12月24日 15:43:36 更新日:2024年12月25日 14時30分29秒

前回の記事では,取引所の間での利回りを紹介しました. 今回は,利回りの効果を高周波取引に適用する方法について詳しく説明します. 高周波取引は,非常に短時間で微小な価格差を捕獲し,迅速に利益を得る必要があります. 利回りの効果は,取引者に予測情報を提供し,異なる取引所の間での価格の短期動向を判断し,利回りを実現するのに役立ちます.

これは正しい公開コードの簡素化この戦略のコード原理はシンプルで,以前は非常に儲けていたが,現在利用できない. 参照のみである.


Lead-Lag 高周波戦略の原理

リード・ラグ (Lead-Lag) とは,ある取引所の価格 (または特定の指標) が全体的な市場変化においてより先導 (Lead) しているとき,他の取引所の価格 (または他の指標) が相対的に先導 (Lag) しているときのことである.この戦略では,値1・価格2・価格3は,それぞれ異なる取引所の動きを代表する.これらは主流取引所であり,市場情報に対してより敏感であるため,または取引深度が異なる参加者であるため,大きな注文または販売注文がある場合,これらの取引所の価格が最初に波動する.実際の取引所は,合同機構,取引集団の要因などの微小要因により,価格波動が少し遅れている.このとき,値の一種,何らかの先導 (lagged) 状態が現れる.

複数の取引所の注文簿を入手

戦略は,ほぼ同時に,異なる取引所からの注文簿データ,例えば,買取価格,売出価格,注文量等を入手し,また,異なる取引所の中間価格 (すなわち,買取価格の平均値) を比較して市場動向を推論する.

トレンド信号判断

この戦略は3つの外部取引所 (okex,binance,huobipro) の価格変動に重点を置いています.

ここでは,それぞれのトレンドXは,トレンドの現在の価格上昇とトレンドの過去価格上昇の差が一定値 (level * price_increment) を超えていることから決定される. 3つの取引所からの上昇/下落のトレンド信号を足すと,全体的なトレンド > 0であれば,戦略は買い,トレンド < 0ならば,市場全体的なトレンドを意味する,戦略は売る.

一方向下ろしと風制御

戦略は,傾向が確認された後にのみ購入または売却する.また,各注文の前に以前の注文をキャンセルする (すなわち,意外な預金によるリスク蓄積を避ける).同時に,脚本には,レバレッジ加算,大量運用,風力制御モニタリングなどのモジュールが設定されており,実際の実況では複数のアカウント,多通貨ペアが同時に実行されるため,戦略の取引頻度と資金利用率を拡大する.

また,この戦略は高周波戦略であり,各注文の利益損失を考慮せず,停止損失を考慮せず,利益の可能性が高い限り継続する.


FMZ戦略の実現

パラメータ設定

// 超参设置
const SYMBOL = "BTC_USDT"; // 交易对
const PRICE_INCREMENT = 0.1; // 价格增量
const LEVEL = 10; // 趋势判断的灵敏度
const RATIO = 10; // 下单价格调整比例
const INTERVAL = 200; // 时间间隔(毫秒)
const S_AMOUNT = 0.02; // 默认交易量
const MIN_AMOUNT = 0.005; // 最小交易量

// 初始状态
let buyOrders = [];
let sellOrders = [];
let previousPrices = [0, 0, 0]; // 存储之前的价格
let loop = 0;

基本論理:データと判断の流れ

// 获取订单簿数据
function fetchOrderBooks() {
    let orderBooks = [];
    let tasks = [];

    // 启动所有交易所的异步获取订单簿任务
    for (let i = 0; i < exchanges.length; i++) {
        // 假设每个交易所对象都可以调用Go方法
        let task = exchanges[i].Go("GetDepth");
        tasks.push({ index: i, task: task });
    }

    // 等待所有任务完成并收集结果
    for (let i = 0; i < tasks.length; i++) {
        let { index, task } = tasks[i];
        try {
            // 等待异步任务返回结果
            let depth = task.wait(1000);

            // 检查返回的数据是否有效
            if (!depth || !depth.Bids || !depth.Asks) {
                throw new Error("返回的订单簿数据无效");
            }

            // 将有效的订单簿数据添加到结果数组
            orderBooks[index] = depth;
        } catch (error) {
            // 记录错误日志
            Log(`获取交易所${index}订单簿失败: ${error.message}`);

            // 添加默认的订单簿数据以避免崩溃
            orderBooks[index] = {
                Bids: [[0, 0]],
                Asks: [[0, 0]]
            };
        }
    }

    return orderBooks;
}


// 判断趋势
function calculateTrend(orderBooks) {
    let trends = [];
    for (let i = 0; i < orderBooks.length; i++) {
        const midPrice = (orderBooks[i].Bids[0][0] + orderBooks[i].Asks[0][0]) / 2;
        if (midPrice > previousPrices[i] + LEVEL * PRICE_INCREMENT) {
            trends.push(1); // 上升趋势
        } else if (midPrice < previousPrices[i] - LEVEL * PRICE_INCREMENT) {
            trends.push(-1); // 下降趋势
        } else {
            trends.push(0); // 无显著趋势
        }
        previousPrices[i] = midPrice; // 更新价格记录
    }
    return trends.reduce((a, b) => a + b, 0); // 返回总体趋势
}

追加注文とキャンセル注文

// 取消所有挂单
function cancelOrders(orders) {
    for (let orderId of orders) {
        try {
            exchanges[0].CancelOrder(orderId); // 默认使用主交易所
            Log(`取消订单: ${orderId}`);
        } catch (error) {
            Log(`取消订单失败: ${error.message}`);
        }
    }
}

// 创建买单
function createBuyOrder(price, amount) {
    try {
        const orderId = exchanges[0].Buy(price, amount);
        buyOrders.push(orderId);
        Log(`创建买单: 价格 ${price}, 数量 ${amount}`);
    } catch (error) {
        Log(`创建买单失败: ${error.message}`);
    }
}

// 创建卖单
function createSellOrder(price, amount) {
    try {
        const orderId = exchanges[0].Sell(price, amount);
        sellOrders.push(orderId);
        Log(`创建卖单: 价格 ${price}, 数量 ${amount}`);
    } catch (error) {
        Log(`创建卖单失败: ${error.message}`);
    }
}

戦略的論理

function main() {
    while (true) {
        try {
            // 获取订单簿数据
            const orderBooks = fetchOrderBooks();

            // 计算趋势
            const trend = calculateTrend(orderBooks);
            Log(`当前趋势: ${trend}`);

            // 取消挂单
            cancelOrders(buyOrders);
            cancelOrders(sellOrders);
            buyOrders = [];
            sellOrders = [];

            // 根据趋势下单
            if (trend > 0 && loop > 0) {
                const price = _N(orderBooks[0].Bids[0][0] + RATIO * PRICE_INCREMENT, 2);
                const amount = _N(Math.max(S_AMOUNT, MIN_AMOUNT), 4);
                createBuyOrder(price, amount);
            } else if (trend < 0 && loop > 0) {
                const price = _N(orderBooks[0].Asks[0][0] - RATIO * PRICE_INCREMENT, 2);
                const amount = _N(Math.max(S_AMOUNT, MIN_AMOUNT), 4);
                createSellOrder(price, amount);
            }

            // 循环计数与间隔
            loop++;
            Sleep(INTERVAL);

        } catch (error) {
            Log(`主逻辑错误: ${error.message}`);
        }
    }
}

戦略の失敗の原因を分析する

市場が有効になった

より多くの量化や高周波戦略が関与し,同じリード・ラグ関係が発見されると,大量資金がこの格差を迅速に抹消する.市場がますます不協和的になり,戦略は小さな格差からリスク回避利率や短期利率を得ることが難しくなります.

取引所の制限や手数料の変更

異なる取引所の手数料構造が変化すると,手数料が利息利得を超えると,高周波取引戦略の収益性は大きく低下する.または,取引所の撮影速度を加速,周波数制限,遅延を削減することで,遅延不一致を頼る戦略が失敗する.

流動性の低下と滑り点

市場の取引量が不足すると,高周波戦略はより深刻な滑り点に遭遇する傾向がある.または,大きな注文が迅速に価格を押し上げ,予想されていた低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格の低価格が

市場変動環境の変化

ある戦略は,高波動のまたはの特定の周期ので非常にうまく機能し,市場が平坦または波動が低下し,レバレッジが低下すると,戦略は適当な環境を失い,しばしば損失を起こす可能性があります.


概要

この高周波取引戦略の鍵は,複数の取引所の価格を把握し,値の傾向を合成して値判断することにある.これは,リードラグ原理に基づいた超高周波,急速な出入取引の実現であった:どの取引所の価格が先行するかを観察し,その後他の取引所の価格を追随し,瞬間の差値または短期的な傾向を捕捉する.しかし,著者によると,市場環境,戦略の同化,手続費と周波数制限の変化に依存するこの戦略は,徐々に不適切になり,収益性を失う.このようなリードラグ戦略を再び掘り出すためには,最新の構造 (流動性,手続費規則,計算法,速度撮影) を組み合わせ,市場の変化を継続して競争力を維持するために,取引モジュールを最適化する必要があります.


もっと