Type/to search
7
Follow
359
Followers
Berkongsi logik strategi arbitraj perbezaan harga spot dalam berbilang bursa
Original
Created 2022-06-27 21:26:27  Updated 2024-12-02 21:35:44
 4
 10034

img

Prinsip Strategi

Disebabkan oleh sebab kecairan, apabila terdapat jumlah jualan atau tarikan yang besar dalam pasaran, sudah pasti akan berlaku turun naik harga yang besar, dan akan terdapat perbezaan harga seketika antara pertukaran Strategi ini adalah untuk menangkap detik-detik ini dan melaksanakan transaksi yang pantas untuk selesaikan proses beli rendah dan jual tinggi .
Beberapa pelanggan bertanya kepada saya mengapa saya mempunyai begitu banyak pertukaran. Ini tidak dapat dielakkan daripada apa yang kami perolehi ialah perbezaan harga serta-merta antara pertukaran, lebih banyak peluang perbezaan harga akan ada.

Logik teras strategi
  1. Dapatkan maklumat pasaran berbilang bursa secara serentak untuk mengurangkan kelewatan mendapatkan maklumat pasaran Untuk pemerolehan serentak, anda boleh merujuk kepada pemalam alat yang saya kongsikan.Pemalam Serentak Berbilang Pertukaran
  2. Gabungkan permintaan dan bidaan semua bursa untuk mendapatkan maklumat sebut harga gabungan, dengan RealPrice ialah harga selepas ditolak yuran pengendalian.
function createOrders(depths, askOrders, bidOrders) { let asksIndex = 0; let bidIndex = 0; for (let i = 0; i < depths.length; i++) { let exchangeTariff = getExchangeTariff(i); let asks = depths[i].Asks; let bids = depths[i].Bids; for (let j = 0; j < Math.min(asks.length, bids.length, 20); j++) { if (asks[j].Amount >= minTakerAmount) { askOrders[asksIndex] = { "Price": asks[j].Price, "Amount": asks[j].Amount, "Fee": asks[j].Price * exchangeTariff, "RealPrice": asks[j].Price * (1 + exchangeTariff), "Index": i, }; asksIndex++; } if (bids[j].Amount >= minTakerAmount) { bidOrders[bidIndex] = { "Price": bids[j].Price, "Amount": bids[j].Amount, "Fee": bids[j].Price * exchangeTariff, "RealPrice": bids[j].Price * (1 - exchangeTariff), "Index": i, }; bidIndex++; } } } askOrders.sort(function (a, b) { return a.RealPrice - b.RealPrice; }); bidOrders.sort(function (a, b) { return b.RealPrice - a.RealPrice; }); }
  1. Kira spread arbitraj yang paling menguntungkan daripada maklumat pasaran gabungan. Oleh kerana kami mengambil pesanan iaitu membeli dari harga permintaan terendah dan menjual dari harga bida tertinggi, asalkan bid.Harga Sebenar > tanya.Harga Sebenar, ada ruang keuntungan
