نمونه اکـــســپــرت

نمونه اکـــســپــرت

نمونه اکـــســپــرت

اصول توسعه‌ی برنامه‌های MQL4 در نمونه‌ای از ساختن یک اکسپرت ساده بر اساس اندیکاتور MACD استاندارد، نشان داده خواهد شد. در این اکسپرت، همچنین، مثال‌هایی از به‌کارگیری ویژگی‌هایی مانند تعیین خطوط TakeProfit همراه با حمایت تریلینگ‌ اِستاپ، و ابزارهای مشابه دیگر برای حفظ ایمنی در کار را، خواهیم دید. در مثال خودمان، معامله با باز کردن و مدیریت تنها یک پوزیشن انجام می‌شود.

اصول ترید:

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

نمونه اکـــســپــرت

  • وارد شدن کوتاه‌مدت (Sell) اندیکاتور MACD بالای صفر است، به‌سمت پایین حرکت می‌کند و با “خط سیگنالی” که به‌سمت بالا در حرکت است، برخورد کرده و قطع می‌شود.

نمونه اکـــســپــرت

  • خروج بلندمدت با رسیدن به خط TakeProfit، با تریلینگ اِستاپ یا وقتی MACD خط سیگنال آن را قطع می‌کند (MACD بالای صفر است، به‌سمت پایین حرکت می‌کند و با “خط سیگنالی” که به‌سمت بالا در حرکت است، برخورد کرده و قطع می‌شود)، [خروج اتفاق می‌اُفتد].
  • خروج کوتاه‌مدت با رسیدن به خط TakeProfit، با تریلینگ اِستاپ یا وقتی MACD خط سیگنال آن را قطع می‌کند (MACD زیر صفر است، به‌سمت بالا می‌رود و با “خط سیگنالی” که به‌سمت پایین در حرکت است، برخورد کرده و قطع می‌شود)، [خروج اتفاق می‌اُفتد].

نکته‌ی مهم: برای اینکه تغییرات ناچیز و غیرمهمِ[۱] اندیکاتور MACD را در تحلیل خود لحاظ نکنیم، یک [ابزار] اندازه‌گیری اضافی برای کنترل اندازه‌ی “برآمدگی‌های”[۲] ترسیم‌شده را، به این شکل، معرفی می‌کنیم: اندازه‌ی اندیکاتور باید حداقل ۵ واحدِ حداقلِ قیمت، باشد (۵*Point که برای USD/CHF = 0.0005 و برای USD/JPY = 0.05).

نمونه اکـــســپــرت

گام ۱ – نوشتن توضیحات اکسپرت

موس را روی بخش Expert Advisors در پنجره‌ی Navigator برده، راست‌کلیک کنید و در منویی که ظاهر می‌شود، “Create a new Expert” را انتخاب کنید. نصب اولیه، از شما می‌خواهد داده‌های خاصی را وارد کنید. در پنجره‌ی ظاهرشده، نام اکسپرت (Name) را بنویسید – MACD Sample، نویسنده (Author) نام خودتان را بنویسید، و لینک (Link) باید لینک به وب‌سایت شما باشد، و در قسمت یادداشت‌ها (Notes) – بنویسید Test example of an MACD-based Expert Advisor.

نمونه اکـــســپــرت

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

سورس کد اکسپرت تست ما، فقط چند صفحه را اِشغال می‌کند، اما حتی دست‌یابی به چنین حجمی هم اغلب سخت است، به‌خصوص اینکه ما برنامه‌نویس حرفه‌ای نیستیم، و اگر بودیم اصلاً به این توضیحات احتیاج نداشتیم!

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

  1. متغیرهای اولیه
  2. بررسی داده‌های اولیه

* بررسی نمودار، تعداد کندل‌های روی نمودار

* بررسی مقادیر متغیرهای اکسترنال: لات‌ها، S/L، T/P، T/S

  1. تنظیم متغیرهای داخلی برای دسترسی سریع به داده‌ها
  2. بررسی نرم‌افزار ترید – آیا خالی (void) است؟ اگر بله، آنگاه:

* بررسی کنید: موجود بودن سرمایه در حساب و …

* آیا این امکان هست که پوزیشن بلندمدت (Buy) بگیریم؟

* یک پوزیشن بلندمدت باز کرده و خارج شوید

  1. آیا این امکان هست که پوزیشن کوتاه‌مدت (Sell) بگیریم؟

* یک پوزیشن کوتاه‌مدت باز کرده و خارج شوید

خروج از اکسپرت …

* کنترل پوزیشن‌هایی که قبلاً در این سیکل باز شده‌اند

* اگر یک پوزیشن بلندمدت است

* آیا باید پوزیشن را بست؟

* آیا باید تریلینگ اِستاپ را مجدد تنظیم کرد؟

* اگر یک پوزیشن کوتاه‌مدت است

* آیا باید پوزیشن را بست؟

* آیا باید تریلینگ اِستاپ را مجدد تنظیم کرد؟

