exness

بورس

exness

بورس

آموزش برنامه نویسی با MQL

با استفاده از MQL می‌توان Expert Advisor و Custom Indicator  برای پلتفرم معاملاتی Metatrader ایجاد نمود. پلتفرم Metatrader به‌طور گسترده توسط کارگزاران بازارهای سرمایه مورد استفاده قرار می‌گیرد و جدیدا هم این پلتتفرم معاملاتی در ایران توسط کارگزاران بورس مورد استفاده قرار گرفته است.

Expert Advisor :

یا EA ، همان ربات‌های معامله‌گر می‌باشند. EA در واقع یک اسکریپت می‌باشد که در Meta‌Trader و  بر روی یک یا چند چارت خاص اجرا گشته و برنامه بصورت اتوماتیک براساس شرایطی که در اسکریپت برنامه ذکر شده است اجرا می‌شود و می‌تواند خرید یا فروش انجام دهد.

برای اینکه سریع تر وارد ماجرا شویم از یک مثال شروع می‌کنیم.

فرض کنید ما بنا به تجربه تحلیل تکنیکالی که داشتیم به این نتیجه رسیده‌ایم که برای یک نماد خاص (مثلا نماد فملی) اگر Moving Agerage  با پارامتر 1  با Moving Average  با پارامتر 17 ، Cross رو به بالا کند، خرید کنیم و این خرید درصورتی که به 300  ریال سود برای هر سهم رسید اقدام به فروش نماییم.

بطور کلی به هر روش معاملاتی مانند مثلا بالا که شرایط ورود و خروج مشخصی را بر مبنای تحلیل تکنیکال مشخص نماید یک استراتژی معاملاتی می‌گوییم. بنابراین استراتژی معاملاتی شامل گزینه‌های زیر است :

شرایط ورود : مثلا در مثال بالا اگر cross رخ دهد وارد خرید خواهیم شد، بطور کلی یکی از بهترین روش های شرط یا شرایط خروج : در صورتی که شرایط معینی رخ دهد ( مانند Take Profit یا Stop Loss یا ایندیکیتور ها شرایط خاصی را اعلام نمایند)  بنابراین در صورتی که با EA آشنا نباشیم باید هر روز صبح  نمودار قیمت را نگاه کنیم و اگر cross رخ داده باشد طبق این استراتژی خرید انجام می‌دهیم و هر موقع که خریدمان به حد سود 300 ریال رسید اقدام به فروش نماییم. البته کار ساده‌ای هست ولی مستلزم صرف وقت بیشتری است به علاوه که EA را می‌توان براساس چند نماد بطور همزمان قرار داد.

البته شاید در نظر خیلی از معامله‌گران اینکه روبات خودش اقدام به خرید یا فروش نماید خطرناک باشد در این شرایط می‌توان EA را طوری برنامه نویسی کرد که Alert اعلام نماید تا معامله‌گر بنا به شرایط دیگری خودش تصمیم نهایی را بگیرد. برگردیم به مثال مطرح شده :

شرط ورود : MA cross over (1,17 )

شرط خروج  : کسب سود 300  ریال

شرط خروج فرعی : ضرر 250 ریال برای هر سهم

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

نصب ابزارهای مورد نیاز :

مهمترین ابزاری که برای شروع کار نیاز هست برنامه MetaTrader 5 می‌باشد. این نرم‌افزار توسط شرکت MetaQouts برای بازارهای سرمایه طراحی شده است. در حال حاضر شرکت کارگزاری مفید با کمک شرکت تدبیر پرداز نسخه سرور و کلاینت این نرم‌افزار را خریداری کرده‌اند و امکان استفاده از امکان این نرم‌افزار معاملاتی بسیار محبوب برای بورس ایران وجود دارد. البته این نرم‌افزار در سایت کارگزاری مفید با نام MofidTrader در دسترس همگان قرار دارد.

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

برای استفاده از نرم افزار MetaTrader به آدرس http://en.emofid.com/how-to-invest/online-trading / بروید و مطابق دستورالعمل‌های داده شده نرم‌افزار را دانلود و نصب نمایید. پس از تکمیل نصب نرم‌افزار، در قسمت Open new accout  یک حساب مجازی افتتاح نمایید.

برنامه نویسی با MQL

