В процессе загрузки ресурсов... загрузка...

Презентация о своде Lead-Lag в цифровой валюте (3)

Автор:Трава, Создано: 2024-12-24 15:43:36, Обновлено: 2024-12-26 12:14:45

img

В предыдущей статье мы рассказали об эффекте сдвига лидеров между биржами. На этот раз мы подробнее рассмотрим, как эффекты сдвига лидеров могут применяться к высокочастотным сделкам, где высокочастотные сделки требуют захвата крошечных ценовых различий в очень короткие сроки и быстрого получения прибыли. Эффект сдвига лидеров предоставляет трейдерам прогнозную информацию, которая помогает им определить краткосрочное движение цен, что позволяет реализовать эффекты сдвига между различными биржами.

Ниже приведеныУпрощение открытого кода, а затем перевести его на основанный на FMZ API. Код этой первоначальной стратегии очень прост, когда-то был очень прибыльным и в настоящее время недоступен, только для справки.


Принципы высокочастотного стратегии Lead-Lag

Так называемый "Лед-Лаг" может быть понят как то, что цены на некоторых биржах или на некоторых показателях будут опережать цены на общих изменениях рынка, а на других биржах или на других показателях будет относительно опережающий лаг. В данной стратегии опережающие цены 1, 2 и 3 символизируют поведение различных бирж, которые являются основными биржами, поскольку они более чувствительны к информации о рынке или их участники в глубине торговли отличаются, что при наличии большого количества покупательных или продажных заказов приведет к тому, что цены на этих биржах будут колебаться на шаг раньше.

Захваченные ордерные книжки

Стратегия почти синхронно получает данные ордерной книги с разных бирж, например, цены покупки, цены продажи, объемы заказов и т. д.; затем сравнивает средние цены (т. е. средние цены покупки и продажи) с разными биржами, чтобы сделать вывод о динамике рынка.

Тенденционные сигналы

Стратегия сосредоточена на изменении цен на трех внешних биржах (okex, binance, huobipro):

Здесь каждый тренд X определяется разницей между текущим ценовым скачком и прошлым ценовым скачком выше определенного порога (level * price_increment). После того, как сигналы повышения/уменьшения, полученные от трех бирж, будут сложены, если общий тренд > 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}`);
        }
    }
}

Анализ причин неудачи стратегии

Рынок становится эффективным

Когда вовлекается все больше количественных или высокочастотных стратегий и обнаруживается такая же Lead-Lag, значительное количество средств быстро сглаживает этот разрыв.

Изменения в ограничениях биржи или в оплате услуг

С изменением структуры процедурных сборов на разных биржах прибыльность высокочастотных торговых стратегий значительно снижается, когда процедурные издержки превышают прибыль от сборки; или же биржа ускоряет скорость съемки, ограничивает частоту, уменьшает задержку, а также отменяет стратегии, которые обычно полагаются на несовместимые задержки.

Снижение ликвидности и сдвиг

В случае недостаточного объема торгов высокочастотные стратегии часто сталкиваются с более серьезными сдвигами; или крупные заказчики быстро продвигают цены, что приводит к тому, что ожидаемые высокие заказчики покупают и продают низкие, а вместо этого влияют на свои собственные заказчики, снижая прибыль.

Изменения волатильности рынка

Некоторые стратегии очень хорошо работают в условиях повышенной волатильности или в условиях определенного цикла волатильности, когда рынок плохой или волатильность падает, и рынок теряет подходящую среду, и может даже часто терять.


Подведение итогов

Ключевой момент этой высокочастотной стратегии заключается в том, чтобы поймать цены на нескольких биржах и синтезировать суждения о тенденциях. Она была основана на принципе Lead-Lag. Она реализовала сверхчастотный, быстрый способ торговли: наблюдать, какая цена на одной бирже движется вперед, а затем запускать цены на других биржах, чтобы поймать мгновенную разницу или краткосрочные тенденции. Однако, как отмечает автор, такая стратегия, которая зависит от рыночной среды, одинаковых стратегий, процедурных сборов и изменений в частоте, постепенно становится менее эффективной и даже теряет свою прибыльность.


Больше