توابع پوزیشن گیری و مدیریت پوزیشن (بخش سوم) – درس هشتم– کتاب آموزش زبان mql (دوره متوسطه)

آموزش ام کیو ال

توابع پوزیشن گیری و مدیریت پوزیشن (بخش سوم)

درس هشتم

 

❓ مسئله شماره 12:
اکسپرتی با مشخصات و تنظیمات زیر را بنویسید:

  • در صورتی که در تایم روزانه یک کندلی صعودی در حال شکل گرفتن باشد و همچنین در تایم یک ساعته دو کندل صعودی پشت سر هم تشکل شد یک پوزیشن بای گرفته شود.
  • در صورتی که در تایم روزانه یک کندلی نزولی در حال شکل گرفتن باشد و همچنین در تایم یک ساعته دو کندل نزولی پشت سر هم تشکل شد یک پوزیشن sell گرفته شود.
  • در صورتی که پوزیشن buy وجود نداشته باشد پوزیشن buy دیگری گرفته شود.
  • در صورتی که پوزیشن sell وجود نداشته باشد پوزیشن sell دیگری گرفته شود
  • در صورتی که روند صعودی کندل روزانه به نزولی تبدیل شد پوزیشن buy بسته شود
  • در صورتی که روند نزولی کندل روزانه به صعودی تبدیل شد پوزیشن sell بسته شود
  • میزان حجم پوزیشن ها توسط کاربر قابل تغییر باشد
  • از ساعت 11 شب تا 8 صبح اکسپریت هیچ پورشن جدیدی باز نکند.

پوزیشن sell

برای حل مسئله ابتدا اکسپرت ساخته نام گذاری کنید و یک حجم lot را  از کاربر بگیرید.

حجم Lot

برای بازکردن پوزیشن ها کدهای زیر را وارد کنید.

کندل

چک کردن کندل اول(کندل شماره صفر) valoum  کمتر از یک باشد. سپس تابع ساعت را چک کنید.
قسمت پایین تر می توانید ساعت را تنظیم کنید.

تابع ساعت

اگر ساعت فعلی بزرگ تر از 8 بود و ساعت فعلی کوچک تر از 23 بود true را در خروجی تابع برگرداند. در غیر این صورت false را برگرداند. خروجی تابع ساعت bool می باشد.

برگردیم به دستور قبلی (بازکردن پوزیشن ها) :

باز کردن پوزیشن ها

دستور درون شرط:

تابع candelestatus را چک می کند اگر خروجی مساوی Buy باشد و تابع orders پوزیشن هایی که دارای شماره مجیک 1111 می باشند مساوی صفر باشد ، پوزیشن Buy را بگیرد.
در درس های گذشته شیوه تعریف تابع های ordersend بیان شد.
سپس وضعیت کندل ها را تعریف کنید.

وضعیت کندل ها

شرط candelestatus به شیوه زیر می باشد که اگر: در تایم یک ساعته close کندل دوم بزرگ تر از open کندل دوم بود ، و همچنین اگر close کندل یک ، بزرگ تر از open کندل یک بود، و نیز اگر در تایم روزانه close کندل صفر بزرگ تر از open کندل صفر بود ، درصورت صحت دستورها BUY را در خروجی نمایش بدهد.
و اگر شرایط قسمت پایین درست بود SELL در خروجی نمایش دهد. چرا که شرایط برعکس بالاست و نمودار نزولی خواهد بود. در غیر این صورت NO Signal را خروجی بدهد. توجه نمایید که خروجی از نوع  string می باشد.
برای شمارش order ها دستورهای زیر وارد کنید.

شمارش Order

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

کدهای بستن پوزیشن:

کدهای بستن پوزیشن ها، قبل از بستن پوزیشن ها قید می شود.

کدهای بستن پوزیشن

این گونه عمل می کند که کندل روزانه بررسی می شود چنانچه کندل روزانه نزولی می باشد و پوزیشن buy با شماره 1111 بوده آن ها را ببندد. اگر کندل روزانه صعودی بوده و پوزیشن sell وجود داشته پوزیشن های با شماره مجیک 2222 را close کند.

کد نویسی تابع close:

کد نویسی تابع Close

عملکرد آن به این صورت است که اگر شماره مجیک پوزیشن، با شماره مجیک ورودی برابر باشد ، پوزیشن را ببندد. در درس های گذشته شیوه و ورودی های بستن پوزیشن بیان گردید.
پایان کدنوبسی ها compile را کلیک و نباید اخطار نمایش دهد.
وارد برنامه شوید. نام کلاس را انتخاب و start را کلیک کنید.

اکسپرت نویسی

آموزش اکسپرت نویسی

همانگونه که مشاهده می کنید پوزیشن ها بسته شده اند.

پوزیشن ها بسته شدن

بستن پوزیشن

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

 

 

منبع : کتاب آموزش زبان MQL (دوره مقدماتی)
مدرس : استاد حسین احمدی

 

سایر مقالات مرتبط

متا تریدر چیست؟
متاتریدر

متا تریدر چیست؟

متا تریدر چیست؟ اولین سوالی که هر فرد وقتی می خواهد آموزش های متاتریدر مانند آموزش صفر تا صد mql5،

کامل ترین و بهترین آموزش متاتریدر 4
mql4

کامل ترین آموزش متاتریدر 4

بهترین آموزش متاتریدر 4 متاتریدر4 یک پلتفرم معاملاتی محسوب می‌ شود که دارای رابط کاربری ساده است و همین یادگیری

پاسخ‌ها

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *