P
PipsGrowth
أتمتة

برمجة MT5 بالإحساس: تحسين واختبار الإكسبرت بالذكاء الاصطناعي

إتقان برمجة MT5 بالإحساس لتطوير الإكسبرتات. استخدم IDE الذكي (Windsurf، Cursor، Claude) لكتابة وتجميع واختبار وتحسين والتحقق من الإكسبرتات من مطالبات اللغة الطبيعية.

PG
فريق Pips Growth
2026-07-10
16 دقيقة

برمجة MT5 بالإحساس: تحسين واختبار الإكسبرت بالذكاء الاصطناعي

ماذا لو يمكنك وصف استراتيجية تداول بالعادية، وIDE الخاص بك يكتب كود MQL5، يجمعه، يشغل اختباراً راجعاً، يحلل النتائج، ويقترح تحسينات — كل ذلك تلقائياً؟ هذه هي برمجة MT5 بالإحساس.

برمجة الإحساس (vibe coding) هي ممارسة بناء البرمجيات بوصف ما تريده باللغة الطبيعية لمساعد ذكاء اصطناعي، ثم دع الذكاء الاصطناعي يكتب ويختبر ويتكرر على الكود. أنت تركز على ماذا — الاستراتيجية، قواعد المخاطرة، معايير التحسين — والذكاء الاصطناعي يتعامل مع كيف.

ما هي برمجة الإحساس؟

مصطلح "vibe coding" صاغه Andrej Karpathy في 2025 لوصف طريقة جديدة لبناء البرمجيات:

"أنت تستسلم للإحساس، تعانق الأُس، وتنسى أن الكود موجود أصلاً."

في البرمجة التقليدية، تكتب كل سطر يدوياً. في برمجة الإحساس، أنت:

  1. تصف ما تريده باللغة الطبيعية
  2. تراجع الكود المولد بالذكاء الاصطناعي
  3. تشغل الكود وترى إذا كان يعمل
  4. تتكرر بإخبار الذكاء الاصطناعي ما يصلح
  5. تقبل عندما يطابق المخرج نيتك

لماذا تعمل برمجة الإحساس مع MT5

  • MQL5 مطوّل — إكسبرت تقاطع EMA بسيط يتكون من 200+ سطر. الذكاء الاصطناعي يكتبه في ثوانٍ.
  • التجميع يكشف الأخطاء — MetaEditor CLI يعطي تغذية راجعة فورية. الذكاء الاصطناعي يقرأ ملف .log ويصلح الأخطاء تلقائياً.
  • الاختبار الراجع حتمي — الذكاء الاصطناعي يمكنه تشغيل اختبار، قراءة النتائج، وتقرير ماذا يغير.
  • التحسين تكراري — الذكاء الاصطناعي يمكنه تعديل نطاقات المعاملات بناءً على النتائج السابقة.
  • خط الأنابيب الكامل قابل للسكربت — تجميع، اختبار، تحليل، تقييم — كله من سطر الأوامر.

المتطلبات الأساسية

  • Windows مع MetaTrader 5 و MetaEditor مثبتين
  • IDE ذكي بالذكاء الاصطناعي: Windsurf، Cursor، أو VS Code مع إضافة Copilot/Claude
  • Python 3.10+ مع حزم MetaTrader5 و pandas و scikit-learn
  • معرفة تداول أساسية — تحتاج لمعرفة ما يجعل استراتيجية جيدة (نسبة المخاطرة-العائد، السحب، نسبة شارب)
  • فهم MT5 CLI — راجع دليل تحسين CLI للأساسيات

هيكل مشروع برمجة الإحساس

my-ea-vibe-project/
├── .vscode/
│   └── tasks.json              # مهام البناء (تجميع، اختبار، تحليل)
├── EAs/
│   └── TrendFollower.mq5       # كود إكسبرت مولد بالذكاء الاصطناعي
├── Configs/
│   ├── backtest.ini            # config اختبار مولد بالذكاء الاصطناعي
│   └── optimize.ini            # config تحسين مولد بالذكاء الاصطناعي
├── Params/
│   └── trend_follower.set      # نطاقات معلمات مولدة بالذكاء الاصطناعي
├── Scripts/
│   ├── compile.py              # غلاف Python لـ MetaEditor CLI
│   ├── run_backtest.py         # غلاف Python لـ terminal64.exe
│   ├── parse_results.py        # محلل تقارير XML/HTM
│   └── analyze.py              # تحليل النتائج والتصور
├── Reports/                    # .gitignore — مخرجات الاختبار
├── models/                     # نماذج ONNX للإكسبرتات الذكية
└── README.md                   # توثيق مولد بالذكاء الاصطناعي

