⚠️ اہم یاد دہانی
اس حکمت عملی کو پڑھنے اور استعمال کرنے سے پہلے، براہ کرم درج ذیل تین نکات پر غور کریں:
1. حکمت عملی کو پوزیشن کھولنے کے موقع کا صبر سے انتظار کرنا ہوگا
بائننس پر کنٹریکٹ کی فہرست سے ہٹانا ایک کم تعدد والا واقعہ ہے، جو روزانہ نہیں ہوتا۔ حکمت عملی شروع ہونے کے بعد پہلی پوزیشن کھلنے میں کئی دن یا اس سے بھی زیادہ وقت لگ سکتا ہے۔ زیادہ تر وقت پروگرام "اسٹینڈ بائی مانیٹرنگ" کی حالت میں رہے گا، لہٰذا طویل انتظار کے لیے ذہنی طور پر تیار رہیں۔ یہ مت سمجھیں کہ حکمت عملی ناکام ہو گئی کیونکہ مختصر عرصے میں کوئی لین دین نہیں ہوا۔
2. پوزیشن کھولنے کا پتہ لگانے کے وقت میں ابھی بہتری کی گنجائش ہے
یہ مضمون ہر 15 سیکنڈ میں fapi/v1/exchangeInfo انٹرفیس کو پول کرنے اور deliveryDate فیلڈ میں تبدیلی کے ذریعے ڈی لسٹ سگنل کی شناخت کرنے کا طریقہ استعمال کرتا ہے۔ اس طریقہ میں حقیقی تجارت میں کچھ تاخیر ہوتی ہے اور یہ تیز ترین راستہ نہیں ہے۔ قارئین اپنی ضروریات کے مطابق پتہ لگانے کے طریقے کو مزید بہتر بنا سکتے ہیں، مثال کے طور پر: پولنگ کا وقفہ کم کرنا، بائننس اعلان API کی متوازی نگرانی کرنا، WebSocket پش کو سبسکرائب کرنا، متعدد ذرائع سے سگنل کی کراس تصدیق کرنا وغیرہ، تاکہ مارکیٹ میں جلد سے جلد داخل ہوا جا سکے۔ جتنی جلدی داخل ہوں گے، پہلی تیز گراوٹ کے سب سے زیادہ نقصان سے بچ سکیں گے۔
3. منافع کو واپس آنے سے روکنے کے لیے فوری طور پر حکمت عملی بند کرنا یقینی بنائیں
حقیقی تجارت میں مشاہدہ کیا گیا ہے کہ تمام ڈی لسٹ ہونے والے سکوں کی قیمت ڈی لسٹ ہونے کے وقت تک مسلسل نیچے نہیں جاتی۔ کچھ سکے اعلان کے بعد تیزی سے گرتے ہیں، پھر چند گھنٹوں سے ایک دن کے اندر آہستہ آہستہ واپس آتے ہیں، اور قیمت اعلان سے پہلے کی سطح تک بھی پہنچ سکتی ہے۔ اگر وقت پر حکمت عملی بند نہ کی گئی تو پہلے جمع ہونے والا منافع واپسی کی لہر میں بڑی حد تک ختم ہو سکتا ہے، یہاں تک کہ منافع نقصان میں بدل سکتا ہے۔
تجویز ہے کہ فعال طور پر باہر نکلنے کے سگنل کے طور پر درج ذیل شرائط میں سے کوئی ایک سیٹ کریں:
- پہلے سے طے شدہ منافع کے ہدف تک پہنچنے پر فوری طور پر تمام پوزیشنیں بند کر دیں؛
- جب قیمت اعلان کے بعد کی کم ترین سطح سے ایک خاص فیصد (مثلاً 20%~30%) تک واپس آجائے تو زبردستی پوزیشن بند کریں؛
- جب پوزیشن کا نقصان چوٹی کے منافع کے ایک خاص فیصد (مثلاً 30%~50%) تک پہنچ جائے تو منافع کی حفاظت کے لیے اسٹاپ لگائیں۔
ڈی لسٹ ہونے سے 60 منٹ پہلے تک انتظار نہ کریں کہ پوزیشن بند کریں - یہ حفاظتی طریقہ کار ہے، بہترین باہر نکلنے کا وقت نہیں۔
پیش لفظ
بائننس کے فیوچرز مارکیٹ میں، ایک خاص قسم کا تجارتی موقع ہے جسے زیادہ تر لوگ نظر انداز کر دیتے ہیں - کنٹریکٹ ڈی لسٹ ہونے کے واقعات۔
وقتاً فوقتاً، بائننس اعلان کرتا ہے کہ وہ کچھ کم لیکویڈیٹی یا کم تجارتی حجم والے پرسچوئل کنٹریکٹس کو ڈی لسٹ کر رہا ہے۔ اعلان کے فوراً بعد، مارکیٹ تیزی سے رد عمل ظاہر کرتی ہے: لانگ پوزیشن رکھنے والے تاجروں کو زبردستی پوزیشن بند کرنی پڑتی ہے، خوفناک فروخت کا سلسلہ شروع ہو جاتا ہے، اور قیمت اکثر اعلان کے چند منٹوں میں شدید گراوٹ کا شکار ہو جاتی ہے، پھر ایک طویل اتار چڑھاؤ والی نیچے کی طرف حرکت شروع ہوتی ہے، جب تک کہ آخرکار ڈی لسٹ نہ ہو جائے۔
اس بار MLNUSDT کی مثال دیکھیں:
آدھے گھنٹے میں تقریباً ایک تہائی گر گیا، اور پورا ڈی لسٹ سائیکل عام طور پر کئی دنوں تک جاری رہتا ہے، جس کے دوران قیمت کم سطح پر اتار چڑھاؤ کرتی رہتی ہے۔ اس طرح کی مارکیٹ، شارٹ حکمت عملی کے لیے قدرتی میدان ہے۔
تاہم، اس طرح کے مواقع کو دستی طور پر مانیٹر کرنا دو مشکل پہلو رکھتا ہے:
پہلا، معلومات کی انتہائی تیز وقت کی پابندی۔ اعلان کے بعد پہلے 5 منٹ سب سے زیادہ گراوٹ کا وقت ہوتے ہیں، اگر پہلے موقع پر داخل نہ ہو سکے تو بعد میں شارٹ کرنے کا خطرہ بہت بڑھ جاتا ہے۔ انسانی نگرانی 7×24 حقیقی وقت میں جواب دینے سے قاصر ہے۔
دوسرا، مارکیٹ یک طرفہ آبشار نہیں ہوتی۔ قیمت میں کمی کے دوران مسلسل واپسیاں ہوتی رہتی ہیں، خالص شارٹ پوزیشن رکھنے سے رجحان کا منافع تو ملتا ہے لیکن واپسی کے دوران ہونے والے متعدد بار بار کے فرق کے مواقع ضائع ہو جاتے ہیں۔
ان دو مسائل کو حل کرنے کے لیے، یہ مضمون ایک مکمل خودکار حکمت عملی پیش کرتا ہے: پروگرام کے ذریعے بائننس کے ڈی لسٹ سگنل کی حقیقی وقت میں نگرانی کریں، اعلان کے فوراً بعد خود بخود شارٹ بیس پوزیشن کھولیں، اور ساتھ ہی متحرک شارٹ گرڈ شروع کریں، مجموعی نیچے کے رجحان میں مسلسل اتار چڑھاؤ کے فرق کو حاصل کریں، اور آخرکار ڈی لسٹ ہونے سے پہلے خود بخود پوزیشن بند کر کے باہر نکلیں، پورے عمل میں کسی انسانی مداخلت کی ضرورت نہیں۔
ایک، یہ مارکیٹ کیوں؟
حکمت عملی میں گہرائی میں جانے سے پہلے، ہمیں ڈی لسٹ ہونے والے سکوں کی قیمت کی حرکت کی خصوصیات کو سمجھنا ہوگا، جو پوری حکمت عملی کے ڈیزائن کی بنیاد ہے۔
1.1 ڈی لسٹ اعلان کا مارکیٹ پر اثر
جب بائننس کسی پرسچوئل کنٹریکٹ کو ڈی لسٹ کرنے کا اعلان کرتا ہے، تو مارکیٹ کا پہلا ردعمل خوف ہوتا ہے۔ لانگ پوزیشن رکھنے والے تاجروں کو پتہ ہوتا ہے کہ کنٹریکٹ جلد ختم ہو جائے گا، انہیں ڈی لسٹ ہونے سے پہلے پوزیشن بند کرنی ہوگی، ورنہ انہیں زبردستی تصفیہ کرنا پڑے گا۔ اس مرتکز فروخت سے قلیل مدت میں شدید فروخت کا دباؤ پیدا ہوتا ہے، جس کی وجہ سے قیمت تیزی سے نیچے چلی جاتی ہے۔
اسی دوران، مارکیٹ بنانے والے تیزی سے اپنی قیمتیں کم کر دیتے ہیں یا لیکویڈیٹی واپس لے لیتے ہیں، جو قیمت کے اتار چڑھاؤ کو مزید بڑھا دیتا ہے۔ اسی لیے ڈی لسٹ اعلان کے بعد پہلے چند منٹ، پورے ڈی لسٹ سائیکل میں سب سے زیادہ گراوٹ کا وقت ہوتے ہیں۔
1.2 اتار چڑھاؤ کے ساتھ نیچے کی طرف جانے کا پیٹرن
پہلی تیز گراوٹ کے بعد، قیمت سیدھی نیچے نہیں جاتی، بلکہ ایک عام اتار چڑھاؤ کے ساتھ نیچے کی طرف حرکت دکھاتی ہے:
اس حرکت کے پیچھے ایک اندرونی منطق ہے: ہر واپسی مختصر مدت کے تاجروں کی وجہ سے ہوتی ہے جو سوچتے ہیں کہ قیمت بہت گر گئی ہے اور وہ نیچے خریدنا شروع کر دیتے ہیں، لیکن چونکہ بنیادی صورتحال تبدیل نہیں ہوئی (کنٹریکٹ ختم ہونے والا ہے)، اس لیے یہ خریداری جلد ہی پھنس جاتی ہے اور قیمت دوبارہ نیچے آ جاتی ہے۔ واپسیوں کی بلندی کم ہوتی جاتی ہے، جب تک کہ ڈی لسٹ ہونے سے پہلے لیکویڈیٹی مکمل طور پر ختم نہ ہو جائے۔
یہ منظم اتار چڑھاؤ وہی مارکیٹ ہے جو گرڈ حکمت عملی کے لیے سب سے موزوں ہے۔
1.3 منافع کے دو ذرائع
مندرجہ بالا تجزیے کی بنیاد پر، ہم منافع کے دو آزاد راستے ڈیزائن کر سکتے ہیں:
| منافع کا ذریعہ | متعلقہ ٹول | منافع کی شرط |
|---|---|---|
| رجحان میں کمی | بیس پوزیشن شارٹ | قیمت مجموعی طور پر نیچے |
| اتار چڑھاؤ کا فرق | شارٹ گرڈ | قیمت ایک رینج میں بار بار اتار چڑھاؤ کرے |
دونوں کو ملا کر، حکمت عملی ڈی لسٹ مارکیٹ میں مضبوط منافع بخش صلاحیت رکھتی ہے۔ یہاں تک کہ اگر قیمت میں بڑی واپسی بھی ہو، تو گرڈ والا حصہ پھر بھی فرق حاصل کرتا رہے گا؛ اور جب تک مجموعی رجحان نیچے ہے، بیس پوزیشن منافع دیتی رہے گی۔
دو، نگرانی کا اصول: ڈی لسٹ سگنل کو فوری طور پر کیسے پکڑیں
کنٹریکٹ کی معلومات کی نگرانی کے لیے، اس حکمت عملی نے ایک براہ راست طریقہ استعمال کیا ہے: بائننس کنٹریکٹ انٹرفیس کے ڈیٹا میں تبدیلی کی براہ راست نگرانی۔
2.1 deliveryDate فیلڈ کا راز
بائننس کا fapi/v1/exchangeInfo انٹرفیس تمام کنٹریکٹس کی تفصیلی معلومات واپس کرتا ہے، جس میں ایک فیلڈ ہے جسے deliveryDate کہا جاتا ہے، جو کنٹریکٹ کی تصفیہ کے وقت کو ظاہر کرتا ہے۔
پرسچوئل کنٹریکٹس کے لیے، یہ فیلڈ عام طور پر ایک بہت دور مستقبل کے ٹائم اسٹمپ پر سیٹ ہوتا ہے:
4133404800000 → 2100-12-31 کو ظاہر کرتا ہے
یہ "کبھی ختم نہ ہونے" والے پلیس ہولڈر کے برابر ہے۔
اہم نکتہ: جب بائننس کسی پرسچوئل کنٹریکٹ کو ڈی لسٹ کرنے کا فیصلہ کرتا ہے، تو وہ اعلان جاری کرنے کے ساتھ ساتھ اس کنٹریکٹ کے deliveryDate کو حقیقی ڈی لسٹ وقت کے ٹائم اسٹمپ میں تبدیل کر دیتا ہے۔
عام پرسچوئل کنٹریکٹ: deliveryDate = 4133404800000 (کبھی ختم نہیں ہوتا)
ڈی لسٹ ہونے والا کنٹریکٹ: deliveryDate = 1744106400000 (2026-04-08 17:00:00)
یہ تبدیلی فوری طور پر انٹرفیس ڈیٹا میں ظاہر ہو جاتی ہے، جو اعلان کے صفحے کی رینڈرنگ سے بھی تیز ہے اور زیادہ ساختہ بھی ہے، کسی HTML کو پارس کرنے کی ضرورت نہیں۔
2.2 نگرانی کوڈ کا نفاذ
ہر 15 سیکنڈ میں ایک بار انٹرفیس کو کال کریں، اور ان USDT پرسچوئل کنٹریکٹس کو فلٹر کریں جن کا deliveryDate حقیقی ٹائم اسٹمپ میں تبدیل ہو چکا ہے:
python
def fetch_delist_symbols():
body = HttpQuery("https://fapi.binance.com/fapi/v1/exchangeInfo")
data = json.loads(body)
now_ms = get_now_ms()
result = {}
for s in data.get("symbols", []):
if not s["symbol"].endswith("USDT"):
continue
if s.get("contractType") != "PERPETUAL":
continue
dd = s.get("deliveryDate", PERPETUAL_END)
if dd < PERPETUAL_END and dd > now_ms:
result[s["symbol"]] = dd
return result
واپسی کی مثال:
python
{
"HIPPOUSDT": 1744106400000, # 2026-04-08 17:00:00
"OLUSDT": 1744106400000,
"RLSUSDT": 1744106400000,
"PUFFERUSDT":1744106400000,
}
نوٹ: حقیقی تجارت میں جانچ کے بعد، تھوڑی تاخیر ہوتی ہے، زیادہ بروقت تصدیق کا طریقہ منتخب کیا جا سکتا ہے۔
تین، حکمت عملی کا ڈھانچہ
پوری حکمت عملی دو متوازی طور پر چلنے والے ماڈیولز پر مشتمل ہے:
جب نیا کنٹریکٹ دریافت ہوتا ہے، تو ہر کنٹریکٹ کے لیے الگ سے ایک task آبجیکٹ بنایا جاتا ہے، جس میں اس کنٹریکٹ کی تمام حالتیں ہوتی ہیں:
python
task = {
"symbol": "HIPPO_USDT",
"delist_time_ms": 1744106400000,
"fund_per_task": 250.0, # مختص فنڈز
"base_short_qty": 1500000, # بیس پوزیشن کی تعداد
"range_high": 0.0005287, # گرڈ کی بالائی حد
"range_low": 0.0004758, # گرڈ کی نچلی حد
"grid_width": 0.0000529, # رینج کی چوڑائی (مقررہ)
"grids": [...], # 10 گرڈ کی حالتیں
"shift_count": 0, # منتقلی کی تعداد
...
}
متعدد کنٹریکٹس کے task ایک دوسرے سے آزاد ہیں، ایک دوسرے میں مداخلت نہیں کرتے، اور متوازی طور پر چلتے ہیں۔
چار، فنڈز کی تقسیم
جب N ڈی لسٹ کنٹریکٹس دریافت ہوں، تو اکاؤنٹ کی دستیاب بیلنس کو متحرک طور پر برابر تقسیم کریں:
ہر کنٹریکٹ کے لیے مختص فنڈز = دستیاب بیلنس × 80% / N
20% مارجن بفر کے طور پر رکھیں تاکہ قیمت میں قلیل مدتی واپسی سے پوزیشن ختم نہ ہو۔
اہم تفصیل: جب متعدد کنٹریکٹس کو ترتیب وار ابتدائی کیا جاتا ہے، تو ہر کنٹریکٹ کی ابتدا کے ساتھ اکاؤنٹ کی دستیاب بیلنس کم ہوتی جاتی ہے (کیونکہ بیس پوزیشن مارجن لے لیتی ہے)۔ اس لیے لوپ شروع ہونے سے پہلے تمام کنٹریکٹس کے لیے ایک بار میں فنڈز کا حساب نہیں لگایا جا سکتا، بلکہ ہر ابتدا سے پہلے دوبارہ پوچھ گچھ کرنی ہوگی:
python
for idx, (binance_sym, delist_ms) in enumerate(delist_map.items()):
update_global_account()
remaining_count = total_new - idx
available_now = total_balance - margin_used
fund_per_task = available_now * 0.8 / remaining_count
task = init_task(binance_sym, delist_ms, fund_per_task)
اس سے یقینی بنایا جا سکتا ہے کہ ہر کنٹریکٹ کو مناسب سرمایہ مختص ہو، اور پچھلے کنٹریکٹ کی وجہ سے زیادہ مارجن استعمال ہونے کی صورت میں بعد کے کنٹریکٹس کے لیے فنڈز کی کمی نہ ہو۔
5. بنیادی پوزیشن اور گرڈ کی تفصیل
5.1 بنیادی شارٹ پوزیشن
اعلان کے فوراً بعد، ابتدائی وقت پر مارکیٹ قیمت پر فوری شارٹ کھولیں، گرڈ کا انتظار نہ کریں:
بنیادی پوزیشن کا تصوراتی حجم = مختص فنڈ × 50% × لیوریج
مثال: مختص فنڈ 250U، لیوریج 10
بنیادی پوزیشن کا حجم = 250 × 50% × 10 = 1250U
بنیادی پوزیشن پورے عرصے میں رکھی جاتی ہے، اسے گرڈ کے بار بار کھلنے اور بند ہونے میں شامل نہیں کیا جاتا، صرف ڈی لسٹنگ سے پہلے جبری بندش کے وقت اسے بھی بند کیا جاتا ہے۔
بنیادی پوزیشن پوری حکمت عملی میں سب سے زیادہ منافع بخش حصہ ہے – اگر ڈی لسٹ ہونے والے سکے کی قیمت اعلان سے لے کر ڈی لسٹنگ تک 50% گر جائے، تو بنیادی پوزیشن اس 50% شارٹ منافع (لیوریج کے ساتھ) میں حصہ ڈالے گی۔
5.2 شارٹ گرڈ کی ترتیب
موجودہ قیمت کو اوپری سرا اور 10% نیچے کو نچلے سرا کے طور پر لے کر، یکساں طور پر 10 گرڈز میں تقسیم کریں:
مثال (موجودہ قیمت 0.0005287، رینج کی چوڑائی 10%):
اوپری سرا = 0.0005287
نچلا سرا = 0.0005287 × (1 - 10%) = 0.0004758
گرڈ کا فاصلہ = (0.0005287 - 0.0004758) / 10 = 0.0000053
گرڈ 9: شارٹ کھولیں @0.0005287 → شارٹ بند کریں @0.0005234
گرڈ 8: شارٹ کھولیں @0.0005234 → شارٹ بند کریں @0.0005181
گرڈ 7: شارٹ کھولیں @0.0005181 → شارٹ بند کریں @0.0005128
...
گرڈ 0: شارٹ کھولیں @0.0004811 → شارٹ بند کریں @0.0004758
ہر گرڈ میں یکساں رقم مختص کی جاتی ہے، منطق سادہ ہے: قیمت شارٹ کھولنے کی قیمت پر واپس آتی ہے تو آرڈر لگتا ہے اور شارٹ کھلتا ہے؛ قیمت گر کر شارٹ بند کرنے کی قیمت پر آتی ہے تو آرڈر لگتا ہے اور شارٹ بند ہوتا ہے؛ ایک چکر مکمل ہونے پر دوبارہ شارٹ کھولنے کا آرڈر لگتا ہے، اگلے ریباؤنڈ کا انتظار ہوتا ہے۔
5.3 شروع کرتے وقت آرڈر لگانے کی حکمت عملی
شروع کرتے وقت، تمام وہ گرڈز جو شارٹ کھولنے کی قیمت >= موجودہ قیمت رکھتے ہوں، ان کے آرڈر لگا دیے جاتے ہیں:
موجودہ قیمت 0.0005287
گرڈ 9 شارٹ کھولنے کی قیمت = 0.0005287 ≥ 0.0005287 → آرڈر لگا دیا گیا ✅
گرڈ 8 شارٹ کھولنے کی قیمت = 0.0005234 < 0.0005287 → skip_below (قیمت پہلے ہی گر چکی ہے)
گرڈ 7 اور نیچے والے تمام skip_below
اس کی وجہ یہ ہے کہ نیچے کی طرف جانے والی قیمت میں کسی بھی وقت غیر متوقع ریباؤنڈ ہو سکتا ہے، اس لیے تمام اوپری گرڈز پہلے سے لگا دینے سے یہ یقینی بنتا ہے کہ شارٹ کھولنے کا کوئی موقع ہاتھ سے نہ جائے۔
6. متحرک رینج کی منتقلی
یہ پوری حکمت عملی کا سب سے اہم میکانزم ہے۔ قیمت ہمیشہ ابتدائی رینج میں نہیں رہتی، گرڈ کو قیمت کے ساتھ حرکت کرنی چاہیے تاکہ مسلسل فرق حاصل کیا جا سکے۔
6.1 نیچے کی طرف منتقلی (نچلے سرے سے نیچے گرنا)
جب قیمت گرڈ کے نچلے سرے سے نیچے آجائے، تو اس کا مطلب ہے کہ گراوٹ موجودہ رینج کی حد سے باہر ہے، اور رینج کو مجموعی طور پر نیچے منتقل کرنا ہوگا:
پرانی رینج: 0.0004758 ~ 0.0005287
موجودہ قیمت: 0.0004500 (نچلے سرے 0.0004758 سے نیچے)
نئی رینج کا حساب (منتقلی کا قدم 5%):
shift_step = 0.0004500 × 5% = 0.0000225
نیا اوپری سرا = 0.0005287 - 0.0000225 = 0.0005062
نیا نچلا سرا = 0.0005062 - 0.0000529 = 0.0004533
نئی رینج: 0.0004533 ~ 0.0005062
6.2 اوپر کی طرف منتقلی (ریباؤنڈ اوپری سرے سے اوپر)
جب قیمت ریباؤنڈ کر کے گرڈ کے اوپری سرے سے اوپر چلی جائے، تو رینج اوپر کی طرف منتقل ہو جاتی ہے:
پرانی رینج: 0.0004494 ~ 0.0005023
موجودہ قیمت: 0.0005100 (اوپری سرے 0.0005023 سے اوپر)
نئی رینج اوپر منتقل ہوتی ہے، اس طرح کہ موجودہ قیمت نئی رینج میں آ جائے
نئی رینج: 0.0004758 ~ 0.0005287
یہ میکانزم اس بات کو یقینی بناتا ہے کہ قیمت کی کسی بھی حرکت کے باوجود، گرڈ قیمت کے ساتھ چلتا رہے، اور ایسا نہ ہو کہ قیمت رینج سے باہر نکل جائے جس سے تمام گرڈز خالی ہو جائیں۔
6.3 رینج کی چوڑائی مستقل رہتی ہے
ہر منتقلی صرف رینج کی پوزیشن بدلتی ہے، اس کی چوڑائی نہیں:
python
grid_width = round(range_high - range_low, 8) # ابتدا میں فکس
# نیچے منتقلی
range_high = fp(task, range_high - shift_step)
range_low = fp(task, range_high - grid_width) # فکسڈ چوڑائی سے حساب
اس طرح فلوٹنگ پوائنٹ کی جمع شدہ غلطیوں سے بچا جا سکتا ہے جو رینج کو تنگ یا چوڑا کر سکتی ہیں۔
6.4 پوزیشن کے تحفظ کا طریقہ کار
رینج منتقل کرتے وقت، تمام آرڈرز منسوخ کر دیے جاتے ہیں اور گرڈ دوبارہ بنایا جاتا ہے۔ لیکن ان گرڈز کا کیا ہو جو پہلے ہی شارٹ کھول چکے ہیں اور بند ہونے کا انتظار کر رہے ہیں؟
اگر انہیں براہ راست دوبارہ بنایا جائے، تو ان گرڈز کی پوزیشنیں "گم" ہو جائیں گی – شارٹ پوزیشن تو ہے لیکن بند کرنے کا کوئی آرڈر نہیں، جس سے یہ ننگی پوزیشنیں بن جائیں گی اور ریباؤنڈ کے خطرے سے مکمل طور پر بے نقاب ہو جائیں گی۔
حل یہ ہے: منتقلی سے پہلے تمام پوزیشنوں میں موجود کنٹریکٹ کی تعداد ریکارڈ کریں، اور منتقلی کے بعد نئی رینج کے سب سے نچلے گرڈ پر شارٹ بند کرنے کا آرڈر لگائیں:
python
# منتقلی سے پہلے پوزیشنوں کا خلاصہ
holding_contracts = sum(
g.get("sell_contracts", 0)
for g in task["grids"]
if g["status"] in ("pending_cover", "holding_no_cover")
)
cancel_all_orders(task)
activate_grids(task, new_high, new_low)
# منتقلی کے بعد سب سے نچلے گرڈ پر شارٹ بند کرنے کا تحفظ
if holding_contracts > 0:
_place_grid_cover(task, 0, holding_contracts)
اس طرح رینج کتنی بھی منتقل ہو، کھلے ہوئے شارٹس کی ٹریکنگ نہیں چھوٹتی۔
7. متعدد کنٹریکٹس کا متوازی انتظام
7.1 نئے کنٹریکٹ ملنے پر ہینڈلنگ کا منطق
پرانے کنٹریکٹس کے بند ہونے سے جو فنڈز نکلتے ہیں، وہ دوبارہ تقسیم میں شامل ہوتے ہیں، تاکہ نئے کنٹریکٹس کو مناسب فنڈنگ مل سکے۔
7.2 لائف سائیکل کا انتظام
ہر کنٹریکٹ کا لائف سائیکل:
8. چند اہم تفصیلات
8.1 چھوٹی قیمت والے سکوں میں درستگی کا جال
HIPPOUSDT جیسے سکے جن کی قیمت 0.0003 کی حد میں ہوتی ہے، ان میں رینج منتقلی کے قدم کا حساب لگاتے وقت درستگی کا مسئلہ ہوتا ہے:
shift_step = 0.0003 × 5% = 0.000015
اگر PricePrecision = 4 (4 اعشاریہ تک درستگی)
round(0.000015, 4) = 0.0 ← قدم 0 ہو گیا!
→ while لوپ کبھی ختم نہیں ہوگا، لامحدود لوپ
حل یہ ہے کہ قدم پر درستگی کاٹ نہ لگائیں، اور کم از کم قدم کا ایک محفوظ قد رکھیں:
python
shift_step = price * SHIFT_STEP_PCT
min_step = 10 ** (-PricePrecision)
shift_step = max(shift_step, min_step) # کم از کم سب سے چھوٹی درستگی یونٹ کے برابر
8.2 بنیادی شارٹ کھلنے میں ناکامی کا علاج
مارکیٹ شارٹ کھولنا فنڈز کی کمی یا نیٹ ورک کے مسائل کی وجہ سے ناکام ہو سکتا ہے، ایسی صورت میں گرڈ نہیں بنانا چاہیے ورنہ بغیر بنیادی پوزیشن کے ننگے گرڈز بن جائیں گے:
python
def open_base_short(task):
oid = place_market_short(task, usdt_amount)
Sleep(1000)
amt, _, _ = get_short_position(task)
task["base_short_qty"] = amt
if amt <= 0:
Log(f"بنیادی شارٹ کھلنے میں ناکامی، اس کنٹریکٹ کو چھوڑا گیا")
return False
return True
# init_task میں
if not open_base_short(task):
return None # ابتداء ناکام، tasks میں شامل نہ کریں
8.3 جبری بندش کا وقت اور طریقہ
ڈی لسٹنگ سے 60 منٹ پہلے بندش کا انتخاب کرنا (بائنانس کے نئے آرڈرز پر پابندی کے وقت سے 30 منٹ پہلے) اس لیے کیا جاتا ہے تاکہ بندش کے لیے کافی وقت مل سکے۔ ڈی لسٹنگ جتنی قریب ہوتی ہے، لیکویڈیٹی اتنی ہی کم ہوتی ہے اور بندش کرنا مشکل ہو جاتا ہے۔
بندش کے وقت مارکیٹ قیمت سے تھوڑی زیادہ قیمت پر لمیٹڈ آرڈر لگایا جاتا ہے، اصلی مارکیٹ آرڈر نہیں، تاکہ انتہائی کم لیکویڈیٹی میں بدنیتی پر مبنی میچنگ سے بچا جا سکے:
python
buy_p = fp(task, price * 1.005) # مارکیٹ قیمت سے 0.5% زیادہ
exchange.CreateOrder(swapcode, "closesell", buy_p, fc)
اگر ایک بار میں پوری بندش نہ ہو سکے، تو زیادہ سے زیادہ 10 بار دوبارہ کوشش کریں، ہر بار تازہ ترین قیمت حاصل کریں۔
8.4 فنڈنگ ریٹ سے اضافی آمدنی
نیچے کی طرف جانے والی قیمت میں، فنڈنگ ریٹ عام طور پر شارٹ پوزیشن کے لیے سازگار ہوتا ہے (شارٹ والے پیسے وصول کرتے ہیں)۔ یہ بنیادی پوزیشن رکھنے کا اضافی فائدہ ہے، جو گرڈ کے فرق کے اعدادوشمار میں ظاہر نہیں ہوتا، لیکن اکاؤنٹ کی ایکویٹی میں اضافے کے طور پر نظر آتا ہے۔
9. پیرامیٹرز سیٹ کرنے کی تجاویز
python
LEVERAGE = 10 # 杠杆倍数,建议5~10,不宜过高
GRID_WIDTH_PCT = 0.10 # 区间宽度10%,覆盖正常震荡幅度
SHIFT_STEP_PCT = 0.05 # 移动步长5%,约为区间宽度的一半
GRID_COUNT = 10 # 格数,格数越多每格资金越少
BASE_SHORT_RATIO = 0.5 # 底仓占50%,网格占40%,留10%缓冲
FORCE_CLOSE_MINS = 60 # 提前60分钟平仓
MONITOR_INTERVAL = 15000 # 15秒监控一次,兼顾时效和频率限制
حدود وقفہ کا انتخاب: وقفہ جتنا بڑا ہوگا، اتنی ہی زیادہ اتار چڑھاؤ کی حد کا احاطہ کرے گا، لیکن ہر گرڈ کا فاصلہ بھی بڑھ جائے گا، جس سے کٹائی کی فریکوئنسی کم ہو جائے گی۔ تجویز ہے کہ آپ اس سکے کی تاریخی وولٹیلیٹی کی بنیاد پر ایڈجسٹ کریں، عام طور پر 10% ایک معقول نقطہ آغاز ہے۔
گرڈ کی تعداد کا انتخاب: گرڈ جتنے زیادہ ہوں گے، گرڈ کا فاصلہ اتنا ہی چھوٹا ہوگا اور کٹائی کی فریکوئنسی زیادہ ہوگی، لیکن ہر گرڈ کے لیے رقم کم ہوگی اور ہر بار کا منافع بھی کم ہوگا۔ بہت زیادہ گرڈز کی وجہ سے ہر گرڈ میں کم از کم آرڈر کی مقدار پوری نہ ہونے کا مسئلہ بھی ہو سکتا ہے۔ 10 گرڈ ایک متوازن انتخاب ہے۔
دسویں، رسک کے انتباہات
اس حکمت عملی کو استعمال کرنے سے پہلے، درج ذیل خطرات کو پوری طرح سمجھنا ضروری ہے:
رجوع کا خطرہ: اگر خبر کو پہلے ہی مارکیٹ میں price in کر لیا گیا ہے، تو اعلان کے بعد "بری خبر ختم ہونے" کی وجہ سے رجوع ہو سکتا ہے، اور بیس پوزیشن عارضی طور پر نقصان میں جا سکتی ہے۔ گرڈ کا حصہ رجوع کے دوران بھی فرق کاٹ سکتا ہے، لیکن مجموعی طور پر عارضی کمی ہو سکتی ہے۔
لیکویڈیٹی کا خطرہ: ڈی لسٹنگ کے وقت جتنا قریب ہوگا، کنٹریکٹ کی لیکویڈیٹی اتنی ہی کم ہوگی، بولی اور پوچھ کے درمیان فرق بڑھ جائے گا، اور بند کرتے وقت سلپیج بڑھ جائے گی۔ حکمت عملی میں 0.5% پریمیم اور 10 بار کی دوبارہ کوشش رکھی گئی ہے، لیکن انتہائی حالات میں بھی تمام پوزیشنوں کو بند نہیں کیا جا سکتا۔
جعلی سگنل کا خطرہ: انتہائی کم مواقع پر، بائننس ڈی لسٹنگ کے منصوبے کو منسوخ یا موخر کر سکتا ہے، اس صورت میں حکمت عملی اس وقت تک شارٹ پوزیشن رکھے گی جب تک دستی مداخلت یا اگلی مانیٹر اپ ڈیٹ نہ ہو۔
زیادہ لیوریج کا خطرہ: ڈی لسٹ ہونے والے سکوں میں اتار چڑھاؤ بہت زیادہ ہوتا ہے، 10 گنا لیوریج پر 10% کا رجوع بھی تقریباً پورے اکاؤنٹ کے نقصان کا سبب بن سکتا ہے۔ تجویز ہے کہ آپ اپنی خطرے برداشت کی صلاحیت کے مطابق لیوریج کو ایڈجسٹ کریں اور مجموعی پوزیشن پر قابو رکھیں۔
حکمت عملی کو بروقت شروع اور روکنا: حقیقی ٹریڈنگ میں دیکھا گیا ہے کہ کچھ مخصوص سکوں میں ایک دن کے اتار چڑھاؤ کے بعد، قیمت آہستہ آہستہ اعلان سے پہلے والی حالت میں واپس آ سکتی ہے، لہٰذا حکمت عملی کو بروقت بند کرنا ضروری ہے۔
ڈوریشن: حکمت عملی کو مواقع تلاش کرنے کے لیے طویل انتظار کرنا پڑتا ہے، لہٰذا صبر کی ضرورت ہے۔
گیارہویں، خلاصہ
اس حکمت عملی کی بنیادی قدر معلوماتی برتری (ڈی لسٹنگ سگنل کو فوری طور پر دریافت کرنا) کو ٹریڈنگ برتری (خودکار عملدرآمد) میں تبدیل کرنا ہے، اور ساتھ ہی بیس پوزیشن + گرڈ کے دوہرے ڈھانچے کے ذریعے، یک طرفہ گرتے ہوئے بازار میں رجحان سے منافع اور اتار چڑھاؤ کے فرق دونوں کو حاصل کرنا ہے۔
پورے نظام کے اہم ڈیزائن نکات:
| ماڈیول | بنیادی ڈیزائن | حل کردہ مسئلہ |
|---|---|---|
| deliveryDate مانیٹرنگ | براہ راست انٹرفیس کے فیلڈ کی تبدیلی پڑھنا | سیکنڈوں میں ڈی لسٹنگ سگنل دریافت کرنا |
| متحرک سرمایہ مختص | ہر ابتدا سے پہلے بیلنس دوبارہ چیک کرنا | متعدد کنٹریکٹس کے درمیان متوازن سرمایہ مختص |
| بیس پوزیشن مارکیٹ پرائس پر شارٹ | اعلان کے فوراً بعد عملدرآمد | پہلی تیزی سے گراوٹ سے محروم نہ ہونا |
| تمام گرڈز پر آرڈر | موجودہ قیمت سے اوپر والے تمام گرڈز پر آرڈر | توقع سے زیادہ رجوع سے محروم نہ ہونا |
| وقفہ کی چوڑائی مقررہ | منتقل ہوتے وقت چوڑائی کو مستقل رکھنا | فلوٹنگ پوائنٹ بڑھاؤ کو روکنا |
| پوزیشن کا تحفظ | منتقل ہونے کے بعد شارٹ آرڈر دوبارہ لگانا | ننگی پوزیشن کو روکنا |
| 60 منٹ پہلے بند کرنا | بند کرنے کے لیے کافی وقت کا ونڈو چھوڑنا | کم لیکویڈیٹی سے نمٹنا |
ڈی لسٹنگ کا واقعہ ہر روز نہیں ہوتا، لیکن جب بھی ہوتا ہے، نسبتاً زیادہ یقینی ٹریڈنگ مواقع فراہم کرتا ہے۔ پروگرامیٹک خودکار مانیٹرنگ اور عملدرآمد کے ذریعے، اسکرین پر نظر رکھے بغیر بھی ان مواقع میں مستحکم طور پر حصہ لیا جا سکتا ہے۔
حکمت عملی کا سورس کوڈ: ڈی لسٹ کنٹریکٹ گرڈ حکمت عملی
- 1







