[TOC]

پولی مارکیٹ ایک پیشین گوئی مارکیٹ ہے جہاں ہر سوال کے صرف دو نتائج ہوتے ہیں- ہاں یا نہیں، عروج یا گر، جیت یا ہار۔ مثال کے طور پر بی ٹی سی کے 15 منٹ کے قیمت میں تبدیلی کے معاہدے کو لے کر، ہر دور میں…Up اورDownدو معاہدے، اس بات پر شرط لگاتے ہیں کہ آیا BTC کی اختتامی قیمت 15 منٹ کے اندر اس کی ابتدائی قیمت سے زیادہ یا کم ہوگی۔ ایک درست شرط $1 ادا کرتی ہے، غلط شرط کا نتیجہ صفر ہوتا ہے۔

اس بازار کی ایک بہت ہی خاص خصوصیت ہے:دونوں نتائج کے مشترکہ ہونے کا امکان 100% ہے، اس لیے Up کی قیمت اور Down کی قیمت نظریاتی طور پر بالکل 1 کے برابر ہونی چاہیے۔
[ \text{Up_price} + \text{Down_price} = 1 \quad \text{(نظریاتی قدر)} ]
یہ پراپرٹی عام کنٹریکٹ مارکیٹوں میں موجود نہیں ہے، جو ہمیں یقین کا قدرتی لنگر فراہم کرتی ہے۔
مقداری تجارت ہمیشہ ایک چیز کے بارے میں رہی ہے: غیر یقینی صورتحال سے بھری مارکیٹ میں نسبتاً کچھ مواقع تلاش کرنا۔
پولی مارکیٹ کا بائنری ڈھانچہ ایسا اینکر فراہم کرتا ہے:اس سے قطع نظر کہ ان 15 منٹوں میں BTC بڑھتا ہے یا گرتا ہے، اوپر یا نیچے لامحالہ $1 ادا کرے گا۔اس اینکر پوائنٹ کا استعمال کرتے ہوئے، ہمیں سمت کا تعین کرنے کی ضرورت نہیں ہے۔ ہمیں صرف ایک موقع تلاش کرنے کی ضرورت ہے جہاں اوپر اور نیچے خریدنے کی کل لاگت 1 سے کم ہو، اور منافع کی ضمانت ہو۔
مسئلہ یہ ہے کہ زیادہ تر وقت، دو قیمتوں کا مجموعہ 1 کے قریب ہوتا ہے، جس سے براہ راست ثالثی کے مواقع تلاش کرنا مشکل ہو جاتا ہے۔ تو بالکل مواقع کہاں ہیں؟
سے موقع ملتا ہے۔مارکیٹ کے زیادہ ردعمل کی وجہ سے قیمتوں میں عدم توازن。
اس منظر نامے کا تصور کریں: 15 منٹ کی مدت میں، بی ٹی سی اچانک تیزی سے گرتا ہے، جس کی وجہ سے مارکیٹ میں خوف و ہراس پیدا ہوتا ہے اور اپ کنٹریکٹس کی بڑے پیمانے پر فروخت ہوتی ہے، جس کی قیمت 0.5 سے 0.35 تک گر جاتی ہے۔ نظریاتی طور پر، جتنا بھی اوپر گرتا ہے، نیچے کو اسی مقدار سے بڑھنا چاہیے، ان کی رقم ہمیشہ 1 کے برابر ہوتی ہے۔ تاہم، مارکیٹ مختلف رفتار سے رد عمل ظاہر کرتی ہے۔ اوپر کو پہلے ہی تیزی سے نیچے لے جایا جا چکا ہے، جبکہ ڈاؤن اب بھی 0.5 سے 0.65 تک جا رہا ہے اور ہو سکتا ہے کہ پوری طرح پکڑا نہ گیا ہو۔
منتقلی کے اس اہم لمحے میں، اوپر اور نیچے کا مجموعہ صرف 0.93 ہو سکتا ہے، جس کے نتیجے میں قیمتوں میں ایک مختصر توازن پیدا ہوتا ہے۔
[ \text{Up}(0.35) + \text{Down}(0.58) = 0.93 < 1 ]
یہ ثالثی ونڈو ہے: ایک ایسا مجموعہ جس کی قیمت خریدنے کے لیے \(0.93 ہے اور خریداری کے وقت طے شدہ منافع کے ساتھ لامحالہ \)1 ادا کرے گا۔
اصل خیال ٹویٹر صارف @the_smart_ape کی طرف سے آیا ہے، اور یہ بہت ہی مختصر ہے، صرف چار پیرامیٹرز کے ساتھ:
| پیرامیٹر | معنی |
|---|---|
SHARES |
فی ٹانگ حصہ خریدیں۔ |
SUM_TARGET |
دونوں ٹانگوں کو ملا کر ہدف کی قیمت (بالائی حد) |
MOVE_PCT |
ڈوبنے کی شدت |
WINDOW_MIN |
ونڈو کے وقت کی نگرانی |
عمل کی منطق مندرجہ ذیل ہے: ہر دور کے آغاز میں مانیٹرنگ ونڈو کے اندر، قیمتوں کی مسلسل نگرانی کی جاتی ہے۔ ایک بار جب کسی مخصوص سمت میں ٹرگر تھریشولڈ سے زیادہ تیزی سے گرنے کا تجربہ ہوتا ہے، تو اس سمت کو پہلی ٹانگ کے طور پر خریدا جاتا ہے۔ پھر، مخالف سمت میں قیمت واپس گرنے کا انتظار کیا جاتا ہے۔ جب دونوں ٹانگوں کی مشترکہ قیمت ہدف کی قیمت سے کم ہوتی ہے، تو دوسری ٹانگ خریدی جاتی ہے، اور ثالثی بند کردی جاتی ہے۔ تصفیہ اور چھٹکارا 15 منٹ میں مکمل ہو جاتا ہے۔
یہ نقطہ نظر صاف اور سیدھا ہے، لیکن اگر براہ راست لائیو ٹریڈنگ پر لاگو کیا جائے تو اسے کئی واضح مسائل کا سامنا کرنا پڑے گا۔
اصل خیال تھا۔غیر فعال انتظارپہلی ٹانگ خریدیں، پھر دیکھیں کہ مخالف سمت میں قیمت کب واپس آتی ہے۔ دوسری ٹانگ صرف اس وقت خریدیں جب دونوں ٹانگوں کی مشترکہ قیمت ہدف کی قیمت سے کم ہو۔
بہتری کے لیے ہمارے نقطہ نظر مختلف ہیں۔تیزی سے گرنے کے وقت، اس بات کا بہت زیادہ امکان ہے کہ اوپر اور نیچے کے اشارے مختلف رفتار سے آگے بڑھیں گے۔ ہم مطابقت پذیری کی اس مدت کے دوران بیک وقت کارروائی کرتے ہیں:
SUM_TARGET - 第一腿价格معکوس قیمت کی حد کو لاگو کر کے، ہم مخالف رجحان کے عروج پر پہنچنے سے پہلے قیمت کو بند کر سکتے ہیں۔جب دونوں آرڈرز ایک ساتھ جمع کیے جاتے ہیں، تو آرڈر دینے کے وقت ثالثی کا موقع مقفل ہو جاتا ہے۔ مارکیٹ کے حالات کو پورا کرنے کا غیر فعال طور پر انتظار کرنے کے بجائے، ہم مارکیٹ کو اپنے پاس آنے دیتے ہیں۔
بنیادی کوڈ کا نفاذ حسب ذیل ہے:
function executeBothLegs(symbols, dumpSide, dumpAsk) {
var leg1Symbol = (dumpSide === "Up") ? symbols.up : symbols.down
var leg2Symbol = (dumpSide === "Up") ? symbols.down : symbols.up
leg1Price = _N(dumpAsk + SLIPPAGE, 4)
// 第二腿限价:SUM_TARGET - leg1Price,确保两腿合计 <= SUM_TARGET 即有利润
leg2Price = _N(SUM_TARGET - leg1Price, 4)
// 并发提交两个限价单
var goLeg1 = exchange.Go("CreateOrder", leg1Symbol, "buy", leg1Price, SHARES)
var goLeg2 = exchange.Go("CreateOrder", leg2Symbol, "buy", leg2Price, SHARES)
var id1 = goLeg1.wait()
var id2 = goLeg2.wait()
leg1OrderId = id1
leg2OrderId = id2
state = STATE.BOTH_PENDING
}
اصل خیال یہ تھا کہ دوسری ٹانگ تیزی سے مکمل ہو جائے گی، لیکن حقیقت میں اکثر ایسا ہوتا ہے کہ اپ ٹانگ کو نیچے دھکیلنے کے بعد، ڈاون ٹانگ کی قیمت واپس نیچے نہیں آتی، مارکیٹ کا جذبہ مایوسی کا شکار رہتا ہے، اور دونوں ٹانگوں کی مشترکہ قیمت کبھی ہدف تک نہیں پہنچ پاتی۔
اس مدت کے دوران، اگر آپ یک طرفہ پوزیشن پر فائز ہیں، تو قیمت اس وقت تک گرتی رہ سکتی ہے جب تک کہ یہ صفر پر نہ آ جائے۔ایک سٹاپ لوس آرڈر دینا ضروری ہے۔
ہم نے دو پیرامیٹرز کو شامل کیا:
FLOOR_PRICE(کم از کم قیمت)ایک مطلق کم سیٹ کریں (مثال کے طور پر، 0.05)۔ اگر ہولڈنگ پرائس اس سطح تک گرتی ہے، تو یہ اشارہ کرتا ہے کہ مارکیٹ نے تعین کر لیا ہے کہ اس سمت کے ضائع ہونے کا امکان ہے، لہذا نقصان کو روکیں اور مارکیٹ سے باہر نکل جائیں۔EARLY_TAKE_PROFIT(ابتدائی منافع لینے کا تناسب)معاہدے کا پہلا مرحلہ خریدنے کے بعد، اگر قیمت منافع کے ہدف تک پہنچ جاتی ہے، تو دوسری ٹانگ کا انتظار کیے بغیر، منافع حاصل کرنے کے لیے اسے براہ راست فروخت کریں۔function handleLeg1OnlyRisk(symbols, upBid, downBid, isLastMin) {
var holdBid = (leg1Side === "Up") ? upBid : downBid
var profitLine = leg1EntryAsk * (1 + EARLY_TAKE_PROFIT)
var stopLine = leg1EntryAsk * (1 - LAST_MIN_STOP_LOSS)
var needClose = false
var reason = ""
if (holdBid <= FLOOR_PRICE) {
needClose = true; reason = "止损(保底)"
} else if (!isLastMin && holdBid >= profitLine) {
needClose = true; reason = "前期止盈"
} else if (isLastMin && holdBid <= stopLine) {
needClose = true; reason = "末段止损"
}
if (needClose) {
// 先撤对侧挂单,再平仓
cancelAndConfirmUntilClear(leg2OrderId)
closePosition(holdSymbol, holdBid, reason)
}
}
ایک نچلی حد کی ضمانت دیتا ہے، اور دوسرا اوپری حد میں بند کر دیتا ہے، اس طرح اصل میں لامحدود یک طرفہ پوزیشن پر ایک باؤنڈری لگاتا ہے۔
اصل نقطہ نظر نے وقت کے طول و عرض میں فرق نہیں کیا، لیکن یہ بالکل مختلف ہے جب تصفیہ کا مرحلہ قریب آ رہا ہے: تصفیہ جلد ہی آ رہا ہے، اور انتظار کرنے کا کوئی وقت نہیں ہے یہاں تک کہ اگر قیمت واپس نہ بھی گئی ہو۔ مزید برآں، تصفیہ کے جتنا قریب ہوگا، قیمتوں میں اتار چڑھاؤ اتنا ہی سخت ہوگا۔
ہم نے شامل کیا۔LAST_MIN_S(آخری وقت کی حد کو ایڈجسٹ کیا جا سکتا ہے۔) حتمی مرحلے میں داخل ہونے کے بعد منطق کو تبدیل کرنا:
LAST_MIN_STOP_LOSS(ٹریڈنگ سیشن کے اختتام پر سٹاپ لاس کا فیصد)، اگر پوزیشن کی قیمت سٹاپ لاس لائن سے نیچے آجاتی ہے تو مارکیٹ کی قیمت پر باہر نکلیں۔var isLastMin = (remaining <= LAST_MIN_S)
// BOTH_PENDING 状态下
if (isLastMin) {
Log("⏰ 最后1分钟,撤销未成交挂单")
cancelAllPending("最后1分钟")
}
ابتدائی مراحل میں، قیمتیں بحال ہونے کا انتظار کریں۔ بعد کے مراحل میں، قیمتیں صفر تک گرنے سے بچیں۔ منطق کے یہ دو سیٹ ایک دوسرے میں مداخلت نہیں کرتے۔
پولی مارکیٹ ایک آن چین مارکیٹ ہے، اور آرڈر کی حیثیت اور پوزیشن کی معلومات کی واپسی بعض اوقات سست ہو سکتی ہے۔ آرڈر دینے کے بعد تصدیق حاصل کرنے میں کئی سیکنڈ لگ سکتے ہیں۔ لہذا، حکمت عملی میں آرڈر ٹائم آؤٹ کا پتہ لگانے اور دوبارہ کوشش کرنے کا طریقہ کار شامل ہے۔
function placeOrderAndConfirm(symbol, side, price, amount) {
var orderId = exchange.CreateOrder(symbol, side, orderPrice, amount)
var deadline = Date.now() + ORDER_TIMEOUT_S * 1000
while (Date.now() < deadline) {
var order = exchange.GetOrder(orderId)
if (order && order.Status === 1) {
return { orderId: orderId, avgPrice: order.AvgPrice } // 成交
}
if (order && (order.Status === 2 || order.Status === 4)) {
return { orderId: orderId, avgPrice: null } // 已撤销
}
Sleep(1000)
}
// 超时后执行撤单
exchange.CancelOrder(orderId)
// ... 继续轮询确认最终状态
}
ایک ہی وقت میں شامل کیاSLIPPAGE(Slippage پیرامیٹر) خرید آرڈر کے عمل میں آنے کے امکان کو بڑھاتا ہے۔ خریدتے وقت آرڈر کی اصل قیمت ہدف کی قیمت کے علاوہ پھسلن کے برابر ہوتی ہے۔
پولی مارکیٹ کا ایک منفرد طریقہ کار ہے: معاہدوں کے تصفیہ کے بعد ادائیگی شدہ رقم خود بخود بیلنس میں واپس نہیں آتی۔فنڈز صرف فعال طور پر Redeem API کو کال کر کے جاری کیے جا سکتے ہیں۔اگر یہ مرحلہ چھوٹ جاتا ہے، تو اکاؤنٹ میں رقم پہلے سے طے شدہ جگہوں پر بند ہو جائے گی۔
حکمت عملی خود بخود ہر سوئچ اوور کے دوران بیچوں میں ریڈیم کا آغاز کرتی ہے تاکہ فنڈ کی بروقت واپسی کو یقینی بنایا جا سکے۔
function doRedeem() {
var positions = exchange.GetPositions()
for (var i = 0; i < positions.length; i++) {
var pos = positions[i]
if (pos.Info && pos.Info.redeemable) {
var result = exchange.IO("redeem", pos.Symbol, true)
Log("Redeem 结果:", result)
}
}
}
// 每轮结算前(840s 后)自动触发
if (!redeemDone && elapsed >= 840) {
doRedeem()
redeemDone = true
}

