چگونه معاملات ارزهای دیجیتال خود را با پایتون خودکار کنیم

  • 2022-03-5

در این مقاله نحوه راه اندازی و استفاده از پایتونیک را یاد می گیرید که یک ابزار برنامه نویسی گرافیکی است که باعث می شود کاربران بتوانند برنامه های کاربردی پایتون را با استفاده از ماژول های تابع ساخته شده ایجاد کنند.

scientific calculator

بر خلاف بورس اوراق بهادار سنتی مانند بورس اوراق بهادار نیویورک که ساعات معاملاتی ثابتی دارند, ارزهای رمزنگاری شده 24/7 معامله می شوند, که نظارت بر بازار را به تنهایی برای هر کسی غیرممکن می کند.

اغلب در گذشته, من تا به حال برای مقابله با سوالات زیر مربوط به تجارت رمزنگاری من:

  • چه اتفاقی افتاد یک شبه?
  • چرا هیچ ورودی ورود به سیستم وجود دارد?
  • چرا این سفارش قرار داده شد?
  • چرا هیچ سفارش قرار داده شد?

منابع بیشتر پایتون

راه حل معمول استفاده از یک ربات معاملاتی رمزنگاری است که هنگام انجام کارهای دیگر مانند خوابیدن در کنار خانواده یا لذت بردن از اوقات فراغت برای شما سفارش می دهد. هستند بسیاری از راه حل های تجاری در دسترس وجود دارد, اما من می خواستم یک گزینه منبع باز, بنابراین من ایجاد رمزنگاری تجارت ربات پایتونیک. همانطور که سال گذشته در یک مقاله مقدماتی نوشتم: "پایتونیک یک ابزار برنامه نویسی گرافیکی است که باعث می شود کاربران بتوانند برنامه های کاربردی پایتون را با استفاده از ماژول های تابع ساخته شده ایجاد کنند."این یک ربات رمزنگاری شده است و دارای یک موتور ورود به سیستم گسترده و قطعات قابل استفاده مجدد مانند زمانبندی و تایمر است.

شروع شدن

این راهنمای عملی به شما یاد می دهد که چگونه با پایتونیک برای تجارت خودکار شروع کنید. از مثال تجارت ترون در برابر بیت کوین در بستر بورس بایننس استفاده می کند. من این سکه ها را انتخاب کنید به دلیل نوسانات خود را در برابر یکدیگر, به جای هر گونه ترجیح شخصی.

ربات بر اساس میانگین متحرک نمایی (ایماس) تصمیم گیری می کند.

TRX/BTC 1-hour candle chart

نمودار شمع 1 ساعته

شاخص میانگین متحرک نمایی به طور کلی یک میانگین متحرک وزنی است که به داده های اخیر قیمت وزن بیشتری می بخشد. اگر چه یک میانگین متحرک ممکن است یک شاخص ساده, من تجربه خوبی با استفاده از این داشته ام.

خط بنفش در نمودار بالا نشانگر میانگین متحرک نمایی 25 را نشان می دهد (به این معنی که 25 مقدار گذشته در نظر گرفته شده است).

ربات گام بین مقدار میانگین متحرک نمایی 25 فعلی (تی0) و مقدار میانگین نمایی 25 قبلی (تی-1) را کنترل می کند. اگر زمین بیش از یک مقدار خاص, این سیگنال افزایش قیمت, و ربات یک سفارش خرید بصورت مستقیم. اگر زمین به زیر یک مقدار خاص, ربات یک سفارش فروش بصورت مستقیم.

زمین شاخص اصلی برای تصمیم گیری در مورد معاملات خواهد بود. برای این تاکتیک عامل تجارت نامیده می شود .

زنجیره ابزار

در این مقاله از ابزارهای زیر استفاده شده است:

  • نمای بازرگانی کارشناس بایننس (تجسم داده ها توسط بسیاری دیگر انجام شده است بنابراین نیازی به اختراع مجدد چرخ با انجام این کار نیست)
  • دفترچه یادداشت ژوپیتر برای کارهای علوم داده
  • پایتونیک که چارچوب کلی است
  • پایتون دیمون به عنوان زمان اجرای خالص (فقط کنسول و لینوکس)

داده کاوی

برای یک ربات معاملاتی رمزنگاری برای تصمیم گیری خوب ضروری است که داده های باز-بالا-پایین-نزدیک را برای دارایی خود به روشی قابل اعتماد دریافت کنید. می توانید از عناصر داخلی پایتونیک استفاده کرده و با منطق خود گسترش دهید.

گردش کار عمومی است:

  1. همگام سازی با زمان بایننس
  2. دانلود دیتا
  3. داده های موجود را از پرونده در حافظه بارگیری کنید
  4. هر دو مجموعه داده را مقایسه کنید و مجموعه داده موجود را با ردیف های جدیدتر گسترش دهید

