الأسئلة الأكثر شيوعاً
الصفحة الرئيسية
مركز الدعم
الأسئلة الأكثر شيوعاً
مشتقات العملات الرقمية
العقود الآجلة
عقود USDⓈ-M الآجلة
ما هو منع التداول الذاتي (STP)؟

ما هو منع التداول الذاتي (STP)؟

2023-08-29 07:03

ما هو منع التداول الذاتي (STP)؟

منع التداول الذاتي (STP) عبارة عن آلية تستخدمها منصات التداول لمنع المستخدمين من التداول دون قصد ضد أنفسهم. يحدث هذا الموقف، المعروف باسم التداول الذاتي، عندما تتطابق طلبات المستخدم مع بعضها البعض في قائمة الطلبات. ويعتبر منع التداول الذاتي ذو أهمية خاصة في الحفاظ على بيئة تداول عادلة وشفافة، لأنه يساعد في منع التلاعب بأسعار السوق ويضمن أن نشاط التداول يعكس بدقة اهتمام السوق الحقيقي.
في Binance (بينانس)، يؤدي منع التداول الذاتي إلى منع طلبات المستخدمين، أو "TradeGroupID" الخاص بالمستخدمين، من المطابقة مع طلباتهم الخاصة.

ما المقصود بالتداول الذاتي؟

يمكن أن يحدث التداول الذاتي بأي من السيناريوهين التاليين:
  • يتم تداول الطلب مقابل نفس الحساب.
  • يتم تداول الطلب مقابل حساب يحمل نفس "TradeGroupID".

ماذا يحدث عند تفعيل منع التداول الذاتي؟

هناك أربعة أوضاع ممكنة لما سيفعله النظام إذا كان بإمكان الطلب إنشاء تداول ذاتي.
  • NONE: يعمل هذا الوضع على استثناء الطلب من منع التداول الذاتي. لن تتم مقارنة الحسابات أو "tradeGroupIds"، ولن يتم إلغاء أي طلبات، وستتم عملية التداول.
  • EXPIRE_TAKER: يمنع هذا الوضع التداول عن طريق إلغاء الكمية المتبقية من طلب المستفيد على الفور.
  • EXPIRE_MAKER: يمنع هذا الوضع التداول عن طريق إلغاء الكمية المتبقية من طلب صانع السوق المحتمل على الفور.
  • EXPIRE_BOTH: يمنع هذا الوضع التداول عن طريق إلغاء الكميات المتبقية من طلبات المستفيد وصانع السوق المحتمل على الفور.
يحدث منع التداول الذاتي بحسب وضع منع التداول الذاتي الخاص بطلب المستفيد. وبالتالي، يصبح وضع منع التداول الذاتي للطلب الذي يتم طرحه في القائمة غير ذي صلة وسيتم تجاهله لجميع عمليات معالجة الطلبات المستقبلية.

كيف يمكنني ضبط وضع منع التداول الذاتي للطلب؟

لا يمكن تعيين منع التداول الذاتي إلا باستخدام الحقل "SelfTradePreventionMode" من خلال نقاط نهاية واجهة برمجة التطبيق التالية:
  • POST /fapi/v1/order
  • POST /fapi/v1/batchOrders

ما المقصود بـ "tradeGroupId"؟

تعتبر الحسابات المختلفة التي تحمل نفس "tradeGroupId" جزءًا من نفس "مجموعة التداول". والطلبات المقدمة من قِبل أعضاء مجموعة تداول تكون مؤهلة لمنع التداول الذاتي وفقًا لوضع منع التداول الذاتي الخاص بطلب المستفيد.
يمكن للمستخدم تأكيد ما إذا كانت حساباته ضمن نفس "tradeGroupId" من واجهة برمجة التطبيق إما من GET fapi/v2/account (واجهة برمجة تطبيق REST).
إذا كانت القيمة هي -1، فهذا يعني أنه لم يتم تعيين "tradeGroupId" لهذا الحساب، وقد يتم تنفيذ منع التداول الذاتي فقط بين طلبات نفس الحساب.

ما الرموز التي تدعم منع التداول الذاتي؟

جميع الرموز في GET fapi/v1/exchangeInfo تدعم منع التداول الذاتي.

ما أنواع الطلبات التي تدعم منع التداول الذاتي؟

أنواع الطلبات التالية تدعم منع التداول الذاتي عندما يتم إعداد مدة التنفيذ (timeInForce) لتكون GTC/IOC/GTD:
  • طلب حدّي
  • طلب سوق
  • طلب جني الأرباح
  • طلب إيقاف بسعر السوق
  • طلب السوق لجني الأرباح
  • طلب السوق للإيقاف المُتتابع
يُرجى ملاحظة أنه لن يتم تنفيذ منع التداول الذاتي عندما تكون إعدادات مدة التنفيذ (timeInForce) هي FOK أو GTX.

هل تعديل الطلبات يدعم منع التداول الذاتي؟

كلا، تعديل الطلبات لا يدعم منع التداول الذاتي.