سير عمل برمجة الإحساس

┌─────────────────────────────────────────────────────────────┐
│  سير عمل برمجة الإحساس                                       │
│                                                              │
│  1. صِف      →  "اكتب إكسبرت تقاطع EMA مع وقوف ATR"          │
│  2. وَلِّد    →  الذكاء الاصطناعي يكتب .mq5 و .ini و .set     │
│  3. جمِّع    →  الذكاء الاصطناعي يشغل metaeditor64.exe        │
│  4. اختبر    →  الذكاء الاصطناعي يشغل terminal64.exe          │
│  5. حلِّل    →  الذكاء الاصطناعي يقرأ تقرير XML               │
│  6. قَيِّم    →  الذكاء الاصطناعي يفحص: ربح، سحب، شارب         │
│  7. كَرِّر    →  الذكاء الاصطناعي يقترح تعديلات المعلمات       │
│  8. حَسِّن    →  الذكاء الاصطناعي يشغل تحسين جيني بنطاقات جديدة│
│  9. تحَقَّق   →  الذكاء الاصطناعي يشغل اختبار أمامي ومونت كارلو│
│ 10. انشُر    →  الذكاء الاصطناعي ينسخ أفضل .set للمجلد الحي    │
└─────────────────────────────────────────────────────────────┘

الخطوة 1: صِف استراتيجيتك

قالب وصف الاستراتيجية

أنشئ إكسبرت MT5 بالمواصفات التالية:

الاستراتيجية:
- EMA(10) يعبر فوق EMA(50) → إشارة شراء
- EMA(10) يعبر تحت EMA(50) → إشارة بيع
- تداول فقط خلال جلسات لندن ونيويورك (08:00-17:00 GMT)

إدارة المخاطر:
- حجم المركز: 1% مخاطرة لكل صفقة حسب ATR(14)
- وقف الخسارة: 1.5 × ATR(14)
- جني الأرباح: 3 × ATR(14)
- حد أقصى مركز مفتوح واحد
- لا تداول في أيام الأخبار عالية التأثير

معلمات التحسين:
- FastEMA: 5-30، خطوة 1
- SlowEMA: 30-100، خطوة 5
- ATRPeriod: 10-20، خطوة 1
- RiskPercent: 0.5-2.0، خطوة 0.1
- ATRMultiplierSL: 1.0-3.0، خطوة 0.1

إعدادات الاختبار:
- الرمز: EURUSD
- الإطار الزمني: H1
- النطاق: 2023.01.01 إلى 2025.01.01
- النموذج: كل تيك بناءً على تيكات حقيقية
- رأس المال: $10,000
- التحسين: جيني
- المعيار: الرصيد × شارب

المخرجات:
- اكتب ملف .mq5
- اكتب ملف .ini للتحسين
- اكتب ملف .set للمعلمات
- جمّع الإكسبرت
- شغّل التحسين
- حلل نتائج XML
- اعرض أفضل 10 مجموعات معلمات حسب نسبة شارب

نصائح لمطالبات أفضل

  • كن محدداً حول قواعد الدخول/الخروج — "تقاطع EMA" غامض؛ "EMA(10) يعبر فوق EMA(50) على الشمعة المغلقة" دقيق
  • أضف فلاتر عدم التداول — أوقات الجلسات، حدود السبريد، فلاتر الأخبار، قواطع السحب الأقصى
  • حدد نطاقات التحسين — أعطِ الذكاء الاصطناعي نطاقات أولية؛ يمكنه تضييقها لاحقاً
  • عرّف ما يعني "جيد" — حد أدنى للصفقات، سحب أقصى، حد أدنى لنسبة شارب
  • اطلب مخرجات محددة — "اعرض جدولاً بالربح وشارب والسحب والصفقات لأفضل 10 نتائج"

الخطوة 2: الذكاء الاصطناعي يولد الكود