این گردش کار ممکن است کمی درد نمیخورد, اما باعث می شود این راه حل بسیار قوی در برابر خرابی و قطع.

برای شروع, شما نیاز به عنصر پرس و جو بایننس و یک عنصر عملیات اساسی برای اجرای کد خود را.

Data-mining workflow

پرس و جو برای پرس و جو جفت دارایی (ترون/بیت کوین) در فواصل یک ساعته تنظیم شده است.

Configuration of the OHLC query element

پیکربندی عنصر پرس و جو

خروجی این عنصر یک قاب داده پانداها است. شما می توانید با متغیر ورودی در عنصر عملیات اساسی به فریم داده دسترسی پیدا کنید. اینجا, عنصر عملیات اساسی برای استفاده از نیرو به عنوان ویرایشگر کد پیش فرض تنظیم شده است.

Basic Operation element set up to use Vim

عنصر عملیات اساسی برای استفاده از ویم تنظیم شده است

در اینجا چیزی است که کد به نظر می رسد:

ابتدا بررسی کنید که ورودی از نوع قاب داده است یا خیر. سپس به داخل فهرست اصلی کاربر نگاه کنید (~/ ) برای یک فایل به نام تریکس بی تی سی_1ساعت. اگر در حال حاضر است, سپس باز کنید, الحاق ردیف جدید (کد در بخش سعی کنید), و رها کردن تکراری با هم تداخل دارند. اگر فایل وجود ندارد, ماشه یک استثنا و اجرای کد در بخش به جز, ایجاد یک فایل جدید.

تا زمانی که خروجی ورود به سیستم چک باکس فعال است, شما می توانید ورود به سیستم با دم ابزار خط فرمان را دنبال :

برای اهداف توسعه, جست و خیز هماهنگ سازی با زمان بایننس و برنامه ریزی منظم در حال حاضر. این در زیر اجرا خواهد شد.

تهیه اطلاعات

گام بعدی این است برای رسیدگی به منطق ارزیابی در یک شبکه جداگانه; از این رو, شما باید به تصویب بیش از کادر داده از شبکه 1 به اولین عنصر از شبکه 2 با کمک عنصر بازگشت .

در شبکه 2, گسترش بازه داده توسط یک ستون که شامل مقادیر میانگین متحرک نمایی با عبور از بازه داده از طریق یک عنصر تجزیه و تحلیل فنی پایه.

Technical analysis workflow in Grid 2

پیکربندی عنصر تجزیه و تحلیل فنی برای محاسبه ایماس بیش از یک دوره از ارزش 25.

Configuration of the technical analysis element

پیکربندی عنصر تجزیه و تحلیل فنی

هنگامی که شما برای اجرای کل راه اندازی و فعال کردن خروجی اشکال زدایی از عنصر تجزیه و تحلیل فنی, شما متوجه خواهد شد که مقادیر ستون میانگین متحرک نمایی-25 همه به نظر می رسد همان.

Missing decimal places in output

این به این دلیل است که مقادیر میانگین متحرک نمایی-25 در خروجی اشکال زدایی فقط شامل شش رقم اعشار است, حتی اگر خروجی دقت کامل یک مقدار شناور 8 بایت را حفظ کند.

برای پردازش بیشتر, اضافه کردن یک عنصر عملیات اساسی:

Workflow in Grid 2

گردش کار در شبکه 2

طوری که می تواند به یک نوت بوک مشتری لود با عنصر عملیات اساسی با قاب داده با ستون میانگین متحرک نمایی-25 اضافی کمپرسی;

Dump extended DataFrame to file

روگرفت تمدید دیتافرم به فایل

منطق ارزیابی

در حال توسعه منطق ارزیابی در داخل نوت بوک ژوپتر شما را قادر به دسترسی به کد در یک راه مستقیم تر. برای بارگیری چارچوب داده به خطوط زیر نیاز دارید:

Representation with all decimal places

نمایش با تمام رقم اعشار

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

شما قبلا می دانید که چگونه جدیدترین ارزش را دریافت کنید. خط گذشته از مثال بالا تنها مقدار را نشان می دهد. برای کپی کردن مقدار به یک متغیر جداگانه, شما باید برای دسترسی با.

شما همچنین می توانید به طور مستقیم فاکتور تجاری را که در مرحله بعدی نیاز دارید محاسبه کنید.

Buy/sell decision

فاکتور معاملاتی را تعیین کنید

