من به عنوان یک همکار آمازون از خریدهای واجد شرایط درآمد کسب می کنم.
در آخرین پست، نحوه بارگذاری پویا استراتژی ها را در معامله گر خود بررسی کردیم. امروز، من به شما نشان خواهم داد که چگونه به صورت پویا اندازه لات را محاسبه کنید. اندازه موقعیت یک معامله به درصدی از ریسک بستگی دارد که مایلید موجودی حساب خود را بپذیرید. به عنوان مثال. اگر درصد ریسک شما 1٪ است و یک حساب 5000 دلاری دارید، حداکثر مقدار پولی که می توانید در یک معامله از دست بدهید 50 دلار است.
مقدار یک پیپ را محاسبه کنید
برای شروع، باید یک کتابخانه جدید به نام forex-python نصب کنید. شما می توانید این را با استفاده از دستور زیر یا با رفتن به اینجا نصب کنید. فارکس پایتون یک نرخ ارز خارجی و تبدیل ارز رایگان است که ما از آن برای محاسبه ارزش یک پیپ استفاده خواهیم کرد.
پس از نصب، به فایل konstants. py خود بروید و این کتابخانه جدید را به صورت زیر وارد کنید:
در مرحله بعد، بیایید یک روش به فایل konstants. py خود اضافه کنیم تا مقدار پیپ را محاسبه کنیم. ما باید اندازه یک پیپ را برای یک ابزار معین محاسبه کنیم. می توانید این روش جدید را get_pip_value بنامید و باید آرگومان های نماد و account_currency را بگیرد:
اکنون باید نماد خود را به 2 ارز تقسیم کنیم. یعنی اگر «EURUSD» را به عنوان نماد پاس کردیم، باید آن را به «EUR» و «USD» تقسیم کنیم:
در نهایت، با استفاده از ماژول CurrencyRates اجازه می دهد ارزش یک پیپ را محاسبه کرده و آن را به ارز محلی خود تبدیل کنید. اطلاعات بیشتر در مورد نحوه کار روش تبدیل را می توانید در اینجا بیابید:
به صورت پویا اندازه لات را برای ربات معاملاتی الگوریتمی خود محاسبه کنید
بیایید دوباره به فایل trader. py شما نگاهی بیندازیم. شما یک روش جدید به نام calc_position_size اضافه خواهید کرد که آرگومان های زیر را می گیرد: نماد، استراتژی.
برای محاسبه درصدی از موجودی خود که مایل به ریسک هستید، باید واقعاً موجودی فعلی حساب خود را بدانید. این را با استفاده از روش acount_info از API MT5 بازیابی کنید. اطلاعات بیشتر در این مورد را می توان در اینجا یافت. این متد را فراخوانی کرده و آن را به متغیری با نام حساب اختصاص دهید. همچنین، یک عبارت چاپ اضافه کنید تا بگویید که اندازه موقعیت را برای یک نماد معین محاسبه می کنید.
با انجام این کار، یک متغیر جدید به نام balance ایجاد کنید و موجودی را از حساب دریافت کنید:
حال باید مقدار پیپ نماد را محاسبه کنیم. این کار با فراخوانی متدی که قبلاً در installs. py ایجاد شده بود انجام می شود. به یاد داشته باشید، برای این روش باید نماد و ارز حساب را پاس کنید. این را به یک متغیر جدید به نام pip_value اختصاص دهید:
نگران مراجعه به حساب_کورنسی در استراتژی خود نباشید. بعداً این مطلب را به پرونده JSON استراتژی خود اضافه خواهید کرد. اکنون باید اندازه قطعه را بر اساس مانده حساب خود محاسبه کنید. برای محاسبه اندازه قطعه از معادله زیر استفاده کنید:
اندازه قطعه = (تعادل * خطر) / مقدار پیپ * از دست دادن توقف
کد پایتون شما باید مانند موارد زیر باشد:
سرانجام ، ارزش را به 2 مکان اعشاری (همانطور که MT5 فقط اندازه های زیادی را می پذیرد تا به 2 مکان اعشاری بپذیرد) و بازگشت:
بیایید به روشهای check_trades که قبلاً ایجاد شده بود برگردیم. در آن روش ، جایی را که در حال باز کردن یک موقعیت (Open_position ...) هستید و بالاتر از این روش تماس را پیدا کنید ، خط زیر را اضافه کنید:
در تماس Open_position خود ، اندازه قطعه فعلی را با یکی از متغیرهای ایجاد شده در بالا جایگزین کنید:
افزودن ویژگی های جدید به پرونده JSON استراتژی
شما به یاد خواهید آورد که ما در این پست به 2 ویژگی جدید از استراتژی در این پست نامیده می کنیم. این خصوصیات هنوز در استراتژی ما وجود ندارد. بیایید آن را برطرف کنیم!
به پرونده استراتژی خود بروید. در مورد من ، من USD را به عنوان ارز حساب خود اضافه می کنم:
بعد از استراتژی_ام خطر خود را به عنوان یک درصد ارزش تعریف کنید. به عنوان مثال. 2 = 2 ٪:
آزمایش کد
حالا بیایید کد خود را آزمایش کنیم. برای این آزمون من به سادگی معامله گر را اجرا می کنم و منتظر می مانم تا تجارت افتتاح شود. اندازه لوط باید به صورت پویا بر اساس مانده حساب و ریسک من محاسبه شود.

همانطور که در بالا مشاهده می کنید ، معامله گر دوید و موقعیتی را در EURUSD با اندازه قطعه محاسبه شده 5. 53 باز کرد.
اگر علاقه مند به کسب اطلاعات بیشتر در مورد سیستم های تجارت و تجارت ALGO هستید ، من به شدت توصیه می کنم این کتاب را بخوانید. من برخی از ایده ها و استراتژی های تجاری خودم را از این کتاب گرفته ام. همچنین بینش خوبی در مورد آزمایش پشتی موثر برای من فراهم کرد. اینجا را بررسی کن.
این همه در حال حاضر! روز دوشنبه دوباره بررسی کنید تا ببینید که چگونه می توانید هشدارهای معاملاتی را از طریق Slack به تلفن خود ارسال کنید! مثل همیشه ، اگر سؤال یا نظر دارید ، لطفاً آنها را در زیر ارسال کنید. علاوه بر این ، اگر به هر مشکلی رسیدگی کردید ، لطفاً به من اطلاع دهید.
4 فکر در مورد "اندازه گیری پویا برای ربات تجارت الگوریتمی خود"
سلام ، ابتدا می خواهم به شما بگویم که آموزش شما بسیار جذاب است ، تبریک می گویم!
من یک مشکل دارم ، شاید من کار اشتباهی انجام داده ام اما به نظر نمی رسد که اندازه زیادی دقیق باشد. من نتیجه خود را با این سایت مقایسه می کنم: https://www. myfxbook.com/fr/forex-calculators/position-size
به عنوان مثال: من یک حساب با 100 000 یورو دارم که خطر 1 ٪ و 5 پیپ SL است. من با AudusD تجارت می کنم. این برنامه اندازه زیادی را به من می دهد برابر با 31. 33 ، از طرف دیگر سایت به من اندازه زیادی را برابر با 24. 24 می دهد. آیا شما همین مشکل را دارید ؟
در مورد یک موضوع دیگر ، آیا فکر می کنید در آموزش خود ، پشتی از روبات بازرگانی را پیاده سازی خواهید کرد؟
به هر حال ، دوباره از این آموزش باورنکردنی متشکرم! با احترام ، thibault
با تشکر! آیا "Account_currency" در استراتژی است. Json به "EUR" تنظیم شده است؟همچنین ، بله این باید طی چند هفته آینده بیرون بیاید
من از قسمت JSON استفاده نمی کنم ، زیرا می خواهم با استفاده از عملکرد قیمت یک استراتژی ایجاد کنم ، بنابراین من واقعاً باید تمام Strat خود را کدگذاری کنم ، اما به هر حال دو عملکرد من به نظر می رسد (تقریباً مشابه شما):
def get_pip_value(symbol : str, account_currency : str) >صنایع: نماد_1 = نماد [0: 3] Symbol_2 = نماد [3: 6] C = CURRENCYRATES () Retu C.convert (Symbol_2 ، Account_currency ، C.convert (Symbol_1 ، Symbol_2 ، 1))
def calc_position_size(symbol : str, account_currency : str, risk : float, sl : int) >Float: Account = MT5. Account_info () تعادل = float (Account. Balance) pip_value = get_pip_value (نماد ، حساب_کورنس) lot_size = (تعادل * (خطر / 100)) / (pip_value * sl) lot_size = دور (lot_sesize ، 2)lot_size را برگردانید
به عنوان مثال ، اگر من از اولین اظهار نظر خود نمونه ای از من گرفتم: وقتی با CALC_POSION_SIZE تماس می گیرم ، نمادی را روی "audusd" قرار می دهم ، account_currency به "یورو" ، خطر 1 و SL تا 50.
فکر می کنم فهمیدم چرا این مشکل را داشتم. به این دلیل بود که C.converter خیلی دقیق نیست (و اصلاً ناچیز نیست).
در عملکرد من آرگومان Last_Row_lot_all_pair را دارم که اطلاعات شمع 1 دقیقه آخر جفت مورد نیاز است ، بنابراین ما با این کار دقت زیادی داریم. اگر می خواهید ببینید ، عملکرد خود را در زیر ارسال می کنم ، اما اکنون من دقیقاً همان نتیجه را نسبت به MyFxBook دارم.
def calc_position_size(symbol : str, account_currency : str, risk : float, sl : int, last_row_lot_all_pair: dict) >float: حساب = MT5. Account_info () تعادل = حساب. تعادل ارز_2 = نماد [3: 6] Symbol_To_convert = حساب_کورنسی + ارز_2 close_candle_symbol_to_convert = float (last_lot_all_pair [symbol_to_convert] ["jcon”]] اگر jpy ”]) اگر jpy”])) اگر jpy ”]) اگر jpy”])= 100 close_candle_symbol_to_convert = close_candle_symbol_to_convert/jpy_converter_pips sl_pips = sl/10 ٪_converter = 0. 01 isciprentage = 0. 1 infrentage = 0. 1 price = pigrentage = pigrentage = pigrentage = (تعادل*ریسک_ percentage)/sl_pips) استانداردpip_value
بهترین استراتژی معاملات...
ما را در سایت بهترین استراتژی معاملات دنبال می کنید
برچسب :
نویسنده : صدرا ذوالریاستین
بازدید : 51
تاريخ : شنبه
3 تير
1402 ساعت: 16:11