عند لصق المطالبة في Windsurf أو Cursor، الذكاء الاصطناعي سيكتب:

  1. كود MQL5 (TrendFollower.mq5) بكل المنطق الذي وصفته
  2. ملف config (optimize.ini) بالإعدادات الصحيحة
  3. ملف المعلمات (trend_follower.set) بنطاقات التحسين
  4. محلل Python (parse_results.py) لتحليل مخرجات XML

ما يولده الذكاء الاصطناعي: كود MQL5

//+------------------------------------------------------------------+
//| TrendFollower.mq5 — إكسبرت تقاطع EMA مولد بالذكاء الاصطناعي      |
//+------------------------------------------------------------------+
#property strict
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>

input int    FastEMA = 10;
input int    SlowEMA = 50;
input int    ATRPeriod = 14;
input double RiskPercent = 1.0;
input double ATRMultiplierSL = 1.5;
input double ATRMultiplierTP = 3.0;
input int    StartHour = 8;
input int    EndHour = 17;
input int    MaxSpreadPoints = 30;
input long   MagicNumber = 20260710;

CTrade trade;
CPositionInfo posInfo;
int fastEmaHandle, slowEmaHandle, atrHandle;

int OnInit()
{
   trade.SetExpertMagicNumber(MagicNumber);
   fastEmaHandle = iMA(_Symbol, _Period, FastEMA, 0, MODE_EMA, PRICE_CLOSE);
   slowEmaHandle = iMA(_Symbol, _Period, SlowEMA, 0, MODE_EMA, PRICE_CLOSE);
   atrHandle = iATR(_Symbol, _Period, ATRPeriod);
   
   if(fastEmaHandle == INVALID_HANDLE || slowEmaHandle == INVALID_HANDLE || atrHandle == INVALID_HANDLE)
      return INIT_FAILED;
   return INIT_SUCCEEDED;
}

void OnTick()
{
   static datetime lastBar = 0;
   datetime currentBar = iTime(_Symbol, _Period, 0);
   if(currentBar == lastBar) return;
   
   MqlDateTime dt;
   TimeToStruct(TimeCurrent(), dt);
   if(dt.hour < StartHour || dt.hour >= EndHour) return;
   
   long spread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD);
   if(spread > MaxSpreadPoints) return;
   
   if(PositionsTotal() > 0) return;
   
   double fastEma[2], slowEma[2], atr[1];
   CopyBuffer(fastEmaHandle, 0, 0, 2, fastEma);
   CopyBuffer(slowEmaHandle, 0, 0, 2, slowEma);
   CopyBuffer(atrHandle, 0, 1, 1, atr);
   
   bool buySignal = fastEma[1] > slowEma[1] && fastEma[0] <= slowEma[0];
   bool sellSignal = fastEma[1] < slowEma[1] && fastEma[0] >= slowEma[0];
   
   if(!buySignal && !sellSignal) return;
   
   double atrValue = atr[0];
   double stopLoss = atrValue * ATRMultiplierSL;
   double takeProfit = atrValue * ATRMultiplierTP;
   
   double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
   double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
   double slPoints = stopLoss / tickSize;
   double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * RiskPercent / 100.0;
   double lotSize = riskAmount / (slPoints * tickValue);
   
   double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
   double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
   double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
   lotSize = MathRound(lotSize / lotStep) * lotStep;
   lotSize = MathMax(minLot, MathMin(maxLot, lotSize));
   
   if(buySignal)
   {
      double price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
      trade.Buy(lotSize, _Symbol, price, price - stopLoss, price + takeProfit, "EMA Cross Buy");
   }
   else if(sellSignal)
   {
      double price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
      trade.Sell(lotSize, _Symbol, price, price + stopLoss, price - takeProfit, "EMA Cross Sell");
   }
   
   lastBar = currentBar;
}

double OnTester()
{
   double profit = TesterStatistics(STAT_PROFIT);
   double maxDD = TesterStatistics(STAT_EQUITY_DD);
   double trades = TesterStatistics(STAT_TRADES);
   double sharpe = TesterStatistics(STAT_SHARPE_RATIO);
   
   if(trades < 30) return -1000;
   if(maxDD > 20) return -1000;
   return sharpe * MathSqrt(MathAbs(profit));
}

ما يولده الذكاء الاصطناعي: ملف Config