همانطور که شما می توانید در کد بالا را ببینید, من انتخاب 0.009 به عنوان عامل تجارت. اما چگونه من می دانم اگر 0.009 یک عامل تجاری خوب برای تصمیم گیری است? در واقع, این عامل واقعا بد است, بنابراین به جای, شما می توانید حیوان نیروی عامل تجارت بهترین عملکرد.

فرض کنیم که شما خرید و یا فروش بر اساس قیمت بسته شدن.

Validation function

در این مثال عامل خرید و عامل فروش از پیش تعریف شده اند. بنابراین منطق را گسترش دهید تا بهترین مقادیر با عملکرد را بی رحمانه مجبور کنید.

Nested for loops for determining the buy and sell factor

تو در تو برای حلقه برای تعیین عامل خرید و فروش

این دارای 81 حلقه برای پردازش (9 * 9) است که چند دقیقه روی دستگاه من طول می کشد (یک هسته من7 267 متر).

System utilization while brute forcing

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

بعد از هر حلقه, یک تاپل عامل خریدار , عامل فروش , و سود حاصل را به لیست فاکتورهای معاملاتی اضافه می کند. لیست را بر اساس سود به ترتیب نزولی مرتب کنید.

Sort profit with related trading factors in descending order

سود را با عوامل معاملاتی مرتبط به ترتیب نزولی مرتب کنید

هنگامی که شما چاپ لیست, شما می توانید ببینید که 0.002 عامل امیدوار کننده ترین است.

Sorted list of trading factors and profit

زمانی که من نوشت: این در ماه مارس 2020, قیمت ها به اندازه کافی فرار به نتایج امیدوار کننده تر. من نتایج بسیار بهتر در فوریه کردم, اما حتی پس از, عوامل تجاری بهترین عملکرد نیز در اطراف بود 0.002.

تقسیم مسیر اعدام

شروع یک شبکه جدید در حال حاضر برای حفظ وضوح. قاب داده را با ستون میانگین متحرک نمایی 25 از شبکه 2 به عنصر 0 الف شبکه 3 با استفاده از یک عنصر برگشتی منتقل کنید.

در شبکه 3, اضافه کردن یک عنصر عملیات اساسی برای اجرای منطق ارزیابی. در اینجا کد که عنصر است:

Implemented evaluation logic

عنصر خروجی 1 اگر شما باید خرید و یا ی ک-1 اگر شما باید فروش. خروجی 0 به این معنی است که در حال حاضر کاری برای انجام دادن وجود ندارد. برای کنترل مسیر اجرا از یک عنصر شاخه استفاده کنید.

Branch element: Grid 3 Position 2A

با توجه به این واقعیت است که هر دو 0 و-1 در حال پردازش به همان شیوه, شما نیاز به یک عنصر شاخه های اضافی در مسیر سمت راست ترین اعدام برای تصمیم گیری یا نه شما باید فروش.

Branch element: Grid 3 Position 3B

شبکه 3 اکنون باید به این شکل باشد:

Workflow on Grid 3

اجرای دستورات

شما نمی توانید دو بار خرید کنید, شما باید یک متغیر ثابت بین چرخه هایی داشته باشید که نشان می دهد قبلا خریداری کرده اید یا خیر.

شما می توانید این کار را با یک عنصر پشته انجام دهید . عنصر پشته همانطور که از نامش پیداست نمایشی از یک پشته مبتنی بر فایل است که می تواند با هر نوع داده پایتون پر شود.

شما نیاز به تعریف که پشته شامل تنها یک عنصر بولی, که تعیین اگر شما خریداری ( درست ) یا نه ( نادرست ). به عنوان یک نتیجه, شما باید به از پیش تعیین شده پشته با یک نادرست . شما می توانید این مجموعه تا, مثلا, در شبکه 4 به سادگی با عبور نادرست به پشته.

Forward a False-variable to the subsequent Stack element

نمونه های پشته بعد از درخت شاخه را می توان به صورت زیر پیکربندی کرد:

Configuration of the Stack element

پیکربندی عنصر پشته

در پیکربندی عنصر پشته, تنظیم این کار را با ورودی به هیچ چیز . در غیر این صورت, مقدار بولی خواهد شد توسط یک رونویسی 1 یا 0.

این پیکربندی تضمین می کند که فقط یک مقدار همیشه در پشته ذخیره می شود ( درست یا غلط) و فقط یک مقدار را می توان خواند (برای وضوح).

درست بعد از عنصر پشته, شما نیاز به یک عنصر شاخه اضافی برای ارزیابی ارزش پشته قبل از قرار دادن عناصر سفارش بایننس.

Evaluate the variable from the stack

ارزیابی متغیر از پشته

عنصر سفارش بایننس را به مسیر واقعی عنصر شاخه اضافه کنید. گردش کار در شبکه 3 اکنون باید به این شکل باشد:

