اگر با بازارهای مالی مثل فارکس، بازار آتی یا کریپتو سروکار داری، احتمالاً اسم اکسپرت ادوایزر (Expert Advisor) یا همان ربات معاملاتی به گوشت خورده. اما شاید تا حالا فکر میکردی ساختن چنین ابزاری کار آدمهای نابغه است. خبر خوب اینجاست: اینطور نیست!
MQL5 یک زبان برنامهنویسی تخصصی است که توسط شرکت MetaQuotes برای پلتفرم MetaTrader 5 طراحی شده. با این زبان میتوانی استراتژی معاملاتی خودت را به یک ربات تبدیل کنی که ۲۴ ساعته بدون خستگی و احساسات برایت ترید کند.
در این مقاله جامع، قدم به قدم آموزش ساخت اکسپرت MQL5 به زبان فارسی را با هم مرور میکنیم. از نصب محیط برنامهنویسی تا نوشتن اولین ربات معاملاتی واقعی.
قبل از شروع، بهتر است بدانی به چه دانش اولیهای نیاز داری:
MetaEditor محیط یکپارچه توسعه (IDE) رسمی برای نوشتن کد MQL5 است و بهصورت پیشفرض داخل MetaTrader 5 نصب میشود.
هر فایل اکسپرت در MQL5 از سه تابع اصلی تشکیل شده است. درک این سه تابع، کلید همه چیز است:
این تابع فقط یک بار، در لحظهای که اکسپرت روی چارت بارگذاری میشود، اجرا میشود. مناسب برای:
این تابع با هر تیک قیمتی اجرا میشود. قلب تپنده اکسپرت تو اینجاست! تمام منطق معاملاتی (بررسی شرایط باز کردن و بستن معامله) در این تابع نوشته میشود.
هنگام حذف اکسپرت از چارت اجرا میشود. برای پاکسازی حافظه و اشیاء گرافیکی استفاده میشود.
💡 نکته طلایی:
در MQL5، منطق اصلی معاملاتی معمولاً داخل OnTick() یا OnBar() (برای اکسپرتهای مبتنی بر کندل) نوشته میشود. انتخاب بین این دو به استراتژی تو بستگی دارد.
در MQL5 میتوانی پارامترهایی تعریف کنی که کاربر بدون تغییر کد، آنها را تنظیم کند. این کار با کلیدواژه input انجام میشود.
مثال کاربردی:
input double LotSize = 0.1; // حجم معامله input int StopLoss = 50; // حد ضرر به پیپ input int TakeProfit = 100; // حد سود به پیپ input int MAPeriod = 14; // دوره میانگین متحرک input ENUM_MA_METHOD MAMethod = MODE_SMA; // نوع میانگین
این پارامترها در پنجره تنظیمات اکسپرت به کاربر نشان داده میشوند و قابل تغییر هستند.
بیایید یک اکسپرت کامل بنویسیم که بر اساس تقاطع دو میانگین متحرک (Moving Average Crossover) معامله میکند. این یکی از سادهترین و آموزندهترین استراتژیها برای شروع است.
منطق استراتژی:
#includeinput int FastMAPeriod = 10; input int SlowMAPeriod = 50; input double LotSize = 0.1; input int StopLoss = 100; input int TakeProfit = 200; CTrade trade; int fastMAHandle, slowMAHandle; int OnInit() { fastMAHandle = iMA(_Symbol, PERIOD_CURRENT, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE); slowMAHandle = iMA(_Symbol, PERIOD_CURRENT, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE); if(fastMAHandle == INVALID_HANDLE || slowMAHandle == INVALID_HANDLE) { Print(“خطا در ساخت اندیکاتور!”); return INIT_FAILED; } return INIT_SUCCEEDED; } void OnTick() { double fastMA[], slowMA[]; ArraySetAsSeries(fastMA, true); ArraySetAsSeries(slowMA, true); CopyBuffer(fastMAHandle, 0, 0, 3, fastMA); CopyBuffer(slowMAHandle, 0, 0, 3, slowMA); bool buySignal = (fastMA[1] > slowMA[1]) && (fastMA[2] <= slowMA[2]); bool sellSignal = (fastMA[1] < slowMA[1]) && (fastMA[2] >= slowMA[2]); if(buySignal && PositionsTotal() == 0) { double sl = Ask - StopLoss * _Point * 10; double tp = Ask + TakeProfit * _Point * 10; trade.Buy(LotSize, _Symbol, Ask, sl, tp, “MA Crossover Buy”); } if(sellSignal && PositionsTotal() == 0) { double sl = Bid + StopLoss * _Point * 10; double tp = Bid - TakeProfit * _Point * 10; trade.Sell(LotSize, _Symbol, Bid, sl, tp, “MA Crossover Sell”); } } void OnDeinit(const int reason) { IndicatorRelease(fastMAHandle); IndicatorRelease(slowMAHandle); }
بعد از نوشتن کد، باید آن را کامپایل کنی تا به فایل اجرایی .ex5 تبدیل شود:
قبل از اجرای اکسپرت روی حساب واقعی، حتماً باید آن را بکتست کنی. Strategy Tester ابزار قدرتمندی است که در MetaTrader 5 تعبیه شده.
⚠️ هشدار مهم:
نتایج بکتست عالی، ضمانت سودآوری در بازار واقعی نیست! اثر Overfitting (بهینهسازی بیش از حد روی دادههای گذشته) یکی از بزرگترین خطرات است. همیشه اکسپرت را ابتدا روی حساب دمو فوروارد تست کن.
یک اکسپرت حرفهای بدون مدیریت سرمایه مثل ماشین بدون ترمز است. موارد زیر را در کد خود لحاظ کن:
🚀 میخواهی سایت یا کسبوکار آنلاینت را متحول کنی؟
آیا میخواهید سایت شما هم مثل رقبا در صفحه اول گوگل باشد و زنگخورهایتان چند برابر شود؟ سئوی سایت خود را به متخصصان ما بسپارید.
همین حالا برای مشاوره رایگان تماس بگیرید:
📞 09190994063 | 09376846692
کتابخانه Trade.mqh کلاس قدرتمند CTrade را در اختیارت میگذارد که ارسال سفارش را بسیار سادهتر میکند. متدهای مهم:
در MQL5 اندیکاتورها به صورت Handle-based کار میکنند. یعنی ابتدا یک هندل (شناسه) ایجاد میکنی، سپس دادهها را با CopyBuffer() میخوانی. این رویکرد از نظر عملکرد بسیار بهینهتر از MQL4 است.
بسیاری از معاملهگران ایرانی هنوز با MQL4 و MetaTrader 4 کار میکنند. اما MQL5 مزایای قابل توجهی دارد:
از این اشتباهات رایج دوری کن تا سریعتر پیشرفت کنی:
برای تعمیق دانشت، این منابع را پیشنهاد میکنیم:
💼 کسبوکار آنلاین شما لایق بهترینهاست!
همانطور که یک اکسپرت حرفهای نیاز به بهینهسازی مداوم دارد، سایت شما هم برای رسیدن به صفحه اول گوگل نیاز به سئوی تخصصی دارد. ما با تیم متخصص خود این کار را برای شما انجام میدهیم.
📞 مشاوره رایگان: 09190994063 | 09376846692
یادگیری ساخت اکسپرت MQL5 یک سفر است، نه یک مقصد. اگر مراحل این مقاله را دنبال کنی:
قدم بعدی؟ دست به کار شو! بهترین یادگیری در برنامهنویسی، نوشتن کد است. استراتژی موردعلاقهات را بردار و شروع به کد کردن آن کن. اشتباه کن، رفع خطا کن و رشد کن.
موفق باشی، معاملهگر! 🚀
خیر، لزومی ندارد. اگرچه آشنایی با منطق برنامهنویسی (حتی اگر قبلاً یک دوره پایه C یا پایتون دیده باشی) یادگیری را سریعتر میکند، اما MQL5 زبان نسبتاً سادهای است و با صرف وقت کافی و تمرین مستمر، میتوان از صفر آن را یاد گرفت.
اکسپرت (Expert Advisor): بهصورت خودکار معامله باز و بسته میکند. اندیکاتور (Indicator): فقط روی چارت نمایش داده میشود و معامله نمیکند. اسکریپت (Script): یکبار اجرا میشود و برای کارهای یکباره مثل بستن همه پوزیشنها کاربرد دارد.
اکسپرتهای MQL5 روی تمام کارگزاریهایی که پلتفرم MetaTrader 5 را ارائه میدهند کار میکنند. اما برخی کارگزاریها قابلیت Auto Trading را محدود میکنند. قبل از استفاده، مطمئن شو که کارگزاری مورد نظرت اجرای اکسپرت را مجاز میداند.
بله، برای عملکرد بهینه اکسپرت، به یک سرور VPS (Virtual Private Server) نیاز داری که ۲۴ ساعته آنلاین باشد. اجرای اکسپرت روی لپتاپ شخصی که ممکن است خاموش شود یا اینترنت قطع شود، مناسب نیست. VPSهای ایرانی و خارجی ارزانقیمتی برای این کار موجودند.
با احتیاط عمل کن! متاسفانه بازار اکسپرتهای فارسی پر از محصولاتی است که صرفاً روی دادههای گذشته بهینه شدهاند (Overfitted). قبل از خرید، حتماً بخواه که نتایج فوروارد تست واقعی را روی حساب مشتریان نشان دهند، نه فقط بکتست. بهترین راه، یادگیری ساخت اکسپرت خودت است.
این به سابقه برنامهنویسی، زمانی که روزانه صرف میکنی و پیچیدگی استراتژی بستگی دارد. اگر روزانه ۱ تا ۲ ساعت تمرین کنی، در ۴ تا ۸ هفته میتوانی یک اکسپرت ساده اما کاربردی بسازی. برای اکسپرتهای پیشرفته با مدیریت ریسک کامل، ۳ تا ۶ ماه تجربه نیاز است.
سلام، مقالهتون واقعاً جامع و مفیده. من تازه کارم و با بازارهای مالی آشنایی کمی دارم. آیا یادگیری MQL5 برای من که تجربه برنامهنویسی ندارم، خیلی سخته؟
سلام. خوشحالیم که مقاله براتون مفید بوده. همانطور که در بخش پیشنیازها اشاره شد، آشنایی با منطق برنامهنویسی پایه کمککننده است اما الزامی نیست. با صبر و تمرین مستمر، حتماً موفق میشید. برای مشاوره بیشتر میتونید با شمارههای 09190994063 و 09376846692 تماس بگیرید.
این هشدار در مورد اکسپرتهای خریداریشده خیلی بهجا بود. من چندین بار وسوسه شدم که اکسپرت بخرم ولی الان ترجیح میدم خودم یاد بگیرم. ممنون از راهنمایی صادقانه.
سلام. خوشحالیم که این بخش برای شما مفید واقع شده است. یادگیری و ساخت اکسپرت شخصی، بهترین راه برای اطمینان از عملکرد و شفافیت استراتژی است. با تمرین و استفاده از منابع موجود، میتوانید به این هدف برسید. در صورت نیاز به مشاوره، با ما تماس بگیرید: 09190994063 و 09376846692.
من هنوز با MT4 کار میکنم. مزایای MQL5 نسبت به MQL4 چیه که تشویق بشم به MT5 مهاجرت کنم؟ سرعت و OOP واقعا تاثیرگذاره؟
سلام. بله، مزایای MQL5 نسبت به MQL4 بسیار قابل توجه است. سرعت اجرای بالاتر به دلیل کامپایل شدن کد به زبان ماشین، پشتیبانی کامل از برنامهنویسی شیگرا (OOP)، بکتست دقیقتر با استفاده از تیکهای واقعی و پشتیبانی از Multi-threading از مهمترین دلایل مهاجرت هستند. این ویژگیها به شما امکان ساخت اکسپرتهای قدرتمندتر و بهینهتر را میدهند. برای کسب اطلاعات بیشتر، با شمارههای 09190994063 و 09376846692 تماس حاصل فرمایید.
بخش بکتست خیلی مهم بود. آیا واقعاً باید حتماً VPS تهیه کنیم؟ من فکر میکردم میشه روی کامپیوتر خودم اجراش کنم.
سلام. بله، برای عملکرد صحیح و بدون وقفه اکسپرت، استفاده از VPS اکیداً توصیه میشود. اگر اکسپرت روی کامپیوتر شخصی شما اجرا شود و اینترنت قطع شود یا کامپیوتر خاموش شود، ممکن است فرصتهای معاملاتی از دست برود یا حتی پوزیشنهای باز بدون نظارت بمانند. برای راهنمایی در مورد VPS، با شمارههای 09190994063 و 09376846692 تماس بگیرید.
مدیریت ریسک در اکسپرت واقعاً حیاتیه. آیا امکان پیادهسازی مدیریت سرمایه پویا (بر اساس درصدی از موجودی) در MQL5 وجود داره؟
سلام. بله، قطعاً امکان پیادهسازی مدیریت سرمایه پویا و محاسبه حجم معامله بر اساس درصدی از موجودی حساب در MQL5 وجود دارد. این یکی از اصول اساسی ساخت یک اکسپرت حرفهای است و با استفاده از توابع مربوط به اطلاعات حساب، قابل پیادهسازی است. برای دریافت راهنمایی تخصصی، با ما تماس بگیرید: 09190994063 و 09376846692.
بسیار عالی! در مورد پیشنیازهای برنامهنویسی، آیا آشنایی با C++ واقعاً لازم نیست؟ من فقط کمی پایتون کار کردم.
سلام. خیر، آشنایی با C++ الزامی نیست. اگر با منطق برنامهنویسی آشنایی دارید، حتی در حد پایتون، شروع بسیار خوبی است و به شما کمک میکند. زبان MQL5 ساختار مشابهی دارد که یادگیریاش را آسان میکند. در صورت نیاز به راهنمایی بیشتر، با ما تماس بگیرید: 09190994063 و 09376846692.
تفاوت اکسپرت، اندیکاتور و اسکریپت رو خیلی خوب توضیح دادید. ممنون از شفافسازی. آیا اکسپرتها میتونن همزمان چند استراتژی رو اجرا کنن؟
سلام. بله، یک اکسپرت میتواند چندین استراتژی را بهصورت همزمان مدیریت کند، به شرطی که منطق آن بهدرستی کدنویسی شده باشد. این کار معمولاً با ساختاردهی مناسب کد و استفاده از توابع مجزا برای هر استراتژی انجام میشود. برای جزئیات بیشتر، با ما در تماس باشید: 09190994063 و 09376846692.
چقدر زمان میبره تا یک اکسپرت قابل استفاده بسازم؟ منظورم اینه که اگر روزی ۱-۲ ساعت وقت بذارم، چقدر طول میکشه؟
سلام. همانطور که در مقاله ذکر شد، اگر روزی ۱ تا ۲ ساعت تمرین کنید، میتوانید در ۴ تا ۸ هفته یک اکسپرت ساده اما کاربردی بسازید. برای اکسپرتهای پیشرفتهتر با مدیریت ریسک کامل، حدود ۳ تا ۶ ماه تجربه نیاز است. صبر و استمرار کلید موفقیت است. برای مشاوره بیشتر، با شمارههای 09190994063 و 09376846692 تماس بگیرید.