حکمت عملی میں ایک حقیقی وقت کا ڈیش بورڈ شامل ہے جو اکاؤنٹ کی ایکویٹی، موجودہ حیثیت، قیمت کی نگرانی، اور پوزیشن منافع/نقصان کو ٹیبل فارمیٹ میں دکھاتا ہے، جس سے آپ لائیو ٹریڈنگ کے دوران حکمت عملی کی پیشرفت کو آسانی سے ٹریک کر سکتے ہیں۔ ڈیش بورڈ میں چار میزیں ہیں:

لائیو ٹریڈنگ مثال:
ایک نیا دور شروع ہوتا ہے، اور حکمت عملی زیر نگرانی ہے۔ ڈاؤن کنٹریکٹ میں 18.60% کی کمی کا پتہ چلا، 0.43 سے 0.35 تک، سگنل کو متحرک کرتا ہے۔ اس کے ساتھ ہی، دو حد کے آرڈرز دیے گئے: پہلا ڈاون آرڈر 0.37 پر، اور دوسرا اپ آرڈر 0.60 پر، کل 0.97، ہدف کی قیمت سے کم۔ دونوں آرڈرز بیک وقت جمع کیے گئے اور بعد میں بھرے گئے۔ عمل درآمد کی اصل قیمت: پہلی ٹانگ 0.34، دوسری ٹانگ 0.60، حقیقی کل لاگت۔0.94منافع توقع سے زیادہ تھا جو کہ 0.97 کی پہلے سے طے شدہ حد سے نیچے تھا۔
یہ حکمت عملی اپنے تصور میں نسبتاً درست ہے اور جب مارکیٹ کے حالات تعاون کرتے ہیں تو اچھے منافع حاصل کر سکتے ہیں۔ تاہم، تین کوتاہیاں ہیں جن کو کھلے دل سے تسلیم کرنے کی ضرورت ہے:
خامی 1: جب مارکیٹ مستحکم ہو تو پوزیشنیں کھولنے کے مواقع تلاش کرنا مشکل ہے۔ثالثی کے مواقع مارکیٹ کے زیادہ ردعمل پر انحصار کرتے ہیں۔ جب مارکیٹ مستحکم ہوتی ہے تو تیزی سے گراوٹ کا امکان بہت کم ہوتا ہے، اور حکمت عملی صرف تنہائی میں کام کر سکتی ہے۔ محرک کی حد کو وسیع کرنے سے مواقع بڑھ سکتے ہیں، لیکن اندراجات کا معیار کم ہو جائے گا۔
نقص 2: کسی ایک عہدے پر فائز رہنے کے خطرات سے مکمل طور پر بچنا مشکل ہے۔پہلی ٹانگ بھرنے کے بعد، اگر قیمت ٹھیک ہونے کے بجائے گرتی رہتی ہے، تو دوسری ٹانگ کبھی نہیں بھرے گی اور اس وقت تک گرتی رہے گی جب تک کہ یہ سٹاپ لوس لائن تک نہ پہنچ جائے اور ٹرگر نہ ہوجائے۔ سٹاپ لوس کی حد مقرر کرنا ایک مخمصہ ہے: بہت تنگ اور عام اتار چڑھاو سے یہ آسانی سے متحرک ہو جائے گا۔ بہت ڈھیلا اور نقصان بہت زیادہ ہو گا اگر قیمت واقعی غلط ہو جاتی ہے۔
خامی 3: دونوں ٹانگوں کی مشترکہ ہدف کی قیمت کی حد ایک تجارت ہے۔حد کو بہت زیادہ مقرر کرنے سے مواقع میں اضافہ ہوتا ہے لیکن ہر بار کم منافع حاصل ہوتا ہے۔ اسے بہت کم رکھنے سے ہر بار منافع میں اضافہ ہوتا ہے لیکن اس کے نتیجے میں ایک اہم موقع کا طویل انتظار ہو سکتا ہے۔ یہ حکمت عملی کا انتخاب ہے: بار بار چھوٹے پیمانے پر جمع ہونا، یا کم حد تک پکڑنا اور کبھی کبھار بڑے موقع کا انتظار کرنا۔
یہ حکمت عملی ایک فریم ورک ہے، اور گہرائی میں تلاش کرنے کے قابل تین سمتیں ہیں:
آپشن 1: بیرونی BTC قیمت کا ڈیٹا متعارف کروائیں۔یہ حکمت عملی حد سے منسلک مارکیٹوں کے لیے بہتر ہے؛ رجحان ساز بازاروں میں، سٹاپ لوس آرڈرز کثرت سے شروع کیے جائیں گے۔ اسے ایکسچینجز سے حقیقی وقت کی BTC قیمتوں کے ساتھ مربوط کیا جا سکتا ہے، جب واضح رجحان ابھرتا ہے تو موقوف پوزیشن کھولنے کی اجازت دیتا ہے، اس طرح غیر ضروری نقصانات کو کم کیا جا سکتا ہے۔
سمت 2: ریاضیاتی ماڈلنگ۔اوپر اور نیچے بنیادی طور پر دو بائنری اختیارات ہیں۔ اختیارات کے میدان میں قیمتوں کا تعین کرنے کے بہت سے بالغ ماڈلز ہیں، جو کہ صوابدیدی فیصلے کرنے کے لیے مقررہ حدوں پر انحصار کرنے کے بجائے، نظریاتی طور پر ثالثی کھڑکیوں کے امکانات اور بہترین انٹری پوائنٹ کو زیادہ درست طریقے سے ماڈل بنا سکتے ہیں۔
آپشن 3: ڈائنامک پیرامیٹر ایڈجسٹمنٹ۔فی الحال، تمام پیرامیٹرز طے شدہ ہیں، لیکن مارکیٹ میں اتار چڑھاؤ بدل جاتا ہے۔ زیادہ اور کم اتار چڑھاؤ کے دوران پیرامیٹرز کے ایک ہی سیٹ کا استعمال واضح طور پر نامناسب ہے۔ ریئل ٹائم مارکیٹ کے حالات پر مبنی پیرامیٹرز کو خودکار طور پر ایڈجسٹ کرنا حکمت عملی کی موافقت کو بہت زیادہ بڑھاتا ہے۔
اس حکمت عملی کی بنیادی منطق - بائنری مارکیٹوں میں قیمت کے عدم توازن کے لمحات تلاش کرنا - پولی مارکیٹ کے بی ٹی سی معاہدوں تک محدود نہیں ہے۔ بائنری ڈھانچے اور قلیل مدتی قیمتوں میں تضادات والی کوئی بھی مارکیٹ اسی طرح کے نقطہ نظر کو استعمال کرتے ہوئے مواقع کو کھولنے کے لیے استعمال کی جا سکتی ہے۔ ہم نے اس خیال کو صرف ایک ورکنگ فریم ورک میں تبدیل کر دیا ہے۔ واقعی دلچسپ حصہ ابھی آنا باقی ہے۔
حکمت عملی کا ماخذ کوڈ: پولی مارکیٹ بی ٹی سی 15 منٹ کا دو ٹانگوں والا ہیجنگ آربٹریج روبوٹ (دو طرفہ ہیجنگ ورژن)