첫 번째 기사에서는 리드-래그 현상이 어떻게 유동화되는지에 대해 설명한 것 같습니다. 이 글은 주로 거래소 간 유동화를 소개합니다. 그것의 기본 원리는 다른 거래소 간의 가격 지연 현상을 이용함으로써 ("리드-래그 효과") 각 거래소의 시장 유동성, 거래 속도 및 네트워크 지연이 다르기 때문에 동일한 코인의 가격이 다른 거래소에서 종종 일치하지 않습니다. 이 거래소는 이러한 지연 가격 변화를 모니터링함으로써 빠른 유동화를 수행하여 위험없는 이익을 얻을 수 있습니다.
첫째, 중개인은 서로 다른 거래소 간의 가격 차이를, 특히 파고와 구매 가격을 실시간으로 모니터링해야 한다. 거래소 A의 파고와 거래소 B의 구매 가격을 추적함으로써, 거래소 A의 파고가 거래소 B의 구매 가격보다 낮으면 중개 기회가 존재한다고 볼 수 있다. 예를 들어, 거래소 A의 파고가 10,000 USDT이고, 거래소 B의 구매가 10,100 USDT이며, 가격은 100 USDT의 차이는 잠재적인 중개 기회이다. 물론, 최근 역사적인 차이 범위를 고려하여, 개시 및 평형 차이 가격의 참조로 대기 시간이 비용 중 하나이기도 하다.
일단 유권 기회가 발견되면 유권자는 낮은 판매 가격의 거래소 (예: A 거래소) 에서 자산을 구매하고 높은 구매 가격의 거래소 (예: B 거래소) 에서 판매해야 한다. 이 작업은 API 자동화로 완료되어 신속한 실행을 보장하고 가격 차이를 최대한 활용할 수 있다. 그러나 거래 실행에 있어서 거래 비용 (예: 수수료 및 슬라이드 포인트) 과 가격 충격을 고려해야 한다. 거래소 A의 처리 수수료가 0.1%, 거래소 B의 처리 수수료가 0.2%이며 시장 점유점이 존재한다고 가정한다. 예를 들어, 거래소 A에서 1개의 비트코인을 구매할 때, 실제 거래 가격이 큰 주문의 실행으로 인해 가격이 상승할 수 있으며, 슬라이드 포인트가 0.1%로 추정된다.
만약 슬라이드 포인트와 수수료를 고려한다면, 실제 구매 비용과 판매 수익은 예상보다 거리가 있습니다.
이매금의 마지막 단계는 평형이다. 예를 들어, 일정 시간이 지나면 A 거래소의 매수 가격은 10,100 USDT이고, B 거래소의 매수 가격은 10,150 USDT이며, 가격 차이는 100 USDT에서 50 USDT로 줄어들면 자동으로 평형이 종료된다. 물론, 어떤 경우에는 차이는 계속 확대될 수도 있고, 자금이 소진된 것을 알고 계속 거래할 수 있다. 거래소의 차이는 유지될 수 없기 때문에, 이매금자가 압도적인 힘을 기여한다.
많은 유권자와 시장 거래자가 존재하기 때문에 다른 거래소의 가격 차이는 크게 다르지 않으며, 그렇지 않으면 빠르게 평형됩니다. 이것은 유권 거래가 직면하는 가장 큰 문제입니다.
채권 실패는 일반적인 문제이며, 절차가 차이점을 발견하여 채권을 조정할 때 실제 거래의 차이점이 그렇게 크지 않고 종종 손실을 초래합니다. 이 경우 가장 빠른 반응과 실행 속도가 중요합니다.
단발 거래는 한 쪽이 거래를 완료하고 다른 쪽이 거래를 하지 못하는 것을 의미합니다. 이것은 일반적으로 시장의 급격한 변동 상황에서 발생합니다. 한쪽의 주문만 성공하면 유리한 고가 거래자가
이차가 장기적으로 존재할 때, 거래소의 자금이 급격히 모두 매입될 수 있으며, 이차가 거래자가 이차 거래를 계속할 수 없을 수도 있다. 이 경우, 이차가 거래자가 급격히 자금을 이전하거나 지분을 조정해야 한다.
코드는 실제 디스크 코드가 아니며 디스크 수, API 액세스 실패, 비동기 명령 속도 등에 대한 문제를 고려하지 않는 데 사용되는 데만 사용됩니다.
// symbol 是套利的交易对,比如 BTC/USDT
let symbol = "BTC_USDT";
// 设置手续费、滑点、开仓和平仓的利润率
let fee = 0.1 / 100; // 0.1% 手续费
let slippage = 0.1 / 100; // 0.1% 滑点
let entryThreshold = 0.005; // 开仓阈值:价差大于0.5%时开仓
let exitThreshold = 0.001; // 平仓阈值:价差回归到0.1%时平仓
// 每次循环执行的具体操作
function OnTick() {
// 获取各个交易所的行情数据
let tickers = exchanges.map(exchange => exchange.GetTicker(symbol));
// 计算套利机会(基于利润率)
// profitAB: 从交易所0买入,从交易所1卖出
const profitAB = (tickers[1].bid - tickers[0].ask) / tickers[0].ask - fee * 2 - slippage * 2;
// profitBA: 从交易所1买入,从交易所0卖出
const profitBA = (tickers[0].bid - tickers[1].ask) / tickers[1].ask - fee * 2 - slippage * 2;
// 打印日志
Log(`Tickers: Exchange0 Buy: ${tickers[0].ask}, Exchange1 Sell: ${tickers[1].bid}, Profit AB: ${profitAB} USDT`);
Log(`Tickers: Exchange1 Buy: ${tickers[1].ask}, Exchange0 Sell: ${tickers[0].bid}, Profit BA: ${profitBA} USDT`);
// 根据利润判断是否执行套利操作
if (profitAB > entryThreshold) { // 当利润大于开仓阈值时开仓
Log(`套利机会:从交易所0买入BTC,从交易所1卖出,利润:${profitAB} USDT`);
executeArbitrage(0, 1, tickers[0].ask, tickers[1].bid, profitAB); // 从交易所0买入并在交易所1卖出
} else if (profitBA > entryThreshold) {
Log(`套利机会:从交易所1买入BTC,从交易所0卖出,利润:${profitBA} USDT`);
executeArbitrage(1, 0, tickers[1].ask, tickers[0].bid, profitBA); // 从交易所1买入并在交易所0卖出
} else if (profitAB < exitThreshold) { // 如果价差回归,平仓
Log(`平仓:从交易所0买入并在交易所1卖出的套利机会,利润已回归至平仓阈值`);
closeArbitrage(0, 1, tickers[0].ask, tickers[1].bid); // 执行平仓操作
} else if (profitBA < exitThreshold) {
Log(`平仓:从交易所1买入并在交易所0卖出的套利机会,利润已回归至平仓阈值`);
closeArbitrage(1, 0, tickers[1].ask, tickers[0].bid); // 执行平仓操作
} else {
Log("没有足够的利润进行套利或平仓");
}
}
// 执行套利交易
function executeArbitrage(buyExchangeIndex, sellExchangeIndex, buyPrice, sellPrice) {
let buyExchange = exchanges[buyExchangeIndex];
let sellExchange = exchanges[sellExchangeIndex];
// 获取账户余额(假设为BTC余额)
let accountBuy = buyExchange.GetAccount();
let accountSell = sellExchange.GetAccount();
let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);
// 假设每次交易量为 0.1 BTC
let amount = Math.min(amountBTC, 0.1);
// 确保交易量充足
if (amount <= 0) {
Log("余额不足,无法进行套利");
return;
}
// 在买入交易所挂单买入
Log(`在交易所${buyExchangeIndex} 下单买入 ${amount} BTC @ ${buyPrice}`);
buyExchange.Buy(symbol, buyPrice * (1 + slippage), amount);
// 在卖出交易所挂单卖出
Log(`在交易所${sellExchangeIndex} 下单卖出 ${amount} BTC @ ${sellPrice}`);
sellExchange.Sell(symbol, sellPrice * (1 - slippage), amount);
}
// 平仓操作
function closeArbitrage(buyExchangeIndex, sellExchangeIndex, buyPrice, sellPrice) {
let buyExchange = exchanges[buyExchangeIndex];
let sellExchange = exchanges[sellExchangeIndex];
// 获取账户余额(假设为BTC余额)
let accountBuy = buyExchange.GetAccount();
let accountSell = sellExchange.GetAccount();
let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);
let amount = Math.min(amountBTC, 0.1);
// 在买入交易所挂单卖出
Log(`在交易所${buyExchangeIndex} 平仓卖出 ${amount} BTC @ ${buyPrice}`);
buyExchange.Sell(symbol, buyPrice * (1 - slippage), amount);
// 在卖出交易所挂单买入
Log(`在交易所${sellExchangeIndex} 平仓买入 ${amount} BTC @ ${sellPrice}`);
sellExchange.Buy(symbol, sellPrice * (1 + slippage), amount);
}
// 主循环
function main() {
while (true) {
OnTick();
Sleep(1000); // 每秒钟执行一次
}
}
리드-래그 유동화 (Lead-Lag Moving Swap) 는 시장의 지체 반응에 기반한 트랜스-이거진 유동화 전략이다. 시장의 가격 차이를 정확하게 분석하고 거래를 빠르게 실행함으로써 유동자는 디지털 통화 시장에서 안정적인 수익을 얻을 수 있다. 그러나 이 전략의 성공은 전략 자체의 디자인에 의존하는 것이 아니라, 좋은 실행력과 시장 시기를 민감하게 파악하는 것이 필요하다. 시장 경쟁이 심화됨에 따라 유동자는 전략과 기술을 지속적으로 최적화하고, 유동화 기회의 지속적인 효과를 유지하기 위해 속도와 반응 능력을 향상시켜야 한다.