كيف يمكن تحديد إذا كان الطلب قد أُلغي بسبب منع التداول الذاتي؟

ستظهر حالة الطلب كالآتي: "EXPIRED_IN_MATCH". في حدث بث بيانات المستخدم "ORDER_TRADE_UPDATE"، إذا تم إلغاء الطلب بسبب منع التداول الذاتي، سيظهر في الحقل X ما يلي: "EXPIRED_IN_MATCH".
{  "e":"ORDER_TRADE_UPDATE",      // Event Type  "E":1568879465651,             // Event Time  "T":1568879465650,             // Transaction Time  "o":{                                "s":"BTCUSDT",               // Symbol    "c":"TEST",                  // Client Order Id      // special client order id:      // starts with "autoclose-": liquidation order      // "adl_autoclose": ADL auto close order      // "settlement_autoclose-": settlement order for delisting or delivery    "S":"SELL",                  // Side    "o":"TRAILING_STOP_MARKET",  // Order Type    "f":"GTC",                   // Time in Force    "q":"0.001",                 // Original Quantity    "p":"0",                     // Original Price    "ap":"0",                    // Average Price    "sp":"7103.04",              // Stop Price. Please ignore with TRAILING_STOP_MARKET order    "x":"EXPIRED",               // Execution Type    "X":"EXPIRED_IN_MATCH",      // Order Status    "i":8886774,                 // Order Id    "l":"0",                     // Order Last Filled Quantity    "z":"0",                     // Order Filled Accumulated Quantity    "L":"0",                     // Last Filled Price    "N":"USDT",                  // Commission Asset, will not push if no commission    "n":"0",                     // Commission, will not push if no commission    "T":1568879465650,           // Order Trade Time    "t":0,                       // Trade Id    "b":"0",                     // Bids Notional    "a":"9.91",                  // Ask Notional    "m":false,                   // Is this trade the maker side?    "R":false,                   // Is this reduce only    "wt":"CONTRACT_PRICE",       // Stop Price Working Type    "ot":"TRAILING_STOP_MARKET", // Original Order Type    "ps":"LONG",                 // Position Side    "cp":false,                  // If Close-All, pushed with conditional order    "AP":"7476.89",              // Activation Price, only pushed with TRAILING_STOP_MARKET order    "cr":"5.0",                  // Callback Rate, only pushed with TRAILING_STOP_MARKET order    "pP": false,                 // ignore    "si": 0,                     // ignore    "ss": 0,                     // ignore    "rp":"0"                     // Realized Profit of the trade    "V": "NONE".                 // selfTradePreventionMode    "pm":"QUEUE"                 // price match type    "gtd":1768879465650          // good till date   }}

أمثلة على منع التداول الذاتي:

بالنسبة لجميع هذه الحالات، افترض أن جميع الطلبات الخاصة بهذه الأمثلة تتم على نفس الحساب.
Maker Order: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20000 selfTradePreventionMode=NONE Taker Order: symbol=BTCUSDT side=SELL type=LIMIT quantity=1 price=20000 selfTradePreventionMode=NONE
النتيجة: لم يتم تشغيل منع التداول الذاتي وستتطابق الطلبات.
حالة الطلب لطلب صانع السوق:
{    "orderId": 292864713,    "symbol": "BTCUSDT",    "status": "FILLED",    "clientOrderId": "43N239GaUaqshfG7825184",    "price": "20000",    "avgPrice": "20000",    "origQty": "1",    "executedQty": "1",    "cumQty": "1",    "cumQuote": "20000",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "updateTime": 1692849639460}
حالة الطلب لطلب المستفيد:
{    "orderId": 292864714,    "symbol": "BTCUSDT",    "status": "FILLED",    "clientOrderId": "43N239GaUaqshfG7825184",    "price": "20000",    "avgPrice": "20000",    "origQty": "1",    "executedQty": "1",    "cumQty": "1",    "cumQuote": "20000",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "SELL",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "updateTime": 1692849639460}
Maker Order 1: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20002 selfTradePreventionMode=NONE Maker Order 2: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20001 selfTradePreventionMode=NONE Taker Order 1: symbol=BTCUSDT side=SELL type=LIMIT quantity=1 price=20000 selfTradePreventionMode=EXPIRE_MAKER
النتيجة: سيتم إلغاء الطلبات التي كانت موجودة في القائمة بسبب منع التداول الذاتي، وسيتم نشر طلب المستفيد في القائمة.
طلب صانع السوق 1:
{    "orderId": 292864710,    "symbol": "BTCUSDT",    "status": "FILLED",    "clientOrderId": "testMaker1",    "price": "20002",    "avgPrice": "20002",    "origQty": "1",    "executedQty": "1",    "cumQuote": "20002",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
طلب صانع السوق 2:
{    "orderId": 292864711,    "symbol": "BTCUSDT",    "status": "EXPIRED_IN_MATCH",    "clientOrderId": "testMaker2",    "price": "20001",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
مخرجات طلب المستفيد:
{    "orderId": 292864712,    "symbol": "BTCUSDT",    "status": "PARTIALLY_FILLED",    "clientOrderId": "testTaker1",    "price": "20000",    "avgPrice": "20002",    "origQty": "2",    "executedQty": "1",    "cumQuote": "20002",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "SELL",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRE_MAKER",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
Maker Order 1: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20002  selfTradePreventionMode=NONE Maker Order 2: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20001  selfTradePreventionMode=NONE Taker Order 1: symbol=BTCUSDT side=SELL type=LIMIT quantity=2 price=20000      selfTradePreventionMode=EXPIRE_TAKER
النتيجة: ستظل الطلبات الموجودة بالفعل في القائمة، بينما سيتم إلغاء طلب المستفيد.
طلب صانع السوق 1:
{    "orderId": 292864710,    "symbol": "BTCUSDT",    "status": "NEW",    "clientOrderId": "testMaker1",    "price": "20002",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
طلب صانع السوق 2:
{    "orderId": 292864711,    "symbol": "BTCUSDT",    "status": "NEW",    "clientOrderId": "testMaker2",    "price": "20001",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
مخرجات طلب المستفيد:
{    "orderId": 292864712,    "symbol": "BTCUSDT",    "status": "EXPIRED_IN_MATCH",    "clientOrderId": "testTaker1",    "price": "20000",    "avgPrice": "0.0000",    "origQty": "3",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "SELL",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRE_TAKER",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
Maker Order: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20002 selfTradePreventionMode=NONETaker Order: symbol=BTCUSDT side=SELL type=LIMIT quantity=3 price=20000 selfTradePreventionMode=EXPIRE_BOTH
النتيجة: سيتم إلغاء الطلبين.
طلب صانع السوق:
{    "orderId": 292864710,    "symbol": "BTCUSDT",    "status": "EXPIRED_IN_MATCH",    "clientOrderId": "testMaker1",    "price": "20002",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "NONE",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
طلب المستفيد:
{    "orderId": 292864712,    "symbol": "BTCUSDT",    "status": "EXPIRED_IN_MATCH",    "clientOrderId": "testTaker1",    "price": "20000",    "avgPrice": "0.0000",    "origQty": "3",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "SELL",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRE_BOTH",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
Maker Order: symbol=BTCUSDT side=BUY  type=LIMIT quantity=1 price=20002 selfTradePreventionMode=EXPIRE_MAKER Taker Order: symbol=BTCUSDT side=SELL type=LIMIT quantity=1 price=20000 selfTradePreventionMode=EXPIRE_TAKER
النتيجة: سيتم تفعيل وضع منع التداول الذاتي الخاص بطلب المستفيد، وبالتالي سيتم إلغاء طلب المستفيد.
طلب صانع السوق:
{    "orderId": 292864710,    "symbol": "BTCUSDT",    "status": "NEW",    "clientOrderId": "testMaker1",    "price": "20002",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRE_MAKER",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
طلب المستفيد:
{    "orderId": 292864712,    "symbol": "BTCUSDT",    "status": "EXPIRED_IN_MATCH",    "clientOrderId": "testTaker1",    "price": "20000",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "SELL",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRE_TAKER",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
Maker Order: symbol=BTCUSDT side=BUY  type=LIMIT  quantity=1 price=20002  selfTradePreventionMode=NONE Taker Order: symbol=BTCUSDT side=SELL type=MARKET quantity=3 selfTradePreventionMode=EXPIRE_MAKER
النتيجة: سيتم إلغاء الطلب الحالي بسبب منع التداول الذاتي، وستظهر حالة الطلب كالآتي: "EXPIRED_IN_MATCH". وسيتم إلغاء الطلب الجديد كذلك، لكن بسبب ضعف السيولة في قائمة الطلبات، وستظهر حالة الطلب على أنها: "EXPIRED".
طلب صانع السوق:
{    "orderId": 292864710,    "symbol": "BTCUSDT",    "status": "EXPIRED_IN_MATCH",    "clientOrderId": "testMaker1",    "price": "20002",    "avgPrice": "0.0000",    "origQty": "1",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "LIMIT",    "reduceOnly": false,    "closePosition": false,    "side": "BUY",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRE_MAKER",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}
طلب المستفيد:
{    "orderId": 292864712,    "symbol": "BTCUSDT",    "status": "EXPIRED",    "clientOrderId": "testTaker1",    "price": "20000",    "avgPrice": "0.0000",    "origQty": "3",    "executedQty": "0",    "cumQuote": "0",    "timeInForce": "GTC",    "type": "MARKET",    "reduceOnly": false,    "closePosition": false,    "side": "SELL",    "positionSide": "BOTH",    "stopPrice": "0",    "workingType": "CONTRACT_PRICE",    "priceMatch": "NONE",    "selfTradePreventionMode": "EXPIRED",    "goodTillDate": 0,    "priceProtect": false,    "origType": "LIMIT",    "time": 1692849639460,    "updateTime": 1692849639460}