Sumber daya yang dimuat... Pemuatan...

Penjelasan tentang suite Lead-Lag dalam mata uang digital (3)

Penulis:Rumput, Dibuat: 2024-12-24 15:43:36, Diperbarui: 2024-12-26 12:14:45

img

Pada artikel sebelumnya, kami telah membahas tentang leverage yang digunakan di berbagai bursa. Kali ini, kami akan membahas secara mendalam tentang bagaimana menerapkan efek lead-lag pada perdagangan frekuensi tinggi, dimana perdagangan frekuensi tinggi membutuhkan menangkap perbedaan harga yang sangat kecil dalam waktu yang sangat singkat dan mendapatkan keuntungan dengan cepat. Efek lead-lag memberikan informasi prediktif kepada para pedagang untuk membantu mereka menilai pergerakan harga jangka pendek, sehingga mereka dapat melakukan leverage di antara bursa yang berbeda.

Di bawah ini adalahPenyederhanaan Open Source, dan diubah menjadi FMZ API berbasis. Prinsip kode dari strategi ini sangat sederhana, dan pernah sangat menguntungkan, dan saat ini tidak tersedia, hanya untuk referensi.


Prinsip strategi frekuensi tinggi Lead-Lag

Hal ini dapat dimengerti bahwa harga beberapa bursa atau beberapa indikator akan lebih tinggi dalam perubahan pasar secara keseluruhan, sementara bursa lain atau indikator lain akan relatif lebih lambat. Dalam strategi ini, harga 1, harga 2 dan harga 3 menunjukkan tren yang berbeda dari bursa yang berbeda, yang merupakan bursa utama, karena lebih sensitif terhadap berita pasar, atau para pemangku kepentingan yang berbeda dalam trading mereka, yang membuat harga bursa-bursa ini berfluktuasi lebih awal jika ada pesanan beli atau jual besar.

Buku Pemesanan Diambil dari Bursa

Strategi ini mengambil data buku pesanan dari berbagai bursa secara hampir bersamaan, seperti harga beli, harga jual, volume pesanan, dll. Lalu membandingkan harga tengah (yaitu rata-rata harga beli dan jual) dari berbagai bursa untuk menyimpulkan dinamika pasar.

Pengertian sinyal tren

Strategi ini berfokus pada perubahan harga di tiga bursa eksternal (okex, binance, huobipro):

Di sini, setiap trend X ditentukan oleh perbedaan antara kenaikan harga saat ini dan kenaikan harga di masa lalu di atas ambang batas tertentu (level * price_increment). Setelah menambah sinyal kenaikan / penurunan dari tiga bursa, jika tren keseluruhan > 0, strategi akan dibeli; jika tren < 0, strategi akan dijual.

Pengendalian angin dan pengendalian angin

Strategi ini hanya akan membeli atau menjual setiap kali setelah trend dikonfirmasi, dan akan membatalkan pesanan sebelumnya sebelum setiap pesanan dibuat ("yaitu menghindari keterlibatan yang tidak terduga yang menyebabkan akumulasi risiko"). Pada saat yang sama, skrip ini juga menetapkan modul seperti leverage, operasi batch, pemantauan kontrol angin, yang menunjukkan bahwa dalam waktu nyata digunakan beberapa akun, pasangan mata uang berlari secara bersamaan, sehingga memperluas frekuensi perdagangan dan efisiensi penggunaan dana yang diperdagangkan strategi ini.

Selain itu, strategi ini adalah strategi frekuensi tinggi, tidak perlu memperhatikan keuntungan atau kerugian dari setiap pesanan, tidak perlu menghentikan kerugian, dan dapat dilanjutkan selama kemungkinan keuntungan.


Strategi FMZ Terwujud

Pengaturan parameter

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

Logika inti: Mendapatkan data dan tren penilaian

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

Pemesanan dan pembatalan

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

Logika Strategi

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

Analisis Alasan Kegagalan Strategi

Pasar Menjadi Efektif

Ketika semakin banyak strategi kuantitatif atau frekuensi tinggi yang terlibat dan menemukan hubungan lead-lag yang sama, sejumlah besar dana akan dengan cepat menutupi perbedaan harga ini. Pasar menjadi semakin sintonisasi, dan sulit bagi strategi untuk mengambil keuntungan dari perbedaan harga yang kecil tanpa menggunakan risiko atau jangka pendek.

Perubahan batasan atau biaya transaksi

Dengan perubahan struktur biaya transaksi dari satu bursa ke bursa yang lain, jika biaya transaksi melampaui keuntungan, maka strategi perdagangan frekuensi tinggi akan sangat merugikan profitabilitasnya; atau bursa dapat mempercepat kecepatan pengambilan gambar, membatasi frekuensi, mengurangi keterlambatan, dan juga membuat strategi yang bergantung pada penundaan yang tidak konsisten gagal.

Pengurangan dan titik tergelincir

Strategi frekuensi tinggi sering mengalami titik tergelincir yang lebih serius ketika pasar tidak cukup banyak bertransaksi; atau pesanan besar akan mendorong harga dengan cepat, menyebabkan penjualan yang tinggi yang diharapkan untuk membeli rendah dan dijual tinggi yang dipengaruhi oleh pesanan sendiri, yang mengakibatkan penurunan pendapatan.

Perubahan lingkungan pasar yang berfluktuasi

Beberapa strategi sangat berguna dalam posisi volatilitas tinggi atau dalam posisi volatilitas tertentu, ketika pasar rata atau volatilitas turun, dan leverage menurun, strategi kehilangan lingkungan yang cocok, bahkan mungkin mengalami kerugian yang sering.


Pengamatan

Strategi perdagangan frekuensi tinggi ini sangat penting dalam menangkap harga dari berbagai bursa dan membuat penilaian frekuensi tinggi berdasarkan prinsip Lead-Lag. Strategi ini pernah menggunakan metode perdagangan frekuensi tinggi dan cepat yang didasarkan pada prinsip Lead-Lag: melihat harga mana yang bergerak terlebih dahulu dan kemudian mendorong harga dari bursa lain untuk mengikuti dan menangkap selisih instan atau tren jangka pendek. Namun, seperti yang dikatakan penulis, strategi yang bergantung pada lingkungan pasar, homogenisasi strategi, biaya prosedur dan perubahan frekuensi menjadi semakin tidak berguna dan bahkan kehilangan keuntungan.


Lebih banyak