مقدمه
به داکیومنت API تبدیل خوش آمدید.
برای استفاده از API میتوانید از ماژول پایتونی زیر استفاده نمایید:
امنیت
مکانیزمهای امنیتی
نوع مکانیزم | ملزومات |
---|---|
TRADE | api-key و signature |
USER | api-key |
NONE | - |
- برای APIهایی که مکانیزم امنیتی آنها از نوع
TRADE
باشد، نیاز است تا Headerی با نامX-MBX-APIKEY
ارسال شود که مقدار آن، API Key دریافتشده از سایت میباشد. همچنین لازم است تا پارامترهای ارسالی، با کلیدapi-secret
دریافتشده از سایت، رمز شده و تحت عنوانsignature
در پارامترها ارسال شود. - برای APIهایی که مکانیزم امنیتی آنها از نوع
NONE
باشد، نیازی به ارسال هیچ پارامتر اضافهای نیست.
احراز هویت
در APIهایی که دارای مکانیزم امنیتی TRADE
هستند، برای احراز هویت لازم است تا api-key
و api-secret
از سایت دریافت شده و به صورتی که در زیر توضیح داده شده، ارسال شوند.
از طریق این آدرس اقدام به دریافت API Key کنید.
سپس لازم هست تا api-key
دریافتشده را به عنوان header درخواست خود به صورت زیر قرار دهید:
X-MBX-APIKEY: your_api_key
در ادامه لازم است تا پارامترهای ارسالی را با api-secret
رمز کنید.
برای این کار باید زمان ارسال درخواست را در فرمت timestamp
به انتهای پارامترهای ارسالی اضافه کنید و کل این مجموعه را به ساختار Query String در آورده و آن را با کلید api-secret
و با الگوریتم SHA256 و با مکانیزم HMAC رمز کنید.
خروجی رشتهی رمزشدهی بالا را تحت عنوان signature
به انتهای پارامترهای ارسالی اضافه کرده و درخواست خود را ارسال کنید.
- منظور از Query String ساختاری شبیه به ساختار زیر است:
param_1=test_1¶m_2=test_2&...×tamp=1507725176595
توضیحات
وضعیت سفارشات
وضعیت سفارش | توضیحات |
---|---|
NEW |
سفارش ایجاد شده است |
PARTIALLY_FILLED |
بخشی از سفارش انجام شده است |
FILLED |
سفارش به طور کامل انجام شده است |
CANCELED |
سفارش لغو شده است |
REJECTED |
سفارش رد شده است |
نوع سفارشات
LIMIT
MARKET
STOP_LOSS_LIMIT
جهت سفارشات
BUY
SELL
وضعیت سفارش OCO
وضعیت سفارش | توضیحات |
---|---|
EXECUTING |
سفارش ایجاد شده یا یکی از سفارشات زیرمجموعه در حال اجراست |
ALL_DONE |
سفارش تکمیل شده و سفارشات زیرمجموعه پایان یافتهاند |
REJECT |
سفارش رد و یا لغو شده است |
وضعیت سفارشات زیرمجموعه OCO
وضعیت سفارش | توضیحات |
---|---|
RESPONSE |
یکی از سفارشات زیرمجموعه لغو و یا رد شده است |
EXEC_STARTED |
سفارشات زیرمجموعه فعال شدهاند و یا وضعیتشان تغییر کرده است |
ALL_DONE |
سفارشات زیرمجموعه تکمیل شده و پایان یافتهاند |
معامله
ارسال سفارش
POST https://api1.tabdeal.org/api/v1/order [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
from tabdeal.enums import OrderSides, OrderTypes
client = Spot(api_key, api_secret)
order = client.new_order(
symbol='BTCIRT',
side=OrderSides.SELL,
type=OrderTypes.MARKET,
quantity="0.001"
)
نمونه خروجی:
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 139,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126344421,
"price": "0.00000000",
"origQty": "0.00100000",
"executedQty": "0.00100000",
"cummulativeQuoteQty": "99999.99900000",
"cumulativeQuoteQty": "99999.99900000",
"status": "FILLED",
"type": "MARKET",
"side": "SELL",
"stopPrice": "0.00000000",
"updateTime": 1650126344546,
"isWorking": false,
"isStopOrderTriggered": false,
"fills": [
{
"price": "99999999.00000000",
"qty": "0.00100000",
"commission": "399.99999600",
"commissionAsset": "IRT",
"tradeId": 4
}
]
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
side | بله | ENUM | SELL یا BUY |
type | بله | ENUM | MARKET یا LIMIT یا STOP_LOSS_LIMIT |
quantity | بله | DECIMAL | تعداد خرید یا فروش |
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
newClientOrderId | خیر | STRING | id سفارش که توسط کاربر تولید شده |
price | خیر | DECIMAL | قیمت خرید یا فروش |
stopPrice | خیر | DECIMAL | قیمت فعال شدن سفارش |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - در صورتی که
type
سفارشLIMIT
باشد، ارسالprice
الزامی است. - در صورتی که
type
سفارشSTOP_LOSS_LIMIT
باشد، ارسالstopPrice
الزامی است. - پارامتر
newClientOrderId
شناسهی یکتا برای سفارش است و توسط کاربر تولید میشود که برای هر کاربر باید یکتا باشد.
جستجوی سفارش
GET https://api1.tabdeal.org/r/api/v1/order [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
order = client.get_order(
symbol='BTC_IRT',
order_id=140
)
نمونه خروجی:
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 140,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126546994,
"price": "99999999.00000000",
"origQty": "0.00200000",
"executedQty": "0.00100000",
"cummulativeQuoteQty": "99999.99900000",
"cumulativeQuoteQty": "99999.99900000",
"status": "PARTIALLY_FILLED",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000",
"updateTime": 1650126680079,
"isWorking": true,
"isStopOrderTriggered": false
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
orderId | خیر | LONG | id سفارش |
origClientOrderId | خیر | STRING | id سفارش که توسط کاربر تولید شده |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - ارسال فقط یکی از پارامترهای
orderId
یاorigClientOrderId
الزامی است.
سفارشات باز
GET https://api1.tabdeal.org/r/api/v1/openOrders [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
orders = client.get_open_orders(
symbol='BTCIRT'
)
نمونه خروجی:
[
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 140,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126546994,
"price": "99999999.00000000",
"origQty": "0.00200000",
"executedQty": "0.00100000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "PARTIALLY_FILLED",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000",
"updateTime": 1650126680079,
"isWorking": true,
"isStopOrderTriggered": false
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
- در صورتی که
symbol
یاtabdealSymbol
را ارسال نکنید، سفارشات باز تمام بازارها را برمیگرداند.
لغو سفارش
DELETE https://api1.tabdeal.org/api/v1/order [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
order = client.cancel_order(
symbol='BTC_IRT',
order_id=143
)
نمونه خروجی:
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 143,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126665341,
"price": "99999999.00000000",
"origQty": "0.00300000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000",
"updateTime": 1650126730359,
"isWorking": false,
"isStopOrderTriggered": false
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
orderId | خیر | LONG | id سفارش |
origClientOrderId | خیر | STRING | id سفارش که توسط کاربر تولید شده |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - ارسال فقط یکی از پارامترهای
orderId
یاorigClientOrderId
الزامی است.
تمام سفارشات
GET https://api1.tabdeal.org/r/api/v1/allOrders [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
orders = client.get_orders(
symbol='BTCIRT',
start_time=1650126305575,
end_time=1650126665350
)
نمونه خروجی:
[
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 143,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126665341,
"price": "99999999.00000000",
"origQty": "0.00300000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000",
"updateTime": 1650126730359,
"isWorking": false,
"isStopOrderTriggered": false
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 138,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126305575,
"price": "99999999.00000000",
"origQty": "0.00100000",
"executedQty": "0.00100000",
"cummulativeQuoteQty": "99999.99900000",
"cumulativeQuoteQty": "99999.99900000",
"status": "FILLED",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000",
"updateTime": 1650126569260,
"isWorking": false,
"isStopOrderTriggered": false
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
startTime | خیر | LONG | سفارشاتی که بعد از این زمان ایجاد شده باشند به عنوان خروجی بازگردانده میشوند |
endTime | خیر | LONG | سفارشاتی که قبل از این زمان ایجاد شده باشند به عنوان خروجی بازگردانده میشوند |
limit | خیر | INT | خروجی تنها به این تعداد بازگردانده میشود |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - پارامتر
limit
حداکثر1000
میتواند باشد و مقدار پیشفرض آن در صورت عدم ارسال پارامتر،50
است.
لغو تمام سفارشات باز
DELETE https://api1.tabdeal.org/api/v1/openOrders [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
orders = client.cancel_open_orders(
symbol='BTC_IRT'
)
نمونه خروجی:
[
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 145,
"orderListId": -1,
"clientOrderId": null,
"transactTime": 1650126930817,
"price": "99999999.00000000",
"origQty": "0.00300000",
"executedQty": "0.00100000",
"cummulativeQuoteQty": "99999.99900000",
"cumulativeQuoteQty": "99999.99900000",
"status": "FILLED",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000",
"updateTime": 1650126954582,
"isWorking": false,
"isStopOrderTriggered": false
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست.
ارسال سفارش OCO
POST https://api1.tabdeal.org/api/v1/order/oco [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
from tabdeal.enums import OrderSides
client = Spot(api_key, api_secret)
oco = client.new_oco_order(
symbol='BTC_IRT',
side=OrderSides.SELL,
quantity="0.005",
price="100100000",
stop_price="99899999",
stop_limit_price="99890000",
list_client_order_id="oco_6",
limit_client_order_id="limit_6",
stop_client_order_id="stop_6"
)
نمونه خروجی:
{
"orderListId": 20,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "oco_6",
"transactionTime": 1652161449338,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 159,
"clientOrderId": "limit_6"
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 226,
"clientOrderId": "stop_6"
}
],
"orderReports": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 159,
"orderListId": 20,
"clientOrderId": "limit_6",
"transactTime": 1652161449593,
"price": "100100000.00000000",
"origQty": "0.00500000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000",
"updateTime": 1652161449905,
"isWorking": true,
"isStopOrderTriggered": false
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 226,
"orderListId": 20,
"clientOrderId": "stop_6",
"transactTime": 1652161450753,
"price": "99890000.00000000",
"origQty": "0.00500000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "99899999.00000000",
"updateTime": 1652161450753,
"isWorking": true,
"isStopOrderTriggered": false
}
]
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
side | بله | ENUM | SELL یا BUY |
quantity | بله | DECIMAL | تعداد خرید یا فروش |
price | بله | DECIMAL | قیمت سفارش limit |
stopPrice | بله | DECIMAL | قیمت فعالسازی سفارش stop |
stopLimitPrice | بله | DECIMAL | قیمت سفارش stop |
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ listClientOrderId |
limitClientOrderId | خیر | STRING | id سفارش limit که توسط کاربر تولید شده |
stopClientOrderId | خیر | STRING | id سفارش stop که توسط کاربر تولید شده |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - پارامترهای
listClientOrderId
وlimitClientOrderId
وstopClientOrderId
شناسههای یکتا برای سفارشات هستند و توسط کاربر تولید میشوند که برای هر کاربر باید یکتا باشند.
جستجوی سفارش OCO
GET https://api1.tabdeal.org/r/api/v1/orderList [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
oco = client.get_oco_order(
oco_id=19
)
نمونه خروجی:
{
"orderListId": 19,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": null,
"transactionTime": 1651489273803,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 142,
"clientOrderId": null
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 225,
"clientOrderId": null
}
]
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
orderListId | خیر | LONG | id سفارش |
origClientOrderId | خیر | STRING | id سفارش که توسط کاربر تولید شده |
- ارسال فقط یکی از پارامترهای
orderListId
یاorigClientOrderId
الزامی است.
سفارشات باز OCO
GET https://api1.tabdeal.org/r/api/v1/openOrderList [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
open_oco = client.get_oco_open_orders()
نمونه خروجی:
[
{
"orderListId": 19,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": null,
"transactionTime": 1651489273803,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 142,
"clientOrderId": null
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 225,
"clientOrderId": null
}
]
},
{
"orderListId": 22,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": null,
"transactionTime": 1652162579757,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 161,
"clientOrderId": null
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 228,
"clientOrderId": null
}
]
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
لغو سفارش OCO
DELETE https://api1.tabdeal.org/api/v1/orderList [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
order = client.cancel_oco_order(
symbol='BTC_IRT',
oco_id=19
)
نمونه خروجی:
{
"orderListId": 19,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": null,
"transactionTime": 1651489273803,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 142,
"clientOrderId": null
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 225,
"clientOrderId": null
}
],
"orderReports": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 142,
"orderListId": 19,
"clientOrderId": null,
"transactTime": 1651489273833,
"price": "100100000.00000000",
"origQty": "0.00500000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"type": "LIMIT",
"side": "SELL",
"stopPrice": "0.00000000",
"updateTime": 1652162973131,
"isWorking": false,
"isStopOrderTriggered": false
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 225,
"orderListId": 19,
"clientOrderId": null,
"transactTime": 1651489275437,
"price": "99890000.00000000",
"origQty": "0.00500000",
"executedQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "99899999.00000000",
"updateTime": 1652162973140,
"isWorking": false,
"isStopOrderTriggered": false
}
]
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
orderListId | خیر | LONG | id سفارش |
listClientOrderId | خیر | STRING | id سفارش که توسط کاربر تولید شده |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - ارسال فقط یکی از پارامترهای
orderListId
یاlistClientOrderId
الزامی است.
تمام سفارشات OCO
GET https://api1.tabdeal.org/r/api/v1/allOrderList [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
all_oco = client.get_oco_orders(
start_time=1650962658352,
end_time=1652161449338,
limit=2
)
نمونه خروجی:
[
{
"orderListId": 19,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": null,
"transactionTime": 1651489273803,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 142,
"clientOrderId": null
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 225,
"clientOrderId": null
}
]
},
{
"orderListId": 18,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "oco_5",
"transactionTime": 1650963634241,
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orders": [
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 141,
"clientOrderId": null
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"orderId": 224,
"clientOrderId": null
}
]
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
startTime | خیر | LONG | سفارشاتی که بعد از این زمان ایجاد شده باشند به عنوان خروجی بازگردانده میشوند |
endTime | خیر | LONG | سفارشاتی که قبل از این زمان ایجاد شده باشند به عنوان خروجی بازگردانده میشوند |
limit | خیر | INT | خروجی تنها به این تعداد بازگردانده میشود |
- پارامتر
limit
حداکثر1000
میتواند باشد و مقدار پیشفرض آن در صورت عدم ارسال پارامتر،50
است.
معاملات من
GET https://api1.tabdeal.org/r/api/v1/myTrades [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
trades = client.my_trades(
symbol='BTC_IRT',
start_time=1653210673316,
end_time=1653222331419,
limit=2
)
نمونه خروجی:
[
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"id": 36,
"orderId": 1140,
"price": "99900500.00000000",
"qty": "0.00500000",
"quoteQty": "0.00498000",
"commission": "1998.01000000",
"commissionAsset": "IRT",
"time": 1653211038472,
"isBuyer": false,
"isMaker": true
},
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"id": 35,
"orderId": 1137,
"price": "99900500.00000000",
"qty": "0.00500000",
"quoteQty": "0.00498000",
"commission": "1998.01000000",
"commissionAsset": "IRT",
"time": 1653210886838,
"isBuyer": false,
"isMaker": true
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
startTime | خیر | LONG | معاملاتی که بعد از این زمان ایجاد شده باشند به عنوان خروجی بازگردانده میشوند |
endTime | خیر | LONG | معاملاتی که قبل از این زمان ایجاد شده باشند به عنوان خروجی بازگردانده میشوند |
limit | خیر | INT | خروجی تنها به این تعداد بازگردانده میشود |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - پارامتر
limit
حداکثر1000
میتواند باشد و مقدار پیشفرض آن در صورت عدم ارسال پارامتر،50
است.
اطلاعات کاربر
GET https://api1.tabdeal.org/r/api/v1/account [Trade]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
account = client.account()
نمونه خروجی:
{
"makerCommission": 40,
"takerCommission": 40,
"canTrade": true,
"canWithdraw": false,
"canDeposit": false,
"updateTime": 1657531256965,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "0.05297200",
"freeze": "0.04700000"
},
{
"asset": "IRT",
"free": "99990721.20000000",
"freeze": "0.00000000"
},
{
"asset": "USDT",
"free": "0.00000000",
"freeze": "0.00000000"
},...
],
"permissions": [
"SPOT"
]
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
بازار
لیست سفارشات
GET https://api1.tabdeal.org/r/api/v1/depth [NONE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot()
order_book = client.depth(
symbol='BTCUSDT',
limit=1
)
نمونه خروجی:
{
"bids": [
[
"39792.23000000", // PRICE
"8.27169000" // QUANTITY
],
[
"39792.18000000", // PRICE
"0.33006000" // QUANTITY
]
],
"asks": [
[
"39792.24000000", // PRICE
"1.27040000" // QUANTITY
],
[
"39792.27000000", // PRICE
"0.00850000" // QUANTITY
]
]
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
limit | خیر | INT | خروجی تنها به این تعداد بازگردانده میشود |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - پارامتر
limit
حداکثر5000
میتواند باشد و مقدار پیشفرض آن در صورت عدم ارسال پارامتر،50
است.
لیست معاملات
GET https://api1.tabdeal.org/r/api/v1/trades [NONE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot()
trades = client.trades(
symbol='BTC_IRT',
limit=2
)
نمونه خروجی:
[
{
"id": 18,
"price": "100000000.00000000",
"qty": "0.02500000",
"quoteQty": "0.02490000",
"time": 1648990888735,
"isBuyerMaker": false
},
{
"id": 17,
"price": "99999999.00000000",
"qty": "0.02500000",
"quoteQty": "2489999.97510000",
"time": 1648990780492,
"isBuyerMaker": true
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
symbol | خیر | STRING | نام بازار |
tabdealSymbol | خیر | STRING | نام بازار با _ |
limit | خیر | INT | خروجی تنها به این تعداد بازگردانده میشود |
- ارسال
symbol
یاtabdealSymbol
الزامی است. تفاوت این دو در علامت_
بین علامت ارزهاست. - پارامتر
limit
حداکثر1000
میتواند باشد و مقدار پیشفرض آن در صورت عدم ارسال پارامتر،50
است.
لیست بازارها
GET https://api1.tabdeal.org/r/api/v1/exchangeInfo [NONE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot()
market = client.exchange_info(
symbol='BTC_IRT'
)
market = client.exchange_info(
symbol='MANAUSDT'
)
markets = client.exchange_info(
symbols=['BTCIRT', 'MANAUSDT']
)
نمونه خروجی:
[
{
"symbol": "BTCIRT",
"tabdealSymbol": "BTC_IRT",
"status": "TRADING",
"baseAsset": "BTC",
"baseAssetPrecision": "8",
"quoteAsset": "IRT",
"quoteAssetPrecision": "8",
"baseCommissionPrecision": "8",
"quoteCommissionPrecision": "8",
"orderTypes": [
"LIMIT",
"STOP_LOSS_LIMIT",
"MARKET"
],
"icebergAllowed": false,
"ocoAllowed": true,
"quoteOrderQtyMarketAllowed": false,
"allowTrailingStop": false,
"isSpotTradingAllowed": true,
"isMarginTradingAllowed": false,
"filters": [
{
"filterType": "PRICE_FILTER",
"minPrice": "300.00000000",
"maxPrice": "30000000000.00000000",
"tickSize": "1.00000000"
},
{
"filterType": "PERCENT_PRICE",
"multiplierUp": 5.0,
"multiplierDown": 0.2,
"avgPriceMins": 5
},
{
"filterType": "LOT_SIZE",
"minQty": "0.00005000",
"stepSize": "0.00000001"
},
{
"filterType": "MIN_NOTIONAL",
"minNotional": "99000.00000000",
"applyToMarket": false,
"avgPriceMins": 5
},
{
"filterType": "MARKET_LOT_SIZE",
"minQty": "0.00005000",
"maxQty": "0.99250018",
"stepSize": "0.00000001"
}
],
"permissions": [
"SPOT"
]
}
]
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
symbol | خیر | STRING | نام بازار |
symbols | خیر | STRING | نام بازارها |
tabdealSymbol | خیر | STRING | نام بازار با _ |
tabdealSymbols | خیر | STRING | نام بازارها با _ |
limit | خیر | INT | خروجی تنها به این تعداد بازگردانده میشود |
- پارامتر
limit
حداکثر1000
میتواند باشد و مقدار پیشفرض آن در صورت عدم ارسال پارامتر،50
است. - در صورتی که هیچکدام از فیلدهای
symbol
یاsymbols
یاtabdealSymbol
یاtabdealSymbols
ارسال نشود، تمامی بازارها بازگردانده میشوند.
تست اتصال به سرور
GET https://api1.tabdeal.org/r/api/v1/ping [NONE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot()
client.ping()
نمونه خروجی:
{}
پارامترها:
نیاز به ارسال پارامتر نیست.
گرفتن زمان سرور
GET https://api1.tabdeal.org/r/api/v1/time [NONE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot()
client.time()
نمونه خروجی:
{
"serverTime": 1660046774413
}
پارامترها:
نیاز به ارسال پارامتر نیست.
وب سوکت بازار
توضیحات
wss://api1.tabdeal.org/stream/
نمونه خروجی:
{
"result": null,
"id": 1
}
- برای اتصال به وب سوکت باید از url بالا استفاده کنید.
- برای استفاده از وب سوکت لازم است تا یک json با پارامترهای زیر ارسال شود:
پارامتر | الزامی | توضیحات |
---|---|---|
method | بله | نام بازار |
id | بله | شناسهی عددی یکتای درخواست ارسالی |
params | وابسته به method |
لیست پارامترهای مورد نیاز |
مقادیر معتبر برای پارامتر method
مقدار | توضیحات |
---|---|
SUBSCRIBE | برای subscribe کردن در topic موردنظر |
- پارامتر
id
شناسهی یکتای درخواست ارسالی است و پاسخ پیام ارسالی با همینid
بازمیگردد. - در خروجی درخواست در صورتی که درخواست موفقیتآمیز باشد، مقدار پارامتر
result
برابر باnull
خواهد بود.
سفارشات (OrderBook)
"[symbol]@depth@2000ms", "btcusdt@depth@2000ms", "usdtirt@depth@2000ms"
نمونه درخواست ارسالی
{
"method": "SUBSCRIBE",
"params": ["usdtirt@depth@2000ms"],
"id": 1
}
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.websocket_client import SpotWebsocketClient
def handler(message):
print(message)
tabdeal_ws = SpotWebsocketClient()
tabdeal_ws.market_order_book(
symbol="bnbusdt",
id=1,
callback=handler,
)
نمونه خروجی:
{
"stream": "usdtirt@depth@2000ms", // topic
"data": {
"e": "depthUpdate", // event type
"E": 1657530675579, // timeStamp
"s": "USDTIRT", // symbol
"b": [ // bids (Buy)
[
"32290", // price
"155.903075" // quantity
],
[
"32267",
"31.501710"
],
[
"32265",
"31.501710"
],
[
"32263",
"31.501710"
],
[
"32261",
"31.501710"
],...
],
"a": [ // asks (Sell)
[
"32311", // price
"76.378076" // quantity
],
[
"32427",
"9.876782"
],
[
"32430",
"2984.657201"
],
[
"32503",
"19.753564"
],
[
"32568",
"98.767818"
],...
]
}
}
این topic برای subscribe کردن در لیست سفارشات بازارهاست. در پارامتر params
لیست بازارهایی که میخواهیم در آنها subscribe کنیم را میدهیم و ساختار آن به صورت بالا است.
- لیست سفارشات بازار هر
2
ثانیه یکبار توسط این topic ارسال میشود. - در صورتی که میخواهید به بازارهای بیشتری متصل شوید، لازم است تا در پارامتر
params
سایر بازارها را نیز قرار دهید.
وب سوکت اطلاعات کاربر
توضیحات
wss://api1.tabdeal.org/stream/streams={listen_key}
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.websocket_client import SpotWebsocketClient
from tabdeal.spot import Spot
def handler(message):
print(message)
tabdeal_ws = SpotWebsocketClient()
tabdeal = Spot(api_key=api_key)
response = tabdeal.new_listen_key()
tabdeal_ws.user_data(
listen_key=response["listenKey"],
callback=handler,
)
- هر کاربر یک
listenKey
دارد که با استفاده از آن میتواند به وب سوکت متصل شده و از رویدادهای مرتبط با خود مطلع شود. - هر
listenKey
فقط60
دقیقه معتبر است. - برای اتصال به وب سوکت اطلاعات کاربر، لازم است تا
listenKey
کاربر را در url بالا قرار داده و به آن متصل شوید.
دریافت listenKey
POST https://api1.tabdeal.org/api/v1/userDataStream [USER]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key)
listen_key = client.new_listen_key()
نمونه خروجی:
{
"listenKey": "5b9drdtugwm5d1a76ztika1xxa649xv3mquc57cd2eyoag77han53iov8yyixnt3"
}
- با ارسال درخواست به این url یک
listenKey
دریافت میکنید که به مدت60
دقیقه معتبر است. - در صورتی که از قبل
listenKey
معتبر داشته باشید، با ارسال درخواست به این url مدت زمان اعتبارlistenKey
قبلی افزایش یافته و خروجی این درخواست همانlistenKey
قبلی خواهد بود.
بهروزرسانی listenKey
PUT https://api1.tabdeal.org/api/v1/userDataStream [USER]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key)
listen_key = client.renew_listen_key(
listen_key="5b9drdtugwm5d1a76ztika1xxa649xv3mquc57cd2eyoag77han53iov8yyixnt3"
)
نمونه خروجی:
{}
- با ارسال درخواست به این url مدت اعتبار
listenKey
ارسالی، به مدت60
دقیقه افزایش مییابد.
حذف listenKey
DELETE https://api1.tabdeal.org/api/v1/userDataStream [USER]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key)
listen_key = client.close_listen_key(
listen_key="5b9drdtugwm5d1a76ztika1xxa649xv3mquc57cd2eyoag77han53iov8yyixnt3"
)
نمونه خروجی:
{}
- با ارسال درخواست،
listenKey
ارسالی حذف خواهد شد و دیگر قابل استفاده نخواهد بود.
اطلاعات دریافتی (سفارش)
نمونه خروجی برای سفارش
{
"e": "executionReport", // Event type
"E": 1499405658658, // Event time
"s": "ETHBTC", // Symbol
"c": "mUvoqJxFIILMdfAW5iGSOW", // Client order ID
"S": "BUY", // Side
"o": "LIMIT", // Order type
"f": "GTC", // Time in force
"q": "1.00000000", // Order quantity
"p": "0.10264410", // Order price
"P": "0.00000000", // Stop price
"g": -1, // OrderListId (OCO Id)
"x": "NEW", // Current execution type
"X": "NEW", // Current order status
"i": 4293153, // Order ID
"l": "0.00000000", // Last executed quantity
"z": "0.00000000", // Cumulative filled quantity
"L": "0.00000000", // Last executed price
"n": "0", // Commission amount
"N": null, // Commission asset
"t": -1, // Trade ID
"m": false, // Is this trade the maker side?
"O": 1499405658657 // Order creation time
}
نمونه خروجی برای سفارش OCO
{
"e": "listStatus", //Event Type
"E": 1564035303637, //Event Time
"s": "ETHBTC", //Symbol
"g": 2, //OrderListId (OCO Id)
"c": "OCO", //Contingency Type
"l": "EXEC_STARTED", //List Status Type
"L": "EXECUTING", //List Order Status
"C": "F4QN4G8DlFATFlIUQ0cjdD", //List Client Order ID
"T": 1564035303625, //Transaction Time
"O": [ //An array of objects
{
"s": "ETHBTC", //Symbol
"i": 17, // orderId
"c": "AJYsMjErWJesZvqlJCTUgL" //ClientOrderId
},
{
"s": "ETHBTC",
"i": 18,
"c": "bfYPSQdLoqAJeNrOr9adzq"
}
]
}
یکی از اطلاعاتی که از وب سوکت اطلاعات کاربر دریافت میشود تغییرات مربوط به سفارشات کاربر است و درصورت ایجاد سفارش جدید یا حذف سفارش موجود و یا fill شدن کل یا بخشی از سفارش موجود، از این وب سوکت دیتای سفارش کاربر مانند نمونه ارسال میشود.
- درصورتی که تغییری در سفارشات زیرمجموعهی OCO ایجاد شود، هم دیتای مربوط به OCO و هم Order مربوطه ارسال میشوند.
- پارامتر
x
در خروجی برای نشان دادن عملیات انجامشده روی سفارش است.
عملیاتهای انجامشده روی سفارش
عملیات | توضیحات |
---|---|
NEW |
سفارش ایجاد شد |
CANCELED |
سفارش لغو شد |
TRADE |
روی سفارش، معامله صورت گرفت |
TRIGGERRED |
سفارش STOP فعال شد |
کیف پول
لیست داراییها
GET https://api1.tabdeal.org/r/api/v1/asset/get-funding-asset [TRADE]
ارسال درخواست با کتابخانه پایتونی:
from tabdeal.spot import Spot
client = Spot(api_key, api_secret)
order = client.funding_wallet(
asset='BTC',
)
نمونه خروجی:
{
"asset": "BTC",
"free": "1.97427700",
"freeze": "0.00634300"
}
پارامترها:
پارامتر | الزامی | نوع | توضیحات |
---|---|---|---|
timestamp | بله | LONG | زمان ارسال درخواست |
signature | بله | STRING | رشته ی رمز شده |
asset | خیر | STRING | نماد مربوط به دارایی مورد نظر |
- در صورتی که پارامتر
asset
ارسال نشود، لیست تمام داراییها بازگردانده میشود.
خطاها
در تمامی درخواست های ارسال شده اگر به هر دلیلی امکان پردازش درخواست وجود نداشته باشد خطایی بازگردانده می شود. این پاسخ به فرمت json و شامل کلیدهای code
و msg
می باشد.
نمونه خطای ارسال شده:
{
"code": errorCode,
"msg": "errorMessage"
}
خطای سرور
این دسته از خطاها مربوط به سرور هستند.
کد | توضیحات |
---|---|
1000 | خطای سرور (نامشخص) |
1001 | خطای سرور (نامشخص) |
1002 | تراکم بالای سفارشات |
1003 | ویژگی مورد نظر موجود نیست |
خطای احراز هویت
درخواست های فرستاده شده به درستی احراز هویت نمی شوند.
کد | توضیحات |
---|---|
1100 | signature یا timestamp یا api_key داده نشده است و یا اینکه api_key وجود ندارد |
1101 | timestamp نامعتبر است و یا اینکه 60 ثانیه از سرور جلوتر است و یا اینکه خارج از recieve window است |
1102 | recieve window نامعتبر است یا اینکه از 60000 بزرگ تر است |
1103 | signature نامعتبر است |
خطا در ارسال درخواست
پارامترهای ارسالی نامعتبر است.
کد | توضیحات |
---|---|
1200 | خطای نامعلوم سمت client ، با پشتیبانی تماس بگیرید |
1201 | پارامترهای ارسالی نامعتبر است |
1202 | اطلاعات فرستاده شده فرمت json درستی ندارند |
1203 | پارامترهای الزامی باید فرستاده شود |
1204 | سفارش مورد نظر پیدا نشد |
1205 | OCO مورد نظر پیدا نشد |
1206 | بازار مورد نظر پیدا نشد |
1207 | زمان شروع و زمان پایان میتوانند حداکثر 90 روز اختلاف داشته باشند |
1208 | ارسال سفارش باید منطبق بر قوانین بازار باشد |
1209 | قیمت گذاری OCO اشتباه است |
1210 | timestamp باید به میلی ثانیه باشد |
1211 | ساختار نمادهای (بازار) ارسالی اشتباه است |
1212 | ارز مورد نظر پیدا نشد |
1213 | با این clientOrderId قبلا سفارش ثبت شده است |
1214 | listenKey پیدا نشد |
1215 | سفارش قبلا لغو شده است |
1216 | تعداد درخواست های ارسالی از حد مجاز بیشتر شده است |
1217 | اجازه ارسال درخواست به این Endpoint با این HTTP متد وجود ندارد |
تغییرات
ورژن 0.6.0
مرداد ۱۴۰۱
اضافه شده
- اضافه شدن
POST r/api/v1/account
برای دریافت اطلاعات کاربر - اضافه شدن وب سوکت برای دریافت اطلاعات کاربر در لحظه
- اضافه شدن وب سوکت orderbook برای مشاهده لیست سفارشات بازارها در لحظه