حکمت عملی ڈیزائننگ میں ابتدائی افراد کے لئے ، ہیجنگ حکمت عملی مشق کے لئے بہت اچھی ہے۔ یہ مضمون ایک آسان لیکن ٹھوس کریپٹوکرنسی اسپاٹ ہیجنگ حکمت عملی کو نافذ کرتا ہے ، جس کی امید ہے کہ ابتدائی افراد کو ڈیزائن کا کچھ تجربہ سیکھنے کی اجازت ملے گی۔
سب سے پہلے ، ہمیں اس بات کو یقینی بنانے کی ضرورت ہے کہ جو حکمت عملی ڈیزائن کی جائے وہ ایک کریپٹوکرنسی اسپاٹ ہیجنگ حکمت عملی ہے۔ ہم سب سے آسان ہیج ڈیزائن کرتے ہیں۔ ہم صرف دو اسپاٹ پلیٹ فارمز کے مابین اعلی قیمت والے پلیٹ فارم پر فروخت کرتے ہیں ، اور قیمت پھیلاؤ حاصل کرنے کے لئے کم قیمت والے پلیٹ فارم پر خریدتے ہیں۔ جب اعلی قیمت والے پلیٹ فارم میں کوٹ کرنسی کی علامتیں بھری ہوتی ہیں (کیونکہ قیمت زیادہ ہے ، تمام کرنسی کی علامتیں فروخت کی جاتی ہیں) ، یا جب کم قیمت والے پلیٹ فارم میں کرنسی کی علامتیں بھری ہوتی ہیں (کیونکہ قیمت کم ہے ، کرنسی کی علامتیں تمام اثاثوں کے ذریعہ خریدی جاتی ہیں) ، تو اسے ہیج نہیں کیا جاسکتا ہے۔ اس وقت ، آپ صرف قیمت کو ہیج کرنے کے لئے الٹ جانے کا انتظار کرسکتے ہیں۔
ہیجنگ کے دوران آرڈر کی قیمت اور رقم کے ل every ، ہر پلیٹ فارم میں صحت سے متعلق حدود ہیں ، اور کم سے کم آرڈر کی رقم پر بھی ایک حد ہے۔ کم سے کم حد کے علاوہ ، حکمت عملی کو ہیج کے لئے زیادہ سے زیادہ آرڈر کی رقم پر بھی غور کرنے کی ضرورت ہے۔ اگر آرڈر کی رقم بہت زیادہ ہے تو ، مارکیٹ میں اس کے لئے کافی آرڈر کا حجم نہیں ہوگا۔ اگر دونوں پلیٹ فارمز میں مختلف کوٹ کرنسیاں ہیں تو زر مبادلہ کی شرح کو تبدیل کرنے کا طریقہ بھی غور کرنا ضروری ہے۔ ہیجنگ کے دوران ہینڈلنگ فیس اور آرڈر لینے والے کی پھسلن سبھی تجارتی اخراجات ہیں۔ جب تک قیمت میں فرق ہوتا ہے تب تک ہیج ہمیشہ نہیں ہوتا ہے۔ لہذا ، ہیجنگ قیمت اسپریڈ کی ٹرگر ویلیو بھی ہوتی ہے۔ اگر یہ ایک خاص قیمت اسپریڈ سے کم ہے تو ، ہیج نقصان کرے گا۔
اس کی بنیاد پر، حکمت عملی کو کئی پیرامیٹرز کے ساتھ ڈیزائن کرنے کی ضرورت ہے:
hedgeDiffPrice
جب پھیلاؤ قیمت سے زیادہ ہو جائے گا تو ایک ہیجنگ شروع ہو جائے گا.minHedgeAmount
، ایک ہیج کے لئے دستیاب کم سے کم آرڈر کی رقم (علامت کی رقم) ۔maxHedgeAmount
، ایک ہیج کے لئے دستیاب زیادہ سے زیادہ آرڈر کی رقم (علامت کی رقم) ۔pricePrecisionA
، پلیٹ فارم اے کی آرڈر کی قیمت کی درستگی (عشری ہندسوں) ۔amountPrecisionA
، پلیٹ فارم A کے آرڈر کی رقم کی درستگی (عشری ہندسوں)pricePrecisionB
، پلیٹ فارم بی کی آرڈر کی قیمت کی درستگی (عشری ہندسوں) ۔amountPrecisionB
، پلیٹ فارم بی کے آرڈر کی رقم کی درستگی (عشری ہندسوں)rateA
، پہلی اضافی تبادلہ شے کی شرح تبادلہ تبدیل کرنا۔ ڈیفالٹ 1 ہے ، جس سے تبادلہ نہیں ہونا چاہئے۔rateB
، دوسری اضافی تبادلہ شے کی زر مبادلہ کی شرح تبدیل کرنا۔ ڈیفالٹ 1 ہے ، جس سے پتہ چلتا ہے کہ تبدیل نہیں کیا جائے گا۔ہیج کی حکمت عملی کو دو اکاؤنٹس کی کرنسی کی علامت کی رقم کو برقرار رکھنے کی ضرورت ہے (یعنی ، کسی بھی سمت کی پوزیشنوں کو برقرار نہیں رکھنا ، اور غیر جانبدار رکھنا) ، لہذا حکمت عملی میں توازن کی منطق کی ضرورت ہے تاکہ توازن کو ہمیشہ معلوم کیا جاسکے۔ توازن کی جانچ پڑتال کرتے وقت ، دونوں پلیٹ فارمز سے اثاثہ جات کا ڈیٹا حاصل کرنا ناگزیر ہے۔ لہذا ، ہمیں استعمال کے لئے ایک فنکشن لکھنے کی ضرورت ہے۔
function updateAccs(arrEx) {
var ret = []
for (var i = 0 ; i < arrEx.length ; i++) {
var acc = arrEx[i].GetAccount()
if (!acc) {
return null
}
ret.push(acc)
}
return ret
}
آرڈر دینے کے بعد ، اگر کوئی عملدرآمد شدہ آرڈر نہیں ہے تو ، ہمیں اسے وقت پر منسوخ کرنے کی ضرورت ہے ، اور آرڈر کو زیر التواء نہیں رکھا جاسکتا ہے۔ اس آپریشن کو بیلنس ماڈیول اور ہیج منطق دونوں میں عملدرآمد کرنے کی ضرورت ہے ، لہذا تمام آرڈرز کو منسوخ کرنے کا فنکشن بھی ڈیزائن کرنا ضروری ہے۔
function cancelAll() {
_.each(exchanges, function(ex) {
while (true) {
var orders = _C(ex.GetOrders)
if (orders.length == 0) {
break
}
for (var i = 0 ; i < orders.length ; i++) {
ex.CancelOrder(orders[i].Id, orders[i])
Sleep(500)
}
}
})
}
جب ہم کرنسی کی علامتوں کی مقدار کو متوازن کرتے ہیں، تو ہمیں ایک خاص مقدار میں ایک خاص گہرائی کے اعداد و شمار میں قیمت تلاش کرنے کی ضرورت ہے، لہذا ہمیں اس طرح کے فنکشن کی ضرورت ہے.
function getDepthPrice(depth, side, amount) {
var arr = depth[side]
var sum = 0
var price = null
for (var i = 0 ; i < arr.length ; i++) {
var ele = arr[i]
sum += ele.Amount
if (sum >= amount) {
price = ele.Price
break
}
}
return price
}
پھر ہمیں مخصوص ہیجنگ آرڈر آپریشن کو ڈیزائن اور لکھنے کی ضرورت ہے، جو بیک وقت احکامات رکھنے کے لئے ڈیزائن کیا جانا چاہئے:
function hedge(buyEx, sellEx, price, amount) {
var buyRoutine = buyEx.Go("Buy", price, amount)
var sellRoutine = sellEx.Go("Sell", price, amount)
Sleep(500)
buyRoutine.wait()
sellRoutine.wait()
}
آخر میں، ہم توازن فنکشن کے ڈیزائن کو مکمل کرتے ہیں، جو تھوڑا سا زیادہ پیچیدہ ہے.
function keepBalance(initAccs, nowAccs, depths) {
var initSumStocks = 0
var nowSumStocks = 0
_.each(initAccs, function(acc) {
initSumStocks += acc.Stocks + acc.FrozenStocks
})
_.each(nowAccs, function(acc) {
nowSumStocks += acc.Stocks + acc.FrozenStocks
})
var diff = nowSumStocks - initSumStocks
// calculate currency spread
if (Math.abs(diff) > minHedgeAmount && initAccs.length == nowAccs.length && nowAccs.length == depths.length) {
var index = -1
var available = []
var side = diff > 0 ? "Bids" : "Asks"
for (var i = 0 ; i < nowAccs.length ; i++) {
var price = getDepthPrice(depths[i], side, Math.abs(diff))
if (side == "Bids" && nowAccs[i].Stocks > Math.abs(diff)) {
available.push(i)
} else if (price && nowAccs[i].Balance / price > Math.abs(diff)) {
available.push(i)
}
}
for (var i = 0 ; i < available.length ; i++) {
if (index == -1) {
index = available[i]
} else {
var priceIndex = getDepthPrice(depths[index], side, Math.abs(diff))
var priceI = getDepthPrice(depths[available[i]], side, Math.abs(diff))
if (side == "Bids" && priceIndex && priceI && priceI > priceIndex) {
index = available[i]
} else if (priceIndex && priceI && priceI < priceIndex) {
index = available[i]
}
}
}
if (index == -1) {
Log("cannot balance")
} else {
// balanced ordering
var price = getDepthPrice(depths[index], side, Math.abs(diff))
if (price) {
var tradeFunc = side == "Bids" ? exchanges[index].Sell : exchanges[index].Buy
tradeFunc(price, Math.abs(diff))
} else {
Log("invalid price", price)
}
}
return false
} else if (!(initAccs.length == nowAccs.length && nowAccs.length == depths.length)) {
Log("error:", "initAccs.length:", initAccs.length, "nowAccs.length:", nowAccs.length, "depths.length:", depths.length)
return true
} else {
return true
}
}
ان افعال کو حکمت عملی کی ضروریات کے مطابق ڈیزائن کیا گیا ہے، اور ہم حکمت عملی کے اہم افعال کو ڈیزائن کرنا شروع کر سکتے ہیں۔
ایف ایم زیڈ پر، حکمت عملیmain
فنکشن.main
فنکشن، ہم حکمت عملی کے کچھ initialization کرنے کی ضرورت ہے.
تبادلہ آبجیکٹ کا نام حکمت عملی میں بہت سے کارروائیوں کے لئے تبادلہ اشیاء کا استعمال کرتے ہیں، جیسے مارکیٹ کی قیمتوں کا تعین حاصل کرنا، احکامات کی جگہ، اور اسی طرح، لہذا یہ ہر بار ایک طویل نام استعمال کرنے کے لئے تکلیف دہ ہو جائے گا، میری چھوٹی سی چال اس کی بجائے ایک سادہ مختصر نام استعمال کرنے کے لئے ہے، مثال کے طور پر:
var exA = exchanges[0]
var exB = exchanges[1]
پھر، یہ بعد میں کوڈ لکھنے کے لئے زیادہ آرام دہ ہو جائے گا.
زر مبادلہ کی شرح اور درستگی
// settings of precision and exchange rate
if (rateA != 1) {
// set exchange rate A
exA.SetRate(rateA)
Log("Platform A sets exchange rate:", rateA, "#FF0000")
}
if (rateB != 1) {
// set exchange rate B
exB.SetRate(rateB)
Log("Platform B sets exchange rate:", rateB, "#FF0000")
}
exA.SetPrecision(pricePrecisionA, amountPrecisionA)
exB.SetPrecision(pricePrecisionB, amountPrecisionB)
اگر زر مبادلہ کی شرح کے پیرامیٹرز میں سے ایک، یعنیrateA
اورrateB
، 1 پر مقرر کیا جاتا ہے (ڈیفالٹ 1 ہے) ، یعنی،rateA != 1
یاrateB != 1
کا مطلب یہ ہے کہ اس کا استعمال نہیں کیا گیا ہے، اور اس کی شرح تبادلہ تبدیل نہیں کی جا سکتی۔
تمام تاریخوں کو ری سیٹ کریں
کبھی کبھی، یہ ضروری ہے کہ تمام نوشتہ جات کو حذف کریں اور ڈیٹا ریکارڈز کو ویکیوم کریں جب حکمت عملی شروع کی جائے۔ آپ حکمت عملی انٹرفیس پیرامیٹر ڈیزائن کرسکتے ہیںisReset
، اور پھر حکمت عملی کے ابتدائی حصے میں ری سیٹ کوڈ ڈیزائن کریں، مثال کے طور پر:
if (isReset) { // when "isReset" is true, reset the data
_G(null)
LogReset(1)
LogProfitReset()
LogVacuum()
Log("Reset all data", "#FF0000")
}
ابتدائی اکاؤنٹ ڈیٹا کو بحال کریں اور موجودہ اکاؤنٹ ڈیٹا کو اپ ڈیٹ کریں
بیلنس کا جائزہ لینے کے لئے حکمت عملی کو موجودہ اکاؤنٹ کے ساتھ موازنہ کے لئے ابتدائی اکاؤنٹ اثاثہ کی حالت کو مسلسل ریکارڈ کرنے کی ضرورت ہے۔ متغیرnowAccs
موجودہ اکاؤنٹ کے اعداد و شمار کو ریکارڈ کرنے کے لئے استعمال کیا جاتا ہے.updateAccs
فنکشن ہم صرف موجودہ پلیٹ فارم کے اکاؤنٹ کے اعداد و شمار حاصل کرنے کے لئے ڈیزائن کیا.initAccs
ابتدائی اکاؤنٹ کی حالت کو ریکارڈ کرنے کے لئے استعمال کیا جاتا ہے (ڈیٹا جیسے کرنسی علامت رقم دونوں A اور B، اقتباس کرنسی کی رقم، وغیرہ).initAccs
، سب سے پہلے استعمال_G()
فنکشن کو بحال کرنے کے لئے ( _G فنکشن اعداد و شمار کو مستقل طور پر ریکارڈ کرے گا، اور ریکارڈ کردہ ڈیٹا کو دوبارہ واپس کر سکتا ہے؛ تفصیلات کے لئے API دستاویزات پڑھیں:ربط).
اگر آپ کو اعداد و شمار کی پوچھ گچھ نہیں کر سکتے ہیں، تفویض اور استعمال کرنے کے لئے کرنٹ اکاؤنٹ کی معلومات کا استعمال کریں_G()
ریکارڈ کرنے کے لئے تقریب.
جیسے مندرجہ ذیل کوڈ:
var nowAccs = _C(updateAccs, exchanges)
var initAccs = _G("initAccs")
if (!initAccs) {
initAccs = nowAccs
_G("initAccs", initAccs)
}
مین لوپ میں کوڈ حکمت عملی منطق کے ہر چکر کے عمل کا عمل ہے ، اور نان اسٹاپ دہرانے والا عمل حکمت عملی مین لوپ کی تعمیر کرتا ہے۔ آئیے مرکزی لوپ میں پروگرام کے ہر عمل کے بہاؤ پر ایک نظر ڈالیں۔
مارکیٹ کی قیمتوں کا تعین کریں اور اس کی صداقت کا جائزہ لیں
var ts = new Date().getTime()
var depthARoutine = exA.Go("GetDepth")
var depthBRoutine = exB.Go("GetDepth")
var depthA = depthARoutine.wait()
var depthB = depthBRoutine.wait()
if (!depthA || !depthB || depthA.Asks.length == 0 || depthA.Bids.length == 0 || depthB.Asks.length == 0 || depthB.Bids.length == 0) {
Sleep(500)
continue
}
یہاں آپ دیکھ سکتے ہیں کہ متوازی تقریبexchange.Go
FMZ پلیٹ فارم کے متوازی اشیاء تخلیق کرنے کے لئے استعمال کیا جاتا ہےdepthARoutine
اورdepthBRoutine
کہ کال کریںGetDepth()
ان دو متوازی اشیاء تخلیق کر رہے ہیں جب،GetDepth()
انٹرفیس فوری طور پر بلایا جاتا ہے، اور گہرائی کے اعداد و شمار کے لئے دونوں درخواستوں کے پلیٹ فارم پر بھیجا جاتا ہے.
پھر، کال کریںwait()
اعتراض کا طریقہdepthARoutine
اور اعتراضdepthBRoutine
گہرائی کے اعداد و شمار حاصل کرنے کے لئے.
گہرائی کے اعداد و شمار حاصل کرنے کے بعد ، گہرائی کے اعداد و شمار کی توثیق کرنا ضروری ہے۔continue
اہم لوپ دوبارہ چلانے کے لئے بیان کو متحرک کیا جاتا ہے.
استعمالprice spread
یاspread ratio
?
var targetDiffPrice = hedgeDiffPrice
if (diffAsPercentage) {
targetDiffPrice = (depthA.Bids[0].Price + depthB.Asks[0].Price + depthB.Bids[0].Price + depthA.Asks[0].Price) / 4 * hedgeDiffPercentage
}
پیرامیٹرز کے لحاظ سے، ہم نے اس طرح ایک ڈیزائن بنا دیا ہے. FMZ کے پیرامیٹرز ہو سکتا ہےدکھانایاچھپاناایک پیرامیٹر کی بنیاد پر، تاکہ ہم ایک پیرامیٹر بنانے کے لئے استعمال کرنے کا فیصلہ کر سکتے ہیںprice spread
، یاspread ratio
.
پیرامیٹرdiffAsPercentage
حکمت عملی انٹرفیس کے پیرامیٹرز میں شامل کیا گیا ہے۔ دیگر دو پیرامیٹرز ، جو پیرامیٹر کی بنیاد پر دکھائے یا چھپائیں گے ، مقرر ہیں:hedgeDiffPrice@!diffAsPercentage
جبdiffAsPercentage
جھوٹا ہے، یہ دکھایا جائے گا.hedgeDiffPercentage@diffAsPercentage
جبdiffAsPercentage
سچ ہے تو ظاہر ہو جائے گا۔
ڈیزائن کے بعد، ہم نے چیک کیا ہےdiffAsPercentage
پیرامیٹر، جس میں ہیج ٹرگر شرط کے طور پر پھیلاؤ تناسب کا استعمال کرنا ہے.diffAsPercentage
پیرامیٹر چیک نہیں کیا جاتا ہے، قیمت کا پھیلاؤ ہیج ٹرگر شرط کے طور پر استعمال کیا جاتا ہے۔
جج ہیج ٹرگر
if (depthA.Bids[0].Price - depthB.Asks[0].Price > targetDiffPrice && Math.min(depthA.Bids[0].Amount, depthB.Asks[0].Amount) >= minHedgeAmount) { // A -> B market condition satisfied
var price = (depthA.Bids[0].Price + depthB.Asks[0].Price) / 2
var amount = Math.min(depthA.Bids[0].Amount, depthB.Asks[0].Amount)
if (nowAccs[0].Stocks > minHedgeAmount && nowAccs[1].Balance / price > minHedgeAmount) {
amount = Math.min(amount, nowAccs[0].Stocks, nowAccs[1].Balance / price, maxHedgeAmount)
Log("triggerA->B:", depthA.Bids[0].Price - depthB.Asks[0].Price, price, amount, nowAccs[1].Balance / price, nowAccs[0].Stocks) // prompt message
hedge(exB, exA, price, amount)
cancelAll()
lastKeepBalanceTS = 0
isTrade = true
}
} else if (depthB.Bids[0].Price - depthA.Asks[0].Price > targetDiffPrice && Math.min(depthB.Bids[0].Amount, depthA.Asks[0].Amount) >= minHedgeAmount) { // B -> A market condition satisfied
var price = (depthB.Bids[0].Price + depthA.Asks[0].Price) / 2
var amount = Math.min(depthB.Bids[0].Amount, depthA.Asks[0].Amount)
if (nowAccs[1].Stocks > minHedgeAmount && nowAccs[0].Balance / price > minHedgeAmount) {
amount = Math.min(amount, nowAccs[1].Stocks, nowAccs[0].Balance / price, maxHedgeAmount)
Log("triggerB->A:", depthB.Bids[0].Price - depthA.Asks[0].Price, price, amount, nowAccs[0].Balance / price, nowAccs[1].Stocks) // prompt message
hedge(exA, exB, price, amount)
cancelAll()
lastKeepBalanceTS = 0
isTrade = true
}
}
ہیجنگ کے لئے کئی ٹرگر شرائط ہیں: 1.پہلے ، ہیج اسپریڈ کو پورا کریں۔ صرف اس وقت ہی ہیج ممکن ہوسکتا ہے جب مارکیٹ اسپریڈ مقررہ اسپریڈ پیرامیٹر کو پورا کرے۔
2.مارکیٹ کی ہیجنگ کی رقم پیرامیٹرز میں طے شدہ کم سے کم ہیجنگ کی رقم کو پورا کرنا چاہئے۔ چونکہ مختلف پلیٹ فارمز کی کم سے کم آرڈر کی رقم مختلف ہوتی ہے ، لہذا دونوں میں سے کم سے کم کو لیا جانا چاہئے۔
3.فروخت کے آپریشن کے ساتھ پلیٹ فارم میں موجود اثاثے فروخت کرنے کے لئے کافی ہیں ، اور خریدنے کے آپریشن کے ساتھ پلیٹ فارم میں موجود اثاثے خریدنے کے لئے کافی ہیں۔ جب یہ شرائط پوری ہوجاتی ہیں تو ، ہیج کے ذریعہ آرڈر دینے کے لئے ہیج فنکشن کو انجام دیں۔ مرکزی فنکشن سے پہلے ، ہم متغیر کا اعلان کرتے ہیںisTrade
پہلے سے نشان زد کرنے کے لئے کہ آیا ہیج واقع ہوتا ہے۔ یہاں ، اگر ہیج ٹرگر ہوتا ہے تو ، متغیر کو مقرر کیا جاتا ہےtrue
. اور عالمی متغیر ری سیٹ کریںlastKeepBalanceTS
0 پر (lastKeepBalanceTS کا استعمال آخری بیلنس آپریشن کے ٹائم اسٹیمپ کو نشان زد کرنے کے لئے کیا جاتا ہے ، اور اسے 0 پر ترتیب دینے سے بیلنس آپریشن فوری طور پر شروع ہوجائے گا) ، اور پھر تمام زیر التواء آرڈرز کو منسوخ کریں۔
توازن آپریشن
if (ts - lastKeepBalanceTS > keepBalanceCyc * 1000) {
nowAccs = _C(updateAccs, exchanges)
var isBalance = keepBalance(initAccs, nowAccs, [depthA, depthB])
cancelAll()
if (isBalance) {
lastKeepBalanceTS = ts
if (isTrade) {
var nowBalance = _.reduce(nowAccs, function(sumBalance, acc) {return sumBalance + acc.Balance}, 0)
var initBalance = _.reduce(initAccs, function(sumBalance, acc) {return sumBalance + acc.Balance}, 0)
LogProfit(nowBalance - initBalance, nowBalance, initBalance, nowAccs)
isTrade = false
}
}
}
یہ دیکھا جا سکتا ہے کہ توازن تقریب کو باقاعدگی سے عملدرآمد کیا جاتا ہے، لیکن اگر توازن کی تقریبlastKeepBalanceTS
اگر ہیج آپریشن شروع ہونے کے بعد اس کا ری سیٹ صفر ہو جائے تو بیلنس آپریشن فوری طور پر شروع ہو جائے گا۔ بیلنس کامیاب ہونے کے بعد منافع کا حساب لگایا جائے گا۔
حالت بار کی معلومات
LogStatus(_D(), "A->B:", depthA.Bids[0].Price - depthB.Asks[0].Price, " B->A:", depthB.Bids[0].Price - depthA.Asks[0].Price, " targetDiffPrice:", targetDiffPrice, "\n",
"currentA,Stocks:", nowAccs[0].Stocks, "FrozenStocks:", nowAccs[0].FrozenStocks, "Balance:", nowAccs[0].Balance, "FrozenBalance", nowAccs[0].FrozenBalance, "\n",
"currentB,Stocks:", nowAccs[1].Stocks, "FrozenStocks:", nowAccs[1].FrozenStocks, "Balance:", nowAccs[1].Balance, "FrozenBalance", nowAccs[1].FrozenBalance, "\n",
"initialA,Stocks:", initAccs[0].Stocks, "FrozenStocks:", initAccs[0].FrozenStocks, "Balance:", initAccs[0].Balance, "FrozenBalance", initAccs[0].FrozenBalance, "\n",
"initialB,Stocks:", initAccs[1].Stocks, "FrozenStocks:", initAccs[1].FrozenStocks, "Balance:", initAccs[1].Balance, "FrozenBalance", initAccs[1].FrozenBalance)
اسٹیٹس بار کو خاص طور پر پیچیدہ بنانے کے لئے ڈیزائن نہیں کیا گیا ہے۔ اس میں موجودہ وقت ، پلیٹ فارم اے سے پلیٹ فارم بی تک کی قیمت کا پھیلاؤ اور ساتھ ہی بی سے اے تک کی قیمت کا پھیلاؤ دکھایا گیا ہے۔ اس میں موجودہ ہیج ہدف کا پھیلاؤ ، پلیٹ فارم اے کے اکاؤنٹ اثاثوں کے اعداد و شمار اور پلیٹ فارم بی کے اکاؤنٹ اثاثوں کے اعداد و شمار بھی دکھائے گئے ہیں۔
پیرامیٹرز کے لحاظ سے، ہم نے کرنسی کی شرح قدر تبدیل کرنے کے پیرامیٹر ڈیزائن کیا ہے، اور ہم نے بھی کرنسی کی شرح تبادلہ کے ابتدائی آپریشن میں ڈیزائن کیا ہےmain
اسٹریٹیجی کے آغاز میں کام کرتے ہیں.SetRate
کرنسی کی شرح تبادلہ کی تقریب کو پہلے انجام دینے کی ضرورت ہے۔
کے لئے فنکشن دو پہلوؤں پر اثر پڑے گا:
مثال کے طور پر، موجودہ ٹریڈنگ جوڑی ہےBTC_USDT
، قیمت یونٹ ہےUSDT
، اور اکاؤنٹ اثاثوں میں دستیاب کوٹ کرنسی بھی ہےUSDT
اگر میں اثاثوں کی قیمت CNY میں تبدیل کرنا چاہتے ہیں، مقررexchange.SetRate(6.8)
کے تحت تمام افعال کی طرف سے حاصل اعداد و شمار کو تبدیل کرنے کے لئے کوڈ میںexchange
اعتراض، اور پھر CNY میں تبدیل.
کیا اقتباس کرنسی میں تبدیل کرنے کے لئے، درآمدموجودہ کوٹنگ کرنسی سے ہدف کوٹنگ کرنسی کی شرح تبادلہمیںSetRate
function.
مکمل حکمت عملی:مختلف کوٹیشن کرنسی کی اسپاٹ ہیجنگ حکمت عملی (تعلیم)