پرشدن ناقص سفارش (Partial Fill) در معاملات خودکار کریپتو
وقتی فقط بخشی از سفارش پر میشود، استاپ، هج و وضعیت داخلی ربات بههم میریزد. ببینید ماشین وضعیت سفارش و تطبیق دورهای چطور این ریسک را مهار میکنند.
قبول شدن سفارش به معنی تکمیل آن نیست. پرشدن ناقص یعنی فقط بخشی از مقدار درخواستشده اجرا شده و بقیه همچنان باز مانده، لغو شده یا منقضی شده است. اتوماسیونی که ارسالشده یا پذیرفتهشده را با پرشده یکی میگیرد، استاپ بزرگتر از پوزیشن، هج ناقص، تلاش مجدد تکراری و وضعیت اشتباه میسازد.
پاسخ کوتاه: هر سفارش را ماشین وضعیت ببین، مقدار پرشده تجمعی را منبع حقیقت قرار بده، سفارش محافظ را با اکسپوژر تحققیافته اندازهگذاری کن و بعد از هر قطعی، لغو یا پاسخ مبهم، سفارش و پوزیشن را تطبیق بده.
نکات کلیدی
- پذیرفتهشده فقط دریافت سفارش را ثابت میکند، نه اجرای کامل را.
- استاپ و حد سود باید از مقدار پرشده واقعی پیروی کنند.
- بهروزرسانیهای استریم و فراخوانی دورهای ممکن است دیر، تکراری یا خارج از ترتیب برسند.
- لغو با پرشدن مسابقه دارد و به تطبیق نهایی نیاز دارد.
- وضعیت ناشناس باید اقدام وابسته را متوقف کند، نه تلاش مجدد کور بسازد.
- DRKN میتواند ریسک قابلمشاهده حساب را بررسی کند، نه اینکه جای کنترل اجرا باشد.
چرا پرشدن ناقص رخ میدهد؟
سفارش با نقدینگی موجود و طبق قیمت و مدت اعتبار سفارش تعامل میکند. سفارش محدود شاید فقط بخشی از مقدار را در قیمت انتخابی پیدا کند. سفارش بازار میتواند چند سطح را مصرف کند، زیر قواعد حفاظت ناقص بماند یا به سقفهای صرافی برسد. سایز بزرگ، دفتر سفارش کمعمق، بازار سریع، دقت اعشار و جلوگیری از معامله با خود هم روی نتیجه اثر دارند.
مدت اعتبار سفارش تعیینکننده است. فورییالغو مقدار موجود را پر و بقیه را لغو میکند. همهیاهیچ طبق قاعده صرافی یا کامل پر میشود یا اصلاً پر نمیشود. معتبر تا لغو میتواند باز بماند و بعداً دوباره پر شود. اتوماسیون باید دقیق بداند چه رفتاری درخواست کرده و فرض نکند نامهای مشابه در همه صرافیها یکساناند.
پرشدن ناقص چگونه وضعیت استراتژی را خراب میکند؟
فرض کن بات لانگ دهواحدی میخواهد و فقط چهار واحد میگیرد. اگر فوراً استاپ دهواحدی بفرستد، صرافی ممکن است آن را رد یا اندازه را اصلاح کند و بسته به حالت پوزیشن نتیجه دیگری بسازد. اگر بات در دفتر داخلی خود ده واحد ثبت کند، تعادل مجدد بعدی از وضعیت دروغین شروع میشود.
هج نیز حساس است. خرید ناقص اسپات کنار شورت کامل فیوچرز، خالص شورت موقت ایجاد میکند. در کپیترید، مقدار دنبالکننده از لیدر جدا میشود و خروج پلهای پنجاهدرصدی بعدی مقدار مطلق یکسانی کم نمیکند. بنابراین جهت درست، نبودن ناهماهنگی اجرایی را ثابت نمیکند.
ماشین وضعیت سفارش چه حالتهایی لازم دارد؟
حداقل حالتها عبارتاند از: ایجادشده، ارسالشده، پذیرفتهشده، پرشده ناقص، پرشده، در انتظار لغو، لغوشده، ردشده، منقضی و نامشخص. برای هر سفارش، شناسه سفارش صرافی، شناسه سفارش سمت کاربر، مقدار درخواستی، مقدار پرشده تجمعی، مقدار باقیمانده، میانگین قیمت پرشدن، کارمزد و آخرین شماره ترتیب یا مهر زمانی معتبر را ذخیره کن.
گذار باید بیاثر در تکرار باشد. رویداد پرشدن تکراری نباید مقدار را دوبار اضافه کند. پیام قدیمی پذیرفتهشده که بعد از پرشده ناقص میرسد نباید وضعیت را عقب ببرد. با قطع استریم، اندپوینت سفارش و معاملات اخیر را استعلام و پیش از اقدام وابسته وضعیت را بازسازی کن.
با DRKN آنچه حساب واقعاً دارد بررسی کن: اکسپوژر، اهرم، تمرکز و فاصله تا لیکوییدیشن. نرمافزار اجرا باید وضعیت سفارش را تأیید کند و اقدام حساس همچنان دست کاربر بماند.
استاپ و حد سود چگونه با پرشدن هماهنگ شوند؟
حفاظت باید بازتاب اکسپوژر تأییدشده باشد. یک طراحی، حفاظت فقطکاهشی را با افزایش مقدار پرشده تجمعی بهروز میکند. طراحی دیگر بعد از مهلت باقیمانده را لغو و فقط مقدار پرشده را محافظت میکند. انتخاب درست به استراتژی، semantics صرافی و ریسک زمان کوتاه بدون حفاظت وابسته است.
چند استاپ مستقل را بدون محاسبه aggregate مقدار نساز. وقتی یکی از خروجها پرشدن شد، همگروه سفارش شاید باید لغو شود. پشتیبانی صرافی از سفارش پیوندی، فقطکاهشی و تریگر را بررسی کن. حتی سفارش native صرافی پس از قطعی یا معامله دستی به تطبیق نیاز دارد.
مسابقه لغو و پرشدن چیست؟
ارسال لغو ثابت نمیکند باقی مقدار دیگر معامله نمیشود. ممکن است همزمان با حرکت درخواست، پرشدن تازهای رخ دهد. کلاینت حتی میتواند لغو تأییدیه و پرشدن بهروزرسانی را با ترتیب غیرمنتظره دریافت کند. بنابراین لغو ارسالشده وضعیت میانی است، نه مقدار نهایی.
پس از لغو، final سفارش وضعیت و فعلی پوزیشن را دریافت کن. با مقدار پرشده تجمعی نهایی، حفاظت و دفتر داخلی را اصلاح کن. اگر نتیجه نامشخص است، dependent سفارش جدید نساز و مسیر را برای بررسی متوقف کن. حدس زدن وقتی تلاش مجدد میتواند اکسپوژر را بیشتر کند، خطرناک است.
چکلیست تطبیق مقاوم چیست؟
فرض کن بات breakout سفارش ۲ BTC داده، پرشدن مقدار ۰.۸ را دیده و سپس وبسوکت قطع شده است:
1. اقدام جدید همان نماد را قفل کن. 2. سفارش را با صرافی یا شناسه سفارش سمت کاربر استعلام بگیر. 3. فعلی پوزیشن، باز سفارش و recent پرشدن را بگیر. 4. مقدار پرشده تجمعی را با دفتر داخلی داخلی و شناسه معامله تطبیق بده. 5. بررسی کن باقی سفارش هنوز زنده است یا نه. 6. حفاظت فقطکاهشی را با اکسپوژر واقعی اندازه را اصلاح کن. 7. فقط وقتی سفارش، پرشدن و پوزیشن توافق دارند از سر بگیر. 8. رخداد را ثبت و بازیابی path را بعداً دوباره تست کن.
حتی بدون خطای آشکار تطبیق دورهای انجام بده. manual معامله، لیکوییدیشن، کارمزد deduction یا missed رویداد میتواند silent انحراف بسازد.
پرشدن ناقص behavior را چطور امن تست کنیم؟
در محیط آزمایشی یا محیط کمریسک، سفارش محدودی بفرست که احتمال پرشدن ناقص دارد. سپس لغو، reconnect، رویداد تکراری، بهروزرسانی خارج از ترتیب و تلاش مجدد را امتحان کن. مقدار پرشده تجمعی هرگز نباید کاهش یابد، شناسه معامله تکراری نباید دوبار حساب شود و protective مقدار نباید از اکسپوژر تأییدشده بزرگتر شود.
تست مبتنی بر ویژگی نیز مفید است: در هر ترتیب رویداد، خالص پوزیشن داخلی پس از تطبیق باید به پوزیشن صرافی همگرا کند. گِردکردن و کمینه سفارش را پوشش بده. کرش میان acceptance صرافی و ثبت دیتابیس را هم شبیهسازی کن؛ همین مرز مبهم تکراری سفارش میسازد.
DRKN چگونه این کنترلها را کامل میکند؟
DRKN میتواند پس از اجرا account-aware تفسیر بدهد: آیا پوزیشن از plan بزرگتر شده؟ اهرم یا فاصله تا لیکوییدیشن تغییر کرده؟ تمرکز بالا رفته؟ اما نباید بهعنوان موتور تطبیق، پایشگر پرشدن تضمینی یا repair خودکار معرفی شود مگر چنین قابلیت جداگانه پیاده و تأیید شده باشد.
اثر تکرار را با کنترل سفارش duplicate webhook بگیر، پرشدن ناقص را به خطای ردیابی کپیترید وصل کن و دسترسی را با کلیدهای API جدا محدود نگه دار.
پرسشهای متداول
سفارش پرشده ناقص هنوز باز است؟
ممکن است. باقی مقدار طبق وضعیت و مدت اعتبار سفارش باز میماند، لغو یا منقضی میشود. وضعیت نهایی صرافی را استعلام بگیر.
بات باید مقدار پرنشده را تلاش مجدد کند؟
فقط بعد از تأیید سفارش و پوزیشن و اعمال دوباره ریسک و قیمت check. تلاش مجدد کور اکسپوژر تکراری میسازد.
فقطکاهشی تمام ریسک پرشدن ناقص را حذف میکند؟
خیر. جلوی بعضی reverseها را میگیرد، اما مقدار، تریگر، همزمانی و رفتار صرافی همچنان تطبیق میخواهند.
DRKN صحت پرشدن خودکار را تضمین میکند؟
خیر. جایگاه DRKN، بررسی آموزشی ریسک حساب است و نرمافزار اجرا و کاربر باید وضعیت واقعی صرافی را تأیید کنند.
منابع
- تعریف وضعیت سفارش Binance Spot API
- مدیریت سفارش Coinbase Advanced Trade
- استانداردهای FIX Trading Community
هشدار ریسک: معامله خودکار و اهرمی میتواند زیان سریع بسازد. این مطلب آموزش فنی است، نه توصیه سرمایهگذاری یا تضمین اجرا. بازبینی انسانی و تست مخصوص صرافی پیش از انتشار و استقرار الزامی است.