النتائج 1 إلى 5 من 5
  1. #1
    الصورة الرمزية BIGRISK
    BIGRISK غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2021
    الإقامة
    كندا
    المشاركات
    94

    افتراضي اكسبيرت يعلق صفقات على مستوى معدل شمعة اليومي

    السلام عليكم ورحمة الله
    الطلب بسيط جدا يتمثل في اكسبيرت يعلق صفقات على مستوى معدل شمعة اليومي السابقة بشرط اذا كانت الشمعة السابقة في فريم اليومي نازلة يضع sel limite واذا كانت صاعدة buy limite ويبقى يعلق في نفس المكان مادامت الصفقات تغلق على ربح.
    الشرط الثاني هو اذا اخترق المستوى يدخل واغلقت الصفقة على خسارة يدخل صفقة مضاعفة وهذا فيديو شرح الشرط الاول
    https://youtu.be/KmRx3tf3jUs?si=uHJ6E64L1g8tKYcE

  2. #2
    الصورة الرمزية BIGRISK
    BIGRISK غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2021
    الإقامة
    كندا
    المشاركات
    94

    افتراضي

    لاتحتاجون الى اي مؤشر بل آلة حاسبة فقط لكن عليكم بمشاهدة الفيديو لفهم الكيفية
    (أعلى مستوى+ ادنى مستوى + مستوى الانغلاق) نقسم المجموع على 3 و هو المستوى الذي يتم تعليق عليه
    لكن بعد ساعة نحددها وهو امر مهم نسيته

  3. #3
    الصورة الرمزية Atmos_EA
    Atmos_EA غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2023
    الإقامة
    الجزائر
    المشاركات
    6

    افتراضي

    قمت من التحقق من الاستراتجية وهي ممتازة الارتداد ضئيل جدا
    نقاط دخول ممتازة شكرا لك ولصاحب الفيديو

  4. #4
    الصورة الرمزية Atmos_EA
    Atmos_EA غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2023
    الإقامة
    الجزائر
    المشاركات
    6

    افتراضي

    اتمنى التحاق مبرمجين بالموضوع حاولت ان اصنع له اكسبيرت عن طريق chatGBT لكن لم وفق
    وهذا ما استطعت عمله لكن فيه خطاء حجم الوت
    كود PHP:
    //+------------------------------------------------------------------+
    //|                                                      VotreEA.mq4 |
    //|                        Copyright 2023, Company Name             |
    //|                                       http://www.company.com    |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2023, Company Name"
    #property link      "http://www.company.com"
    #property version   "1.00"
    #property strict

    extern double LotSize 0.1;        // Taille de lot fixe
    extern int Slippage 3;             // Glissement
    extern int StopLossPips 30;        // Stop Loss initial en pips
    extern int TakeProfitPips 60;      // Take Profit initial en pips
    extern int TrailingStopPips 20;    // Trailing Stop en pips
    extern int TrailingStepPips 10;    // Trailing Step en pips
    extern double RiskPercent 2.0;     // Pourcentage de risque par transaction
    extern string OpenTime "08:00";    // Heure d'ouverture des positions
    extern string CloseTime "08:00";   // Heure de fermeture des positions

    int ticketBuy = -1;                  // Variable pour stocker le ticket de l'ordre Buy
    int ticketSell = -1;                 // Variable pour stocker le ticket de l'ordre Sell

    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    // ...

    int OnInit()
    {
       
    // Vérifiez si l'heure actuelle correspond à l'heure d'ouverture
       
    datetime currentTime TimeCurrent();
       
    datetime openTime StrToTime(OpenTime);
       
    datetime closeTime StrToTime(CloseTime);

       if (
    currentTime openTime || currentTime >= closeTime)
       {
          Print(
    "L'EA ne fonctionne qu'à l'heure spécifiée entre OpenTime et CloseTime.");
          return(
    INIT_FAILED);
       }

       
    // Calcul de la moyenne du plus haut, du plus bas et de la clôture de la bougie d'hier
       
    double yesterdayHigh iHigh(NULLPERIOD_D11);
       
    double yesterdayLow iLow(NULLPERIOD_D11);
       
    double yesterdayClose iClose(NULLPERIOD_D11);
       
    double averagePrice = (yesterdayHigh yesterdayLow yesterdayClose) / 3.0;

       
    // Calcul de la taille de lot basée sur le pourcentage de risque
       
    double accountBalance AccountBalance();
       
    double riskAmount accountBalance RiskPercent 100.0;
       
    double lotSize riskAmount / (StopLossPips MarketInfo(Symbol(), MODE_MARGINREQUIRED));

       
    double minLotSize 0.01// Taille minimale autorisée par le courtier
       
    double maxLotSize 100.00// Taille maximale autorisée par le courtier
       
    double lotStep 0.01// Incrément de taille de lot

       // Vérifiez la taille du lot en fonction des règles du courtier
       
    if (lotSize minLotSize || lotSize maxLotSize || MathMod(lotSizelotStep) != 0)
       {
          Print(
    "Taille de lot invalide. Vérifiez les règles de votre courtier.");
          return(
    INIT_FAILED);
       }

       
    // Placement d'un ordre Buy avec un niveau de stop et de limite
       
    double buyStop averagePrice StopLossPips Point;
       
    double buyLimit averagePrice TakeProfitPips Point;
       
    double buyTrailingStop TrailingStopPips Point;
       
    double buyTrailingStep TrailingStepPips Point;

       
    ticketBuy OrderSend(Symbol(), OP_BUYlotSizeMarketInfo(Symbol(), MODE_ASK), SlippagebuyStopbuyLimit""0clrNONEclrNONE);

       
    // Vérifiez si l'heure actuelle correspond à l'heure de fermeture
       
    if (currentTime >= closeTime)
    {
        
    int totalOrders OrdersTotal();
        for (
    int i totalOrders 1>= 0i--)
        {
            if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
            {
                if (
    OrderType() == OP_BUY || OrderType() == OP_SELL)
                {
                    
    ClosePosition(OrderTicket());
                }
            }
        }
    }

       return(
    INIT_SUCCEEDED);
    }

    // ...


    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
       
    // Aucune action nécessaire à la désinitialisation
      
    }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
       
    // Vérifiez si l'heure actuelle correspond à l'heure de fermeture
       
    datetime currentTime TimeCurrent();
       
    datetime closeTime StrToTime(CloseTime);

      if (
    currentTime >= closeTime)
    {
        
    int totalOrders OrdersTotal();
        for (
    int i totalOrders 1>= 0i--)
        {
            if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
            {
                if (
    OrderType() == OP_BUY || OrderType() == OP_SELL)
                {
                    
    ClosePosition(OrderTicket());
                }
            }
        }
    }

      }

    // Fermer une position
    // Fermer une position
    bool ClosePosition(int ticket)
    {
        if (
    OrderClose(ticketOrderLots(), MarketInfo(OrderSymbol(), MODE_BID), SlippageclrNONE))
        {
            Print(
    "Position fermée avec succès.");
            return 
    true;
        }
        else
        {
            
    int error GetLastError();
            Print(
    "Erreur lors de la fermeture de la position. Code d'erreur : "error);
            return 
    false;
        }


  5. #5
    الصورة الرمزية abo3nod
    abo3nod غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    May 2016
    الإقامة
    السعودية
    المشاركات
    26

    افتراضي

    تفضل أخي جرب ورد لي تم تصحيح حجم الصفقة

    كود PHP:
    extern double LotSize 0.1;        // حجم الصفقة
    extern int Slippage 3;             // قيمة الانزلاق
    extern int StopLossPips 30;        // عدد النقاط المستخدمة لوقف الخسارة
    extern int TakeProfitPips 60;      // عدد النقاط المستخدمة لوضع أمر الربح
    extern int TrailingStopPips 20;    // عدد النقاط المستخدمة لتفعيل وقف السحب
    extern int TrailingStepPips 10;    // عدد النقاط المستخدمة لتحديث وقف السحب
    extern double RiskPercent 2.0;     // نسبة المخاطرة كنسبة من رصيد الحساب
    extern string OpenTime "08:00";    // وقت بدء التداول
    extern string CloseTime "08:00";   // وقت إنهاء التداول

    int ticketBuy = -1;                  // تذكير الصفقة الشرائية
    int ticketSell = -1;                 // تذكير الصفقة البيعية

    int OnInit()
    {
       
    datetime currentTime TimeCurrent();
       
    datetime openTime StrToTime(OpenTime);
       
    datetime closeTime StrToTime(CloseTime);

       if (
    currentTime openTime || currentTime >= closeTime)
       {
          Print(
    "وقت عمل الاكسبيرت OpenTime و CloseTime.");
          return(
    INIT_FAILED);
       }

       
    // حساب السعر المتوسط لليوم السابق
       
    double yesterdayHigh iHigh(NULLPERIOD_D11);
       
    double yesterdayLow iLow(NULLPERIOD_D11);
       
    double yesterdayClose iClose(NULLPERIOD_D11);
       
    double averagePrice = (yesterdayHigh yesterdayLow yesterdayClose) / 3.0;

       
    // حساب حجم اللوت بناءً على نسبة المخاطرة
       
    double accountBalance AccountBalance();
       
    double riskAmount accountBalance RiskPercent 100.0;
       
    double lotSize riskAmount / (StopLossPips MarketInfo(Symbol(), MODE_MARGINREQUIRED) * MarketInfo(Symbol(), MODE_MARGINHEDGED));

       
    double minLotSize 0.01// الحد الأدنى لحجم اللوت
       
    double maxLotSize 100.00// الحد الأقصى لحجم اللوت
       
    double lotStep 0.01// تداخل الحجم

       // التحقق من صحة حجم اللوت ومطابقته لقواعد الوسيط
       
    if (lotSize minLotSize || lotSize maxLotSize || MathMod(lotSizelotStep) != 0)
       {
          Print(
    "حجم اللوت  غير صالح. يرجى التحقق من قواعد وسيط التداول.");
          return(
    INIT_FAILED);
       }

       
    // حساب مستويات وقف الخسارة وأمر الربح
       
    double buyStop averagePrice StopLossPips Point;
       
    double buyLimit averagePrice TakeProfitPips Point;
       
    double buyTrailingStop TrailingStopPips Point;
       
    double buyTrailingStep TrailingStepPips Point;

       
    // فتح صفقة شرائية
       
    ticketBuy OrderSend(Symbol(), OP_BUYlotSizeMarketInfo(Symbol(), MODE_ASK), SlippagebuyStopbuyLimit""0clrNONEclrNONE);

       
    // التحقق من إغلاق الصفقات عند انتهاء الوقت
       
    if (currentTime >= closeTime)
       {
          
    int totalOrders OrdersTotal();
          for (
    int i totalOrders 1>= 0i--)
          {
             if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
             {
                if (
    OrderType() == OP_BUY || OrderType() == OP_SELL)
                {
                   
    ClosePosition(OrderTicket());
                }
             }
          }
       }

       return(
    INIT_SUCCEEDED);
    }

    // دالة OnTick() لا تحتاج إلى تعديل، فهي مستخدمة لإغلاق الصفقات عند انتهاء الوقت.

    bool ClosePosition(int ticket)
    {
       if (
    OrderClose(ticketOrderLots(), MarketInfo(OrderSymbol(), MODE_BID), SlippageclrNONE))
       {
          Print(
    "تم إغلاق الصفقة بنجاح.");
          return 
    true;
       }
       else
       {
          
    int error GetLastError();
          Print(
    "حدث خطأ أثناء إغلاق الصفقة. رمز الخطأ: "error);
          return 
    false;
       } 


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17