النتائج 1 إلى 4 من 4
  1. #1
    الصورة الرمزية m_B_
    m_B_ غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2019
    الإقامة
    السعودية
    المشاركات
    85

    افتراضي مساعدة من الخبراء لو تسمحوا

    السلام عليكم يا اخوة
    هذا الكود هو كود اول اكسبيرت لى المشكلة انه لا يعمل حاولت كثيرا ان اجد الخطا حيث انه لا يقوم بارسال اوامر الشراء والبيع فى الباك تيست ولا اجد الخطأ به
    كود PHP:
    //+------------------------------------------------------------------+
    //|                                         expert  .mq4 |
    //|                        Copyright 2023, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+

    #property strict
    //--- input parameters
    input int MagicNumber=55555;

    input double  Lots=0.1;
    input double   TakeProfit=10.0;
    input double   StopLoss=10.0;
    input int MaxTrades=0;
    input bool UseMultiplier=true;
    input double Multiplier=2;
    input int Step=20;

    input string info1=" Bollinger Bands Settings on frame 15 min";
    input int period1=55;
    input int shift1=0;
    input double deviation10=2;
    input ENUM_APPLIED_PRICE ApplyTo=PRICE_CLOSE;

    input string info2=" Bollinger Bands Settings on frame 1 min";
    input int period2=55;
    input int shift2=0;
    input double deviation2=2;
    input ENUM_APPLIED_PRICE ApplyTo2=PRICE_CLOSE;

    input string info3=" Bollinger Bands Settings on frame 1 min";
    input int period3=200;
    input int shift3=0;
    input int deviation3=2;
    input ENUM_APPLIED_PRICE ApplyTo3=PRICE_CLOSE;

    input string info4=" Bollinger Bands Settings on frame 5 min";
    input int period4=200;
    input int shift4=0;
    input int deviation4=2;
    input ENUM_APPLIED_PRICE ApplyTo4=PRICE_CLOSE;

    input string info5=" stochastic Settings on frame 1 min";
    input ENUM_MA_METHOD MA_Method5=MODE_SMA;
    input int price_field=0;
    input double OverSold=20;
    input double OverBought=80;

    double point;
    int digits,P;
    datetime Time0;
    double Lot_Decimal;

    //-------------------------------------------------------------------------------------------------------------------------------------
    int OnInit()
      {
       if(
    MarketInfo(Symbol(),MODE_MINLOT)<0.1)
          
    Lot_Decimal=2;
       else
          
    Lot_Decimal=1;
       if(
    _Digits==|| _Digits==3)
          
    P=10;
       else
          
    P=1;
       if(
    _Digits<4)
         {
          
    point=0.01;
         }
       else
         {
          
    point=0.0001;
         }
       return(
    0);
      }
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason) {  };
    //+------------------------------------------------------------------+
    //تعريف الدوال المهمة التى سيتم استخدمها
    //sto1=على فريم الدقيقة
    double stochastic()  {   double stoch=iStochastic(Symbol(),1,55,37,7,1,0,MODE_MAIN,0);
       return(
    stoch);  }
    //+------------------------------------------------------------------+
    //عل فريم الدقيقية
    double Bands1(int mode,int shift_)  {   double bands1=iBands(Symbol(),1,55,2,0,ApplyTo,mode,shift_);
       return(
    bands1); }
    //+------------------------------------------------------------------+
    //band=على فريم الخمس الدقائق
    double Bands2(int mode,int shift_) { double bands2=iBands(Symbol(),5,200,2,0,ApplyTo,mode,shift_);
       return(
    bands2); }
    //+------------------------------------------------------------------+
    //band=على فريم الربع ساعة
    double Bands3(int mode,int shift_) {   double bands3=iBands(Symbol(),15,55,2,0,ApplyTo,mode,shift_);
      return(
    bands3);}
    //------------------------------------------------------------------------------------------
    //             شرط اغلاق الصفقات
    //وصول السعر الى ربح عشر نقاط من  الصفقة الاولى
    //------------------------------------------------------------------------------------------------
    //شرط عدم تخطى الصفقات اكثر من عدد معين بحيث لا يغرق الحساب فى عدد صفقات كتيره
    int orderscnt(int type)
      {
       
    int cnt=0;
       for(
    int i=0i<OrdersTotal(); i++)
         {
          if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            {
             if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber() && OrderType()==type)
               {
                
    cnt++;
               }
            }
         }
       return(
    cnt);
      }
    //-------------------------------------------------------------------------------------------------

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
      {

    //الشراء
    //بعيد عن المتوسط بعدد كويس من النقط + الاستو فى تشبع + ملامسة الحد السفلى للبولينجر على حميع الفريمات

       
    if(Ask <= Bands1(MODE_LOWER,1)
          && 
    Ask <= Bands2(MODE_LOWER,1)&& Ask <= Bands3(MODE_LOWER,1)
          && 
    stochastic()<OverSold )
         {
          
    int ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),3*P,StopLoss,TakeProfit,"EA",MagicNumber,0,Blue);
          
    PlaySound("Alert.wav");
         }
      
    //البيع
    //الاستو فى تشبع+ملامسة الحد العلوى للبولينجر+بعيد عن المتوسط بعدد كافى من النقط

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
        
    if(Bid >= Bands1(MODE_UPPER,1) && Bid >= Bands2(MODE_UPPER,1)
       && 
    Bid >= Bands3(MODE_UPPER,1) && stochastic()>=OverBought )
      {
      
    int ticket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),3*P,StopLoss,TakeProfit,"EA",MagicNumber,0,Blue);
       
    PlaySound("Alert.wav");
      }}

      
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+

    void CloseOrders(int type)
      {
       for(
    int cnt=0cnt<OrdersTotal(); cnt++)
         {
          
    bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
            {
             if(
    OrderType()==OP_BUY)
               {
                
    bool close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),3*P);
               }
             if(
    OrderType()==OP_SELL)
               {
              
    bool close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),3*P);
               }
            }
         }
      } 
    توقيع العضو
    حتى هذا سيمضى

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

    افتراضي

    كود PHP:
    //+------------------------------------------------------------------+
    //|                                         expert  .mq4 |
    //|                        Copyright 2023, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+

    #property strict
    //--- input parameters
    input int MagicNumber=55555;

    input double  Lots=0.1;
    input double   TakeProfit=10.0;
    input double   StopLoss=10.0;
    input int MaxTrades=0;
    input bool UseMultiplier=true;
    input double Multiplier=2;
    input int Step=20;

    input string info1=" Bollinger Bands Settings on frame 15 min";
    input int period1=55;
    input int shift1=0;
    input double deviation10=2;
    input ENUM_APPLIED_PRICE ApplyTo=PRICE_CLOSE;

    input string info2=" Bollinger Bands Settings on frame 1 min";
    input int period2=55;
    input int shift2=0;
    input double deviation2=2;
    input ENUM_APPLIED_PRICE ApplyTo2=PRICE_CLOSE;

    input string info3=" Bollinger Bands Settings on frame 1 min";
    input int period3=200;
    input int shift3=0;
    input int deviation3=2;
    input ENUM_APPLIED_PRICE ApplyTo3=PRICE_CLOSE;

    input string info4=" Bollinger Bands Settings on frame 5 min";
    input int period4=200;
    input int shift4=0;
    input int deviation4=2;
    input ENUM_APPLIED_PRICE ApplyTo4=PRICE_CLOSE;

    input string info5=" stochastic Settings on frame 1 min";
    input ENUM_MA_METHOD MA_Method5=MODE_SMA;
    input int price_field=0;
    input double OverSold=20;
    input double OverBought=80;

    double point;
    int digits,P;
    datetime Time0;
    double Lot_Decimal;

    //-------------------------------------------------------------------------------------------------------------------------------------
    int OnInit()
      {
       if(
    MarketInfo(Symbol(),MODE_MINLOT)<0.1)
          
    Lot_Decimal=2;
       else
          
    Lot_Decimal=1;
       if(
    _Digits==|| _Digits==3)
          
    P=10;
       else
          
    P=1;
       if(
    _Digits<4)
         {
          
    point=0.01;
         }
       else
         {
          
    point=0.0001;
         }
       return(
    0);
      }
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason) {  };
    //+------------------------------------------------------------------+
    //تعريف الدوال المهمة التى سيتم استخدمها
    //sto1=على فريم الدقيقة
    double stochastic()  {   double stoch=iStochastic(Symbol(),1,55,37,7,1,0,MODE_MAIN,0);
       return(
    stoch);  }
    //+------------------------------------------------------------------+
    //عل فريم الدقيقية
    double Bands1(int mode,int shift_)  {   double bands1=iBands(Symbol(),1,55,2,0,ApplyTo,mode,shift_);
       return(
    bands1); }
    //+------------------------------------------------------------------+
    //band=على فريم الخمس الدقائق
    double Bands2(int mode,int shift_) { double bands2=iBands(Symbol(),5,200,2,0,ApplyTo,mode,shift_);
       return(
    bands2); }
    //+------------------------------------------------------------------+
    //band=على فريم الربع ساعة
    double Bands3(int mode,int shift_) {   double bands3=iBands(Symbol(),15,55,2,0,ApplyTo,mode,shift_);
      return(
    bands3);}
    //------------------------------------------------------------------------------------------
    //             شرط اغلاق الصفقات
    //وصول السعر الى ربح عشر نقاط من  الصفقة الاولى
    //------------------------------------------------------------------------------------------------
    //شرط عدم تخطى الصفقات اكثر من عدد معين بحيث لا يغرق الحساب فى عدد صفقات كتيره
    int orderscnt(int type)
      {
       
    int cnt=0;
       for(
    int i=0i<OrdersTotal(); i++)
         {
          if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            {
             if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber() && OrderType()==type)
               {
                
    cnt++;
               }
            }
         }
       return(
    cnt);
      }
    //-------------------------------------------------------------------------------------------------

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
      {
      
    double BTP=0,STP=0,BSL=0,SSL=0;
      if(
    StopLoss>0){BSL=Ask-StopLoss*point;SSL=Bid+StopLoss*point;}
      if(
    TakeProfit>0){BTP=Ask+TakeProfit*point;STP=Bid-TakeProfit*point;} 
    //الشراء
    //بعيد عن المتوسط بعدد كويس من النقط + الاستو فى تشبع + ملامسة الحد السفلى للبولينجر على حميع الفريمات

       
    if(Ask <= Bands1(MODE_LOWER,1)
          && 
    Ask <= Bands2(MODE_LOWER,1)&& Ask <= Bands3(MODE_LOWER,1)
          && 
    stochastic()<OverSold )
         {
          
    int ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),3,BSL,BTP,"EA",MagicNumber,0,Blue);
          
    PlaySound("Alert.wav");
         }
      
    //البيع
    //الاستو فى تشبع+ملامسة الحد العلوى للبولينجر+بعيد عن المتوسط بعدد كافى من النقط

    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
        
    if(Bid >= Bands1(MODE_UPPER,1) && Bid >= Bands2(MODE_UPPER,1)
       && 
    Bid >= Bands3(MODE_UPPER,1) && stochastic()>=OverBought )
      {
      
    int ticket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3,SSL,STP,"EA",MagicNumber,0,Blue);
       
    PlaySound("Alert.wav");
      }}

      
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+

    void CloseOrders(int type)
      {
       for(
    int cnt=0cnt<OrdersTotal(); cnt++)
         {
          
    bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
            {
             if(
    OrderType()==OP_BUY)
               {
                
    bool close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),3*P);
               }
             if(
    OrderType()==OP_SELL)
               {
              
    bool close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),3*P);
               }
            }
         }
      } 
    توقيع العضو
    مطور برمجيات, طالب علم...
    Even if you are not ready for the day, it cannot always be night

  3. #3
    الصورة الرمزية GH_EXE
    GH_EXE غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    المغرب
    المشاركات
    105

    افتراضي

    فيه خطأ بالنسبة لدالة فتح الصفقات بحيث متغير digits معرفه ولم تعطيه اي قيمة في حين موجود متغير افتراضي في اللغة يلعب هدا الدور واللي اسمه Digits
    بالنسبة لقيمة الانزلاق السعري المقبول اللي هو 3 نقاط مثلا ماتحتاج تحوله بدلالة بيب خليه بالنقاط
    بالنسبة لستوب لوز والهدف لا تضعه بالنقاط في دالة ordersend لابد من وضع الستوب لوز والهدف كسعر لابد ان تحسبه قبلا ثم تضعه في متغير تم ترسله في الدالة
    توقيع العضو
    مطور برمجيات, طالب علم...
    Even if you are not ready for the day, it cannot always be night

  4. #4
    الصورة الرمزية GH_EXE
    GH_EXE غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    المغرب
    المشاركات
    105

    افتراضي

    اخي من الافضل تستعين بفيديوهات هده القناة راح تفيدك كثير في فهم اللغة
    https://www.youtube.com/@OrchardForex
    https://www.youtube.com/c/jimdandy1958
    توقيع العضو
    مطور برمجيات, طالب علم...
    Even if you are not ready for the day, it cannot always be night


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