Workflow on Grid 3

عنصر سفارش بایننس به شرح زیر پیکربندی شده است:

Configuration of the Binance Order element

پیکربندی عنصر سفارش بایننس

شما می توانید کلید های مخفی و رابط کاربری را در وب سایت بایننس تحت تنظیمات حساب خود ایجاد کنید.

Creating an API key in Binance

ایجاد یک کلید در تنظیمات حساب بایننس

در این مقاله هر معامله به عنوان یک تجارت بازار اجرا می شود و حجم 10,000 تریکس (~150 دلار در مارس 2020). (برای این منظور از اموزش, من نشان دادن روند کلی با استفاده از یک نظم بازار هستم. به همین دلیل توصیه می کنم حداقل از یک دستور محدود استفاده کنید.)

عنصر بعدی است که باعث نمی شود اگر سفارش به درستی اجرا نشد (به عنوان مثال, یک موضوع اتصال, بودجه کافی, و یا جفت ارز نادرست). از این رو, شما می توانید فرض کنیم که اگر عنصر بعدی باعث شده است, سفارش قرار داده شد.

در اینجا یک نمونه از خروجی از یک سفارش فروش موفق برای:

Output of a successfully placed sell order

سفارش فروش موفق

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

اگر چیزی را اشتباه رفت, شما می توانید اطلاعات در پیام ورود به سیستم پیدا (اگر ورود به سیستم فعال است).

Logging output of Binance Order element

خروجی ورود از عنصر سفارش بایننس

برنامه ریزی و همگام سازی

برای برنامه ریزی منظم و هماهنگ سازی, اضافه کردن کل گردش کار در شبکه 1 با عنصر زمانبندی بایننس.

Binance Scheduler at Grid 1, Position 1A

زمانبندی بایننس در موقعیت 1 الف, شبکه 1

عنصر زمانبندی بایننس تنها یک بار اجرا میشود بنابراین مسیر اجرا را در انتهای شبکه 1 تقسیم کرده و با عبور خروجی به عنصر زمانبندی بایننس مجبور به همگامسازی مجدد خود میکند.

Grid 1: Split execution path

عنصر 5 الف به عنصر 1 الف شبکه 2 و عنصر 5 ب به عنصر 1 الف شبکه 1 (زمانبندی بایننس) اشاره می کند.

اعزام

شما می توانید تمام تنظیمات را 24/7 بر روی دستگاه محلی خود اجرا کنید یا می توانید به طور کامل بر روی یک سیستم ابر ارزان قیمت میزبانی کنید. برای مثال می توانید از یک سیستم ابری لینوکس/فریبیاسدی با حدود 5 دلار در ماه استفاده کنید اما معمولا سیستم پنجره ای را فراهم نمی کنند. اگر می خواهید از این ابرهای کم هزینه استفاده کنید می توانید از پایتون دیمون استفاده کنید که کاملا در داخل ترمینال اجرا می شود.

PythonicDaemon console interface

پایتون دیمون بخشی از نصب اولیه است. به عنوان یک استدلال به سیستم در حال اجرا از راه دور (به عنوان مثال با کپی امن) و شروع به پایتون دیمون با فایل گردش کار به عنوان یک استدلال:

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

Crontab on Ubuntu Server

گام های بعدی

همانطور که من در ابتدا نوشت, این اموزش فقط یک نقطه شروع به تجارت خودکار است. برنامه نویسی رباتها تجارت حدود 10% برنامه نویسی و 90% تست. وقتی صحبت از اجازه دادن به تجارت ربات با پول شما می شود, قطعا سه بار در مورد کدی که برنامه ریزی می کنید فکر خواهید کرد. بنابراین من به شما توصیه می کنم کد خود را تا جایی که می توانید ساده و قابل درک نگه دارید.

اگر شما می خواهید برای ادامه در حال توسعه ربات تجاری خود را در خود, چیزهای بعدی به راه اندازی عبارتند از:

  • محاسبه سود خودکار (امیدوارم فقط مثبت باشد!)
  • محاسبه قیمت شما می خواهید برای خرید
  • مقایسه با کتاب سفارش خود را (به عنوان مثال, شد سفارش به طور کامل پر?)

شما می توانید کل مثال در گیتهاب دانلود.

Cash register

6 کیف پول ارزهای رمزنگاری شده منبع باز

شما به دنبال یک محل برای ذخیره و تجارت خود را بیت کوین, اتریوم, یا دیگر ارز رمزنگاری? این شش گزینه منبع باز را بررسی کنید.

  • نویسنده : حمید صبوراردوبادی
  • منبع : christianart.website
  • بدون دیدگاه

برچسب ها

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.