به بزرگترین دانشنامه مالی فارسی خوش آمدید

استفاده از اندیکاتور تکنیکال در اکسپرت (MACD)

02 مهر

استفاده از اندیکاتور تکنیکال در اکسپرت (MACD)

در این مقاله نمونه‌ای از ساخت Expert متاتریدر ۴ با زبان برنامه‌نویسی MQL4 بر اساس استانداردهای اندیکاتور MACD نشان داده‌شده است. در این مشاور معاملاتی آنلاین (Expert Advisor) جاری‌سازی سطوح تنظیمات پیشرفته‌تری همچون حد سود و ضرر هم توضیح داده‌شده‌اند. در مثالی که در ادامه آن را دنبال می‌کنیم، باز کردن یک موقعیت معاملاتی و مدیریت آن بیان‌شده است. (همچنین بخوانید؛ استفاده از اندیکاتور تکنیکال در اکسپرت (میانگین متحرک))

اصول معامله

ورود به خرید (Long): خط MACD زیر مقدار صفر قرار دارد، بالاتر می‌رود و خط سیگنال را به سمت بالا می‌شکند.

ورود به فروش (Short): خط MACD بالای صفر است و به سمت پایین حرکت می‌کند و خط سیگنال را رو به پایین می‌شکند.

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

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

نکته مهم: برای استخراج تغییرات ناچیز اندیکاتور MACD در تحلیل پیش رو، یک معیار جدید برای اندازه‌گیری hillocks در اندیکاتور MACD به شرح زیر معرفی کردیم: اندیکاتور باید حداقل به‌اندازه ۵ واحد از کمینه قیمت باشد. (۵*Point که در جفت ارز USDCHF برابر ۰٫۰۰۰۵ و در جفت ارز USDJPY برابر ۰٫۰۵ می‌شود).

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

مرحله ۱- توصیف اکسپرت

اشاره‌گر ماوس را بر روی Expert Advisors در پنجره Navigator قرار دهید، کلیک راست ماوس را فشار دهید تا فرمان Create a New Expert در صفحه نرم‌افزار متاتریدر ظاهر شود. Wizard اولیه اکسپرت از شما درخواست ورود اطلاعات مشخصی را می‌کند. در پنجره ظاهرشده نام اکسپرت خود را بنویسید (به‌طور مثال MACD)، نام خود را به‌عنوان نویسنده بنویسید (به‌طور مثال گروه مشاوران مالی سامان)، آدرس وب‌سایت خود را بنویسید (به‌طور مثال؛ www.samanwealth.com).

مرحله ۲ – ایجاد ساختار اولیه برنامه

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

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

  1. متغیرهای اولیه
  2. چک کردن داده‌های اولیه
  • نمودار و تعداد میله‌ها (بار) را چک کنید
  • مقادیر متغیرهای خارجی را بررسی کنید؛ Lots-TP-SL-TS
  1. تنظیم تمام متغیرهای داخلی برای دسترسی سریع به داده‌ها
  2. بررسی پایانه معاملاتی، آیا Void است؟ پس داریم:
  • کنترل کردن موجودی در حساب
  • آیا می‌توان یک موقعیت خرید BUY ایجاد کرد؟
  • یک موقعیت خرید ایجاد کنید و خارج شوید.
  • آیا می‌توان یک موقعیت فروش SELL ایجاد کرد؟
  • یک موقعیت فروش ایجاد کنید و خارج شوید.

خروج از اکسپرت معاملاتی…

  • کنترل موقعیت‌هایی که قبلاً بازشده‌اند
  • اگر موقعیت خرید بود؛
  • آیا باید بسته شود؟
  • آیا باید حد ضرر بروز شود؟
  • اگر موقعیت فروش بود؛
  • آیا باید بسته شود؟
  • آیا باید حد ضرر بروز شود؟

به همین سادگی. تمام ساختار کد نویسی MQL شامل ۴ بلوک اصلی است.

در ادامه سعی می‌کنیم ساختار کد نویسی را به‌صورت جزءبه‌جزء شرح دهیم، با ما همراه باشید؛

۱٫متغیرهای اولیه

