استفاده از سفارشات محدود به جای Take Profit بدون تغییر کد اصلی EA

  • 2022-12-9

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

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

1. جنبه های کلی

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

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

نکته اصلی که باید به خاطر داشته باشیم این است که سود بردن، دستور بستن یک موقعیت است. این امر ممکن است بدیهی به نظر برسد، اما همه به این واقعیت عادت کرده اند که این کار توسط ترمینال و سیستم انجام می شود. از آنجایی که تصمیم گرفتیم هنگام تعیین سود، سیستم را جایگزین کنیم، باید مسئولیت کامل نگهداری آن را بر عهده بگیریم.

من دقیقا در مورد چه چیزی صحبت می کنم؟یک موقعیت ممکن است نه تنها با برداشت سود، بلکه با توقف ضرر و به صلاحدید معامله گر بسته شود (اغلب شامل برخی از EA برای بسته شدن با قیمت بازار). این بدان معنی است که سیستم ما باید حضور موقعیت همراه در بازار را ردیابی کند و در صورت عدم وجود آن به هر دلیلی، فوراً یک سفارش محدود را حذف کند. در غیر این صورت، ممکن است یک موقعیت نامطلوب باز شود که باعث زیان بسیار بیشتر در مقایسه با لغزش در طول یک فعال سازی استاندارد برداشت سود شود.

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

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

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

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

مسئله دیگر در حال تغییر سودآوری است. غالباً ، هنگام استفاده از استراتژی های مختلف ، شما باید سود یک موقعیت باز را ردیابی و تنظیم کنید. ما در اینجا دو گزینه داریم.

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

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

2. اصول اجرای لینک "موقعیت - سفارش محدود"

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

به طور بالقوه ، هر لحظه که یک جلسه معاملاتی باز است ، می تواند یک موقعیت تغییر یابد. با این حال ، این اتفاق بیش از حد اتفاق نمی افتد ، در حالی که بررسی هر کنه به طور قابل توجهی عملیات انجام شده توسط EA را افزایش می دهد. در اینجا می توانیم از رویدادها استفاده کنیم. طبق مستندات MQL5 ، رویداد تجارت هنگام انجام یک عملیات معاملاتی در سرور تجارت ایجاد می شود. عملکرد OnTrade در نتیجه این رویداد راه اندازی می شود. بنابراین ، این عملکرد اجازه می دهد تا بررسی مسابقه بین موقعیت های باز و حد مجاز ، سود کسب کند. این به ما این امکان را می دهد تا مسابقه را در هر کنه بررسی نکنیم و در عین حال هیچ تغییری را از دست ندهیم.

موضوع شناسایی بعدی است. در نگاه اول ، همه چیز ساده است. ما به سادگی باید سفارشات محدود و موقعیت های باز را بررسی کنیم. با این حال ، ما می خواهیم یک الگوریتم جهانی بسازیم که به خوبی در انواع مختلف حساب و با استراتژی های مختلف کار کند. همچنین به خاطر داشته باشید که می توان از سفارشات محدود در استراتژی استفاده کرد. بنابراین ، ما باید محدودیت سود کسب کنیم. من برای شناسایی آنها با استفاده از نظرات ارائه می دهم. از آنجا که از سفارشات حد ما برای جایگزینی سود استفاده می شود ، ما در ابتدای نظر سفارش "TP" را برای شناسایی آنها اضافه خواهیم کرد. در مرحله بعد ، در صورت استفاده از موقعیت چند مرحله ای ، یک شماره مرحله را اضافه خواهیم کرد. این امر برای سیستم توری کافی خواهد بود ، اما اجازه ندهید سیستم محافظت را با امکان باز کردن موقعیت های mutiple برای یک حساب فراموش کنیم. بنابراین ، ما باید شناسه موقعیت مناسب را به حد وصل اضافه کنیم.

3. ایجاد یک محدوده در کلاس سود

بیایید موارد فوق را خلاصه کنیم. عملکرد کلاس ما را می توان به دو فرآیند منطقی تقسیم کرد:

  1. ایجاد تغییر در ارسال درخواست های معاملاتی به سرور.
  2. نظارت و تصحیح موقعیت های باز و سفارشات محدود.

برای سهولت در استفاده ، بیایید الگوریتم خود را به عنوان کلاس ClimittakeProfit طراحی کنیم و همه توابع را در آن ایستاده کنیم. این به ما امکان می دهد بدون اعلام نمونه آن در کد برنامه از روشهای کلاس استفاده کنیم.

روش های Magic ، Onloonesymbol ، AddTakeProfit و DeletEtakeProfit روش هایی برای پیکربندی عملکرد کلاس هستند. سحر و جادو - اعداد جادویی که برای ردیابی موقعیت ها (حساب های پرچین) استفاده می شود. اگ ر-1 ، کلاس با همه موقعیت ها کار می کند. فقط به کلاس دستور می دهد که فقط با موقعیت های نمادی که EA در آن راه اندازی شده است ، کار کند. از روشهای AddTakeProfit و DeteletakeProfit برای افزودن و حذف ثابت میزان سود با نشانگر بسته شدن حجم به عنوان درصدی از حجم موقعیت اولیه استفاده می شود.

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

3. 1ایجاد تغییر در ارسال سفارشات تجاری

روش سفارش ، سفارشات ارسال شده توسط EA را کنترل می کند. نام و فرم فراخوانی روش مشابه عملکرد استاندارد برای ارسال سفارشات به MQL5 است. این امر با جایگزینی عملکرد استاندارد با روش ما ، تعبیه الگوریتم را به کد EA قبلی نوشته شده ساده می کند.

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

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

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

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

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

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

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

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

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

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

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

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

بیایید نگاهی به الگوریتم روش Checklimitorder داشته باشیم تا تصویر کامل شود. از نظر عملکردی ، این روش حضور یک دستور محدود قبلی را برای یک درخواست تجارت آماده بررسی می کند. اگر یک سفارش از قبل تنظیم شده باشد ، روش "True" باز می گردد و سفارش جدید تنظیم نمی شود.

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

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

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

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

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

بسته به نوع حساب ، ما دو گزینه برای فعال سازی سفارش محدود داریم:

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

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

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

نظر و نوع سفارش را برای سفارشات موقعیت فعلی بررسی کنید. در صورت شناسایی سفارش ، حجم آن را با علامت منفی برای درخواست بنویسید و از روش خارج شوید.

کد کامل کلیه روشها و توابع در ضمیمه ارائه شده است.

3. 2پردازش عملیات تجاری

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

انجام معاملات در حساب، رویداد Trade را ایجاد می کند، که به نوبه خود باعث اجرای تابع OnTrade می شود. برای انجام معاملات، متد مناسب را به کلاس اضافه کنید.

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

بعد، حلقه را برای تکرار بر روی موقعیت های باز ترتیب دهید. در ابتدای حلقه، بررسی کنید که آیا موقعیت با نماد و شرایط مرتب‌سازی عدد جادویی مطابقت دارد (برای حساب‌های پوششی).

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

در پایان حلقه، متد SetTakeProfits را برای بررسی و تنظیم سفارشات محدود برای موقعیت فراخوانی کنید. الگوریتم روش در بالا توضیح داده شد.

پس از تکمیل حلقه بررسی موقعیت‌های باز، مطمئن شوید که سفارش‌های محدود فعال با موقعیت‌های باز مطابقت دارند و در صورت لزوم، سفارش‌های محدود باقیمانده پس از بسته شدن موقعیت‌ها را حذف کنید. برای این کار متد CheckLimitOrder را فراخوانی کنید. در این حالت، بر خلاف تابعی که در بالا توضیح داده شد، تابع بدون پارامتر فراخوانی می شود. این به این دلیل اتفاق می‌افتد که ما یک متد کاملاً متفاوت را فراخوانی می‌کنیم، در حالی که اعمال یک نام مشابه به دلیل ویژگی اضافه بار تابع امکان‌پذیر است.

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

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

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

کل کد تمام متدهای کلاس را در پیوست پیدا کنید.

4. ادغام کلاس با EA

پس از اتمام کار کلاس، بیایید ببینیم چگونه می توان آن را در EA از قبل توسعه یافته ادغام کرد.

همانطور که ممکن است به خاطر داشته باشید، تمام متدهای کلاس ما ثابت هستند، به این معنی که می توانیم بدون اعلام نمونه کلاس از آنها استفاده کنیم. چنین رویکردی در ابتدا برای ساده‌سازی ادغام طبقاتی در EAهای توسعه‌یافته انتخاب شد. در واقع، این اولین قدم برای ادغام یک کلاس در یک EA است.

سپس، تابع LimitOrderSend را با پارامترهای فراخوانی مشابه تابع OrderSend ایجاد کنید. قرار است زیر کد کلاس قرار گیرد و تنها عملکرد آن فراخوانی متد CLimitTakeProfit::OrderSend است. در مرحله بعد، از دستور #define استفاده کنید تا تابع OrderSend اصلی را با تابع سفارشی جایگزین کنید. استفاده از این روش به ما امکان می دهد همزمان کد را در تمام توابع EA که درخواست های تجاری را ارسال می کنند، جاسازی کنیم، به طوری که مجبور نباشیم زمان را برای جستجوی چنین دستوراتی در کل کد EA تلف کنیم.

از آنجایی که بسیاری از EA ها تابع OnTrade را ندارند، ممکن است آن را در فایل کلاس قرار دهیم. اما اگر EA شما دارای این تابع است، باید کد زیر را حذف یا نظر دهید و فراخوانی متد CLimitTakeProfit::OnTrade را به بدنه تابع EA خود اضافه کنید.

در مرحله بعد، باید مرجع را با استفاده از دستور #include به فایل کلاس اضافه کنیم تا کلاس را در EA ادغام کنیم. به خاطر داشته باشید که کلاس باید قبل از فراخوانی سایر کتابخانه ها و کد EA قرار گیرد. در زیر نمونه ای از افزودن کلاس به MACD Sample. mq5 EA از تحویل استاندارد ترمینال آورده شده است.

می توانید موقعیت جزئی را به کد عملکرد OnInit اضافه کنید. EA ما آماده رفتن است.

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

کد کامل EA را می توان در پیوست یافت.

نتیجه

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

برنامه های مورد استفاده در مقاله

# نام نوع شرح
1 limittakeprofit. mqh کتابخانه کلاس کلاس برای جایگزینی سفارش با سفارشات محدودیت سود کسب کنید
2 macd sample. mq5 مشاور متخصص EA اصلی که در Metatrader 5 استفاده می شود
3 نمونه MACD limittp. mq5 مشاور متخصص نمونه ای از ادغام کلاس در EA مورد استفاده در Metatrader 5 مثال

هشدار: کلیه حقوق این مواد توسط Metaquotes Ltd. کپی یا چاپ مجدد این مواد به طور کامل یا جزئی محفوظ است.<SPAN> می توانید موقعیت جزئی را به کد عملکرد OnInit اضافه کنید. EA ما آماده رفتن است.

ثبت دیدگاه

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