पहले लेख में, हमने संक्षेप में मध्यस्थता के लिए लीड-लैग घटना का उपयोग करने का तरीका पेश किया। इस लेख में, हम मुख्य रूप से क्रॉस-एक्सचेंज
सबसे पहले, मध्यस्थों को वास्तविक समय में विभिन्न एक्सचेंजों के बीच मूल्य अंतर की निगरानी करने की आवश्यकता होती है, विशेष रूप से पूछ मूल्य और बोली मूल्य। विनिमय A की पूछ मूल्य और विनिमय B की बोली मूल्य को ट्रैक करके, यदि विनिमय A की पूछ मूल्य विनिमय B की बोली मूल्य से कम है, तो इसे मध्यस्थता अवसर माना जा सकता है। उदाहरण के लिए, विनिमय A की पूछ मूल्य 10,000 USDT है, और विनिमय B की बोली मूल्य 10,100 USDT है, मूल्य अंतर 100 USDT है, तो एक संभावित मध्यस्थता अवसर है। बेशक, हालिया ऐतिहासिक मूल्य अंतर रेंज को भी खोलने और बंद करने की कीमत अंतर के लिए एक संदर्भ के रूप में ध्यान में रखा जाना चाहिए, और प्रतीक्षा समय भी लागतों में से एक है।
एक बार जब एक मध्यस्थता अवसर मिल जाता है, तो मध्यस्थकर्ता को कम पूछ मूल्य (जैसे एक्सचेंज ए) के साथ एक एक्सचेंज पर संपत्ति खरीदनी चाहिए और इसे उच्च बोली मूल्य (जैसे एक्सचेंज बी) के साथ एक एक्सचेंज पर बेचना चाहिए। तेजी से निष्पादन सुनिश्चित करने और मूल्य अंतर को अधिकतम करने के लिए एपीआई के माध्यम से इस ऑपरेशन को स्वचालित किया जा सकता है। हालांकि, एक व्यापार निष्पादित करते समय, लेनदेन लागत (जैसे शुल्क और फिसलन) के साथ-साथ मूल्य झटके पर विचार किया जाना चाहिए। मान लें कि एक्सचेंज ए का शुल्क 0.1% है, जबकि एक्सचेंज बी का शुल्क 0.2% है, और बाजार में फिसलन है। उदाहरण के लिए, एक्सचेंज ए पर 1 बिटकॉइन खरीदते समय, बड़े ऑर्डर के निष्पादन के कारण वास्तविक लेनदेन मूल्य में वृद्धि हो सकती है, यह मानते हुए कि फिसलन 0.1% है। फिर, वास्तविक लेनदेन मूल्य अपेक्षित से 0.1% अधिक होगा, जिसके परिणामस्वरूप खरीद लागत में वृद्धि होगी।
यदि फिसलन और शुल्क को ध्यान में रखा जाए तो वास्तविक खरीद लागत और बिक्री आय अपेक्षाओं से भिन्न होगी।
मध्यस्थता का अंतिम चरण स्थिति को बंद करना है। उदाहरण के लिए, एक अवधि के बाद, एक्सचेंज ए की खरीद मूल्य 10,100 USDT है, और एक्सचेंज बी की बिक्री मूल्य 10,150 USDT है। जब मूल्य अंतर 100 USDT से 50 USDT तक कम हो जाता है, तो कार्यक्रम स्वचालित रूप से स्थिति को बंद कर देगा और लाभ लेगा। बेशक, कुछ मामलों में, मूल्य अंतर चौड़ा होना जारी रह सकता है, और आप धन की समाप्ति तक पदों को खोलना जारी रख सकते हैं। एक्सचेंज के मूल्य अंतर को बनाए नहीं रखा जा सकता है क्योंकि मध्यस्थताकर्ता शक्ति का विशाल बहुमत योगदान करते हैं।
बड़ी संख्या में मध्यस्थों और बाजार निर्माताओं के अस्तित्व के कारण, विभिन्न एक्सचेंजों के बीच मूल्य अंतर बहुत बड़े नहीं होंगे, अन्यथा वे जल्दी से समतल हो जाएंगे। यह मध्यस्थता व्यापार का सामना करने वाली सबसे बड़ी समस्या है।
समाधान: - कीमतों के अंतर के स्वाभाविक रूप से बनने का इंतजार करें:क्रिप्टोक्यूरेंसी बाजार अत्यधिक अस्थिर है, और आमतौर पर अल्पकालिक मूल्य अंतर होते हैं। इस समस्या को हल करने का सबसे अच्छा तरीका धैर्यपूर्वक इंतजार करना है।- निर्माता रणनीति का उपयोग करेंःएक एक्सचेंज ऑर्डर बुक पर सक्रिय रूप से ऑर्डर खरीदें और बेचें, और ऑर्डर रद्द करें और उन्हें समायोजित करें क्योंकि कीमतें बदलती हैं। यदि एक पार्टी लेनदेन पूरा करती है, तो दूसरी पार्टी ऑर्डर लेगी। इसका परिणाम कम लेनदेन शुल्क, एक छोटा स्प्रेड और तत्काल लेनदेन सुनिश्चित होगा।- अधिक व्यापारिक जोड़े की निगरानी करें:केवल मुख्यधारा की मुद्राओं पर ध्यान केंद्रित न करें, क्योंकि उनके मध्यस्थता अवसरों को आमतौर पर बड़ी संख्या में मध्यस्थों द्वारा कब्जा कर लिया गया है, जिससे मूल्य अंतर कम हो जाता है। खराब तरलता और कम प्रतिस्पर्धा के कारण अलोकप्रिय मुद्राओं और नई सूचीबद्ध मुद्राओं में अधिक मूल्य अंतर हो सकता है, और मध्यस्थता के अवसरों पर ध्यान देने योग्य हैं।- छोटे आदान-प्रदान चुनेंःछोटे एक्सचेंजों में आमतौर पर खराब तरलता और धीमी कीमत समायोजन होते हैं, जिससे बड़े मूल्य अंतर होने में आसानी होती है। इस समय, मध्यस्थताकर्ता लाभ कमाने के लिए आदेश देने और उन्हें पूर्व-निष्पादित करने का विकल्प चुन सकते हैं।- उच्च सीमा वाले एक्सचेंजों का चयन करें:कुछ एक्सचेंजों को सख्त केवाईसी प्रमाणन की आवश्यकता होती है, जैसे कि कोरियाई एक्सचेंज अपबिट। इन स्थानों में आम व्यापारियों के लिए प्रवेश करना मुश्किल है, और अधिक मध्यस्थता के अवसर हैं। बेशक, आपको कठिनाइयों को दूर करने के तरीके खोजने की आवश्यकता है।
ऑर्डर लेने में विफलता एक आम समस्या है। जब प्रोग्राम मूल्य अंतर पाता है और मध्यस्थता के लिए ऑर्डर देता है, तो वास्तविक मूल्य अंतर इतना बड़ा नहीं होता है, और आमतौर पर नुकसान होता है। इस समय, सबसे तेज प्रतिक्रिया और निष्पादन गति महत्वपूर्ण होती है।
समाधान: - नेटवर्क और सर्वर स्थान का अनुकूलन करेंःविलंबता को कम करने के लिए एक्सचेंज सर्वर के करीब एक नोड चुनें। उदाहरण के लिए, कम तरलता वाले छोटे एक्सचेंज को चुनने से बाजार की प्रतिक्रिया गति कम हो सकती है और अवसर को जब्त किया जा सकता है।- असिंक्रोनस प्रोसेसिंग और वेबसॉकेट:बाजार की स्थितियों से जुड़ने के लिए अतुल्यकालिक कोड और वेबसोकेट का उपयोग करके वास्तविक समय में मूल्य जानकारी प्राप्त की जा सकती है और सूचना विलंब के कारण खोए हुए अवसरों से बचने के लिए जल्दी से प्रतिक्रिया दे सकती है।
एकल-दिशात्मक लेनदेन तब होता है जब ऑर्डर का एक पक्ष पूरा हो जाता है लेकिन दूसरा पक्ष लेनदेन को पूरा करने में विफल रहता है, जो आमतौर पर तेजी से उतार-चढ़ाव वाले बाजार में होता है। यदि ऑर्डर का केवल एक पक्ष सफल होता है, तो मध्यस्थताकर्ता जोखिम जोखिम का सामना करेगा।
समाधान: - एक उचित स्टॉप-लॉस तंत्र स्थापित करें:जब एक-दिशात्मक लेनदेन होता है, तो आप स्टॉप लॉस सेट कर सकते हैं। समय पर पदों को बंद करना जोखिम को कम करने का एक प्रभावी तरीका है।- आदेश देने के लिए बाजार मूल्य का प्रयोग करें:बाजार मूल्य लेनदेन की गारंटी दे सकता है, लेकिन समस्या यह है कि लेनदेन मूल्य में अंतर अनियंत्रित है और इसके परिणामस्वरूप हानि हो सकती है।
जब मूल्य अंतर लंबे समय तक मौजूद रहता है, तो एक निश्चित एक्सचेंज के धन को जल्दी से खरीदा जाएगा, और मध्यस्थकर्ता मध्यस्थता संचालन जारी रखने में सक्षम नहीं हो सकते हैं। इस समय, मध्यस्थों को धन को जल्दी से स्थानांतरित करने या अपनी स्थिति को समायोजित करने की आवश्यकता होती है।
समाधान: - मुद्रा हस्तांतरण ऑपरेशन:धन हस्तांतरण और मध्यस्थता जारी रखने के लिए क्रॉस-एक्सचेंज मुद्रा हस्तांतरण का उपयोग करें। इस तरह, आप एकल बाजार में धन के संचय से बच सकते हैं और धन की तरलता बढ़ा सकते हैं।- मूल्य अंतर के बदले के लिए इंतजार कर रहा हैःनिकासी के समय की लागत को ध्यान में रखते हुए, मूल्य अंतर की वापसी की प्रतीक्षा करना भी एक विकल्प है।
यह कोड लाइव ट्रेडिंग कोड नहीं है और केवल प्रदर्शन उद्देश्यों के लिए है। इसमें बाजारों की संख्या, एपीआई एक्सेस विफलता, असिंक्रोनस ऑर्डर गति, आदि जैसे मुद्दों को ध्यान में नहीं रखा गया है।
// Symbol is the arbitrage trading pair, such as BTC/USDT
let symbol = "BTC_USDT";
// Set commissions, slippage, profit margins for opening and closing positions
let fee = 0.1 / 100; // 0.1% Fee
let slippage = 0.1 / 100; // 0.1% slippage
let entryThreshold = 0.005; // Opening threshold: Opening a position when the price difference is greater than 0.5%
let exitThreshold = 0.001; // Closing threshold: Closing when the price difference returns to 0.1%
// The specific operations performed in each loop
function OnTick() {
// Get ticker data from various exchanges
let tickers = exchanges.map(exchange => exchange.GetTicker(symbol));
// Calculate arbitrage opportunities (based on profit margins)
// profitAB: Buy from exchange 0, sell from exchange 1
const profitAB = (tickers[1].bid - tickers[0].ask) / tickers[0].ask - fee * 2 - slippage * 2;
// profitBA: Buy from exchange 1, sell from exchange 0
const profitBA = (tickers[0].bid - tickers[1].ask) / tickers[1].ask - fee * 2 - slippage * 2;
// Print log
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`);
// Determine whether to perform arbitrage operations based on profits
if (profitAB > entryThreshold) { // Open a position when the profit is greater than the opening threshold
Log(`Arbitrage opportunity: Buy BTC from exchange 0, sell from exchange 1, profit: ${profitAB} USDT`);
executeArbitrage(0, 1, tickers[0].ask, tickers[1].bid, profitAB); // Buy from exchange 0 and sell from exchange 1
} else if (profitBA > entryThreshold) {
Log(`Arbitrage opportunity: Buy BTC from exchange 1, sell from exchange 0, profit: ${profitBA} USDT`);
executeArbitrage(1, 0, tickers[1].ask, tickers[0].bid, profitBA); // Buy from exchange 1 and sell from exchange 0
} else if (profitAB < exitThreshold) { // If the spread reverts, close the position
Log(`Close position: Arbitrage opportunity bought from exchange 0 and sold on exchange 1, profit has returned to the close threshold`);
closeArbitrage(0, 1, tickers[0].ask, tickers[1].bid); // Execute the closing operation
} else if (profitBA < exitThreshold) {
Log(`Close position: Arbitrage opportunity bought from exchange 1 and sold on exchange 0, profit has returned to the closing threshold`);
closeArbitrage(1, 0, tickers[1].ask, tickers[0].bid); // Execute the closing operation
} else {
Log("Not enough profit to take profit or close the position");
}
}
// Executing arbitrage trades
function executeArbitrage(buyExchangeIndex, sellExchangeIndex, buyPrice, sellPrice) {
let buyExchange = exchanges[buyExchangeIndex];
let sellExchange = exchanges[sellExchangeIndex];
// Get account balance (assuming BTC balance)
let accountBuy = buyExchange.GetAccount();
let accountSell = sellExchange.GetAccount();
let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);
// Assume that the transaction volume is 0.1 BTC per transaction
let amount = Math.min(amountBTC, 0.1);
// Ensure sufficient trading volume
if (amount <= 0) {
Log("Insufficient balance to conduct arbitrage");
return;
}
// Place a buy order on the buying exchange
Log(`Place an order to buy ${amount} BTC @ ${buyPrice} on exchange ${buyExchangeIndex}`);
buyExchange.Buy(symbol, buyPrice * (1 + slippage), amount);
// Place a sell order on the selling exchange
Log(`Place an order to sell ${amount} BTC @ ${sellPrice} on exchange ${sellExchangeIndex}`);
sellExchange.Sell(symbol, sellPrice * (1 - slippage), amount);
}
// Closing position operation
function closeArbitrage(buyExchangeIndex, sellExchangeIndex, buyPrice, sellPrice) {
let buyExchange = exchanges[buyExchangeIndex];
let sellExchange = exchanges[sellExchangeIndex];
// Get account balance (assuming BTC balance)
let accountBuy = buyExchange.GetAccount();
let accountSell = sellExchange.GetAccount();
let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);
let amount = Math.min(amountBTC, 0.1);
// Place a sell order on the buying exchange
Log(`Close and sell ${amount} BTC @ ${buyPrice} on exchange ${buyExchangeIndex}`);
buyExchange.Sell(symbol, buyPrice * (1 - slippage), amount);
// Place a buy order on the selling exchange
Log(`Close buy ${amount} BTC @ ${sellPrice} on exchange ${sellExchangeIndex}`);
sellExchange.Buy(symbol, sellPrice * (1 + slippage), amount);
}
// Main loop
function main() {
while (true) {
OnTick();
Sleep(1000); // Execute once every second
}
}
लीड-लैग ईंट-चलती आर्बिट्रेज एक क्रॉस-एक्सचेंज आर्बिट्रेज रणनीति है जो बाजार की देरी प्रतिक्रिया पर आधारित है। बाजार में मूल्य अंतर का सटीक विश्लेषण करके और लेनदेन को जल्दी से निष्पादित करके, आर्बिट्रेजर क्रिप्टोक्यूरेंसी बाजार में स्थिर लाभ प्राप्त कर सकते हैं। हालांकि, रणनीति की सफलता न केवल रणनीति के डिजाइन पर निर्भर करती है, बल्कि बाजार के समय की अच्छी निष्पादन और संवेदनशील समझ पर भी निर्भर करती है। जैसे-जैसे बाजार की प्रतिस्पर्धा तेज होती है, आर्बिट्रेजर्स को लगातार रणनीतियों और तकनीकों को अनुकूलित करने, गति और प्रतिक्रियाशीलता में सुधार करने की आवश्यकता होती है, ताकि आर्बिट्रेज अवसरों की निरंतर प्रभावशीलता बनाए रखी जा सके।