تجارت الگوریتمی با NodeJs – یادداشت های مهندس

با دسترسی ما به بازار سهام، تجارت الگوریتم (تجارت الگوریتم، تجارت سیاه و سفید و غیره) به نظر می رسد مانند یک پروژه جانبی بسیار جذاب، یک گزینه جذاب برای بالقوه افزایش ثروت ما و همچنین یک تمرین مغرضانه برای توسعه دهندگان احتمالا قبلا می دانید که بازارهای سهام ما و هر چیزی که مربوط به امور مالی است، به شدت تنظیم می شود، با بسیاری از گواهینامه ها و گواهینامه های لازم، که به نظر می رسد یک مبتدی است که نمی خواهد با آن مقابله کند. پس ما چه کار میکنیم؟ ما با ریسک بیشتری شروع می کنیم، اما برای گزینه های ما بیشتر به ما امکان می دهد: معاملات معکوس ارز. بازار های رمزنگاری مانند تنظیمات شدید نیست و سیستم عامل های تجاری مانند GDAX.com فرصتی عالی برای شروع و توسعه مدل های معاملاتی خود را ارائه می دهند. نقطه شروع برای شما و خلاقیت شما، ما بر اساس پایه راه اندازی بر اساس که شما می توانید شروع به ساخت پلت فرم معاملاتی الگوریتم خود را بسیار خود را.GDAX فراهم می کند API به خوبی مستند و همچنین یک بومی NodeJS مشتری. (شما می توانید مستندات API را در اینجا پیدا کنید: https://docs.gdax.com/) شروع به کار کنید. من فرض می کنم که خوانندگان در حال تجربه اولیه با جاوا اسکریپت و NodeJ ها هستند و شما یک حساب فعال با Coinbase و GdaxCreate دارید بسته تجاری: mkdir tradingcd tradingtouch index.jsnpm initAdd کتابخانه GDAX-NODE به عنوان وابستگی پروژه شما: npm install gdaxExcellent. حالا کد را امتحان کنید ما با استفاده از API عمومی شروع می کنیم که نیازی به داشتن یک حساب کاربری ثبت نشده است. می توانید ببینید که محصولات Gdax چگونه می توانیم تجارت کنیم: const GDAX = require ('gdax')؛
const publicClient = new GDAX.PublicClient ()؛ const callback = (خطا، پاسخ، داده) => {
اگر (خطا)
بازگشت console.dir (خطا)؛ return console.dir (data)؛
} publicClient.getProducts (callback)؛ شما یک خروجی شبیه به این دریافت خواهید کرد: محصولات Gdax این اطلاعات مفید برای شما است که از زمان به زمان چک کنید تا اطمینان حاصل کنید که سفارشات شما سطر بالا و پایین. دیگر روش مفید است که ما می توانیم با مشتری عمومی امتحان کنیم getCurrencies (): publicClient.getCurrencies (callback)؛ کدام این خروجی را تولید می کند: Gdax currenciesReally easy! درست؟ در حال حاضر اجازه می دهید به بخش سرگرم کننده بیشتری دست پیدا کنید: با حساب Gdax خود کار کنید. به https://www.gdax.com/settings/api بروید و یک کلید API ایجاد کنید، فقط برای بازی کردن و تست توصیه می کنم فقط مجوز READ را اعطا کنم به key.Now به index.js ما اجازه می دهد تا خودمان را تایید کنیم: const passPhrase = "yourPasssPhrase"؛ const apiKey = "yourAPIkey"؛ const base64secret = "somethingSomethingBase64 =="؛ const apiURI = 'https: //api.gdax .com '؛ const authenticatedClient = جدید GDAX.AuthenticatedClient (apiKey، base64secret، passPhrase، apiURI)؛ عالی است، حالا می توانیم شروع به کار با حساب ها کنیم و جادوهای برنامه نویسی پولمان را بازیابی کنیم. ببینیم حساب هایمان واقعا چه هستند: authenticatedClient. getAccounts (callback)؛ خروجی شبیه به این را دریافت خواهید کرد: Gdax AccountsThis یک روش ضروری است که به شما اجازه می دهد تا تعادل خود را در تمام حساب های خود بررسی کنید و اطلاعات حساب خود را بدست آورید. هنگامی که همه شناسه های حسابتان را می شناسید، می توانید هر حساب را به صورت جداگانه پرس و جو کنید، برای کنترل دقیق تر: const ACCOUNT_ETH = 'some super-long-account-id'؛ authenticatedClient.getAccount (ACCOUNT_ETH، callback)؛ خوب، همه این عالی است! و ما احتمالا قبلا در مورد استراتژی های معاملاتی فکر کرده ایم و اولین چیزی که شما در مورد آن می پرسید چگونه می توانید قیمت ارز فعلی را بدست آورید. این مشکل است. GDAX به طور فعال از رای گیری این اطلاعات (بمباران با درخواست ها)، اگر شما نظرسنجی شما را به احتمال زیاد به محدودیت های خود را محدود خواهد شد و یا حتی قفل شده است، بنابراین نگذارید. پس چگونه قیمت فعلی را بدست آورید؟ این کمی روی حیله و تزویر است، اما از corse، قابل انجام است. برای این منظور ما باید ارتباط سوکت با سرورهای خود را ایجاد کنیم و به تمام اطلاعاتی که از طریق آن می رویم را فیلتر کنیم و با کمک WebsocketClient آنها را فیلتر کنیم. یک محصول، اتریم را انتخاب می کنیم به عنوان مثال: const ETH_USD = 'ETH-USD'؛ const websocket = جدید GDAX.WebsocketClient ([ETH_USD])؛
const websocketCallback = (data) => console.dir (data)؛ websocket.on ('message '، websocketCallback)؛ خروجی بسیار سریع خواهد بود و به نظر می رسد چیزی شبیه به این: خروجی مشتری Websocket حالا چطور می توانیم قیمت اتریم فعلی را از این ناپایدار دریافت کنیم؟ ما شاهد سفارشهای زیادی هستیم، برخی از آنها فقط دریافت می شوند، برخی هنوز باز هستند. پس از گذراندن اسناد، روشن است که ما تنها به منظور پر کردن و / یا انجام دادن علاقه مند هستیم. معنی فروش فروش فقط بسته شد (در واقع اتفاق افتاده) و ما می توانیم از اطلاعات قیمت که با آن سفارش استفاده کردیم. تماس تلفنی اصلاح شده برای ردیابی قیمت های فعلی: const websocketCallback = (data) => {
if (! (data.type == = 'انجام' && data.reason === 'پر'))
بازگشت؛ console.dir (data)؛
} بام! اکنون همه چیز برای شروع منطق معاملاتی شما ایجاد شده است. شما حساب های خود دارید با تمام اطلاعات مورد نیاز و تعادل، و در حال حاضر شما حتی می توانید پیگیری تغییر قیمت اتریم. Okay. اجازه دهید بگوییم اول نسخه الگوریتم شما را نهایی کرده اید، چگونه ما در واقع تجارت می کنیم؟ const websocketCallback = (data) => {
if (! (data.type === 'done' && data.reason === ' پر کردن '))
بازگشت؛ تجزیه و تحلیل const = someBrilliantAnalyticalMethod (data)؛ اگر (analytics.buy)
return placeBuyOrder (analytics.buyDetails) if (analytics.sell)
return placeSellOrder (analytics.sellDetails)
} چگونه می توان خرید و فروش سفارشات را انجام دادیم؟ بسیار ساده، برگشت به مشتری تایید شده ما: function placeBuyOrder (buyDetails) {
const buyParams = {
'price': buyDetails.price،
'size': buyDetails.size،
'product_id': ETH_USD،
}؛ این […] خریداری شده است، خریداری شده است، خرید (فروش پارامترها، فراخوانی)؛
} function placeSellOrder (buyDetails) {
const sellParams = {
'price': buyDetails.price،
'size': buyDetails. اندازه،
'product_id': ETH_USD،
}؛ این توجه کنید که روش های خرید و فروش اعتباردهنده مشتری، شناسه سفارشاتی را که برای ذخیره چک برای انجام تحویل در آینده نیاز دارید ذخیره می کند. برای بررسی تمام سفارشات قرار داده شده: authenticatedClient.getOrders ( callback)؛ برای بررسی وضعیت یک سفارش فرد: authenticatedClient.getOrder (orderID، callback)؛ این همان است. بسیار آسان برای شروع. هشدار اصلی و منبع موفقیت شما در داخل someBrilliantAnalyticalMethod () ذکر شده است، که در کد بالا ذکر شده است که بعدا بسته به استراتژی انتخاب شده می تواند به دنیای واقعی سهام و اوراق قرضه معرفی شود. هر کس پیاده سازی متفاوت و منحصر به فرد داشته باشد، بنابراین به عنوان خوانده شده، تمرین، از دست دادن پول، لحن، تمرین و کامل دوباره. بهترین ضربه و قوی باد در پشت! به روز رسانی: برخی از قطعه کد در این مقاله از تاریخ است، برای تحولات و اصلاحات اخیر شما می توانید این پروژه را در Gighub دنبال کنید: https://github.com/rinchik/gdax-pocket-ui که در اینجا توضیح داده شده است: https://blog.rinatussenov.com/algorithmic-trading-with-nodejs -gdax-pocket-ui-150e227d0d6a