تمام متغیرهایی که در اکسپرت معاملاتی استفاده می‌شوند باید بر مبنای زبان برنامه‌نویسی MetaQuotes Language 4 تعریف شوند. به همین دلیل است که بلوک متغیرهای اولیه را در اول برنامه اضافه می‌کنیم. منبع: گروه مشاوران مالی سامان

MetaQuotes Language 4 با تکمیل متغیرهای خارجی ادامه پیدا می‌کند. متغیرهای خارجی را می‌توان از بیرون تنظیم کرد بدون اینکه کدهای اصلی برنامه تغییر یابد. این امر انعطاف‌پذیری اکسپرت معاملاتی ما را افزایش می‌دهد. در برنامه ما متغیر MATrendPeriod به‌عنوان متغیر خارجی یا Extern تعریف‌شده است. ما این متغیر را در ابتدای برنامه تعریف می‌کنیم.

۲٫ بررسی داده‌های اولیه

این قسمت از کد معمولاً در هر اکسپرت با تغییرات اندکی همراه است چراکه تقریباً یک بلوک استاندارد است.

۳٫ تنظیم متغیرهای داخلی برای دسترسی سریع به داده‌ها

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

حال می‌توانید به‌جای استفاده از دستور خط‌های طولانی iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) از متغیرهای تعریف‌شده داخلی مانند MacdCurrent استفاده کرد.

۴٫ بررسی پایانه معاملاتی، آیا خالی است؟ پس داریم:

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

  • بررسی موجودی حساب معاملاتی و غیره

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

آیا می‌توان یک موقعیت خرید ایجاد کرد؟ BUY POSITION

وضعیت ورود به موقعیت خرید: خط MACD زیرخط صفر قرار دارد و خط سیگنال را که بالای خط صفر روندی نزولی دارد به سمت بالا می‌شکند. این دستور را همان‌طور که توضیح داده بودیم در MQL4 یادداشت می‌کنیم، (توجه داشته باشید که بر روی مقادیر اندیکاتورهایی که قبلاً در متغیرهایمان تعریف‌شده بودند دستورات MQL را اجرا می‌کنیم):

کنترل بیشتر بر روی hillocks های ایجادشده، پیش‌تر در مطالب اول توضیح داده‌شده بود. متغیر MACDOpenLevel یک متغیر تعریف‌شده توسط کاربر است که می‌تواند بدون دخالت در متن برنامه تغییر کند تا انعطاف‌پذیری بیشتری داشته باشد. در ابتدای برنامه ما این متغیر را تعریف کردیم. (همان‌طور که این متغیر به شرح زیر استفاده می‌شود). منبع: گروه مشاوران مالی سامان

آیا می‌توان یک موقعیت فروش ایجاد کرد؟ SELL POSITION

وضعیت ورود به موقعیت فروش: خط MACD بالای خط صفر قرار دارد و خط سیگنال را که روندی صعودی دارد به سمت پایین می‌شکند. این دستور را همان‌طور که توضیح داده بودیم در MQL4 یادداشت می‌کنیم، (توجه داشته باشید که بر روی مقادیر اندیکاتورهایی که قبلاً در متغیرهایمان تعریف‌شده بودند دستورات MQL را اجرا می‌کنیم):

۵٫ کنترل موقعیت‌هایی که قبلاً بازشده بودند

“cnt” – “یک متغیر حلقه است که باید در ابتدای برنامه به‌صورت زیر تعریف شود:

int cnt = 0;

  • اما اگر موقعیت خرید داشتیم.

آیا موقعیت باید بسته شود؟

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

آیا حد ضرر باید بروز شود؟

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

موقعیت‌های باز را بستیم.

۶٫ آیا موقعیت فروش است؟

  • آیا باید بسته شود؟

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

بستن تمام براکت ها که بازمانده‌اند.

مرحله ۳- مونتاژ کردن کدهای نتیجه‌گیری

تنظیمات Expert Advisor را بازکنید. از دکمه Properties استفاده کنید. در این مرحله پنجره‌ای که متغیرهای خارجی از کاربر پرسیده می‌شود، برای شما به نمایش درمی‌آید.

درنهایت تمام کدهای فوق را کنار هم قرار دهید.

منبع: گروه مشاوران مالی سامان