NAV

مقدمه

به داکیومنت API تبدیل خوش آمدید.

برای استفاده از API می‌توانید از ماژول پایتونی زیر استفاده نمایید:

Tabdeal-Python

امنیت

مکانیزم‌های امنیتی

نوع مکانیزم ملزومات
TRADE api-key و signature
USER api-key
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 به انتهای پارامترهای ارسالی اضافه کرده و درخواست خود را ارسال کنید.

توضیحات

وضعیت سفارشات

وضعیت سفارش توضیحات
NEW سفارش ایجاد شده است
PARTIALLY_FILLED بخشی از سفارش انجام شده است
FILLED سفارش به طور کامل انجام شده است
CANCELED سفارش لغو شده است
REJECTED سفارش رد شده است

نوع سفارشات

جهت سفارشات

وضعیت سفارش 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 قیمت فعال شدن سفارش

جستجوی سفارش

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 سفارش که توسط کاربر تولید شده

سفارشات باز

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 نام بازار با _

لغو سفارش

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 سفارش که توسط کاربر تولید شده

تمام سفارشات

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 خروجی تنها به این تعداد بازگردانده میشود

لغو تمام سفارشات باز

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 نام بازار با _

ارسال سفارش 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 که توسط کاربر تولید شده


جستجوی سفارش 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 سفارش که توسط کاربر تولید شده

سفارشات باز 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 سفارش که توسط کاربر تولید شده

تمام سفارشات 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 خروجی تنها به این تعداد بازگردانده میشود

معاملات من

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 خروجی تنها به این تعداد بازگردانده میشود

اطلاعات کاربر

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 خروجی تنها به این تعداد بازگردانده میشود

لیست معاملات

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 خروجی تنها به این تعداد بازگردانده میشود

لیست بازارها

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 خروجی تنها به این تعداد بازگردانده میشود

تست اتصال به سرور

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
}
پارامتر الزامی توضیحات
method بله نام بازار
id بله شناسه‌ی عددی یکتای درخواست ارسالی
params وابسته به method لیست پارامترهای مورد نیاز


مقادیر معتبر برای پارامتر method

مقدار توضیحات
SUBSCRIBE برای subscribe کردن در topic موردنظر


سفارشات (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 کنیم را می‌دهیم و ساختار آن به صورت بالا است.

وب سوکت اطلاعات کاربر

توضیحات

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

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"
}

به‌روزرسانی 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"
)

نمونه خروجی:

{}

حذف 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"
)

نمونه خروجی:

{}

اطلاعات دریافتی (سفارش)

نمونه خروجی برای سفارش

{
  "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 شدن کل یا بخشی از سفارش موجود، از این وب سوکت دیتای سفارش کاربر مانند نمونه ارسال می‌شود.

عملیات‌های انجام‌شده روی سفارش

عملیات توضیحات
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 نماد مربوط به دارایی مورد نظر

خطاها

در تمامی درخواست های ارسال شده اگر به هر دلیلی امکان پردازش درخواست وجود نداشته باشد خطایی بازگردانده می شود. این پاسخ به فرمت 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 مرداد ۱۴۰۱

اضافه شده