En la carga de los recursos... Cargando...

Introducción al conjunto de Lead-Lag en las monedas digitales (3)

El autor:Las hierbas, Creado: 2024-12-24 15:43:36, Actualizado: 2024-12-26 12:14:45

img

En el artículo anterior, presentamos los beneficios de los movimientos de venta entre los intercambios. En este caso, vamos a explorar en profundidad cómo aplicar el efecto lead-lag a las operaciones de alta frecuencia, que requieren capturar pequeñas diferencias de precios en un período de tiempo muy corto y obtener beneficios rápidamente. El efecto lead-lag proporciona a los operadores información predictiva que les ayuda a determinar el movimiento de los precios a corto plazo y, por lo tanto, a obtener un beneficio entre los diferentes intercambios.

Esto es cierto.La simplificación del código abiertoEl código de la estrategia original es muy simple, fue muy rentable, y actualmente no está disponible, solo para referencia.


Principios de la estrategia de alta frecuencia de Lead-Lag

El denominado "Lead-Lag" puede entenderse como el hecho de que los precios de ciertos intercambios (o ciertos indicadores) tendrán un mayor liderazgo en los cambios en el mercado en general, mientras que otros intercambios o otros indicadores tendrán un mayor retraso en los cambios en el mercado. En esta estrategia, los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los precios de los intercambios representan, respectivamente, el movimiento de los diferentes intercambios, que son los intercambios dominantes, debido a que son más sensibles a las noticias del mercado, o su profundidad de negociación los participantes son diferentes, que si hay un gran volumen de pedidos de compra o venta, hace que los precios de estos intercambios fluctúen un paso antes.

Se apoderaron de los libros de pedidos de las bolsas

La estrategia es obtener casi simultáneamente datos del libro de pedidos de los diferentes intercambios, como un precio de compra, un precio de venta, un volumen de pedidos suspendidos, etc.; y luego comparar los precios intermedios (es decir, el promedio de compra y venta) de los diferentes intercambios para inferir la dinámica del mercado.

El juicio de señales de tendencia

La estrategia se centra principalmente en la variación de los precios en tres mercados externos (okex, binance y huobipro):

Aquí, cada tendencia X está determinada por la diferencia entre el aumento de los precios actuales y el aumento de los precios pasados de la moneda sobre un cierto umbral. Después de sumar las señales de aumento/descenso de la moneda obtenidas de los tres intercambios, si la tendencia general > 0, la estrategia se compra; si la tendencia < 0, la estrategia se vende.

Unidad de descarga y control del viento

La estrategia sólo compra o vende una vez que se confirma la tendencia, y cancela las órdenes anteriores antes de cada orden ("es decir, evitar que los cargos inesperados conduzcan a la acumulación de riesgos"). Al mismo tiempo, el guión también establece módulos como apalancamiento, operación de volumen, control de viento y monitoreo, lo que indica que se utilizan múltiples cuentas y pares de monedas simultáneos en el mercado real, lo que expande la frecuencia de operaciones de la estrategia.

Además, la estrategia es una estrategia de alta frecuencia, sin tener que centrarse en la ganancia o pérdida de cada pedido, ni en la parada de pérdidas, y se puede continuar siempre que haya probabilidades de ganancia.


La estrategia de FMZ se ha implementado

Configuración de parámetros

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

La lógica central: la obtención de datos y las tendencias de juicio

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

Los pedidos y cancelaciones

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

La 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álisis de las causas del fracaso de la estrategia

El mercado se vuelve efectivo

Cuando cada vez más estrategias de cuantificación o de alta frecuencia entran en juego y se descubre la misma relación de Lead-Lag, una gran cantidad de fondos puede compensar rápidamente esta diferencia de precios. Los mercados se vuelven cada vez más atípicos y sincronizados, y es difícil que las estrategias salgan de las pequeñas diferencias de precios sin obtener una opción de riesgo o una opción de corto plazo.

Cambios en las restricciones o tarifas de los intercambios

Con el cambio en la estructura de las tarifas de los diferentes intercambios, la rentabilidad de las estrategias de operaciones de alta frecuencia disminuye considerablemente una vez que los costos de tramitación exceden los beneficios de la tarifa; o los intercambios aceleran la velocidad de toma, limitan la frecuencia, reducen la demora y también hacen que las estrategias que dependen de la demora inconsistente no funcionen.

La disminución de la liquidez y el punto de deslizamiento

La estrategia de alta frecuencia suele tener un punto de inflexión más grave cuando el mercado no está lleno; o los grandes pedidos impulsan rápidamente los precios, lo que provoca que los pedidos que se esperaban se compren y vendan bajo, y los altos pedidos se vean afectados por sus propios pedidos, lo que disminuye las ganancias.

Cambios en el entorno de las fluctuaciones del mercado

Algunas estrategias son muy útiles en situaciones de alta volatilidad o en ciertos ciclos de volatilidad, y cuando el mercado está despejado o la volatilidad disminuye y el apalancamiento se reduce, las estrategias pierden el entorno adecuado y pueden incluso tener pérdidas frecuentes.


Resumen

El punto clave de esta estrategia de alta frecuencia de negociación es la captura de precios de varios intercambios y el juicio sintético de la tendencia a la ruptura. Se basó en el principio de Lead-Lag para implementar un método de negociación de alta frecuencia y rápida entrada: observar qué intercambio se mueve primero y luego llevar a otros intercambios a seguir, para capturar diferencias instantáneas o tendencias a corto plazo. Sin embargo, como dice el autor, esta estrategia que depende del entorno del mercado, la homogeneización de las estrategias, las tarifas y los cambios en la frecuencia de las transacciones se vuelve poco a poco menos útil, incluso perdiendo la capacidad de rentabilidad.


Más.