تایپاسکریپت¶
بستهٔ @bitpin-dev/bitpin-sdk در npm (منتشرشده توسط سازمان bitpin-dev در npm): همان SDK برای تایپاسکریپت و جاوااسکریپت، با نامهای ccxt JS و همان رفتار SDK پایتون. به Node نسخهٔ ۲۲ یا بالاتر نیاز دارد؛ Bun و Deno هم کار میکنند. برای سرور و ربات ساخته شده است؛ کلید مخفی API نباید در مرورگر باشد.
npm install @bitpin-dev/bitpin-sdk
import { Bitpin, InsufficientFunds } from "@bitpin-dev/bitpin-sdk";
const client = new Bitpin({ apiKey: process.env.BITPIN_API_KEY, secret: process.env.BITPIN_SECRET_KEY });
const ticker = await client.fetchTicker("BTC/IRT");
console.log(ticker.last?.toString());
const order = await client.createOrder("USDT/IRT", "limit", "buy", "10", "90000", { clientOrderId: "bot-1" });
await client.cancelOrderByIdentifier("bot-1");
new Bitpin() بدون تنظیمات، BITPIN_API_KEY، BITPIN_SECRET_KEY و BITPIN_DOMAIN را از متغیرهای محیطی میخواند.
نسخههای پشتیبانیشده¶
- محیط اجرا: Node.js نسخهٔ ۲۲ یا بالاتر (
"engines"درpackage.json)، آزمودهشده روی Node ۲۲، ۲۴ و ۲۶. Bun و Deno هم کار میکنند. - تایپها: فایلهای تعریف نوع با TypeScript ۵٫۰ یا بالاتر کار میکنند؛ خود SDK با TypeScript ۷ ساخته میشود.
- مشارکتکنندگان: از نسخهٔ Node در
ts/.nvmrcاستفاده کنید (nvm، fnm، mise و Volta آن را میخوانند).devEnginesدرpackage.jsonباعث میشود npm با Node قدیمیتر از ۲۲ یا npm قدیمیتر از ۱۰٫۹ کار نکند.
تفاوت با پایتون¶
| پایتون | تایپاسکریپت | |
|---|---|---|
| کلاینتها | Bitpin (همگام) و AsyncBitpin |
یک Bitpin؛ همهٔ متدها Promise برمیگردانند |
| نامها | fetch_order_book |
fetchOrderBook (مثل ccxt JS) |
| API ضمنی | client.public_get_mkt_tickers() |
client.publicGetMktTickers() |
| اعداد | decimal.Decimal |
Decimal از decimal.js که دوباره export شده است: import { Decimal } from "@bitpin-dev/bitpin-sdk" |
timeout |
ثانیه | میلیثانیه، مثل ccxt JS |
| لغو گروهی | cancel_orders(ids=[...]) |
cancelOrders({ ids: [...] }) یا { identifiers: [...] } |
| ذخیرهٔ توکن | FileTokenStore() |
new FileTokenStore() (در Node)، رابط ناهمگام TokenStore |
| وبسوکت | هر دو کلاینت | داخلی |
متدها¶
- بازارها:
loadMarkets،market،fetchMarkets،fetchCurrencies،fetchNetworks،fetchMarketSuspensions،describe - قیمتها:
fetchTicker،fetchTickers،fetchOrderBook،fetchTrades،fetchOHLCV(نام دیگر:fetchOhlcv) - کارمزد:
fetchTradingFees،fetchTradingFee - سفارشها:
createOrder،createOrders،fetchOrder،fetchOrders،fetchOpenOrders،fetchClosedOrders،fetchOrderHistory،cancelOrder،cancelOrderByIdentifier،cancelOrders،fetchMyTrades - کیف پول:
fetchBalance،fetchBankAccounts،fetchDepositAddress،fetchCurrencyNetworks،fetchDeposits،fetchWithdrawals،withdraw،verifyWithdrawOtp،resendWithdrawOtp - وبسوکت:
watchTicker،watchOHLCV،watchOrderBook،watchTrades،watchOrders،watchMyTradesوcloseبرای قطع اتصال - سطح پایین:
request(endpointId, pathParams, params, body) - فعلاً در بیتپین موجود نیست (خطای
NotSupportedمیدهند):cancelAllOrders،editOrder،fetchAccounts،fetchLedger،transfer،fetchDepositWithdrawFees،fetchPositions،setLeverage،createDepositAddress،watchBalance،watchTickers،setSandboxMode
آرگومانها، محدودیتها و خروجیها همانهایی است که در صفحههای دادههای بازار، معامله، کیف پول و وبسوکت آمده است.
پیکربندی¶
const client = new Bitpin({
apiKey: "...",
secretKey: "...", // یا `secret`، مثل ccxt
domain: "org", // "org" (پیشفرض)، "ir" یا "market"؛ REST و وبسوکت با هم عوض میشوند
timeout: 10_000, // میلیثانیه
maxRetries: 3, // فقط برای درخواستهای تکرارپذیر
rateLimits: { orderbook: "10800/min" },
tokenStore: new FileTokenStore(),
});
خطاها¶
کلاسها همان کلاسهای پایتون و ccxt هستند و هم مستقیم و هم زیر errors export شدهاند:
import { errors, InsufficientFunds } from "@bitpin-dev/bitpin-sdk";
try {
await client.createOrder("USDT/IRT", "limit", "buy", "10", "90000");
} catch (error) {
if (error instanceof InsufficientFunds) { /* ... */ }
if (error instanceof errors.RateLimitExceeded) console.log(error.retryAfter);
}
مثالها¶
در examples/ts/ فایلهای quickstart.ts، place-and-cancel.ts و market-maker.ts هست. تا وقتی --live ندهید فقط درخواستهایی را که میفرستند چاپ میکنند.
node --experimental-strip-types examples/ts/quickstart.ts --symbol BTC/IRT