O recurso está a ser carregado... Carregamento...

Introdução ao conjunto de Lead-Lag na moeda digital (3)

Autora:Ervas daninhas, Criado: 2024-12-24 15:43:36, Atualizado: 2024-12-26 12:14:45

img

No artigo anterior, apresentamos o uso de vantagens de transferência de fluxo entre os mercados. Desta vez, vamos explorar em profundidade como aplicar o efeito de lead-lag a negociações de alta frequência, que exigem capturar pequenas diferenças de preços em um período de tempo extremamente curto e obter lucros rapidamente. O efeito de lead-lag fornece aos traders informações preditivas que os ajudam a determinar o movimento de curto prazo dos preços, permitindo assim o uso de vantagens entre os diferentes mercados.

Aqui está:Simplificação do código abertoO código da estratégia original é muito simples, e foi muito lucrativo, e não está disponível atualmente, apenas para referência.


Princípios da estratégia de alta frequência Lead-Lag

O chamado "Lead-Lag" pode ser entendido como o fato de que os preços de alguns mercados (ou de certos indicadores) são mais leves no que diz respeito às mudanças globais do mercado (Lead), enquanto outros mercados ou outros indicadores são relativamente leves (Lag). Nesta estratégia, os leves de preço 1, preço 2 e preço 3 representam, respectivamente, o comportamento de diferentes mercados, que são os principais mercados, que são mais sensíveis às notícias do mercado ou que têm diferentes participantes de profundidade de negociação, o que faz com que os preços desses mercados flutuem um passo antes quando há um grande volume de pedidos de compra ou venda.

A lista de pedidos de várias bolsas foi apreendida

A estratégia é quase simultânea, obtendo dados do livro de pedidos de diferentes exchanges, como um preço de compra, um preço de venda, quantidade de pedidos pendurados, etc.; e comparando os preços intermediários (ou seja, a média de um preço de compra e venda) de diferentes exchanges para inferir a dinâmica do mercado.

Indicação de tendência

A estratégia foca principalmente na variação de preços em três exchanges externos (okex, binance e huobipro):

Aqui, cada tendência X é determinada pela diferença entre o aumento do preço atual e o aumento do preço passado acima de um determinado nível. Depois de somar os sinais de aumento/descrescimento obtidos dos três mercados, se a tendência geral > 0, a estratégia é comprada; se a tendência < 0, a estratégia é vendida.

Controle de vento e descida unidirecional

A estratégia só compra ou vende uma vez que a tendência é confirmada, e cancela ordens anteriores antes de cada envio (ou seja, para evitar que um envio inesperado cause risco acumulado). O script também define módulos como alavancagem, operação em massa, controle de vento e monitoramento, mostrando que em tempo real são usadas várias contas e pares de moedas em simultâneo, expandindo assim a frequência de negociação de hipotecas da estratégia e aumentando a eficiência de utilização de hipotecas.

Além disso, a estratégia é uma estratégia de alta freqüência, que não se concentra nos ganhos e prejuízos de cada pedido, nem no stop loss, e pode continuar enquanto houver probabilidade de lucro.


Realização da estratégia FMZ

Parâmetros de configuração

// 超参设置
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;

A lógica central: obter dados e tendências de julgamento

// 获取订单簿数据
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); // 返回总体趋势
}

Encomendas e cancelamentos

// 取消所有挂单
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}`);
    }
}

A lógica estratégica

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

Análise dos motivos do fracasso da estratégia

O mercado torna-se eficaz

Quando um número crescente de estratégias de quantificação ou de alta frequência se envolvem e encontram a mesma relação de Lead-Lag, grandes quantidades de dinheiro podem compensar esse diferencial rapidamente. Os mercados tornam-se cada vez mais insincrônicos e as estratégias tornam-se mais difíceis de se livrar de pequenos diferenciais de preços sem o uso de arbitragem de risco ou arbitragem de curto prazo.

Alterações nas restrições ou taxas de transação

Com a mudança da estrutura de taxas de transação de diferentes exchanges, a lucratividade da estratégia de negociação de alta frequência é muito reduzida quando os custos de transação ultrapassam os ganhos de arbitragem; ou as trocas aceleram a velocidade de captura, limitam a frequência, reduzem o atraso e também desativam as estratégias que dependem de um atraso inconsistente.

A diminuição da mobilidade e o ponto de deslizamento

Quando o mercado não é suficientemente movimentado, a estratégia de alta frequência geralmente sofre um ponto de queda mais grave; ou os grandes pedidos impulsionam rapidamente os preços, resultando em uma queda nos ganhos dos seus próprios pedidos, causando uma queda nos ganhos.

Mudanças no ambiente de flutuação do mercado

Algumas estratégias são muito úteis em cenários de alta volatilidade ou em cenários específicos de volatilidade, quando o mercado está flácido ou a volatilidade cai, a alavancagem é reduzida, a estratégia perde o ambiente adequado e pode até mesmo perder com frequência.


Resumo

O ponto chave desta estratégia de negociação de alta frequência é a captação de preços de vários mercados e o julgamento sintético de tendências de crescimento. Ele foi baseado no princípio do Lead-Lag para realizar uma estratégia de negociação de alta frequência e rápida entrada: observar o preço de um mercado que se move primeiro e, em seguida, levar o preço de outros mercados a seguir, para capturar o diferencial instantâneo ou tendências de curto prazo. No entanto, como o autor diz, esta estratégia de depender do ambiente do mercado, da homogeneização da estratégia, das taxas e das mudanças de frequência, gradualmente se torna menos útil e até mesmo perde a lucratividade.


Mais.