برنامه‌نویسی MQL بسیار شبیه برنامه نویسی C و شاید هم تا حدی شبیه JavaScript می‌باشد. در این مقالات سعی شده است که در کوتاه‌ترین راه ممکن خواننده بتواند برنامه‌های ساده با استفاده از MQL تولید کند. به همین دلیل مطالب پر کاربردتر اول توضیح داده شده است. برنامه‌نویسی به زبان MQL از یکسری توابع و یکسری متغییرها تشکیل شده است :

مثلا برنامه زیر، بخشی از یک برنامه به زبان MQL5 می‌باشد.

//----------------------------------------------------------------------
//                                                     ExpertMACD.mq5  
//               Copyright 2010, MetaQuotes Software Corp
//                                              http://www.mql5.com  
//----------------------------------------------------------------------
#property copyright "Copyright 2010, MetaQuotes Software Corp  ."
#property link      "http://www.mql5.com  "
#property version   "1.00  "
//----------------------------------------------------------------------
//  Include
//----------------------------------------------------------------------
#include <Expert\Expert.mqh>
#include <Expert\Signal\SignalMACD.mqh>
#include <Expert\Trailing\TrailingNone.mq>
#include <Expert\Money\MoneyNone.mqh> 
این دستورات مشابه دستور include  در C  ، امکان استفاده از کتابخانه‌های آماده را فراهم می کند. 
#include <trade/trade.mqh> 
این قسمت متغییر های  global  برنامه قرار دارد.
متغییر هایی که با keyword  ، input  شروع می‌شوند پارامترهای ورودی برنامه هستند و هنگام attach  کردن Expert  به chart  توسط کاربر مقدار دهی می‌شوند.
input double MaximumRisk        = 0.02;    // Maximum Risk in percentage 
input double DecreaseFactor     = 3;       // Descrease factor 
input int    MovingPeriod       = 12;      // Moving Average period 
input int    MovingShift        = 6;       // Moving Average shift 
//---
int   ExtHandle=0  ;
اینجا تعریف اولین تابع شروع شده است ، تابع OnInit  یک تابع پیش فرض MQL  می‌باشد و در واقع event handler  می‌باشد.
int OnInit  () 
{
//---
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE); 
   if(ExtHandle==INVALID_HANDLE) 
     {
      printf("Error creating MA indicator”); 
      return(-1); 
     }
//---
Return(0); 
  }
//----------------------------------------------------------------------
//                Expert tick function                                                                                 |
//----------------------------------------------------------------------
void OnTick  () 
  { 
//--- 
   if(PositionSelect(_Symbol)) CheckForClose();  
   else                        CheckForOpen();  
//--- 
  } 
//----------------------------------------------------------------------
//Expert deinitialization function                                     |          
//----------------------------------------------------------------------
void OnDeinit(const int reason)  
  { 
    }  
//----------------------------------------------------------------------

همان طور که می بینید برنامه از یکسری توابع پیش‌فرض تشکیل شده است. این‌ها توابع از پیش تعریف شده MQL می‌باشند. آشنایی با این توابع مهم است، زیرا در همه برنامه‌های EA وجود دارند.

تابع Onint()

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

تابع OnTick()

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

تابع Ondeinit()

این تابع برعکس OnInit در انتهای فراخوانی می‌شود. انتهای اجرا برنامه موقعی است که پنجره‌ایی که EA بر روی آن قرار داده شده است بسته شود.


برای اینکه بهتر با رویه اجرای  EA ها در Meta Trader آشنا شوید در این قسمت یکی از مثال های EA که همراه برنامه MetaTrade  نصب می‌شود را بر روی یکی از نمادهای بورسی قرار می‌دهیم و بوسیله Strategy Tester اجرای اینEA را در دوره های مختلف بررسی می‌کنیم.

برای شروع ابتدا Meta editor را باز کرده و از لیست Sample ها ، Moving Average.mq5 را باز کنید و برنامه را کامپایل نمایید

 

 1mql.JPG


در صورتی که در این صفحه دکمه اجرا ( کلید F5 ) فراخوانی شود، این EA بر روی یکی از چارت‌ها اجرا می‌شود. سپس در MetaTrader ، Ctrl + R را بزنید تا پنجره Strategy Test در پایین صفحه ظاهر شود. سپس در این پنجره مطابق زیر گزینه‌های مربوطه را پر نمایید 

 

 2mql.JPG


Strategy Tester می‌تواند یک EA بزبان MQL را با داده‌های گذشته و با پارامترهای دلخواه تست نماید و در این رابطه نتایج به‌همراه مجموعه آمار کاملی به کاربر ارائه می‌دهد.

 

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.