[Tester]
Expert=TrendFollower
ExpertParameters=trend_follower.set
Symbol=EURUSD
Period=H1
Deposit=10000
Currency=USD
Leverage=1:100
Model=4
Optimization=2
OptimizationCriterion=5
FromDate=2023.01.01
ToDate=2025.01.01
ForwardMode=2
Report=trend_follower_optimization
ReplaceReport=1
ShutdownTerminal=1
UseLocal=1
UseRemote=0
UseCloud=0
Visual=0
Port=2000

ما يولده الذكاء الاصطناعي: ملف المعلمات

;--- TrendFollower.set
FastEMA=5||1||30||Y
SlowEMA=30||5||100||Y
ATRPeriod=10||1||20||Y
RiskPercent=0.5||0.1||2.0||Y
ATRMultiplierSL=1.0||0.1||3.0||Y
ATRMultiplierTP=1.0||0.1||5.0||Y
StartHour=8||0||8||N
EndHour=17||0||17||N
MaxSpreadPoints=30||0||30||N
MagicNumber=20260710||0||20260710||N

الخطوة 3: التجميع والاختبار

Windsurf / Cursor: خط أنابيب بنقرة واحدة

"جمّع الإكسبرت، شغّل التحسين، حلل النتائج، واعرض أفضل 10 مجموعات معلمات."

import subprocess
import os
import time
import xml.etree.ElementTree as ET
import pandas as pd

class VibeCodingPipeline:
    """خط أنابيب برمجة الإحساس الكامل: تجميع ← تحسين ← تحليل ← تقييم."""
    
    def __init__(self, project_dir, mt5_path, metaeditor_path):
        self.project_dir = project_dir
        self.mt5_path = mt5_path
        self.metaeditor_path = metaeditor_path
    
    def compile_ea(self, ea_name):
        """الخطوة 1: تجميع الإكسبرت باستخدام MetaEditor CLI."""
        mq5_path = os.path.join(self.project_dir, 'EAs', f'{ea_name}.mq5')
        log_path = mq5_path.replace('.mq5', '.log')
        
        print(f"تجميع {ea_name}...")
        subprocess.run(
            [self.metaeditor_path, f"/compile:{mq5_path}", "/log"],
            capture_output=True, timeout=60
        )
        
        if os.path.exists(log_path):
            with open(log_path, 'r') as f:
                log = f.read()
                if 'error' in log.lower():
                    print(f"❌ أخطاء تجميع:\n{log}")
                    return False
                else:
                    print("✅ تم التجميع بنجاح")
                    return True
        
        ex5_path = mq5_path.replace('.mq5', '.ex5')
        return os.path.exists(ex5_path)
    
    def run_optimization(self, config_name):
        """الخطوة 2: تشغيل التحسين باستخدام terminal64.exe."""
        config_path = os.path.join(self.project_dir, 'Configs', f'{config_name}.ini')
        
        print(f"تشغيل التحسين بـ {config_name}...")
        start_time = time.time()
        
        subprocess.run(
            [self.mt5_path, f"/config:{config_path}"],
            capture_output=True, timeout=3600
        )
        
        elapsed = time.time() - start_time
        print(f"✅ اكتمل التحسين في {elapsed:.0f} ثانية")
        return True
    
    def parse_results(self, report_name):
        """الخطوة 3: تحليل تقرير XML."""
        report_path = os.path.join(self.project_dir, 'Reports', f'{report_name}.xml')
        
        if not os.path.exists(report_path):
            print(f"❌ التقرير غير موجود: {report_path}")
            return None
        
        tree = ET.parse(report_path)
        root = tree.getroot()
        
        results = []
        for item in root.findall('.//Item'):
            row = {
                'pass': int(item.get('Pass', 0)),
                'profit': float(item.findtext('Profit', 0)),
                'profit_factor': float(item.findtext('ProfitFactor', 0)),
                'sharpe': float(item.findtext('SharpeRatio', 0)),
                'drawdown': float(item.findtext('EquityDrawdown', 0)),
                'trades': int(item.findtext('TotalTrades', 0)),
            }
            for param in item.findall('.//Input'):
                row[param.get('Name')] = float(param.text)
            results.append(row)
        
        df = pd.DataFrame(results)
        print(f"✅ تم تحليل {len(df)} محاولة تحسين")
        return df
    
    def analyze(self, df, top_n=10):
        """الخطوة 4: تحليل وترتيب النتائج."""
        filtered = df[
            (df['profit'] > 0) &
            (df['trades'] >= 30) &
            (df['drawdown'] < 25) &
            (df['sharpe'] > 0)
        ].sort_values('sharpe', ascending=False)
        
        print(f"\n{'='*80}")
        print(f"نتائج التحسين — {len(df)} إجمالي، {len(filtered)} اجتاز المرشحات")
        print(f"{'='*80}")
        
        if len(filtered) == 0:
            print("❌ لا توجد نتائج اجتازت المرشحات.")
            return None
        
        cols = ['profit', 'profit_factor', 'sharpe', 'drawdown', 'trades']
        param_cols = [c for c in filtered.columns if c not in cols + ['pass']]
        
        print(filtered[param_cols + cols].head(top_n).to_string(index=False))
        
        best = filtered.iloc[0]
        print(f"\nأفضل نتيجة (شارب = {best['sharpe']:.2f}):")
        print(f"  الربح: ${best['profit']:,.2f}")
        print(f"  معامل الربح: {best['profit_factor']:.2f}")
        print(f"  أقصى سحب: {best['drawdown']:.1f}%")
        print(f"  إجمالي الصفقات: {int(best['trades'])}")
        
        return best
    
    def run_full_pipeline(self, ea_name, config_name, report_name):
        """تشغيل خط أنابيب برمجة الإحساس الكامل."""
        print("🚀 بدء خط أنابيب برمجة الإحساس\n")
        
        if not self.compile_ea(ea_name):
            return None
        if not self.run_optimization(config_name):
            return None
        df = self.parse_results(report_name)
        if df is None:
            return None
        best = self.analyze(df)
        return best

