
در این وبلاگ: از Python برای تجسم سهام سهام خود استفاده کنید ، و سپس یک ربات معاملاتی بسازید تا سهام خود را با زمان اجرای ربات معاملات از پیش ساخته ما خریداری و بفروشید.
روندهای اخیر در بورس جهانی به دلیل همه گیر Covid-19 به دور از پایدار بوده است ... و به دور از مشخص. آخرین باری که بازار این پرشور بود ، بسیاری از مردم ایالات متحده و خارج از کشور پول زیادی را از دست دادند. اما تعداد معدودی به اندازه کافی خوش شانس بودند که خود را در موقعیتی برای سودآوری قرار دادند. وضعیت فعلی فرقی نخواهد کرد.
این که آیا شما یک برنامه نویس فصلی هستید که تازه با تجارت مالی شروع کرده اید ، یا یک سرمایه گذار باتجربه که علاقه مند به کشف قدرت پایتون است ، این مقاله برای شما مناسب است. در آن ، من نشان خواهم داد که چگونه از پایتون می توان برای تجسم منابع موجود در سبد مالی فعلی خود ، و همچنین نحوه ساخت یک ربات تجاری که توسط یک الگوریتم ساده مبتنی بر مشروط اداره می شود ، استفاده کرد.
نصب پایتون برای تجارت رباتها
برای دنبال کردن کد موجود در این مقاله ، باید نسخه اخیر پایتون را نصب کنید. من از ساخت سفارشی ActivePython استفاده می کنم که شامل نسخه ای از پایتون و فقط بسته هایی است که پروژه به آن نیاز دارد. با انجام موارد زیر می توانید یک نسخه برای خودتان تهیه کنید:
- با انجام موارد زیر ، زمان اجرا "تجارت ربات" را بارگیری و نصب کنید:
- ابزار حالت را روی ویندوز با استفاده از PowerShell نصب کنید: iex (new-object net. webclient) . downloadString ('https://platform. activestate. com/dl/cli/install. ps1') یا ابزار حالت را در لینوکس یا مک نصب کنید. سعادت<(curl -q https://platform.activestate.com/dl/cli/install.sh)
- دستور زیر را برای بارگیری ساختمان اجرا کنید و به طور خودکار آن را در یک محیط مجازی نصب کنید: حالت را فعال کنید
می توانید تمام کد مورد استفاده در این مقاله را در مخزن Gitlab من پیدا کنید.
همه مجموعه؟بیایید به جزئیات شیرجه بزنیم.
داده های مالی برای تجارت رباتها
بسیاری از سیستم عامل های مختلف تجارت سهام در آنجا وجود دارد ، برخی با API های خاص خود. Robinhood یک بستر سرمایه گذاری بدون کمیسیون ارائه می دهد که تجارت را ساده و آسان می کند. علاوه بر این ، بسته Robin-Stocks این سادگی را به پایتون گسترش می دهد ، از ویژگی هایی مانند تجارت سهام ، گزینه های خرید/فروش و خرید ارزهای رمزنگاری شده و همچنین دسترسی به نمونه کارها در زمان واقعی و عملکرد بازار پشتیبانی می کند.
برای دنبال کردن این پست ، باید یک حساب Robinhood ایجاد کنید. توجه داشته باشید که اگر در خارج از ایالات متحده قرار دارید ، باید از یک بستر تجاری دیگر استفاده کنید. در این حالت ، ساختار ربات تجارت یکسان خواهد بود ، اما نحوه اجرای معاملات متفاوت خواهد بود.
برای شروع ، ابتدا بسته های مورد نیاز خود را وارد می کنیم و سپس به پلت فرم Robinhood وارد می شویم. رشته های نام کاربری و رمز عبور را با اطلاعات حساب خود جایگزین کنید:
وارد کردن Robin_stocks به عنوان R واردات پاندا به عنوان PD واردات زمان واردات نام کاربری = 'user@mail. com' رمز عبور = 'رمز عبور' login = r. login (نام کاربری ، رمز عبور)
بسته به تنظیمات امنیتی خود ، ممکن است به تأیید اعتبار دو عاملی نیاز داشته باشید. پس از ورود به سیستم ، می توانید به راحتی با اجرا به منابع خود دسترسی پیدا کنید:
R. Build_Holdings ()
خروجی یک فرهنگ لغت است که چیزی شبیه به این است:
البته ، برای پرتفوی های بزرگتر ، خروجی بسیار طولانی تر خواهد بود. همچنین می توانید از طریق ماژول پروفایل به هر یک از اطلاعات پروفایل خود دسترسی پیدا کنید:
r. profiles. load_basic_profile ()
چند کارکرد آموزنده دیگر وجود دارد که می تواند برای استخراج اطلاعات در مورد نمایه شما استفاده شود. آنها را می توان در مستندات در اینجا یافت.
قبل از خرید و فروش ، ساخت یک ابزار تجسم برای مشاهده تغییرات تاریخی در یک سهام خاص مفید است. اولین کاری که من انجام می دهم ساخت یک تابع Visualize_Price () است که دقیقاً همین کار را انجام می دهد.
ورودی لیستی از تیکت های توطئه است ، مدت زمانی که می تواند آنها را ترسیم کند (می تواند روز ، هفته ، ماه ، 3 ماه ، سال یا 5 سال باشد) و اینکه شامل ساعات معاملات طولانی یا فقط ساعت معاملاتی منظم باشد (می تواندتمدید یا منظم باشید).
def Visualize_price (ticker_list ، span = 'year "، مرز =' منظم '): برای t در محدوده (len (ticker_list)): name = str (r. get_name_by_symbol (ticker_list [t])) hist = r. stocks. get_historicals.('float32') hist_df. high_price = hist_df. high_price. astype ('float32') hist_df. low_price = hist_df. low_price. astype ('float32' ax = hist_df. plot (x = 'begins_at' ، y = 'open_price'، figsize = (16،8)) ax. fill_between (hist_df. begins_at ، hist_df. low_price ، hist_df. high_price ، alpha = 0. 5) ax. set_xlabel ('date') ax. set_ylabel ('قیمت (USD)') محور. LEGEND ([TICKER_LIST [T]]) AX. SET_TITLE (نام)می توانید لیست تیک تیک ورودی را سفارشی کنید ، یا از عملکرد زیر برای استخراج آنها از منابع خود استفاده کنید:
def intreact_list (): ticker_list = لیست (r. build_holdings (). کلیدها ()) بازگشت ticker_list
برای اجرای توابع:
ticker_list = extract_list() visualize_price(ticker_list, span = 'year', bounds = 'عادی')
از آنجایی که من فقط یک سهام در دارایی های خود دارم، تنها یک قطعه داده می شود. طرح به این شکل است:

علاوه بر ترسیم قیمت افتتاحیه در هر بازه زمانی (خط آبی تیره)، قیمت بالا و پایین را در بازه زمانی یکسان (آبی روشن) در نظر گرفته ام.
کد خرید/فروش ربات معاملاتی
در حالت ایده آل، ربات معاملاتی باید به مجموعه ای از نشانه های از پیش تعریف شده در پورتفولیو نگاه کند و تصمیم بگیرد که آیا بخرد، بفروشد یا نگه دارد. اطلاعاتی که ربات برای تصمیم گیری از آن استفاده می کند می تواند هر چیزی باشد، از نحوه تغییر قیمت در یک بازه زمانی معین گرفته تا تحلیل احساسات یک توییت از سوی مدیر عامل شرکت.
در حالی که عوامل زیادی وجود دارد که می توان آنها را در نظر گرفت، که منجر به مدل های پیچیده تر برای تعیین شرایط ربات می شود، عملکرد پایه ربات تغییر نمی کند. در مورد ما، من صرفاً از ویژگی %change برای هر هلدینگ استفاده می کنم تا تعیین کنم که آیا خرید یا فروش شود یا خیر. اگر قیمت سهام بیش از درصد معینی کاهش یابد، ربات اقدام به خرید می کند. برعکس، اگر قیمت سهام بیش از درصد مشخصی افزایش یابد، ربات اقدام به فروش خواهد کرد. برای پیاده سازی این رفتار، یک تابع trading_bot تعریف کرده ام:
def trading_bot (trading_dict): holdings = r.build_holdings() holdings_df = pd.DataFrame() for i in range(len(holdings)): ticker = list(holdings.items())[i][0] holding_df = pd.DataFrame(list(holdings.items())[i][1], index = [i]) holding_df['ticker'] = ticker holdings_df = pd.concat([holdings_df, holding_df]) holdings_df = holdings_df[['ticker', 'price', 'quantity', 'percent_change','average_buy_price', 'equity', 'equity_change','pe_ratio', 'type', 'name', 'id' ]] for j in range(len(trading_dict)): holding_df = holdings_df[holdings_df.ticker == list(trading_dict.keys())[j]] if holding_df['percent_change'].astype('float32')[0] else : print('Nothing to buy') if holding_df['percent_change'].astype('float32')[0]>= list(trading_dict. values())[j][1]: sell_string = 'خرید' + str(holding_df['ticker'][0]) + ' at ' + time. ctime() print(sell_string) r. orders. order_sell_market(holding_df['ticker'][0], 1, timeInForce= 'gfd') else : print ('چیزی برای فروش نیست')ابتدا، ربات دارایی ها را از پلتفرم Robinhood بیرون می کشد و برخی از داده ها را بازسازی می کند تا یک چارچوب داده پانداها ایجاد کند. سپس، از طریق هر علامتی که در trading_dict وجود دارد، حلقه می زند و مقدار %change را با محدودیت های شرطی خرید و فروش مقایسه می کند. به عنوان مثال، من می توانم هر دو حد را روی 0. 5٪ تنظیم کنم:
trading_dict = holdings_df = trading_bot (trading_dict)
اگر مقدار %change کمتر یا بیشتر از نیم درصد باشد، ربات خرید یا فروش را اجرا می کند و تراکنش را برای هر هلدینگ چاپ می کند. خیلی باحاله درسته؟
خودشه! اکنون می توانید ربات تجاری خود را با استفاده از پایتون بسازید
در این مقاله، من نشان دادم که چگونه می توان از پایتون برای ساخت یک ربات تجاری ساده با استفاده از بسته هایی مانند پانداها و سهام رابین استفاده کرد. با استفاده از پلت فرم معاملاتی Robinhood، می توانید به راحتی عملکرد دارایی های فردی را در سبد خود تجسم کنید.
شرایط خرید و فروش ما برای ربات نسبتاً ساده است ، اما این کد بلوک های ساختمانی را برای ایجاد یک الگوریتم پیشرفته تر فراهم می کند. تطبیق پذیری پایتون زمین بازی مناسبی را برای افزایش پیچیدگی با استفاده از آن ، معرفی تکنیک های یادگیری ماشین و سایر معیارهای مالی ارائه می دهد. من این مراحل بعدی را برای آن دسته از خوانندگان علاقه مند به ایجاد یک ربات پیشرفته تر می گذارم.
- تمام کد مورد استفاده در این مقاله را می توان در مخزن Gitlab من یافت.
- ثبت نام در یک حساب کاربری Platform ActiveState رایگان ، بنابراین می توانید محیط تجاری ربات تجارت را بارگیری کنید و ربات تجارت بسیار شخصی خود را ایجاد کنید < pan> شرایط خرید و فروش ما برای ربات نسبتاً ساده است ، اما این کد بلوک های ساختمانی را برای ایجاد فراهم می کندیک الگوریتم پیشرفته تر. تطبیق پذیری پایتون زمین بازی مناسبی را برای افزایش پیچیدگی با استفاده از آن ، معرفی تکنیک های یادگیری ماشین و سایر معیارهای مالی ارائه می دهد. من این مراحل بعدی را برای آن دسته از خوانندگان علاقه مند به ایجاد یک ربات پیشرفته تر می گذارم.
مقالات آموزش فارکس...
ما را در سایت مقالات آموزش فارکس دنبال می کنید
برچسب :
نویسنده : بهزاد فراهانی
بازدید : <-PostHit->
تاريخ : دوشنبه
16 مرداد
1402 ساعت: 22:53