آموزش نوشتن ربات تریدینگ در MetaTrade 5
راهنمای جامع و عملی برای نوشتن، تست و استقرار ربات‌های معاملاتی در MetaTrader 5 با استفاده از زبان MQL5.

آموزش نوشتن ربات تریدینگ در MetaTrade 5

در این مقاله، ما به شما آموزش می‌دهیم که چگونه ربات‌های معاملاتی (EA) را در MetaTrader 5 با زبان MQL5 بنویسید، تست کنید و به‌کار بگیرید. همچنین نکات عملی در خصوص امنیت و عملکرد را بررسی خواهیم کرد.
0 اشتراک گذاری
0
0
0
0

 

آیا می‌دانید چگونه یک ربات تریدینگ در MetaTrader 5 بنویسید و آن را با پایداری بالا اجرا کنید؟

این راهنما گام‌به‌گام از آشنایی با محیط MetaTrader 5 و زبان برنامه‌نویسی MQL5 تا نوشتن، تست و استقرار یک ربات معاملاتی (EA) را پوشش می‌دهد. همچنین نکات عملی درباره اجرای 24/7 روی VPS/سرور ابری، انتخاب لوکیشن با کم‌ترین پینگ، امنیت و مانیتورینگ آورده شده تا ربات شما در محیط واقعی با پایداری و تاخیر پایین اجرا شود.

 

آشنایی فنی با MetaTrader 5 و MQL5

MetaTrader 5 (MT5) پلتفرم پیشرفته‌ای است که از MQL5 به‌عنوان زبان برنامه‌نویسی برای نوشتن اکسپرت‌ها (EA)، اندیکاتورها و اسکریپت‌ها استفاده می‌کند. ساختار MQL5 شبیه C++ است و کلاس CTrade برای ارسال سفارشات و مدیریت تریدها فراهم شده است.

پیش‌نیازها: نصب MetaTrader 5/MetaEditor، دسترسی به دیتا فید و یا حساب دمو/واقعی بروکر، و در محیط سرور توصیه می‌شود از VPS با پینگ پایین و آپ‌تایم بالا استفاده کنید.

 

ساختار پایه EA در MQL5

یک EA ساده شامل توابع اصلی زیر است:

  • OnInit(): برای مقداردهی اولیه
  • OnDeinit(): برای پاک‌سازی
  • OnTick(): تابعی که برای هر تیک قیمت اجرا می‌شود
#include <Trade\Trade.mqh>
CTrade trade;

int OnInit() {
  // initialization
  return INIT_SUCCEEDED;
}

void OnDeinit(const int reason) {
  // cleanup resources
}

void OnTick() {
  // trading logic
}

 

ارسال سفارش و مدیریت پوزیشن‌ها

در MQL5 از کلاس CTrade برای ارسال سفارش استفاده می‌شود. مثال زیر یک خرید بازار ساده را نشان می‌دهد و خطای احتمالی را چاپ می‌کند.

double lot = 0.1;
if(trade.Buy(lot, _Symbol)) {
  Print("BUY executed");
} else {
  Print("Error Buy: ", GetLastError());
}

برای بستن پوزیشن می‌توانید تیکت را گرفته و از متد PositionClose استفاده کنید:

ulong ticket = PositionGetTicket(0);
if(trade.PositionClose(ticket)) {
  Print("Position closed");
}

 

مثال عملی — ربات میانگین متحرک کراس

منطق: وقتی میانگین متحرک سریع از پایین به بالا میانگین کند را قطع کند، خرید؛ برعکس برای فروش. این نمونه پایه را می‌توان با مدیریت ریسک، SL/TP، trailing stop و فیلتر زمان بازار تکمیل کرد.

input int FastPeriod = 10;
input int SlowPeriod = 50;
double FastMA, SlowMA;

int OnInit() {
  return INIT_SUCCEEDED;
}

