از API Binance برای پخش قیمت رمزنگاری در زمان واقعی استفاده کنید
در اوایل سال جاری با فشار کوتاه GameStop و سوابق قیمت بیت کوین ، نمودارهای شمعدانی همه اخبار بود و فهمیدم که هیچ ایده ای برای خواندن آنها ندارم. بنابراین چند هفته پیش ، من سرانجام در مورد آنها خواندم و یاد گرفتم که درک آنها در واقع بسیار آسان است.
یکی از کارهای مورد علاقه من برای انجام هر زمان که در مورد یک موضوع جدید بیاموزم ، ایجاد ابزارهای سفارشی خودم برای آن است. برنامه نویسی چیزی خودتان یکی از بهترین راهها برای درک محکم از هر موضوع است. بنابراین ، من یک کلاس JavaScript ساده ایجاد کردم تا نمودارهای شمعدانی را روی بوم HTML ترسیم کنم.
با این حال ، اولین راه حل من فقط قادر به ترسیم نمودارهای استاتیک بود و هیچ تعامل نداشت ، بنابراین هیچ راهی برای استفاده از آن برای نمایش داده های قیمت در زمان واقعی وجود ندارد. برای اصلاح این وضعیت ، من کارهای بیشتری را در آن قرار دادم ، شاخص های بزرگنمایی و فنی را اضافه کردم و آن را از طریق API Binance به یک جریان شمعدان WebSocket WebSocket وصل کردم.
به روزرسانی کلاس Candlestick Chart
قبل از نمایش داده های زمان واقعی ، مجبور شدم پشتیبانی از آن را به کلاس نمودار شمعدان خود اضافه کنم.
پیش از این ، این فقط از مقادیر شمعدانی استاتیک پشتیبانی می کرد و راهی برای به روزرسانی آنها به صورت پویا نداشت. بنابراین ، من یک تابع جدید UpdateCandlestick (CandleStickid ، Open ، Close ، High ، Low) را اضافه کردم که مقادیر یک شمعدان معین را به روز می کند.
مرحله بعدی اجرای توانایی بزرگنمایی و خارج از نمودار بود. اگر واقعاً می خواهید از نمودار شمعدانی به طور مؤثر استفاده کنید ، این یک ویژگی بسیار مهم است.
شما احتمالاً در حال نگاه کردن به آن بسیار بزرگنمایی هستید ، اما وقتی باید تصمیم بگیرید که آیا یک دارایی را خریداری کنید یا بفروشید ، ممکن است بزرگنمایی کنید تا در طی یک دوره طولانی تر به توسعه قیمت ها نگاه کنید. خوشبختانه ، اضافه کردن بزرگنمایی با تغییر شاخص شروع شمعدان های کشیده شده بسیار آسان است. به عنوان مثال. از فهرست 0 شروع کنید تا همه شمعدان ها را ترسیم کنید ، و اگر فقط می خواهید 100 مورد آخر را ترسیم کنید ، از candlesticks. l طول 100 شروع کنید.
سرانجام ، من پشتیبانی از شاخص های فنی را به کلاس Candlestick Chart اضافه کردم. من می خواستم آنها را به شکلی پیاده سازی کنم که به من اجازه می دهد بعداً بیشتر از آنها اضافه کنم یک بار که بیشتر در مورد آنها می آموزم. من از چگونگی معلوم شدن بسیار خوشحالم ، اگرچه من تاکنون فقط میانگین های متحرک را پیاده سازی کرده ام و شاید موارد پیچیده تری نیز وجود داشته باشد که سیستم من نیز کار نمی کند.
هر نوع نشانگر فنی باید رابطی از توابع پاسخ به تماس را پیاده سازی کند که با تغییر نمودار کندل استیک به طور خودکار فراخوانی می شوند.
به عنوان مثال، هنگامی که یک کندل جدید اضافه می شود، باید میانگین متحرک آن نقطه داده جدید را محاسبه کنیم. بنابراین، کلاس نمودار کندلاستیک، AddCandlestick (candlestickChart, candlestickID) را برای همه شاخصهای فنی خود فراخوانی میکند و در اجرای MovingAverage آن تابع، میتوانیم میانگین آخرین n نمونه را محاسبه کنیم و یک نقطه داده جدید اضافه کنیم.
بنابراین، اگر در مورد نشانگر فنی جدیدی که میخواهم به کلاس اضافه کنم، یاد بگیرم، تنها کاری که باید انجام دهم این است که آن رابط را پیادهسازی کنم و باید یک راهحل plug-and-play باشد.
جریان داده های زمان واقعی
با اضافه شدن پشتیبانی بلادرنگ مناسب به نمودارهای کندل استیک من، بالاخره زمان پخش برخی از داده های کندل استیک واقعی فرا رسید. من از Binance WebSocket Market Streams استفاده می کنم تا داده های بازار زنده را مستقیماً از صرافی آنها دریافت کنم. با این حال، ما همچنین باید تاریخچه قیمت اخیر را هنگام بارگیری صفحه واکشی کنیم تا از هیچ شروع نکنیم.
خوشبختانه، ما همچنین می توانیم از API بایننس برای این کار استفاده کنیم. API نقاط پایانی داده بازار را برای هر نوع داده ای که به دنبال آن هستید ارائه می دهد. در مورد ما، ما به نقطه پایانی کندل استیک/کلاین علاقه مندیم.
هر دو APIهایی که در اینجا استفاده می کنیم عمومی هستند، به این معنی که برای استفاده از آنها نیازی به کلید API ندارید (اگرچه برای هر IP محدودیت هایی وجود دارد). به عنوان یک یادداشت جانبی سریع، من از طرفداران پر و پا قرص Binance API هستم. بسیار مستند و کامل است. به نظر می رسد کنترل کل حساب خود فقط از طریق API امکان پذیر است و ای کاش شرکت های بیشتری روی API های خود تمرکز کنند.
بیایید به کلاس CandlestickStream نگاه کنیم. توابع مربوطه start() و onMessage() هستند. هنگامی که جریان را شروع می کنیم، ابتدا API کندل استاتیک را فراخوانی می کنیم تا آخرین 500 کندل استیک را برای نماد و بازه ما واکشی کنیم. وقتی آنها را دریافت کردیم، نمودار کندل استیک را با این مقادیر مقداردهی اولیه می کنیم و اتصال WebSocket را شروع می کنیم.
اکنون هر 2 ثانیه یکبار پیامهای بلادرنگ را با بهروزرسانیهای کندلهایمان دریافت خواهیم کرد. در تابع callback()onMessage، نگاهی به مقدار timestamp کندل استیکی که دریافت می کنیم می اندازیم. اگر آخرین کندل در نمودار ما دارای همان زمان است، آن را به روز می کنیم. اگر این کار را نکرد، به این معنی است که یک کندل جدید شروع شده است، بنابراین ما نیز یک کندل جدید به نمودار خود اضافه می کنیم. اکنون ما یک استریم شمعدان بیت کوین بیدرنگ داریم و میتوانید آرام بنشینید و امیدواریم سرمایهگذاریهای خود را به ماه تماشا کنید.
استفاده
استفاده از کلاس CandlestickStream بسیار ساده است. تمام کاری که ما باید انجام دهیم این است که یک نمونه جدید از کلاس ایجاد کنیم ، به آن بگوییم کدام نماد و فاصله را می خواهیم و جریان را شروع می کنیم:
مثال
من یک مثال به وب سایت خود اضافه کردم که قیمت بیت کوین را در یورو در شمعدان های 5 دقیقه ای نشان می دهد: شمعدان های بیت کوین در زمان واقعی.
نتیجه
من یک طرفدار بزرگ برای ایجاد تجسم داده های سفارشی خودم هستم نه فقط استفاده از یک راه حل شخص ثالث.
همانطور که اخیراً به Crypto بازگشتم ، می خواستم یک کلاس نمودار شمعدانی را پیاده سازی کنم و آن را به یک جریان بازار در زمان واقعی وصل کنم.
به این ترتیب ، من کنترل کامل بر تجسم دارم و می توانم آن را به دلخواه خود سفارشی کنم. اگر شما یک برنامه نویس هستید و به ارزهای رمزنگاری علاقه دارید ، من به شدت توصیه می کنم راه حل های سفارشی خود را نیز ایجاد کنید. دو بار رضایت بخش است که قیمت آن را از طریق برنامه شخصی خود بالا می برد.
منابع
آیا از این قبیل لذت می برید؟دسترسی نامحدودی به همه داستان ها داشته باشید و با پیوستن به Medium از من و سایر نویسندگان پشتیبانی کنید. اگر از طریق این لینک ثبت نام کنید ، بخشی از هزینه عضویت شما به من می رود.