معاملات معاملات آتی با پایتون-بنانس

ساخت وبلاگ

سلام دوستان. به تازگی ، من در تلاش هستم تا با استفاده از بسته بندی Python-Binance ، نرم افزار تجارت الگوریتمی Crypto اختصاصی خود را بسازم. بخش بزرگی از استراتژی من شامل معاملات معاملات آتی (USD (S) -M) ، به نفع استفاده از اهرم ، بلند شدن و غیره است ، بنابراین من این راهنمای کوچک مفید را بر اساس آنچه که من قرار داده ام ، جمع کرده ام. با توجه به تمرکز خاص روی آینده ، در مورد این کتابخانه عالی (فریاد به نویسنده سام مکاردی) آموخته است. بیا شروع کنیم!

لطفا توجه داشته باشید:

1) فرض می کنم خواننده عزیزم حداقل مبهم با کتابخانه آشنا است و بنابراین کلیدهای API Binance را می فهمد و در اختیار دارد (برای کسانی که ناآشنا هستند ، پیوندهای زیر را ببینید).

2) همانطور که آقای مکچاردی خود را رد می کند ، یک کتابخانه غیررسمی است ، به این معنی که توسط Binance این شرکت پشتیبانی نمی شود. فقط پیوندهای API واقعی پشتیبانی می شوند ، که ممکن است هر چند وقت یکبار تغییر کند. بنابراین ما باید از کتابخانه در معرض خطر خودمان استفاده کنیم.

3) همچنین ، و از همه مهمتر ، لطفاً مشاوره سرمایه گذاری را به هیچ وجه از این مقاله استنباط نکنید! این یک راهنمای "چگونه به" است ، بنابراین لطفاً قبل از اجرای هرگونه تجارت زنده در بازار ، معقول باشید و با دقت فکر کنید.

سامچاردی/پایتون

به روز شده یازدهم مه 2021 این یک بسته بندی غیر رسمی پایتون برای Binance Exchange REST API V3 است. من به هیچ وجه نیستم

نحوه ایجاد API |binance ، api ، ایجاد

ایجاد API به شما امکان می دهد از طریق چندین زبان برنامه نویسی به سرورهای Binance متصل شوید. داده ها را می توان از…

اولا ، ما کتابخانه را نصب خواهیم کرد:

# در یک ترمینال ، محیط (مجازی یا در غیر این صورت) فعال شده استPIP نصب پایتون

سپس آن را در پایتون در زیر وارد کنید و مشتری را با استفاده از کلیدهای API ما فوری کنید:

از Binance. Client Import Clientuser_key = ************************Secret_Key = ************************binance_client = مشتری (user_key ، secret_key)

داده های بازار

قبل از غواصی به سمت تجارت چیزها ، ممکن است ابتدا بخواهیم برخی از داده های بازار را برای قراردادی که معامله می کنیم بازیابی کنیم. برای این مثال ، بیایید کارها را ساده نگه داریم و آینده دائمی BTC/USDT را برای کار با آن انتخاب کنیم. اگر می خواهیم قیمت فعلی قرارداد را بدست آوریم:

binance_client. futures_symbol_ticker (نماد = 'btcusdt')

ویرایش: من در ابتدا از روش "futures_coin_symbol_ticker" نقل کرده ام. روش جایگزین مورد استفاده در بالا ، پوشش ابزار بسیار بیشتری دارد.

بگویید اکنون می خواهیم داده های بازار OHLCV را برای قرارداد خود بازیابی کنیم تا برخی از تجزیه و تحلیل داده ها را در مورد داده های تاریخی انجام دهیم. ما می توانیم با استفاده از روش زیر این کار را انجام دهیم:

binance_client. futures_historical_klines (نماد = 'btcusdt' ،فاصله = '1d' ، # می تواند با این مثلاً بازی کند.'1H' ، '4H' ، '1W' ، و غیرهstart_str = '2021-06-01' ،end_str = '2021-06-30')

به طور پیش فرض ، خروجی در قالب لیست به ما بازگردانده می شود ، اما ما می توانیم به راحتی آن را به یک Pandas Dataframe تبدیل کنیم تا آن را برای اهداف تحلیلی مناسب تر کند:

واردات پاندا به عنوان PDdf = pd. dataframe (binance_client. futures_historical_klines (نماد = 'btcusdt' ،فاصله = '1d' ،start_str = '2021-06-01' ،end_str = '2021-06-30'))df. head ()
# 0 1 2. 9 10 11#0 1622505600000 37244. 36 37893. 76. 291774. 994 10673866023. 68145 0#1 1622592000000 36694. 37 38232. 99. 223993. 314 8358143926. 28754 0#2 1622678400000 37570. 00 39470. 00. 254932. 483 9843247414. 77212 0#3 1622764800000 39247. 40 39297. 35. 345357. 923 12774740375. 75271 0#4 1622851200000 36828. 03 37900. 49. 314764. 238 11449282806. 42592 0#[5 ردیف x 12 ستون]

همانطور که مشاهده می کنید ، انواع داده های موجود در ستون های ما کاملاً همان چیزی نیستند که ما بعد از آن (یعنی Timestamp به جای تاریخ ، ستون های اضافی فراتر از OHLCV). بنابراین ما قطعه ای از داده های مورد بحث را انجام خواهیم داد ، که پاندا بسیار آسان می کند:

# ستون های غیر ضروری محصولdf = df. iloc [::: 6]# نام را به ستون ها اختصاص دهیدdf. columns = ['Date' ، 'Open' ، 'High' ، 'Low' ، 'Close' ، 'Volume']# تبدیل Timestamp به قالب Date و اطمینان از OHLCV همه عددی استdf ['date'] = pd. to_datetime (df ['date'] ، واحد = 'ms')برای col در df. columns [1:]:df [col] = pd. to_numeric (df [col])df. head ()
# تاریخ باز شدن حجم پایین بالا#0 2021-06-01 37244. 36 37893. 76 35500. 00 36693. 41 590822. 540#1 2021-06-02 36694. 37 38232. 99 35905. 00 37569. 99 441719. 806#2 2021-06-03 37570. 00 39470. 00 37150. 15 39247. 40 507429. 005#3 2021-06-04 39247. 40 39297. 35 35552. 51 36828. 03 700625. 866#4 2021-06-05 36828. 03 37900. 49 34800. 00 35498. 62 631028. 448

خیلی بهتر! درست ، به اندازه کافی پیش نمایش - اجازه دهید وارد معاملات شویم.

تجارت

قسمت جالب: اولا ، اجازه دهید یک دستور تست را پینگ کنیم تا ببینیم آیا سرور آن را انتخاب می کند یا خیر. اگر اینگونه نباشد ، ممکن است برخی تحقیقات در مورد امتیازات API حساب مورد نیاز باشد.

binance_client. create_test_order (نماد = 'btcusdt' ،نوع = 'بازار' ،طرف = 'خرید' ،مقدار = 0. 001)

اگر همه چیز خوب است ، ما باید یک فرهنگ لغت خالی دریافت کنیم: ‘<>’.

در مرحله بعد ، ما قبل از قرار دادن یک تجارت واقعی برای تجسم عمق بازار ، سریع به کتاب سفارش می پردازیم:

# به یک DataFrame Pandas برای خروجی neaterdf = pd. dataframe (binance_client. futures_order_book (نماد = 'btcusdt'))چاپ (df [['پیشنهادات' ، 'سؤال']]. سر ())
#Bids می پرسد#0 [36261. 99 ، 0. 005] [36262. 22 ، 0. 041]#1 [36261. 98 ، 0. 100] [36262. 46 ، 0. 099]#2 [36261. 84 ، 0. 277] [36262. 60 ، 0. 066]#3 [36261. 83 ، 0. 005] [36262. 62 ، 0. 001]#4 [36261. 79 ، 0. 186] [36262. 74 ، 0. 711]

اکنون ، مهمترین اهمیت قبل از قرار دادن یک سفارش واقعی آینده ، تنظیم اهرم است. ما باید بسیار ، بسیار مراقب باشیم که هنگام تعیین اهرم خود اشتباه نکنیم ، زیرا یکی از تایپ های کوچک می تواند باعث شود که ما خطر بیشتری را نسبت به ما بخواهیم (یا قادر!) برای یک استراتژی معین به وجود آوریم. به همین دلیل ، مستقیماً قبل از هر تجارت ، من همیشه اهرم خود را با روش زیر تعیین می کنم:

binance_client. futures_change_leverage (نماد = 'btcusdt' ، اهرم = 1)

این امر اطمینان حاصل می کند که تمام معاملات شما در جلسه ترمینال برای نماد مشخص شده ، اهرم تعیین شده در بالا را به خود اختصاص می دهد. اگر از من پرماجرا تر هستید و مایل به افزایش اهرم هستید ، فقط اطمینان حاصل کنید که کاملاً آماده هستید تا خطر اضافی را به خود اختصاص دهید ، درک کنید که چگونه کار می کند و بودجه کافی در حساب حاشیه خود دارید تا هرگونه ضرر احتمالی را پوشش دهید.

برای قرار دادن یک سفارش محدود آینده:

binance_client. futures_create_order (نماد = 'btcusdt' ،type = 'limit' ،TimeInforce = 'GTC' ، # قابل تغییر است - به پیوند API Doc در زیر مراجعه کنیدقیمت = 30000 ، # قیمتی که مایل به خرید/فروش آن هستید ، شناور استطرف = 'خرید' ، # جهت ('خرید' / 'فروش') ، رشتهمقدار = 0. 001 # تعداد سکه هایی که مایل به خرید / فروش هستید ، شناور)

برای قرار دادن یک سفارش بازار آینده:

binance_client. futures_create_order (نماد = 'btcusdt' ،نوع = 'بازار' ،timeinforce = 'gtc' ،طرف = 'خرید' ،مقدار = 0. 001)

et voila! موقعیت باید در دیدگاه حساب binance شما مانند SO (معدن یک سفارش بازار بود که در زمان نوشتن اجرا شد):

اگر تجارت هنوز پر نشده باشد ، ممکن است سفارشات برجسته فعلی را خیلی ساده مشاهده کند:

binance_client. futures_get_open_orders (نماد = 'btcusdt')

نتیجه

امیدوارم که این بچه ها مفید باشند ، احساس راحتی کنید که کد منبع کامل را در صفحه GitHub من بررسی کنید ، به علاوه من مطمئناً شما را تشویق می کنم تا برخی از مستندات Python-Binance و همچنین مستندات API Binance را بررسی کنید و با هم جمع کنید. احتمالاً عملکرد دیگری وجود دارد که شما بعد از آن من در اینجا پوشش نداده ام:

نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 42 تاريخ : چهارشنبه 27 ارديبهشت 1402 ساعت: 17:03