void OnTick() {
  FastMA = iMA(_Symbol, PERIOD_M1, FastPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
  SlowMA = iMA(_Symbol, PERIOD_M1, SlowPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);

  double prevFast = iMA(_Symbol, PERIOD_M1, FastPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
  double prevSlow = iMA(_Symbol, PERIOD_M1, SlowPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

  if(prevFast < prevSlow && FastMA > SlowMA) {
    trade.Buy(0.1, _Symbol);
  } else if(prevFast > prevSlow && FastMA < SlowMA) {
    trade.Sell(0.1, _Symbol);
  }
}

 

نصب و اجرای MetaTrader 5 روی سرور (VPS / Cloud)

برای اجرای 24/7 ربات‌ها توصیه می‌شود از VPS یا سرور ابری استفاده کنید. دو مسیر متداول:

  • ویندوز سرور (پیشنهاد مرسوم برای MT5)
  • لینوکس + Wine (برای کاهش هزینه، اما ممکن است برخی نسخه‌ها ناسازگار باشند)

 

ویندوز VPS — تنظیمات پیشنهادی

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

  • نصب Windows Server 2019/2022
  • فعال‌سازی RDP با Network Level Authentication
  • نصب MetaTrader 5 و MetaEditor
  • مدیریت Automatic Updates به‌صورت دستی برای جلوگیری از ریبوت ناخواسته

 

لینوکس + Wine — نمونه دستورات (Ubuntu)

اگر می‌خواهید MT5 را روی لینوکس اجرا کنید، نمونه دستورات زیر می‌تواند شروع کار باشد. برخی بروکرها یا پلاگین‌ها ممکن است تحت Wine مشکل داشته باشند؛ تست کامل توصیه می‌شود.

sudo apt update && sudo apt install -y wine winetricks xvfb xrdp
# create a dedicated mt5 user
sudo useradd -m mt5user
sudo passwd mt5user
# run mt5 installer under the user with a virtual framebuffer
sudo -u mt5user xvfb-run wine mt5setup.exe

 

امنیت RDP و دسترسی امن

برای محافظت از دسترسی به سرور توصیه می‌شود:

  • تغییر پورت پیش‌فرض RDP، فعال‌سازی NLA و استفاده از VPN یا SSH tunnel برای اتصال RDP
  • محدود کردن دسترسی با فایروال و whitelist کردن IPهای معتبر
  • نصب fail2ban برای محافظت در برابر brute-force
sudo ufw allow from 203.0.113.0/24 to any port 3389 proto tcp
sudo ufw enable

 

تست، بهینه‌سازی و استقرار ربات‌ها

Strategy Tester در MT5 قابلیت‌های Backtest، Optimization و Forward testing را دارد. برای بهینه‌سازی پارامترها می‌توانید از Genetic Algorithm استفاده کنید و از دیتای با کیفیت (tick data) بهره ببرید.

  • از دیتای tick واقعی استفاده کنید تا نتایج نزدیک به واقعیت باشند.
  • قبل از اجرای روی حساب واقعی، حداقل چند هفته روی VPS و در حساب دمو تست کنید.

 

روش‌های ارزیابی ریسک

روش‌هایی که برای سنجش ریسک و پایداری باید استفاده کنید:

  • Walk-forward analysis: تست روی بازه‌های مختلف برای جلوگیری از overfitting.
  • Monte Carlo: برای سنجش پایداری بر اساس شبیه‌سازی تغییرات در اجرای معاملات.
  • بررسی معیارها: CAGR، Sharpe Ratio، Max Drawdown، Profit Factor.

 

CI/CD و استقرار خودکار

برای مدیریت کد EA و استقرار خودکار می‌توانید از GitLab یا GitHub استفاده کنید و روی VPS یک Runner راه‌اندازی کنید تا فرایند کامپایل و انتقال فایل EX5 اتوماتیک شود.

نمونه اسکریپت برای کپی فایل EX5 به پوشه ترمینال:

# copy the compiled EA to MetaTrader 5 Experts folder
cp MyEA.ex5 "/home/mt5user/.wine/drive_c/Program Files/MetaTrader 5/MQL5/Experts/"
# restart terminal or signal reload

همچنین می‌توان از APIها یا ZeroMQ برای ارتباط بین یک سرویس Python و MT5 استفاده کرد تا داده‌های AI/ML را به EA منتقل کنید.

 

انتخاب لوکیشن و کانفیگ VPS برای تریدرها

برای تریدرها پینگ/لاتنسی و ثبات شبکه حیاتی است. انتخاب لوکیشن باید بر اساس نزدیکی به سرورهای بروکر یا بازار هدف انجام شود.

 

مقایسه لوکیشن‌های کلیدی

  • لندن/مانچستر/فرانکفورت/آمستردام: عالی برای بروکرهای اروپایی و بازارهای ECN اروپا.
  • نیویورک/واشینگتن: مناسب برای بروکرهای آمریکایی و اجرای سریع در بازار NY.
  • سنگاپور/توکیو/هنگ‌کنگ: برای بروکرها و بازارهای آسیایی پینگ کم فراهم می‌کنند.
  • بهترین عمل: پیدا کردن IP یا AS بروکر و انتخاب دیتاسنتری که مسیر BGP کوتاه‌تری دارد.

شرکت ما بیش از 85 لوکیشن جهانی ارائه می‌دهد که امکان انتخاب نزدیک‌ترین دیتاسنتر به سرور بروکر را فراهم می‌کند.

 

کانفیگ پیشنهادی VPS برای تریدینگ

  • CPU: 2-4 هسته با پای ثابت و کلاک بالا.
  • RAM: 4-8GB پایه؛ برای EAهای سنگین 8-16GB.
  • Storage: NVMe SSD برای I/O سریع.
  • Network: 1Gbps یا بالاتر؛ تاخیر ثابت و پورت‌های با BGP و anti-DDoS.
  • ویژگی‌ها: Snapshots، Backup خودکار، 24/7 مانیتورینگ، سرور ضد DDoS و SLA قابل اعتماد.

برای استراتژی‌های مبتنی بر AI یا تحلیل سنگین، ممکن است به سرور با GPU نیاز داشته باشید تا مدل‌های ML را اجرا و سپس سیگنال‌ها را به MT5 ارسال کنید.

 

امنیت، مانیتورینگ و نکات عملی

 

حفاظت سیستم و شبکه

  • فعال‌سازی فایروال محلی (Windows Firewall یا ufw/iptables).
  • استفاده از VPN یا IP whitelist برای دسترسی RDP.
  • نصب آنتی‌ویروس و مانیتورینگ تغییر فایل (File Integrity Monitoring) برای پوشه MQL5.

 

مانیتورینگ و Alert

راه‌اندازی سرویس مانیتورینگ (مثل Prometheus + Grafana) برای بررسی CPU, Memory, Network و سلامت MT5 terminal مهم است.

ارسال هشدار به ایمیل/Slack/Telegram در صورت قطع اتصال یا خطای بحرانی پیشنهاد می‌شود.

 

جلوگیری از slippage و ری‌کوته

  • انتخاب VPS با پینگ کمتر و مکان نزدیک به بروکر.
  • استفاده از دستورات Market vs. Limit و تنظیم Max Slippage در EA یا تنظیمات متاتریدر.
  • فعال‌سازی reconnect خودکار در EA برای جلوگیری از از دست رفتن معاملات در صورت قطع ارتباط.

 

جمع‌بندی و پیشنهاد فنی

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

اگر نیاز به سرور با 85+ لوکیشن جهانی، سرورهای ضد DDoS، NVMe و شبکه BGP دارید یا برای استراتژی‌های AI نیازمند GPU هستید، تیم پشتیبانی ما به‌صورت 24/7 آماده پاسخگویی است تا براساس بروکر و استراتژی مناسب‌ترین کانفیگ را پیشنهاد دهد.

 

سؤالات متداول

شاید دوست داشته باشید