کار بسیار ساده است، فقط ۴ بلوک اصلی داریم.

اکنون بیایید مرحله به مرحله برای هر بخش از طرح ساختاری‌مان، قسمت‌‌های [مختلف] کد را تولید کنیم:

  1. متغیرهای اولیه

تمام متغیرها، برای اینکه در برنامه‌ی اکسپرت استفاده شوند، ابتدا باید مطابق با سینتکس[۳] MetaQuotes Language 4 باشند. به همین دلیل است که ما در ابتدای برنامه بلوکی برای متغیرهای اولیه وارد می‌کنیم.

زبان MetaQuotes 4 با اصطلاح “متغیرهای اکسترنال” تکمیل می‌شود. متغیرهای اکسترنال را می‌توان از بیرون بدون اصلاح (دستکاری) سورس کد برنامه‌ی اکسپرت، تنظیم کرد. این کار یک انعطاف‌پذیری مازاد را به‌همراه دارد. در برنامه‌ی ما، متغیر MATrendPeriod، متغیر اکسترنال تعریف شده‌است. تعریف این متغیر را در ابتدای برنامه وارد می‌کنیم.

  1. بررسی داده‌های اولیه

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

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

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

اکنون به‌جای این نماد هیولایی: iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)، می‌توانید از MacdCurrent در سورس کد استفاده کنید.

  1. بررسی نرم‌افزار ترید – آیا خالی است؟ اگر هست، آنگاه:

در اکسپرت‌مان، فقط از پوزیشن‌هایی استفاده می‌کنیم که با معاملات بازار باز شده‌اند و معاملات انتظاری را به‌کار نمی‌گیریم. هرچند، برای اینکه در طرف ایمن بمانیم، بیایید بررسی نرم‌افزار ترید برای معاملاتی که قبلاً گذاشته شده‌اند را، معرفی کنیم:

  • بررسی کنید: موجود بودن سرمایه در حساب و …

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

  • آیا این امکان هست که پوزیشن بلندمدت (Buy) بگیریم؟

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

بحث کنترل بیشتر بر اندازه‌ی “برآمدگی‌هایی” که رسم‌ شده‌اند را قبلاً توضیح داده‌ایم. متغیر MACDOpenLevel، متغیری است که توسط کاربر تعریف شده و ممکن است بدون مداخله با متن برنامه، تغییر کند تا از انعطاف‌پذیری بیشتر اطمینان حاصل شود. در ابتدای برنامه، توضیحی از این متغیر وارد می‌کنیم (همانند توضیح متغیری که در پایین استفاده شده‌است).

  • آیا این امکان هست که پوزیشن کوتاهمدت (Sell) بگیریم؟

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

  1. کنترل پوزیشن‌هایی که قبلاً در این سیکل باز شده‌اند

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

  • اگر پوزیشن بلندمدت است

  • آیا باید آن را بست؟

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

  • آیا باید تریلینگ اِستاپ را مجدد تنظیم کرد؟

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

آکولاد عملگر را می‌بندیم.

  1. اگر پوزیشن کوتاه‌مدت باشد

  • آیا باید آن را بست؟

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

  • آیا باید تریلینگ اِستاپ را مجدد تنظیم کرد؟

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

بستن تمام براکت‌های فرفری[۴] که باز مانده‌اند.

بسیار خب، با دنبال کردن این رویه‌ی گام به گام، اکسپرت‌مان را نوشتیم…

گام ۳. سرهم کردن کد این برنامه

بیایید تنظیمات اکسپرت را باز کنیم (با استفاده از دکمه یا خطی در منوی “Properties…”). به ما پنجره‌ای نشان داده می‌شود که در آن می‌بایستی تنظیمات اکسترنال پارامترهای کار[۵] را تعریف کنیم:

بیایید تمام کد را از بخش قبلی سرهم کنیم:

برای پیکربندی نهایی اکسپرت‌مان، فقط مقادیر متغیرهای اکسترنال را مشخص کنید “Lots = 1″، “Stop Loss (S/L) = 0” (استفاده نشده)، “Take Profit (T/P) = 120” (مناسب برای بازه‌های زمانی یک‌ساعته)، “Trailing Stop (T/S) = 30”. البته، می‌توانید مقادیر خودتان را تعیین کنید. دکمه‌ی “Compile” را زده، و اگر پیغام خطایی نباشد، دکمه‌ی “Save” را زده تا اکسپرت ذخیره شود (راستی، می‌توانید متن را از لیست بالا درون متااِدیتور کپی کنید).

[۱]) برآمدگی‌های کوچک روی نمودار

[۲]) Hillocks

[۳]) Syntax

[۴]) Curly bracket

[۵]) Working parameters


مقالات پیشنهادی :

امینی

→ خواندن مطلب قبلی

تبدیل کد اندیکاتور به کد اکسپرت. نتیجه‌گیری.

خواندن مطلب بعدی ←

جادوی فیلتر کردن

نوشتن نظر شما

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