VS Code: مهام البناء

لـ VS Code (بدون ذكاء اصطناعي)، أنشئ .vscode/tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Vibe: تجميع الإكسبرت",
      "type": "shell",
      "command": "python",
      "args": ["${workspaceFolder}/Scripts/compile.py", "--ea", "TrendFollower"],
      "group": "build",
      "problemMatcher": []
    },
    {
      "label": "Vibe: تشغيل التحسين",
      "type": "shell",
      "command": "python",
      "args": ["${workspaceFolder}/Scripts/run_backtest.py", "--config", "optimize"],
      "group": "build",
      "dependsOn": "Vibe: تجميع الإكسبرت",
      "problemMatcher": []
    },
    {
      "label": "Vibe: تحليل النتائج",
      "type": "shell",
      "command": "python",
      "args": ["${workspaceFolder}/Scripts/parse_results.py", "--report", "trend_follower_optimization"],
      "group": "build",
      "dependsOn": "Vibe: تشغيل التحسين",
      "problemMatcher": []
    },
    {
      "label": "Vibe: خط أنابيب كامل",
      "type": "shell",
      "command": "python",
      "args": ["${workspaceFolder}/Scripts/pipeline.py", "--ea", "TrendFollower"],
      "group": {"kind": "build", "isDefault": true},
      "problemMatcher": []
    }
  ]
}

اضغط Ctrl+Shift+B لتشغيل خط الأنابيب الكامل.

الخطوة 4: الذكاء الاصطناعي يحلل ويقترح تحسينات

مثال على تحليل الذكاء الاصطناعي

الذكاء الاصطناعي: "شغّلت التحسين لـ TrendFollower على EURUSD H1 (2023-2025). إليك ما وجدته:

أفضل 5 مجموعات معلمات حسب نسبة شارب:

FastEMA SlowEMA ATRPeriod Risk% SL Mult الربح شارب السحب% الصفقات
12 55 14 1.0 1.8 $3,240 1.42 12.3% 87
15 60 14 1.0 1.6 $2,890 1.35 10.8% 72
10 50 16 1.5 2.0 $4,120 1.28 18.5% 95

التوصيات:

  1. ضيّق FastEMA إلى 10-15 و SlowEMA إلى 50-65 لجولة ثانية
  2. ثبّت ATRPeriod عند 14 (الفائز الواضح)
  3. شغّل اختباراً أمامياً بأفضل 3 مجموعات
  4. أضف فلتر ADX > 25 لتقليل الإشارات الكاذبة

هل تريدني أن أشغل تحسيناً ثانياً بالنطاقات الضيقة؟"

التحسين التكراري

الذكاء الاصطناعي يمكنه تشغيل تحسين ثانٍ أكثر تركيزاً تلقائياً:

"نعم، شغّل تحسين ثانٍ بـ FastEMA 8-18 خطوة 1، SlowEMA 45-70 خطوة 1، ATRPeriod ثابت عند 14، RiskPercent 0.5-1.2 خطوة 0.1، و SL multiplier 1.3-2.2 خطوة 0.1. أضف أيضاً ADX(14) > 25 كفلتر اتجاه."

الذكاء الاصطناعي سي:

  1. تعديل ملف .mq5 لإضافة فلتر ADX
  2. تحديث ملف .set بالنطاقات الضيقة
  3. إعادة تجميع الإكسبرت
  4. تشغيل التحسين الجديد
  5. مقارنة النتائج بالتشغيل الأول

الخطوة 5: التحقق عبر برمجة الإحساس

التحليل الأمامي (Walk-Forward)

"شغّل تحليل walk-forward على أفضل مجموعة معلمات. قسم 2023-2025 إلى نوافذ 6 أشهر عينية وشهر واحد خارج العينة. اعرض الأداء خارج العينة لكل نافذة."

الذكاء الاصطناعي سيولد 12 ملف config، يشغل 12 اختباراً، يحلل كل التقارير، وينشئ جدول مقارنة.

محاكاة مونت كارلو

"خذ قائمة الصفقات من أفضل اختبار راجع وشغّل محاكاة مونت كارلو بـ 1000 تكرار. اعرض النسبة المئوية 5 و 50 و 95 لرأس المال النهائي."

فحص المتانة متعدد الرموز

"اختبر أفضل مجموعة معلمات على GBPUSD و USDJPY و AUDUSD و USDCHF. اعرض أي الرموز رابحة وأيها خاسرة."

Claude Desktop مع MCP Server: مستقل تماماً

أنت: "أريد إكسبرت اتباع اتجاه لـ EURUSD يستخدم تقاطع EMA مع وقوف ATR. حسّنه لأفضل نسبة شارب على 2023-2025، تحقق بـ walk-forward، وأخبرني إذا كان متيناً بما يكفي لحساب ديمو."

Claude:

  1. ✍️ كتابة الكود... write_ea("TrendFollower")
  2. 🔨 تجميع... compile_mql5("TrendFollower.mq5") → 0 أخطاء
  3. 🧪 تشغيل التحسين... run_backtest(config="optimize.ini") → 1,247 محاولة
  4. 📊 تحليل النتائج... get_backtest_results() → أفضل شارب: 1.42
  5. 🔬 تشغيل walk-forward... 6 نوافذ، 4/6 رابحة خارج العينة
  6. 📋 التقرير النهائي: ✅ متين بما يكفي للديمو

أنماط برمجة الإحساس لـ MT5

نمط 1: استراتيجية من الوصف

"اكتب إكسبرت يشتري عندما RSI(14) يعبر فوق 30 والسعر فوق EMA 200.
يبيع عندما RSI يعبر تحت 70 أو السعر ينزل تحت EMA 200.
مخاطرة 0.5% لكل صفقة، وقف خسارة 2x ATR، جني أرباح 4x ATR.
تداول فقط EURUSD H1 خلال جلسة لندن."

نمط 2: تحسين إكسبرت موجود

"لدي TrendFollower.mq5 في مجلد الإكسبرتات. اقرأه، ثم أنشئ config تحسين
لـ EURUSD H1 من 2023-2025. حسّن FastEMA (5-30) و SlowEMA (30-100) و ATRPeriod (10-20).
استخدم التحسين الجيني بمعيار شارب. شغّله واعرض أفضل 10 نتائج."

نمط 3: إصلاح استراتيجية خاسرة

"إكسبرت TrendFollower خاصتي يخسر. إليك تقرير الاختبار الراجع [مسار التقرير].
حلل لماذا يخسر — هل هي إشارة الدخول، وقف الخسارة، حجم المركز، أم منطق الخروج؟
اقترح 3 تحسينات محددة ونفذ الأفضل."

نمط 4: تحويل استراتيجية يدوية إلى إكسبرت

"أتداول يدوياً بهذه الاستراتيجية:
- أنظر إلى H4 لاتجاه السوق (السعر فوق/تحت EMA 50)
- على M15، أدخل عندما RSI(14) يعبر فوق 30 (في صعود) أو تحت 70 (في هبوط)
- أضع وقف الخسارة عند آخر قمة/قاع
- أحقق ربحاً عند 2x المخاطرة
- لا أخاطر بأكثر من 1% لكل صفقة

