
প্রথম নিবন্ধে, আমরা মোটামুটিভাবে পরিচয় করিয়েছি যে কীভাবে লিড-ল্যাগ ঘটনার মাধ্যমে সালিসি পরিচালনা করা যায় এই নিবন্ধটি মূলত এক্সচেঞ্জ জুড়ে “ইট-চলন্ত” সালিশের পরিচয় দেবে। মূল নীতি হল বিভিন্ন এক্সচেঞ্জের মধ্যে প্রাইস ল্যাগ প্রপঞ্চের (লিড-ল্যাগ প্রভাব) সুবিধা নেওয়া কারণ প্রতিটি এক্সচেঞ্জের বাজারের তরলতা, লেনদেনের গতি এবং নেটওয়ার্ক বিলম্ব ভিন্ন, বিভিন্ন এক্সচেঞ্জে একই মুদ্রার দাম প্রায়শই আলাদা হয়। সিঙ্ক্রোনাস সালিশকারীরা এই পিছিয়ে থাকা মূল্য পরিবর্তনের উপর নজরদারি করে দ্রুত সালিশ করতে পারে, যার ফলে ঝুঁকিমুক্ত মুনাফা পাওয়া যায়।
প্রথমত, সালিশকারীদের রিয়েল টাইমে বিভিন্ন এক্সচেঞ্জের মধ্যে মূল্যের পার্থক্য নিরীক্ষণ করতে হবে, বিশেষ করে বিক্রয় মূল্য এবং ক্রয় মূল্য। এক্সচেঞ্জ A এর বিক্রয় মূল্য এবং এক্সচেঞ্জ B এর ক্রয় মূল্য ট্র্যাক করে, যদি এক্সচেঞ্জ A এর বিক্রয় মূল্য এক্সচেঞ্জ B এর ক্রয় মূল্যের চেয়ে কম হয় তবে এটি বিবেচনা করা যেতে পারে যে একটি সালিশের সুযোগ রয়েছে। উদাহরণস্বরূপ, এক্সচেঞ্জ A এর বিক্রয় মূল্য হল 10,000 USDT, বিনিময় B এর ক্রয় মূল্য হল 10,100 USDT এবং মূল্যের পার্থক্য হল 100 USDT এটি একটি সম্ভাব্য সালিশের সুযোগ৷ অবশ্যই, সাম্প্রতিক ঐতিহাসিক স্প্রেড পরিসরটিও একটি রেফারেন্স হিসাবে বিবেচনা করা উচিত যেটি ওপেনিং এবং ক্লোজিং পজিশনগুলিও একটি খরচ।
একবার সালিশের সুযোগ আবিষ্কৃত হলে, সালিসকারীর উচিত কম বিক্রয় মূল্যের (যেমন এক্সচেঞ্জ A) সাথে একটি এক্সচেঞ্জে সম্পদ ক্রয় করা এবং উচ্চ ক্রয় মূল্যের (যেমন এক্সচেঞ্জ বি) সাথে একটি বিনিময়ে বিক্রি করা উচিত। এই ক্রিয়াকলাপটি API এর মাধ্যমে স্বয়ংক্রিয় হতে পারে, দ্রুত সম্পাদন নিশ্চিত করে এবং মূল্যের পার্থক্য সর্বাধিক করে। যাইহোক, লেনদেনের খরচ (যেমন ফি এবং স্লিপেজ) এবং সেইসাথে দামের ধাক্কাগুলি ট্রেড করার সময় অবশ্যই বিবেচনা করা উচিত। অনুমান করুন যে এক্সচেঞ্জ A-এর হ্যান্ডলিং ফি হল 0.1%, যখন এক্সচেঞ্জ B-এর হ্যান্ডলিং ফি হল 0.2%, এবং বাজারে স্লিপেজ রয়েছে৷ উদাহরণস্বরূপ, এক্সচেঞ্জ A-তে 1 বিটকয়েন কেনার সময়, বড় অর্ডারগুলি কার্যকর করার কারণে প্রকৃত লেনদেনের মূল্য বাড়তে পারে অনুমান করুন যে স্লিপেজ 0.1%। তারপরে, প্রকৃত লেনদেনের মূল্য প্রত্যাশিত থেকে 0.1% বেশি হবে, যার ফলে কেনার খরচ বেড়ে যাবে।
যদি স্লিপেজ এবং হ্যান্ডলিং ফি বিবেচনায় নেওয়া হয়, প্রকৃত ক্রয় খরচ এবং বিক্রয় আয় প্রত্যাশার থেকে আলাদা হবে।
সালিশের চূড়ান্ত ধাপ হচ্ছে অবস্থান বন্ধ করা। উদাহরণ স্বরূপ, কিছু সময়ের পর, বিনিময় A এর ক্রয় মূল্য হল 10,100 USDT, এবং বিনিময় B এর বিক্রয় মূল্য হল 10,150 USDT যখন মূল্যের পার্থক্য 100 USDT থেকে 50 USDT পর্যন্ত সংকুচিত হয়, তখন প্রোগ্রামটি স্বয়ংক্রিয়ভাবে অবস্থানটি বন্ধ করে দেবে। লাভ গ্রহণ অবশ্যই, কিছু ক্ষেত্রে, মূল্যের পার্থক্য প্রসারিত হতে পারে এবং তহবিল শেষ না হওয়া পর্যন্ত আপনি পজিশন খোলা চালিয়ে যেতে পারেন। বিনিময়ে মূল্যের পার্থক্য বজায় রাখা যায় না তার কারণ হল সালিশকারীরা তাদের ক্ষমতার সিংহভাগ অবদান রাখে।
বিপুল সংখ্যক সালিশকারী এবং বাজার নির্মাতাদের অস্তিত্বের কারণে, বিভিন্ন এক্সচেঞ্জে দামের পার্থক্য খুব বেশি হবে না, অন্যথায় তারা শীঘ্রই সমান হয়ে যাবে। আরবিট্রেজ ট্রেডিংয়ে এটাই সবচেয়ে বড় সমস্যা।
একটি অর্ডার নিতে ব্যর্থ হওয়া একটি সাধারণ সমস্যা যখন প্রোগ্রামটি মূল্যের পার্থক্য খুঁজে পায় এবং একটি সালিসি আদেশ দেয়, লেনদেনের প্রকৃত মূল্যের পার্থক্য ততটা বড় নয় এবং প্রায়ই একটি ক্ষতি হয়৷ এই সময়ে, দ্রুততম প্রতিক্রিয়া এবং কার্যকর করার গতি অত্যন্ত গুরুত্বপূর্ণ।
সিঙ্গেল-লেগ ট্রেডিং বলতে বোঝায় এক পক্ষের অপারেশন সম্পন্ন হওয়া যখন অন্য পক্ষ লেনদেন সম্পূর্ণ করতে ব্যর্থ হয় তখন এটি সাধারণত ঘটে যখন বাজার দ্রুত ওঠানামা করে। শুধুমাত্র একটি পক্ষের আদেশ সফল হলে, সালিসকারী এক্সপোজার ঝুঁকির সম্মুখীন হবে।
যখন মূল্যের পার্থক্য দীর্ঘ সময়ের জন্য বিদ্যমান থাকে, তখন একটি নির্দিষ্ট এক্সচেঞ্জের সমস্ত তহবিল দ্রুত কেনা হবে এবং সালিসকারীরা সালিসি কার্যক্রম চালিয়ে যেতে সক্ষম নাও হতে পারে। এই সময়ে, সালিসকারীদের দ্রুত তহবিল স্থানান্তর বা অবস্থান সামঞ্জস্য করতে হবে।
কোডটি প্রকৃত কোড নয় এবং শুধুমাত্র প্রদর্শনের উদ্দেশ্যে এটি অবস্থানের সংখ্যা, API অ্যাক্সেস ব্যর্থতা এবং ভুল ব্যবহার, অ্যাসিঙ্ক্রোনাস অর্ডার স্পিডআপ ইত্যাদি বিবেচনা করে না।
// symbol 是套利的交易对,比如 BTC/USDT
let symbol = "BTC_USDT";
exchanges[0].SetCurrency(symbol);
exchanges[0].SetPrecision(2, 4); //设置精度
exchanges[1].SetCurrency(symbol);
exchanges[1].SetPrecision(2, 4);
// 设置手续费、滑点、开仓和平仓的利润率
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));
//容错处理
if(!tickers[1] || !tickers[0]){
return;
}
// 计算套利机会(基于利润率)
// profitAB: 从交易所0买入,从交易所1卖出
const profitAB = (tickers[1].Buy - tickers[0].Sell) / tickers[0].Sell - fee * 2 - slippage * 2;
// profitBA: 从交易所1买入,从交易所0卖出
const profitBA = (tickers[0].Buy - tickers[1].Sell) / tickers[1].Sell - fee * 2 - slippage * 2;
// 打印日志
Log(`Tickers: Exchange0 Buy: ${tickers[0].Sell}, Exchange1 Sell: ${tickers[1].Buy}, Profit AB: ${profitAB} USDT`);
Log(`Tickers: Exchange1 Buy: ${tickers[1].Sell}, Exchange0 Sell: ${tickers[0].Buy}, Profit BA: ${profitBA} USDT`);
// 根据利润判断是否执行套利操作
if (profitAB > entryThreshold) { // 当利润大于开仓阈值时开仓
Log(`套利机会:从交易所0买入BTC,从交易所1卖出,利润:${profitAB} USDT`);
executeArbitrage(0, 1, tickers[0].Sell, tickers[1].Buy, profitAB); // 从交易所0买入并在交易所1卖出
} else if (profitBA > entryThreshold) {
Log(`套利机会:从交易所1买入BTC,从交易所0卖出,利润:${profitBA} USDT`);
executeArbitrage(1, 0, tickers[1].Sell, tickers[0].Buy, profitBA); // 从交易所1买入并在交易所0卖出
} else if (profitAB < exitThreshold) { // 如果价差回归,平仓
Log(`平仓:从交易所0买入并在交易所1卖出的套利机会,利润已回归至平仓阈值`);
closeArbitrage(0, 1, tickers[0].Sell, tickers[1].Buy); // 执行平仓操作
} else if (profitBA < exitThreshold) {
Log(`平仓:从交易所1买入并在交易所0卖出的套利机会,利润已回归至平仓阈值`);
closeArbitrage(1, 0, tickers[1].Sell, tickers[0].Buy); // 执行平仓操作
} 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();
//容错处理
if(!accountBuy || !accountSell){
return;
}
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(buyPrice * (1 + slippage), amount);
// 在卖出交易所下单卖出
Log(`在交易所${sellExchangeIndex} 下单卖出 ${amount} BTC @ ${sellPrice}`);
sellExchange.Sell(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();
//容错处理
if(!accountBuy || !accountSell){
return;
}
let amountBTC = Math.min(accountBuy.Balance / buyPrice, accountSell.Amount);
let amount = Math.min(amountBTC, 0.1);
// 在买入交易所吃单卖出
Log(`在交易所${buyExchangeIndex} 平仓卖出 ${amount} BTC @ ${buyPrice}`);
buyExchange.Sell(buyPrice * (1 - slippage), amount);
// 在卖出交易所吃单买入
Log(`在交易所${sellExchangeIndex} 平仓买入 ${amount} BTC @ ${sellPrice}`);
sellExchange.Buy(sellPrice * (1 + slippage), amount);
}
// 主循环
function main() {
while (true) {
OnTick();
Sleep(1000); // 每秒钟执行一次
}
}
লিড-ল্যাগ সালিসি হল একটি ক্রস-এক্সচেঞ্জ সালিসি কৌশল যা পিছিয়ে থাকা বাজারের প্রতিক্রিয়াগুলির উপর ভিত্তি করে। বাজারে মূল্যের পার্থক্য সঠিকভাবে বিশ্লেষণ করে এবং দ্রুত লেনদেন সম্পাদন করে, সালিশকারীরা ডিজিটাল মুদ্রা বাজারে স্থিতিশীল মুনাফা অর্জন করতে সক্ষম হয়। যাইহোক, এই কৌশলটির সাফল্য শুধুমাত্র কৌশলটির নকশার উপরই নির্ভর করে না, তবে এর জন্য বাজারের সময়ের জন্য ভাল সম্পাদন এবং সংবেদনশীলতা প্রয়োজন। বাজারের প্রতিযোগিতা তীব্র হওয়ার সাথে সাথে সালিসকারীদের ক্রমাগত কৌশল এবং প্রযুক্তিগুলিকে অপ্টিমাইজ করতে হবে এবং সালিশের সুযোগের অব্যাহত কার্যকারিতা বজায় রাখতে গতি এবং প্রতিক্রিয়াশীলতা উন্নত করতে হবে।