function getArbitrageOrders(askOrders, bidOrders) { let ret = []; for (let i = 0; i < askOrders.length; i++) { for (let j = 0; j < bidOrders.length; j++) { let bidOrder = bidOrders[j]; let askOrder = askOrders[i]; if (bidOrder.Index === askOrder.Index) { continue } let minMigrateDiffPrice = ((askOrder.Price + bidOrder.Price) / 2 * minMigrateDiffPricePercent / 100); if (bidOrder.RealPrice - askOrder.RealPrice > minMigrateDiffPrice) { ret.push({ "Ask": askOrder, "Bid": bidOrder, }) } } } if (ret.length === 0) { ret.push({ "Ask": askOrders[0], "Bid": bidOrders[0], }); } //按最优价差排序 ret.sort((a, b) => { return (b.Bid.RealPrice - b.Ask.RealPrice) - (a.Bid.RealPrice - a.Ask.RealPrice); }); return ret; }
  1. Memandangkan kami telah memperoleh maklumat penyebaran arbitraj dalam pasaran, bagaimana kami memutuskan sama ada untuk melaksanakan urus niaga dan berapa banyak untuk berdagang Berikut adalah beberapa perkara penting untuk dipertimbangkan:
  • Aset yang tinggal semasa
  • Saiz spread (jika spread terlalu kecil, ia hanya akan mengimbangi jumlah mata wang, dan jika spread cukup besar, ia akan memaksimumkan bilangan transaksi)
  • Bilangan pesanan belum selesai
var askOrder = arbitrageOrder.Ask; var bidOrder = arbitrageOrder.Bid; var perAmountFee = arbitrageOrder.Ask.Fee + arbitrageOrder.Bid.Fee; var minRealDiffPrice = (askOrder.Price + bidOrder.Price) / 2 * minDiffPricePercent / 100; var minMigrateDiffPrice = ((askOrder.Price + bidOrder.Price) / 2 * minMigrateDiffPricePercent / 100); var curRealDiffPrice = arbitrageOrder.Bid.RealPrice - arbitrageOrder.Ask.RealPrice; var buyExchange = exchanges[arbitrageOrder.Ask.Index]; var sellExchange = exchanges[arbitrageOrder.Bid.Index]; var buySellAmount = 0; if (curRealDiffPrice > minRealDiffPrice) { buySellAmount = math.min( bidOrder.Amount, askOrder.Amount, maxTakerAmount, runningInfo.Accounts[bidOrder.Index].CurStocks, runningInfo.Accounts[askOrder.Index].CurBalance / askOrder.Price ); } else if (bidOrder.Index !== askOrder.Index) { if (migrateCoinEx == -1) { if (curRealDiffPrice > minMigrateDiffPrice && runningInfo.Accounts[bidOrder.Index].CurStocks - runningInfo.Accounts[askOrder.Index].CurStocks > maxAmountDeviation) { buySellAmount = math.min( bidOrder.Amount, askOrder.Amount, maxTakerAmount, runningInfo.Accounts[bidOrder.Index].CurStocks, runningInfo.Accounts[askOrder.Index].CurBalance / askOrder.Price, runningInfo.Accounts[bidOrder.Index].CurStocks - ((runningInfo.Accounts[bidOrder.Index].CurStocks + runningInfo.Accounts[askOrder.Index].CurStocks) / 2) ); if (buySellAmount >= minTakerAmount) { Log("启动交易所平衡!"); } } } else if (migrateCoinEx == askOrder.Index) { if (curRealDiffPrice > minMigrateDiffPrice && runningInfo.Accounts[bidOrder.Index].CurStocks > 0) { buySellAmount = math.min( bidOrder.Amount, askOrder.Amount, maxTakerAmount, runningInfo.Accounts[bidOrder.Index].CurStocks, runningInfo.Accounts[askOrder.Index].CurBalance / askOrder.Price ); if (buySellAmount >= minTakerAmount) { Log("启动货币迁移:", exchanges[bidOrder.Index].GetName(), "-->", exchanges[askOrder.Index].GetName()); } } } }
  1. Setelah kuantiti pesanan dikira, urus niaga boleh dilaksanakan Strategi ini menggunakan kaedah penambahan terus slip untuk mengambil pesanan dan membuat pesanan pada masa yang sama
var buyWait = buyExchange.Go("Buy", _N(askOrder.Price * (1.01), pricePrecision), buySellAmount); var sellWait = sellExchange.Go("Sell", _N(bidOrder.Price * (0.99), pricePrecision), buySellAmount); var startWaitTime = new Date().getTime() Sleep(3000); var buyOrder = buyWait.wait() var sellOrder = sellWait.wait()
  1. Apa yang tinggal ialah logik untuk mengira keuntungan, mengendalikan stop loss untuk pesanan yang gagal, dsb.
Faedah sebenar strategi ini

img
img
img

Paparan masa nyata semasa, logik teras kekal tidak berubah, dioptimumkan untuk menyokong berbilang mata wang

https://www.fmz.com/robot/464965

Akhir sekali, dialu-alukan untuk menyertai Laoqiu Quantitative Exchange: https://t.me/laoqiu_arbitrage

Related Recommendations
Comment
All comments (4)

    大佬,minTakerAmount参数是怎么设置的

    2 years ago

    就怕小交易所跑路啊。

    3 years ago

    4 years ago

    秋哥威武。

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)