حول هذا إلى إكسبرت MT5. اختبره على EURUSD من 2024.01.01 إلى 2025.01.01."

نمط 5: محفظة متعددة الإكسبرتات

"أنشئ 3 إكسبرتات باستراتيجيات مختلفة:
1. اتباع اتجاه (تقاطع EMA) لـ EURUSD H1
2. عودة للمتوسط (RSI + Bollinger Bands) لـ GBPUSD M15
3. اختراق (قناة Donchian) لـ USDJPY H4

كل إكسبرت يخاطر 0.5% لكل صفقة. اختبر الثلاثة من 2023-2025، ثم أنشئ
تقرير محفظة يظهر منحنى رأس المال المدمج ومصفوفة الارتباط."

نمط 6: إكسبرت ذكي مع ONNX

"درّب نموذج Gradient Boosting على بيانات EURUSD H1 باستخدام RSI وفرق EMA و ATR
والحجم كخصائص. الهدف: اتجاه الشمعة التالية (صعود/هبوط). صدّر إلى ONNX. اكتب
إكسبرت MQL5 يحمل نموذج ONNX ويتخذ فقط صفقات تقاطع EMA عندما يؤكد النموذج
الاتجاه بثقة >65%. اختبر من 2024.01.01 إلى 2025.01.01."

مقارنة IDE لبرمجة MT5 بالإحساس

الميزة Windsurf Cursor VS Code + Copilot Claude + MCP
بناء جملة MQL5
تحرير الملفات ✅ كامل ✅ كامل ✅ كامل
الوصول للطرفية ✅ مدمج ✅ مدمج ✅ مدمج ✅ عبر MCP
MetaEditor CLI
terminal64.exe
تحليل النتائج ✅ Python ✅ Python ✅ Python
سرعة التكرار ⚡ سريع ⚡ سريع 🔄 يدوي ⚡ سريع
الأفضل لـ تطوير كامل تطوير كامل سير عمل منظم توليد مستقل

أفضل الممارسات لبرمجة الإحساس للإكسبرتات

  1. راجع الكود المولد دائماً — الذكاء الاصطناعي قد يخطئ في المنطق
  2. ابدأ باستراتيجية بسيطة — اجعل خط الأنابيب يعمل قبل التعقيد
  3. استخدم التجميع كتغذية راجعة — إذا لم يجمع، الصق أخطاء .log
  4. تحقق بـ walk-forward — لا تثق بالتحسين العيني فقط
  5. احفظ المطالبات الجيدة — في مجلد prompts/ لإعادة الاستخدام
  6. اختبر على رموز متعددة — استراتيجية تعمل على رمز واحد فقط هشة
  7. ارفع تكاليف المعاملات — حدد السبريد والعمولة والانزلاق
  8. توقعات واقعية — شارب > 1.0 جيد، > 2.0 مشبوه، > 3.0 متجهز
  9. لا تتخطى OnTester() — دوال اللياقة المخصصة تمنع خداع المعايير
  10. انشر للديمو أولاً — حتى الاستراتيجيات المتحققة تحتاج 4-8 أسابيع

قيود برمجة الإحساس لـ MT5

  • الذكاء الاصطناعي لا يشعر بالسوق — يولد الكود بناءً على وصفك، ليس حدس السوق
  • معرفة MQL5 محدودة — بعض نماذج الذكاء الاصطناعي تعرف MQL5 جيداً، أخرى تخلطه مع MQL4 أو C++
  • الإكسبرتات المعقدة أصعب — الإكسبرتات متعددة الرموز أو الأطر الزمنية أو المستوردة لـ DLL قد تحتاج إصلاحات يدوية
  • أخطاء التجميع قد تكون غامضة — أحياناً يحتاج الذكاء الاصطناعي عدة تكرارات لإصلاح خطأ نوع خفي
  • تحقق دائماً على الديمو — برمجة الإحساس تسرع التطوير لكنها لا تستبدل التحقق الحي

الأسئلة الشائعة

ما الفرق بين برمجة الإحساس ومساعدة الذكاء الاصطناعي العادية؟

برمجة الإحساس عقلية — تصف ما تريده باللغة الطبيعية وتدع الذكاء الاصطناعي يتعامل مع تفاصيل التنفيذ. المساعدة العادية (الإكمال التلقائي) تتطلب أن تكتب معظم الكود. في برمجة الإحساس، الذكاء الاصطناعي يكتب 90%+ من الكود.

