Skip to content

Commit

Permalink
feat(market): Add websocket candle documentation (#275)
Browse files Browse the repository at this point in the history
Introduced comprehensive documentation for the websocket OHLC candle stream. This includes channel patterns, usage examples, and response parameters to guide developers in integrating this feature.
  • Loading branch information
amirreza888 authored Jan 6, 2025
1 parent fa9f3e1 commit 88deca3
Showing 1 changed file with 104 additions and 0 deletions.
104 changes: 104 additions & 0 deletions source/includes/_websocket.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,3 +194,107 @@ sub.subscribe();
| `lastTradePrice` | string | مبلغ آخرین معامله | <code dir="ltr">"35602702700"</code> |
| `lastUpdate` | int | زمان آخرین به‌روزرسانی به فرمت یونیکس | <code dir="ltr">1726651067347</code> |



<h2 id="websocket-candle">استریم آمار OHLC بازار نوبیتکس</h2>

برای توضیحات بیشتر در مورد OHLC به [این لینک](https://en.wikipedia.org/wiki/Open-high-low-close_chart) مراجعه کنید.<br><br>

کانال‌هایی با الگوی زیر شامل اطلاعات کندل بازار مورد نظر است.


**الگوی کانال‌های کندل ohlc:** <code dir="ltr">public:candle-{marketSymbol}-{resolution}</code>


<aside class="notice">
اطلاعات کندل ها به صورت دوره‌ای (حدودا هر ۱۰ ثانیه) پابلیش میشوند.
</aside>

<aside class="notice">
به‌جای <code>{marketSymbol}</code> باید سمبل بازار مربوطه را به‌شکل UPPERCASE (حروف بزرگ) قرار دهید. مثلاً <code>BTCIRT</code> و یا <code>ETHUSDT</code> و ...
</aside>

<aside class="notice">
به‌جای <code>{resolution}</code> باید رزولوشن مورد نظر را از جدول ذیل قرار دهید. مثلاً <code>5</code> و یا <code>2D</code> و ...
</aside>



* پارامتر {resolution} بازه زمانی کندل‌های خروجی می‌باشد و مقدار آن می‌تواند یکی از مقادیر زیر باشد:

| دقیقه‌ای | توضیح | ساعتی | توضیح | روزانه | توضیح |
|----------|-----------|-------|-------------|--------|--------|
| `1` | یک دقیقه | `60` | یک ساعت | `D` | یک روز |
| `5` | پنج دقیقه | `180` | سه ساعت | `2D` | دو روز |
| `15` | یک ربع | `240` | چهار ساعت | `3D` | سه روز |
| `30` | نیم ساعت | `360` | شش ساعت | | |
| | | `720` | دوازده ساعت | | |

```javascript
const sub = client.newSubscription('public:candle-BTCIRT-15', { delta: 'fossil' });
sub.on('subscribed', (ctx) => {
console.log('subscribed');
});
sub.on('publication', (ctx) => {
console.log(ctx.data);
});
sub.subscribe();
```

> در صورتی که از SDK استفاده نمی‌کنید پیام زیر را ارسال نمایید:
```json
{
"id": 2,
"subscribe": {
"channel": "public:candle-BTCIRT-15"
}
}
```

> که در کنسول، پیامی که `console.log` نموده‌اید به شکل زیر خواهد بود که همان مقدار `data` می‌باشد:
```json
{
"t": 1731852900,
"o": 6240000001.0,
"h": 6250000000.0,
"l": 6238000000.0,
"c": 6238031033.0,
"v": 1.26
}
```

> همچنین اگر از SDK رسمی استفاده نمی‌کنید، در صورت اتصال و اشتراک صحیح، پیام‌های دریافتی از کانال به شکل زیر خواهد بود:
```json
{
"push": {
"channel": "public:candle-BTCUSDT-15",
"pub": {
"data": "{\"t\":1731852900,\"o\":6240000001.0,\"h\":6250000000.0,\"l\":6238000000.0,\"c\":6238031033.0,\"v\":1.26}",
"offset": 34575
}
}
}
```


**مثال:** برای دریافت کندل های 15 دقیقه ای بازار بیت‌کوین تومان، کافیست به کانال `public:candle-BTCIRT-15` متصل شوید.



**توجه:** استفاده از فلگ <code dir="ltr">{ delta: 'fossil' }</code> در تابع `newSubscription` اختیاری است. با استفاده از این فلگ، اطلاعات اردربوک به صورت diff به کلاینت ارسال می‌شود. اگر از کلاینت‌های رسمی Centrifugo استفاده می‌کنید، متوجه تغییری نخواهید شد و صرفاً استفاده از پهنای باند شبکه‌ی شما کاهش چشم‌گیری در حدود ۶۰٪ خواهد کرد. اما در صورتی که از کلاینت رسمی استفاده نمی‌کنید، یا باید از استفاده از این فلگ خودداری کنید و یا باید حتماً الگوریتم بازیابی داده‌ها از حالت فشرده شده به حالت اصلی را پیاده‌سازی کنید. برای این کار از [الگوریتم فسیل](https://fossil-scm.org/) استفاده کرده‌ایم.

### پارامترهای پاسخ

ساختار پیام‌های وبسوکت این کانال به این صورت می باشد.

| پارامتر پاسخ | نوع | توضیحات | نمونه |
|--------------|-------|--------------|-------------------------------------|
| `t` | int | شروع زمان | <code dir="ltr">1731852900</code> |
| `o` | float | قیمت شروع | <code dir="ltr">6240000001.0</code> |
| `h` | float | بیشترین قیمت | <code dir="ltr">6250000000.0</code> |
| `l` | float | کمترین قیمت | <code dir="ltr">6238000000.0</code> |
| `c` | float | قیمت پایانی | <code dir="ltr">6238031033.0</code> |
| `v` | float | حجم معاملات | <code dir="ltr">1.26</code> |

0 comments on commit 88deca3

Please sign in to comment.