
Dalam artikel sebelumnya, kami memperkenalkan arbitraj “arbitraj” pertukaran silang. Kali ini, kami akan mendalami cara menggunakan kesan Lead-Lag pada dagangan frekuensi tinggi, yang memerlukan menangkap perbezaan harga yang kecil dalam tempoh masa yang sangat singkat dan membuat keuntungan yang cepat. Kesan Lead-Lag memberikan pedagang maklumat ramalan, membantu mereka menentukan arah aliran harga jangka pendek dan dengan itu mencapai arbitraj antara pertukaran yang berbeza.
Berikut adalahMemudahkan kod awam, dan ditukar kepada berasaskan API FMZ. Prinsip kod strategi asal ini sangat mudah dan dahulunya sangat menguntungkan Ia pada masa ini tidak tersedia dan hanya untuk rujukan.
Apa yang dipanggil “Lead-Lag” boleh difahami sebagai harga (atau penunjuk tertentu) bagi sesetengah bursa akan lebih “terdepan” dalam keseluruhan perubahan pasaran, manakala bursa lain atau penunjuk lain akan agak “lagging” ( Lag) . Dalam strategi ini, “Price_1, Price_2, Price_3” mewakili keadaan pasaran bursa yang berbeza Ia adalah bursa arus perdana, yang lebih sensitif kepada berita pasaran, atau kedalaman dagangan dan jenis peserta Setelah terdapat pesanan beli atau jual yang besar. harga pertukaran ini akan turun naik terlebih dahulu. Turun naik harga pertukaran dagangan sebenar akan ketinggalan sedikit disebabkan oleh faktor seperti mekanisme pemadanan dan kumpulan dagangan. Pada ketika ini, situasi “ada yang memimpin dan ada yang ketinggalan” muncul.
Strategi memperoleh data buku pesanan daripada bursa berbeza hampir serentak, seperti harga bida terbaik, harga permintaan terbaik, volum pesanan belum selesai, dsb. Harga pertengahan (iaitu purata harga bida dan permintaan) bagi pertukaran yang berbeza kemudiannya dibandingkan dengan inferens dinamik pasaran.
Strategi ini tertumpu terutamanya pada perubahan harga tiga bursa luaran (okex, binance, huobipro):
Di sini, setiap trendX ditentukan oleh perbezaan antara “harga semasa” dan “harga lepas” yang melebihi ambang tertentu (tahap * kenaikan_harga). Selepas menambah isyarat “naik/turun” daripada tiga bursa, jika aliran keseluruhan > 0, ini bermakna pasaran secara amnya meningkat, dan strateginya adalah untuk membeli jika trend < 0, ini bermakna pasaran secara amnya; jatuh, dan strateginya adalah untuk pergi Jual.
Strategi hanya membeli atau menjual selepas arah aliran disahkan, dan membatalkan pesanan sebelumnya sebelum membuat setiap pesanan (iaitu, untuk mengelakkan pesanan belum selesai secara tidak sengaja yang membawa kepada pengumpulan risiko). Pada masa yang sama, skrip juga menyediakan modul seperti leveraj, operasi kelompok, dan pemantauan kawalan risiko, yang bermaksud bahawa berbilang akaun dan pasangan mata wang berbilang digunakan dalam dagangan sebenar, dengan itu mengembangkan “kekerapan dagangan” dan “ Kecekapan penggunaan modal”.
Selain itu, strategi ini adalah strategi frekuensi tinggi Anda tidak perlu memberi perhatian kepada keuntungan atau kerugian setiap pesanan, dan anda juga tidak perlu menghentikan kerugian Anda boleh meneruskan selagi ada kebarangkalian yang tinggi untuk membuat keuntungan.
// 超参设置
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}`);
}
}
}
Pasaran menjadi cekap
Apabila semakin banyak strategi kuantitatif atau frekuensi tinggi terlibat dan menemui hubungan Lead-Lag yang sama, sejumlah besar dana akan menghapuskan perbezaan harga dengan cepat. Apabila pasaran menjadi semakin “disegerakkan,” menjadi semakin sukar bagi strategi untuk membuat “bebas risiko” atau arbitraj jangka pendek daripada perbezaan harga yang kecil.
Sekatan pertukaran atau perubahan yuran
Apabila struktur yuran pertukaran berbeza berubah, apabila kos yuran melebihi keuntungan arbitraj, keuntungan strategi perdagangan frekuensi tinggi akan dikurangkan dengan banyaknya. Sebagai alternatif, jika pertukaran mempercepatkan proses pemadanan, mengehadkan kekerapan dan kuantiti serta mengurangkan kependaman, strategi yang bergantung pada kependaman tidak konsisten akan menjadi tidak berkesan.
Pereputan kecairan dan gelinciran
Apabila volum pasaran tidak mencukupi, strategi frekuensi tinggi sering menghadapi kegelisahan yang lebih teruk atau pesanan yang besar akan menaikkan harga dengan cepat, menyebabkan “beli rendah dan jual tinggi” yang dijangkakan pada asalnya dipengaruhi oleh pesanan mereka sendiri, mengakibatkan penurunan dalam pulangan; .
Mengubah turun naik pasaran
Sesetengah strategi berfungsi dengan baik di bawah “kemeruapan tinggi” atau “kitaran khusus”.
Perkara utama dalam strategi perdagangan frekuensi tinggi ini terletak pada penangkapan harga daripada pelbagai bursa dan pertimbangan “sintesis trend”. Ia pernah melaksanakan kaedah perdagangan frekuensi ultra tinggi, masuk dan keluar pantas berdasarkan prinsip Lead-Lag: amati harga bursa mana yang bergerak dahulu, dan kemudian mendorong harga bursa lain untuk diikuti, dengan itu menangkap perbezaan harga serta-merta atau arah aliran jangka pendek . Walau bagaimanapun, seperti yang penulis katakan, perubahan dalam persekitaran pasaran, kehomogenan strategi, yuran dan had kekerapan telah menjadikan strategi yang bergantung pada “langkah pertama, langkah terakhir” ini tersebar secara beransur-ansur kurang berguna malah kehilangan keuntungannya. Bagi mereka yang ingin meneroka jenis strategi Lead-Lag ini, mereka perlu mengoptimumkan modul dagangan dalam kombinasi dengan struktur pasaran terkini (kecairan, peraturan yuran, kelajuan pemadanan algoritma), dan memberi perhatian kepada pengurusan kawalan risiko, supaya bertahan dalam persekitaran pasaran yang berubah-ubah Mengekalkan daya saing yang berterusan.