أي IDE أفضل لبرمجة MT5 بالإحساس؟

Windsurf و Cursor هما الأفضل لأنهما يملكان دردشة ذكاء اصطناعي مدمجة مع وصول للطرفية. Claude Desktop + MCP أفضل للتوليد المستقل لكنه يفتقر لمحرر كود.

هل يمكن لبرمجة الإحساس استبدال تعلم MQL5؟

لا. تحتاج لفهم MQL5 بما يكفي لمراجعة كود الذكاء الاصطناعي واكتشاف أخطاء المنطق. برمجة الإحساس تسرع الأجزاء المملة لكنك تحتاج خبرة المجال لتقييم الاستراتيجية.

كيف أمنع الذكاء الاصطناعي من توليد استراتيجيات متجهزة؟

أضف تعليمات صريحة مضادة للتجهيز في مطالبتك: "استخدم walk-forward، اطلب 50 صفقة على الأقل، سحب أقصى < 20%، واختبر على 3 رموز مختلفة على الأقل."

ماذا لو ولّد الذكاء الاصطناعي كوداً لا يجمع؟

الصق محتويات ملف .log للذكاء الاصطناعي. سيقرأ رسائل الخطأ ويصلح الكود. هذه العملية التكرارية تحل أخطاء التجميع عادة في 2-3 جولات. المشاكل الشائعة: اختلافات بناء جملة MQL4 vs MQL5، عبارات #include مفقودة، أو تواقيع دوال غير صحيحة.

هل يمكنني استخدام برمجة الإحساس للتداول الحي؟

برمجة الإحساس ممتازة للتطوير والاختبار. للتداول الحي، دائماً: (1) راجع كل سطر من الكود المولد، (2) اختبر أمامياً على الديمو لـ 4-8 أسابيع، (3) ابدأ بأحجام عقود صغيرة، (4) راقب الأداء يومياً. لا تنشر أبداً إكسبرتاً مولداً بالذكاء الاصطناعي مباشرة على حساب حي بدون تحقق.

أدلة ذات صلة


إخلاء مسؤولية: برمجة الإحساس تسرع تطوير الإكسبرتات لكنها لا تضمن الربحية. تحقق دائماً من الاستراتيجيات على حسابات ديمو قبل التداول الحقيقي. الأداء السابق لا يشير إلى نتائج مستقبلية.

إفصاح التسويق بالعمولة: تحتوي هذه الصفحة على روابط تسويق بالعمولة. قد نحصل على عمولة عند النقر على روابط معينة أو التسجيل لدى الوسطاء المميزين على هذا الموقع، دون أي تكلفة إضافية عليك. مراجعاتنا وتوصياتنا مبنية على بحث شامل وتبقى محايدة.اعرف المزيد

تحذير بشأن المخاطر: تداول الفوركس وعقود الفروقات ينطوي على مخاطر كبيرة للخسارة. الأداء السابق لا يدل على النتائج المستقبلية. عقود الفروقات هي أدوات معقدة وتنطوي على مخاطر عالية لخسارة الأموال بسرعة بسبب الرافعة المالية. تأكد من فهمك للمخاطر قبل التداول. هذا المحتوى لأغراض تعليمية فقط ولا يشكل نصيحة مالية.

كتب بواسطة

فريق Pips Growth

فريق التعليم والأبحاث في التداول

فريق Pips Growth هو مجموعة من المتداولين ذوي الخبرة والمحللين الماليين ومعلمي التداول المكرسين لتقديم تعليم فوركس دقيق وعملي. يجمع فريقنا بين عقود من الخبرة العملية في الأسواق والمعرفة التقنية العميقة لإنشاء أدلة شاملة ومراجعات صادقة للوسطاء واستراتيجيات تداول مجربة. يتم البحث في كل مقال بدقة والتحقق من صحته ومراجعته من قبل عدة أعضاء في الفريق لضمان أعلى جودة ودقة.

15+ سنة خبرة81+ مقال منشور
تداول الفوركس والعقود مقابل الفروقاتالتحليل الفنيإدارة المخاطرمراجعات وتقييم الوسطاء
عرض الملف الشخصي الكامل
مشاركة

اشترك في النشرة

برمجة MT5 بالإحساس: تحسين واختبار الإكسبرت بالذكاء الاصطناعي | PipsGrowth