ত্রিভুজীয় হেজিং.ipynb
[1]:
var fmz = require("fmz") // Import the talib, TA, and plot libraries automatically after import.
var task = fmz.VCtx({
start: '2019-04-09 17:49:00',
end: '2019-04-09 18:00:00',
period: '1m',
exchanges: [{"eid":"Huobi","currency":"ETH_BTC", "balance":1, "stocks":10},{"eid":"OKEX","currency":"ETH_USDT","balance":10000,"stocks":1}, {"eid":"OKEX","currency":"BTC_USDT","balance":10000,"stocks":1}]
})
প্রাথমিক বিনিময় অ্যাকাউন্টের তথ্য এবং টিকারের প্রদর্শনঃ
[2] এঃ
var accA = exchanges[0].GetAccount()
accA
আউট[2]: { ব্যালেন্স ১, ফ্রিজ ব্যালেন্স ০, স্টক ১০, ফ্রিজ স্টক ০ }
[3] এঃ
var accB = exchanges[1].GetAccount()
accB
আউট[3]: { ব্যালেন্সঃ ১০০০, ফ্রিজেন ব্যালেন্সঃ ০, স্টকঃ ১, ফ্রিজেন স্টকঃ ০ }
[4] এঃ
var accC = exchanges[2].GetAccount()
accC
আউট[4]: { ব্যালেন্সঃ ১০০০, ফ্রিজেন ব্যালেন্সঃ ০, স্টকঃ ১, ফ্রিজেন স্টকঃ ০ }
[5] এঃ
var initSumBTC = accA.Balance + accC.Stocks
initSumBTC
আউট[5]: ২টি
[6] এঃ
var initSumETH = accA.Stocks + accB.Stocks
initSumETH
আউট[6]: ১১
[৭] এঃ
var initSumUSDT = accB.Balance + accC.Balance
initSumUSDT
আউট[7]: ২০০০০
এটা দেখা যায় যে বিটিসির প্রাথমিক মোট সংখ্যা ২, ইটিএইচ এর মোট সংখ্যা ১১ এবং ইউএসডিটি এর মোট সংখ্যা ২০০০০। এখন আসুন প্রতিটি বর্তমান ট্রেডিং জোড়ার টিকার তথ্য পাই।
[8] এঃ
var tickerA = exchanges[0].GetTicker()
tickerA
আউট[8]: { সময়ঃ ১৫৫৪৮৩১৯৬০০০, উচ্চঃ ০.০৩৩৯৬৫০১ নিম্নঃ 0.03396499, বিক্রি করুন: ০.০৩৩৯৬৫০১, কিনুনঃ ০.০৩৩৯৬৪৯৯, সর্বশেষঃ ০.০৩৩৯৬৫, ভলিউমঃ ৪৬৯৬.৫৫৫, ওপেন ইন্টারেস্ট: 0 }
[৯] এঃ
var tickerB = exchanges[1].GetTicker()
tickerB
আউট[9]: { সময়ঃ ১৫৫৪৮৩১৯৬০০০, উচ্চঃ ১৭৫.০৮০০০০০১, সর্বনিম্নঃ ১৭৫.০৭৯৯৯৯৯৯৯, বিক্রি: ১৭৫.০৮০০০০০১, কিনুনঃ ১৭৫.০৭৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯ সর্বশেষঃ ১৭৫.০৮, ভলিউমঃ ২০৭৩০.৩৭, ওপেন ইন্টারেস্ট: 0 }
[১০] এঃ
var tickerC = exchanges[2].GetTicker()
tickerC
আউট[10]: { সময়ঃ ১৫৫৪৮৩১৯৬০০০, উচ্চঃ ৫১৬১,৯০০,০০০১ সর্বনিম্নঃ ৫১৬১.৮৯৯৯৯৯৯৯, বিক্রয়ঃ ৫১৬১.৯০০.০০০০১, কিনুনঃ ৫১৬১.৮৯৯৯৯৯৯৯৯, সর্বশেষঃ ৫১৬১.৯ ভলিউমঃ 2109.9292, ওপেন ইন্টারেস্ট: 0 }
এটি দেখা যায় যে এক্সচেঞ্জ এ, এক্সচেঞ্জ বি এবং লেনদেনের বিষয়বস্তু ইটিএইচ, অর্থাৎ এক্সচেঞ্জ এ / বি পরোক্ষ হেজিং অপারেশন পরিচালনা করতে পারে, তবে তারা সরাসরি হেজিং করতে পারে না কারণ মূল্য নির্ধারণের মুদ্রাগুলি আলাদা। এক্সচেঞ্জ এ এর মূল্য নির্ধারণের মুদ্রা বিটিসি, যখন এক্সচেঞ্জ বি এর ইউএসডিটি।
অনুমান করুন যে এক্সচেঞ্জ A একটি ক্রয় অপারেশন সম্পাদন করেexchanges[0].Buy(price, amount)
, এবং বিপরীত পক্ষের দ্বারা বিক্রি মূল্য ক্রয়ের সময় অর্ডার মূল্য হিসাবে ব্যবহার করা হয়, অর্থাৎ,tickerA.Sell
এক্সচেঞ্জ বি হিজিংয়ের জন্য একটি বিক্রয় অপারেশন সম্পাদন করে, অর্থাৎexchanges[1].Sell(price, amount)
, এবং যে মূল্যটি বিপরীত পক্ষ কিনতে চায় তা বিক্রির সময় অর্ডার মূল্য হিসাবে ব্যবহৃত হয়, অর্থাৎ,tickerB.Buy
কারণ বিনিময় A খরচBTC
যখন কিনতে, এবং বিনিময় বি প্রাপ্ত USDT যখন বিক্রি, বিনিময় এ প্রতিস্থাপন করতে হবেUSDT
বিটিসি দিয়ে এক্সচেঞ্জ এ, অর্থাৎ এক্সচেঞ্জ সি দ্বারা ব্যবহৃত বিটিসির জন্যexchanges[2].Buy(price, amount)
, এবং বিনিময়USDT
সঙ্গেBTC
. ক্রয় করার জন্য, এক্সচেঞ্জ সি এর বিপরীত পক্ষের বিক্রয় মূল্য দেখতে হবে, অর্থাৎ,tickerC.Sell
. এক্সচেঞ্জ A এর ক্রয়মূল্য এক্সচেঞ্জ B এর বিক্রয়মূল্যের চেয়ে কম হতে হবে, তাহলে এক্সচেঞ্জ C কম USDT দিয়ে এক্সচেঞ্জ A দ্বারা ব্যবহৃত BTC ফেরত কিনতে পারে। আপনি USDT পরিমাণের পার্থক্য উপার্জন করবেন।
সুতরাং এটা নিম্নরূপঃ
[11] এঃ
var diffB2A = tickerA.Sell - tickerB.Buy / tickerC.Sell // diffB2A means that Exchange B sells ETH coins and Exchange A buys ETH coins, which is logically equivalent to the transfer of ETH from Exchange B to Exchange A.
diffB2A
আউট[11]: 0.000047266535449966285
স্পষ্টতই, এক্সচেঞ্জ এ এর ক্রয় মূল্য এক্সচেঞ্জ বি এবং এক্সচেঞ্জ সি এর চেয়ে বেশি, এবং হেজিং স্পষ্টতই অর্থ হারাচ্ছে। অন্য হেজিং দিকটি একই। এক্সচেঞ্জ এ ইটিএইচ বিক্রয় অপারেশন সম্পাদন করে, এক্সচেঞ্জ বি ইটিএইচ ক্রয় অপারেশন সম্পাদন করে এবং এক্সচেঞ্জ সি ইউএসডিটি এর জন্য বিটিসি বিক্রি করে। মুদ্রা অর্জন সর্বদা ভারসাম্যপূর্ণ, এবং কেবল ইউএসডিটি বৃদ্ধি বা হ্রাস পায় (যেমন উপার্জিত পার্থক্য) ।
[১২] এঃ
var diffA2B = tickerA.Buy - tickerB.Sell / tickerC.Buy
diffA2B
আউট[১২]: 0.000047246531444007644
আসুন একটিtickerA.Buy - tickerB.Sell / tickerC.Buy
প্রতিটি মানের পরিবর্তন কিভাবে খুঁজে বের করার জন্য hedging অপারেশন।
[13] এঃ
var idA = exchanges[0].Sell(tickerA.Buy, 1)
var nowAccA = exchanges[0].GetAccount()
nowAccA // We can see that the fee is deducted from the BTC.
আউট[১৩]: { ব্যালেন্সঃ ১.০৩৩৮৯৭০৬, ফ্রিজেন ব্যালেন্সঃ 0, স্টকঃ ৯টি। ফ্রিজেন স্টকস: 0 }
[14] এঃ
var orderA = exchanges[0].GetOrder(idA)
orderA
আউট[14]:
{ আইডিঃ ১,
দামঃ ০.০৩৩৯৬৪৯৯,
পরিমাণঃ ১,
লেনদেনের পরিমাণঃ ১
গড় মূল্যঃ 0.03396499,
টাইপঃ ১,
অফসেটঃ ০
অবস্থাঃ ১,
চুক্তির ধরনঃ
[15] এঃ
var feeRatioA = 0.002 // The default fee for backtesting is 0.2%, i.e. 0.002.
var feeA = orderA.DealAmount * orderA.AvgPrice * feeRatioA // Exchange A trading fees, BTC denominated.
feeA
আউট[15]: 0.00006792998000000001
[১৬] এঃ
var idB = exchanges[1].Buy(tickerB.Sell, 1)
var nowAccB = exchanges[1].GetAccount()
nowAccB
আউট[16]: { ব্যালেন্স: ৯৮২৪.৫৬৯৮৩৯৯৮, ফ্রিজেন ব্যালেন্সঃ ০ স্টকঃ ২টি। ফ্রোজেন স্টকস: 0 }
[17] এঃ
var orderB = exchanges[1].GetOrder(idB)
orderB // We can see that the fee is deducted from the USDT.
আউট[17]:
{ আইডিঃ ১,
দাম: ১৭৫.০৮০০০০০১।
পরিমাণঃ ১টি।
লেনদেনের পরিমাণঃ ১টি।
গড় মূল্যঃ ১৭৫.০৮০০০০০১।
প্রকারঃ ০
অফসেটঃ ০
অবস্থাঃ ১,
ContractType:
[18] এঃ
var feeRatioB = 0.002
var feeB = orderB.DealAmount * orderB.AvgPrice * feeRatioB / tickerC.Last // B exchange fees, converted to BTC denomination.
feeB
আউট[18]: 0.00006783548693698057
[19] এঃ
var idC = exchanges[2].Sell(tickerC.Buy, nowAccA.Balance - accA.Balance)
var nowAccC = exchanges[2].GetAccount()
nowAccC
আউট[19]: { ব্যালেন্স: ১০১৭৪.১২৩২৭৫৫৫, ফ্রিজেন ব্যালেন্সঃ ০ স্টকঃ ০.৯৬৬২, ফ্রোজেন স্টকস: 0 }
[২০] এঃ
var orderC = exchanges[2].GetOrder(idC)
orderC // We can see that the fee is deducted from the USDT.
আউট[20]:
{ আইডিঃ ১,
দামঃ ৫১৬১.৮৯৯৯৯৯৯৯৯,
পরিমাণঃ ০.০৩৩৮,
লেনদেনের পরিমাণঃ ০.০৩৩৮,
গড় মূল্যঃ ৫১৬১.৮৯৯৯৯৯৯৯৯,
টাইপঃ ১,
অফসেটঃ ০
অবস্থাঃ ১,
চুক্তির ধরনঃ
[২১] এঃ
var feeRatioC = 0.002
var feeC = orderC.DealAmount * orderC.AvgPrice * feeRatioC / tickerC.Last // Fees for C exchange transactions, BTC denominated.
feeC
আউট[21]: ০.০০৬৭৫৯৯৯৯৯৯৯৮৬৯০৩
হিজিংয়ের পর মোট সম্পদ তথ্য গণনা করুনঃ
[22]-এঃ
var nowSumBTC = nowAccA.Balance + nowAccC.Stocks
nowSumBTC
আউট[22]: ২.০০৯৭০৬
[২৩] এঃ
var nowSumETH = nowAccA.Stocks + nowAccB.Stocks
nowSumETH
আউট[23]: ১১
[২৪] এঃ
var nowSumUSDT = nowAccB.Balance + nowAccC.Balance
nowSumUSDT
আউট[২৪]: 19998.69311553
[২৫] এঃ
nowSumBTC - initSumBTC
আউট[২৫]: 0.00009705999999987114
[২৬] এঃ
tickerC.Buy * (nowSumBTC - initSumBTC) // Excess BTC converted to USDT
আউট[২৬]: ০.৫০১০১৪০১৩১৩৯৯৮৩৬৪২
[২৭] এঃ
nowSumUSDT + tickerC.Buy * (nowSumBTC - initSumBTC) - initSumUSDT // Profit and loss are calculated based on the movement of the account assets and both are denominated in USDT.
আউট[২৭]: - ০.৮০৫৮৭০৪৫৬০০২৫৯৪৪
[২৮] এঃ
(diffA2B - (feeA + feeB + feeC)) * tickerC.Buy // Profit and loss based on price difference, denominated in USDT.
আউট[২৮]: -0.8058703331189396
যেমনটি আমরা দেখতে পাচ্ছি, হিজিংয়ের সময় দামের পার্থক্যটি diffA2B: 0.000047246531444007644 । বিটিসিতে রূপান্তরিত তিনটি হেজিংয়ের জন্য ফি হলঃ feeA + feeB + feeC।
[২৯] এঃ
feeA + feeB + feeC
আউট[29]: 0.0002033654669368496
এটা দেখা যায় যে এই ধরনের ত্রিভুজ হিজিংয়ের জন্য, দামের পার্থক্যের চেয়ে বেশি হতে হবেfeeA+feeB+feeC
কমপক্ষে, যার মানে কোন ক্ষতি নেই, কোন লাভ নেই, এবং মুনাফা করতে হলে দামের পার্থক্যের চেয়ে বড় হতে হবে।
বর্তমানে, হিসাব তুলনা গণনা এবং মূল্য পার্থক্য গণনা দ্বারা, এটি একটি ক্ষতি। ক্ষতি প্রায় -0.8058704560025944।
আমি একটি সংস্করণ সংশোধন করেছি, যাতে হ্যান্ডলিং ফি প্যারামিটার দ্বারা গণনা করা হ্যান্ডলিং ফি ঠিক এই তুলনামূলক পর্যবেক্ষণের জন্য এই মডেল দ্বারা পরীক্ষিত বাজারের মূল্য পার্থক্য লাভের সমান হয়।
এটি দেখা যায় যে হ্যান্ডলিং ফিগুলির ডিফল্ট শর্তে (ডিফল্টরূপে ২ ‰), যখন হেজিং পার্থক্যটি 0.000047246531444007644 বিটিসি হয়, তখন হেজিংটি একটি ক্ষতি এবং ক্ষতি প্রায় -0.8058704560025944 হয়।
ত্রিভুজীয় হিজিং (হ্যান্ডলিং ফি সামঞ্জস্য করা) । ipynb
[1]:
var fmz = require("fmz") // Import talib, TA, plot libraries automatically after introduction.
var task = fmz.VCtx({
start: '2019-04-09 17:49:00',
end: '2019-04-09 18:00:00',
period: '1m',
exchanges: [{"eid":"Huobi","currency":"ETH_BTC", "balance":1, "stocks":10,"fee":[0.04,0.04]},{"eid":"OKEX","currency":"ETH_USDT","balance":10000,"stocks":1,"fee":[0.04,0.04]}, {"eid":"OKEX","currency":"BTC_USDT","balance":10000,"stocks":1,"fee":[0.04,0.04]}]
})
প্রাথমিক বিনিময় অ্যাকাউন্টের তথ্য এবং টিকার প্রদর্শন করা হবেঃ
[2] এঃ
var accA = exchanges[0].GetAccount()
accA
আউট[2]: { ব্যালেন্স ১, ফ্রিজ ব্যালেন্স ০, স্টক ১০, ফ্রিজ স্টক ০ }
[3] এঃ
var accB = exchanges[1].GetAccount()
accB
আউট[3]: { ব্যালেন্সঃ ১০০০, ফ্রিজেন ব্যালেন্সঃ ০, স্টকঃ ১, ফ্রিজেন স্টকঃ ০ }
[4] এঃ
var accC = exchanges[2].GetAccount()
accC
আউট[4]: { ব্যালেন্সঃ ১০০০, ফ্রিজেন ব্যালেন্সঃ ০, স্টকঃ ১, ফ্রিজেন স্টকঃ ০ }
[5] এঃ
var initSumBTC = accA.Balance + accC.Stocks
initSumBTC
আউট[5]: ২টি
[6] এঃ
var initSumETH = accA.Stocks + accB.Stocks
initSumETH
আউট[6]: ১১
[৭] এঃ
var initSumUSDT = accB.Balance + accC.Balance
initSumUSDT
আউট[7]: ২০০০০
এটা দেখা যায় যে বিটিসির প্রাথমিক মোট সংখ্যা ২, ইটিএইচ এর মোট সংখ্যা ১১ এবং ইউএসডিটি এর মোট সংখ্যা ২০০০০। এখন আসুন প্রতিটি বর্তমান ট্রেডিং জোড়ার টিকার তথ্য পাই।
[8] এঃ
var tickerA = exchanges[0].GetTicker()
tickerA
আউট[8]: { সময়ঃ ১৫৫৪৮৩১৯৬০০০, উচ্চঃ ০.০৩৩৯৬৫০১ নিম্নঃ 0.03396499, বিক্রি করুন: ০.০৩৩৯৬৫০১, কিনুনঃ ০.০৩৩৯৬৪৯৯, সর্বশেষঃ ০.০৩৩৯৬৫, ভলিউমঃ ৪৬৯৬.৫৫৫, ওপেন ইন্টারেস্ট: 0 }
[৯] এঃ
var tickerB = exchanges[1].GetTicker()
tickerB
আউট[9]: { সময়ঃ ১৫৫৪৮৩১৯৬০০০, উচ্চঃ ১৭৫.০৮০০০০০১, সর্বনিম্নঃ ১৭৫.০৭৯৯৯৯৯৯৯, বিক্রি: ১৭৫.০৮০০০০০১, কিনুনঃ ১৭৫.০৭৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯৯ সর্বশেষঃ ১৭৫.০৮, ভলিউমঃ ২০৭৩০.৩৭, ওপেন ইন্টারেস্ট: 0 }
[১০] এঃ
var tickerC = exchanges[2].GetTicker()
tickerC
আউট[10]: { সময়ঃ ১৫৫৪৮৩১৯৬০০০, উচ্চঃ ৫১৬১,৯০০,০০০১ সর্বনিম্নঃ ৫১৬১.৮৯৯৯৯৯৯৯, বিক্রয়ঃ ৫১৬১.৯০০.০০০০১, কিনুনঃ ৫১৬১.৮৯৯৯৯৯৯৯৯, সর্বশেষঃ ৫১৬১.৯ ভলিউমঃ 2109.9292, ওপেন ইন্টারেস্ট: 0 }
এটি দেখা যায় যে এক্সচেঞ্জ এ, এক্সচেঞ্জ বি এবং লেনদেনের বিষয়বস্তু ইটিএইচ, অর্থাৎ এক্সচেঞ্জ এ / বি পরোক্ষ হেজিং অপারেশন পরিচালনা করতে পারে, তবে তারা সরাসরি হেজিং করতে পারে না কারণ মূল্য নির্ধারণের মুদ্রাগুলি আলাদা। এক্সচেঞ্জ এ এর মূল্য নির্ধারণের মুদ্রা বিটিসি, যখন এক্সচেঞ্জ বি এর ইউএসডিটি।
অনুমান করুন যে এক্সচেঞ্জ A একটি ক্রয় অপারেশন সম্পাদন করেexchanges[0].Buy(price, amount)
, এবং বিপরীত পক্ষের দ্বারা বিক্রি মূল্য ক্রয়ের সময় অর্ডার মূল্য হিসাবে ব্যবহার করা হয়, অর্থাৎ,tickerA.Sell
এক্সচেঞ্জ বি হিজিংয়ের জন্য একটি বিক্রয় অপারেশন সম্পাদন করে, অর্থাৎexchanges[1].Sell(price, amount)
, এবং যে মূল্যটি বিপরীত পক্ষ কিনতে চায় তা বিক্রির সময় অর্ডার মূল্য হিসাবে ব্যবহৃত হয়, অর্থাৎ,tickerB.Buy
কারণ বিনিময় A খরচBTC
যখন কিনতে, এবং বিনিময় বি প্রাপ্ত USDT যখন বিক্রি, বিনিময় এ প্রতিস্থাপন করতে হবেUSDT
বিটিসি দিয়ে এক্সচেঞ্জ এ, অর্থাৎ এক্সচেঞ্জ সি দ্বারা ব্যবহৃত বিটিসির জন্যexchanges[2].Buy(price, amount)
, এবং বিনিময়USDT
সঙ্গেBTC
. ক্রয় করার জন্য, এক্সচেঞ্জ সি এর বিপরীত পক্ষের বিক্রয় মূল্য দেখতে হবে, অর্থাৎ,tickerC.Sell
. এক্সচেঞ্জ A এর ক্রয়মূল্য এক্সচেঞ্জ B এর বিক্রয়মূল্যের চেয়ে কম হতে হবে, তাহলে এক্সচেঞ্জ C কম USDT দিয়ে এক্সচেঞ্জ A দ্বারা ব্যবহৃত BTC ফেরত কিনতে পারে। আপনি USDT পরিমাণের পার্থক্য উপার্জন করবেন।
সুতরাং এটা নিম্নরূপঃ
[11] এঃ
var diffB2A = tickerA.Sell - tickerB.Buy / tickerC.Sell // DiffB2A means that Exchange B sells ETH coins and Exchange A buys ETH coins, which is logically equivalent to the transfer of ETH from Exchange B to Exchange A.
diffB2A
আউট[11]: 0.000047266535449966285
স্পষ্টতই, এক্সচেঞ্জ এ এর ক্রয় মূল্য এক্সচেঞ্জ বি এবং এক্সচেঞ্জ সি এর চেয়ে বেশি, এবং হেজিং স্পষ্টতই অর্থ হারাচ্ছে। অন্য হেজিং দিকটি একই। এক্সচেঞ্জ এ ইটিএইচ বিক্রয় অপারেশন সম্পাদন করে, এক্সচেঞ্জ বি ইটিএইচ ক্রয় অপারেশন সম্পাদন করে এবং এক্সচেঞ্জ সি ইউএসডিটি এর জন্য বিটিসি বিক্রি করে। মুদ্রা অর্জন সর্বদা ভারসাম্যপূর্ণ, এবং কেবল ইউএসডিটি বৃদ্ধি বা হ্রাস পায় (যেমন উপার্জিত পার্থক্য) ।
[১২] এঃ
var diffA2B = tickerA.Buy - tickerB.Sell / tickerC.Buy
diffA2B
আউট[১২]: 0.000047246531444007644
আসুন একটিtickerA.Buy - tickerB.Sell / tickerC.Buy
প্রতিটি মানের পরিবর্তন কিভাবে খুঁজে বের করার জন্য hedging অপারেশন।
[13] এঃ
var idA = exchanges[0].Sell(tickerA.Buy, 1)
var nowAccA = exchanges[0].GetAccount()
nowAccA // We can see that the handling fee is deducted from the BTC.
আউট[১৩]: { ব্যালেন্সঃ ১.০৩৩.৯৫১৪, ফ্রিজেন ব্যালেন্সঃ 0, স্টকঃ ৯টি। ফ্রিজেন স্টকস: 0 }
[14] এঃ
var orderA = exchanges[0].GetOrder(idA)
orderA
আউট[14]:
{ আইডিঃ ১,
দামঃ ০.০৩৩৯৬৪৯৯,
পরিমাণঃ ১,
লেনদেনের পরিমাণঃ ১
গড় মূল্যঃ 0.03396499,
টাইপঃ ১,
অফসেটঃ ০
অবস্থাঃ ১,
চুক্তির ধরনঃ
[15] এঃ
var feeRatioA = 0.0004 // The default handling fee for backtesting is 0.2%, i.e. 0.002.
var feeA = orderA.DealAmount * orderA.AvgPrice * feeRatioA // Exchange A trading handling fees, BTC denominated.
feeA
আউট[15]: 0.000013585996
[১৬] এঃ
var idB = exchanges[1].Buy(tickerB.Sell, 1)
var nowAccB = exchanges[1].GetAccount()
nowAccB
আউট[16]: { ব্যালেন্স: ৯৮২৪৮৪৯৬৭৯৮, ফ্রিজেন ব্যালেন্সঃ 0, মজুদঃ ২টি। ফ্রিজেন স্টকস: 0 }
[17] এঃ
var orderB = exchanges[1].GetOrder(idB)
orderB // We can see that the handling fee is deducted from the USDT.
আউট[17]:
{ আইডিঃ ১,
দাম: ১৭৫.০৮০০০০০১।
পরিমাণঃ ১টি।
লেনদেনের পরিমাণঃ ১টি।
গড় মূল্যঃ ১৭৫.০৮০০০০০১।
প্রকারঃ ০
অফসেটঃ ০
অবস্থাঃ ১,
ContractType:
[18] এঃ
var feeRatioB = 0.0004
var feeB = orderB.DealAmount * orderB.AvgPrice * feeRatioB / tickerC.Last // Exchange B handling fees, converted to BTC denomination.
feeB
আউট[18]: 0.000013567097387396117
[19] এঃ
var idC = exchanges[2].Sell(tickerC.Buy, nowAccA.Balance - accA.Balance)
var nowAccC = exchanges[2].GetAccount()
nowAccC
আউট[19]: { ব্যালেন্স: ১০১৭৪.৯১৮৪১৪৬৩, ফ্রিজেন ব্যালেন্সঃ 0, স্টকঃ ০.৯৬৬১, ফ্রিজেন স্টকস: 0 }
[২০] এঃ
var orderC = exchanges[2].GetOrder(idC)
orderC // We can see that the handling fee is deducted from the USDT.
আউট[20]:
{ আইডিঃ ১,
দামঃ ৫১৬১.৮৯৯৯৯৯৯৯৯,
পরিমাণঃ ০.০৩৩৯,
লেনদেনের পরিমাণঃ ০.০৩৩৯,
গড় মূল্যঃ ৫১৬১.৮৯৯৯৯৯৯৯৯,
টাইপঃ ১,
অফসেটঃ ০
অবস্থাঃ ১,
চুক্তির ধরনঃ
[২১] এঃ
var feeRatioC = 0.0004
var feeC = orderC.DealAmount * orderC.AvgPrice * feeRatioC / tickerC.Last // Exchange C trading handling fees, BTC denominated.
feeC
আউট[21]: 0.000013559999999973732
হিজিংয়ের পর মোট সম্পদ তথ্য গণনা করুন।
[22]-এঃ
var nowSumBTC = nowAccA.Balance + nowAccC.Stocks
nowSumBTC
আউট[22]: ২.০০৫১৪০০০০০০০০৩
[২৩] এঃ
var nowSumETH = nowAccA.Stocks + nowAccB.Stocks
nowSumETH
আউট[23]: ১১
[২৪] এঃ
var nowSumUSDT = nowAccB.Balance + nowAccC.Balance
nowSumUSDT
আউট[২৪]: 19999.76838261
[২৫] এঃ
nowSumBTC - initSumBTC
আউট[২৫]: 0.000051400000000256796
[২৬] এঃ
tickerC.Buy * (nowSumBTC - initSumBTC) // The extra BTC is converted to USDT.
আউট[২৬]: 0.26532166000081153
[২৭] এঃ
nowSumUSDT + tickerC.Buy * (nowSumBTC - initSumBTC) - initSumUSDT // Profit and loss is calculated based on the changes of the account assets and is denominated in USDT.
আউট[২৭]: 0.0337042700011807
[২৮] এঃ
(diffA2B - (feeA + feeB + feeC)) * tickerC.Buy // Profit and loss based on price difference, denominated in USDT.
আউট[২৮]: 0.03372495390449328
এটা দেখা যায় যে হিজিংয়ের সময় দামের পার্থক্য হলdiffA2B
: 0.000047246531444007644.
তিনটি হেজিংয়ের জন্য হ্যান্ডলিং ফি বিটিসিতে রূপান্তরিত হয়ঃfeeA+feeB+feeC
.
[২৯] এঃ
feeA + feeB + feeC
আউট[29]: 0.00004071309338736985
এটা দেখা যায় যে ব্যাকটেস্ট কনফিগারেশনে, হ্যান্ডলিং ফি পরিবর্তন করা হয়"fee":[0.04,0.04]
, অর্থাৎ, ০.০৪%। এই সময়ে,feeA+feeB+feeC
হিজিংয়ের সময় মূলত মূল্য পার্থক্য diffA2B এর কাছাকাছি 0.00004071309338736985 এর সমান। অবশেষে, গণনা করা মুনাফা এবং ক্ষতি খুব ছোট, মাত্র 0.03372495390449328, এবং অ্যাকাউন্ট পরিবর্তনের মাধ্যমে গণনা করা মুনাফা এবং ক্ষতি মূলত মূল্য পার্থক্যের মাধ্যমে গণনা করা একই। এই গবেষণা নথিটি ত্রিভুজ হেজিংয়ের জন্য কতটা পার্থক্য হিজিং করা যায় তা গণনা করতে ব্যবহার করা যেতে পারে।