صفحة 183 من 686 الأولىالأولى ... 83133173177178179180181182183184185186187188189193233283683 ... الأخيرةالأخيرة
النتائج 2,731 إلى 2,745 من 10285
  1. #2731
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة Jmeel مشاهدة المشاركة


    أستاذي عملت الدالة في اكسبيرت فقط للدالة و مافيش فيه اي اوامر وعند عمل كومبيلر بيعطي الرسالة 'double' - semicolon expected
    ياريت تشوف الأكسبيرت المرفق
    جرب الاكسيبرت بالمرفقات أستاذ جميل ، والمشكل كان فـ دالة

    كود PHP:
    void CheckTodayProfit() 
    انت وضعت اسم الدالة فقط ولم تضع شروط للدالة أو حتى الأقواس الخاصة بها .

    ونفس الخطـأ بالاكسيبرت الآخر مع إختلاف اسم الدالة
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 temp2.mq4‏ (1.8 كيلوبايت, المشاهدات 81)

  2. #2732
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي


    السلام عليكم أستاذ أسامه .. أنا في إنتظار الرد على هذه المشاركه بارك الله فيك
    https://forum.arabictrader.com/t37612-181.html#2704
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  3. #2733
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,610

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة spiders101 مشاهدة المشاركة
    جرب الاكسيبرت بالمرفقات أستاذ جميل ، والمشكل كان فـ دالة

    كود PHP:
    void CheckTodayProfit() 
    انت وضعت اسم الدالة فقط ولم تضع شروط للدالة أو حتى الأقواس الخاصة بها .

    ونفس الخطـأ بالاكسيبرت الآخر مع إختلاف اسم الدالة
    اخي سبايدر شكرا لتعاونك لكن لاحظت انك الغيت الدالة وانا احتاج يكون الأمر بداخل دالة لسهولة الأستدعاء ، عموما ارفقت لك كامل الأكسبيرت ياريت تصححة لكن مع الأحتفاظ بالدالة والتأكد من توقف الأكسبيرت لباقي اليوم اذا المحصلة ربح . تحياتي لك
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

  4. #2734
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة Jmeel مشاهدة المشاركة


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

    الخطـأ بالدالة التالية
    كود PHP:
    void CustomCode10()
    {
        
    double dayProfit(){ 
            
    double pips,pipsb,pipss;
            for(
    int i=OrdersHistoryTotal();i>=0;i--){ 
                
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
                if(
    iTime(Symbol(),1440,0)<OrderOpenTime()&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
                    if(
    OrderType()==OP_BUY)pipsb+=(OrderClosePrice()-OrderOpenPrice());
                    if(
    OrderType()==OP_SELL)pipss+=(OrderOpenPrice()-OrderClosePrice());
                    
    pips=pipsb+pipss;
                }
            }
            return(
    pips);
            
        } 
    وبالنسبة لتوقف الأكسبيرت لباقي اليوم اذا المحصلة ربح لا أعلم أين المشكلة ، استاذ اسامة سوف يفيدك أكثر مني لمراجعة الدالة
    الملفات المرفقة الملفات المرفقة

  5. #2735
    الصورة الرمزية xcv114
    xcv114 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2010
    الإقامة
    مصر
    المشاركات
    1,022

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    يا أخ جميل الدالة كما وضحها أستاذ أسامة ( وخد بالك إنك بعد ما تطرح سعر إغلاق الصفقة من سعر الإفتتاح لازم تقسم ÷ point ) عشان ينتج لك فرق النقاط لتستطيع مقارنته مع DailyTp

    وكما قال لك أخونا إسبايدر ما ينفعش تعرف دالة داخل دالة يعني ما ينفعش الشكل ده
    كود PHP:
    void CustomCode10()
    {
        
    double dayProfit(){ 
    يعني المفروض الدالة تكون بالشكل ده
    كود PHP:
    double dayProfit(){ 
            
    double profit;
     for(
    int i=OrdersHistoryTotal();i>=0;i--){
      
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderOpenTime()>=iTime(Symbol(),1440,0)){
       if(
    OrderType()==OP_BUY)profit+=(OrderClosePrice()-OrderOpenPrice())/Point;
       if(
    OrderType()==OP_SELL)profit+=(OrderOpenPrice()-OrderClosePrice())/Point;
      }
     }
    return(
    profit);

    وبالنسبة لسؤالك إنك محتاج دالة void CustomCode10() عشان بتستدعيها في دالة إستارت
    دي بسيطة ما تستديعهاش وإستدعي بدل منها dayProfit()

    بالشكل ده بدل من إسم الدالة المحذوفة
    كود PHP:
    void OnEveryTick7()
    {
        if (
    true == false && falsePipValue 10;
        if (
    true && (NDigits == || NDigits == 5)) PipValue 10;
        
        
    dayProfit();
        
    TechnicalAnalysis2x15();
        
    TechnicalAnalysis2x16();
        

    وعلى فكرة إنت أصلا مش محتاج تستعي دالة dayProfit() في دالة void OnEveryTick7
    لإنك إستدخمتها في دالة إستارت بالشكل ده
    كود PHP:
    if (dayProfit()>=(DailyTP-1)*Point&&UseDialyTP==true)return(0); 
    وبالتالي لن تحتاج لإستدعائها مرة أخرى
    *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
    وده هيكون الكود من أول دالة إستارت حتى دالة حساب النقاط
    كود PHP:
    int start()
    {
        if (
    Bars 10)
        {
            
    Comment("Not enough bars");
            return (
    0);
        }
        if (
    Terminated == true)
        {
            
    Comment("EA Terminated.");
            return (
    0);
        }
        if (
    dayProfit()>=(DailyTP-1)*Point&&UseDialyTP==true)return(0);
        
    OnEveryTick7();
        
    }

    void OnEveryTick7()
    {
        if (
    true == false && falsePipValue 10;
        if (
    true && (NDigits == || NDigits == 5)) PipValue 10;
        
        
    dayProfit();
        
    TechnicalAnalysis2x15();
        
    TechnicalAnalysis2x16();
        
    }
    ///////////////////////////////////////////////Void//////////////////Void//////////////////Void//////////////////Void/////////

        
    double dayProfit(){ 
            
    double profit;
     for(
    int i=OrdersHistoryTotal();i>=0;i--){
      
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderOpenTime()>=iTime(Symbol(),1440,0)){
       if(
    OrderType()==OP_BUY)profit+=(OrderClosePrice()-OrderOpenPrice())/Point;
       if(
    OrderType()==OP_SELL)profit+=(OrderOpenPrice()-OrderClosePrice())/Point;
      }
     }
    return(
    profit);

    لغاية كده الكود إللي فوق ده تمام . بس في ملحوظة بسيطة
    لما تيجي تعمل دالة بتعرفها حسب نوع الرقم الناتج منها

    يعني لو الدالة ستعود بناتج صحيح يبقى تعرفها
    كود PHP:
    int dayProfit(){ 
    لو هتعود برقم عشري يبقى تعرفها
    كود PHP:
    double dayProfit(){ 
    ولو مش هتعود بأي رقم يبقى تعرفها
    كود PHP:
    void dayProfit(){ 
    يعني ما ينفعش تعرف الدالة كده void CustomCode10() وتضع في الأخر return(pips);

    وأسف على الإطالة

  6. #2736
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,610

    افتراضي

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

  7. #2737
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة spiders101 مشاهدة المشاركة
    تم التعديل ولكن فـ هذه الحالة قيمة الـ profitNumber قد تكون أرقام عشرية

    مثل 1.1 ، 3.7 ، 6.9 ، ....

    وأنا أريد القيم صحيحة حتي يكون حجم اللوت الجديد

    أرقام صحيحة ، هل أقوم بإضافة
    كود PHP:
    NormalizeDouble(AccountProfit()/Money_Account
    أم إضافة
    كود PHP:
    MathFloor(profitNumber)*Add_Lot 
    ولي سؤال ما الخطـأ فـ الحلقة التي وضعتها بالمشاركة السابقة ولماذا لم تعمل !!
    إذا كنت تريد تقريب الرقم فسوف تستخدم NormalizeDouble فإذا كان الناتج مثلا 2.7 فسوف يتم تقريبها
    إلى 3
    لكن إذا كنت تريد أخذ الرقم الصحيح فقط وإهمال الرقم العشري فسوف تستخدم MathFloor
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  8. #2738
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة dentist_hussein مشاهدة المشاركة



    أليس من الممكن أستاذ أسامه أن أعطي للصفقات التي تفتح عن طريق الأوامر المعلقه ماجيك نمبر يختلف عن الصفقات التي تفتح ماركت وتدخل في المضاعفات و أستخدم دوال لكل منهما وكل بالماجيك نمبر الخاص به
    مثلا إستخدام دالتين خاصه بماجيك نمبر الأوامر المعلقه و دالتين لأوامر الماركت للبحث في التاريخ عن آخر و أول صفقات :
    كود PHP:
     ////// HISTORICAL LAST ONES FOR PENDING ORDERS BY MAGIC ///
        
       
    string lastP
    for(
    int i=OrdersHistoryTotal();i>=0;i--) 
     {
       
    OrderSelect(iSELECT_BY_POS,MODE_HISTORY);  
       if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberP)
         
        {
        
        
    double LastP_lots,LastP_SL,LastP_openpriceLastP_ordertype
        
           
    //for buy order
           
    if(OrderType()==OP_BUY   && OrderClosePrice()>=OrderOpenPrice()) lastP="profit";
           if(
    OrderType()==OP_BUY   && OrderClosePrice()<=OrderOpenPrice()) lastP="loss";
            
    LastP_lots=OrderLots();
            
    LastP_SL=OrderStopLoss();
            
    LastP_openprice=OrderOpenPrice();
            
    LastP_ordertype=OrderType() ;
      
           
    //for SELL order
           
    if(OrderType()==OP_SELL  && OrderClosePrice()<=OrderOpenPrice()) lastP="profit";
           if(
    OrderType()==OP_SELL  && OrderClosePrice()>=OrderOpenPrice()) lastP="loss";
           
    LastP_lots=OrderLots();
           
    LastP_SL=OrderStopLoss();
           
    LastP_openprice=OrderOpenPrice();
           
    LastP_ordertype=OrderType() ;
           break;
        }
      }
     
    //============================
       
        ////// HISTORICAL LAST ONES FOR MARKET ORDERS BY MAGIC ///
        
       
    string lastM
    for(
    int ii=OrdersHistoryTotal();ii>=0;ii--) 
     {
       
    OrderSelect(iiSELECT_BY_POS,MODE_HISTORY);  
       if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         
        {
        
        
    double LastM_lots,LastM_SL,LastM_openpriceLastM_ordertype
        
           
    //for buy order
           
    if(OrderType()==OP_BUY   && OrderClosePrice()>=OrderOpenPrice()) lastM="profit";
           if(
    OrderType()==OP_BUY   && OrderClosePrice()<=OrderOpenPrice()) lastM="loss";
            
    LastM_lots=OrderLots();
            
    LastM_SL=OrderStopLoss();
            
    LastM_openprice=OrderOpenPrice();
            
    LastM_ordertype=OrderType() ;
      
           
    //for SELL order
           
    if(OrderType()==OP_SELL  && OrderClosePrice()<=OrderOpenPrice()) lastM="profit";
           if(
    OrderType()==OP_SELL  && OrderClosePrice()>=OrderOpenPrice()) lastM="loss";
           
    LastM_lots=OrderLots();
           
    LastM_SL=OrderStopLoss();
           
    LastM_openprice=OrderOpenPrice();
           
    LastM_ordertype=OrderType() ;
           break;
        }
      }
     
    //========================  
           
        ////// HISTORICAL FIRST ONES FOR MARKET ORDERS BY MAGIC ///  
           
          
              
    string firstM 
    for(
    int iii=OrdersHistoryTotal();iii<=1;iii--) 
     {
       
    OrderSelect(iiiSELECT_BY_POS,MODE_HISTORY);  
       if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         
        {
        
        
    double firstM_lots,firstM_SL,firstM_openpricefirstM_ordertype
        
           
    //for buy order
           
    if(OrderType()==OP_BUY   && OrderClosePrice()>=OrderOpenPrice()) firstM="profit";
           if(
    OrderType()==OP_BUY   && OrderClosePrice()<=OrderOpenPrice()) firstM="loss";
            
    firstM_lots=OrderLots();
            
    firstM_SL=OrderStopLoss();
            
    firstM_openprice=OrderOpenPrice();
            
    firstM_ordertype=OrderType() ;
      
           
    //for SELL order
           
    if(OrderType()==OP_SELL  && OrderClosePrice()<=OrderOpenPrice()) firstM="profit";
           if(
    OrderType()==OP_SELL  && OrderClosePrice()>=OrderOpenPrice()) firstM="loss";
           
    firstM_lots=OrderLots();
           
    firstM_SL=OrderStopLoss();
           
    firstM_openprice=OrderOpenPrice();
           
    firstM_ordertype=OrderType() ;
           break;
        }
      }
    //===========================   
           ////// HISTORICAL FIRST ONES FOR PENDING ORDERS BY MAGIC ///  
           
          
              
    string firstP 
    for(
    int iiii=OrdersHistoryTotal();iiii<=1;iiii--) 
     {
       
    OrderSelect(iiiiSELECT_BY_POS,MODE_HISTORY);  
       if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberP)
         
        {
        
        
    double firstP_lots,firstP_SL,firstP_openpricefirstP_ordertype
        
           
    //for buy order
           
    if(OrderType()==OP_BUY   && OrderClosePrice()>=OrderOpenPrice()) firstP="profit";
           if(
    OrderType()==OP_BUY   && OrderClosePrice()<=OrderOpenPrice()) firstP="loss";
            
    firstP_lots=OrderLots();
            
    firstP_SL=OrderStopLoss();
            
    firstP_openprice=OrderOpenPrice();
            
    firstP_ordertype=OrderType() ;
      
           
    //for SELL order
           
    if(OrderType()==OP_SELL  && OrderClosePrice()<=OrderOpenPrice()) firstP="profit";
           if(
    OrderType()==OP_SELL  && OrderClosePrice()>=OrderOpenPrice()) firstP="loss";
           
    firstP_lots=OrderLots();
           
    firstP_SL=OrderStopLoss();
           
    firstP_openprice=OrderOpenPrice();
           
    firstP_ordertype=OrderType() ;
           break;
        }
      } 
    و أقوم بعمل داله تعود بنوع آخر أمر معلق بالماجيك أيضا :
    كود PHP:
     
        double LastPend
    (){
     for(
    int i=0;i<OrdersHistoryTotal();i++){
     
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
     if(
    OrderSymbol()==Symbol() && MagicNumberP==OrderMagicNumber()&& (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)){
      
    double LastPend=OrderType();
         }
        } 
    return(
    LastPend);
      } 
    ثم تكون الشروط لإعادة وضع الأوامر المعلقة الشراء و البيع من نفس النقطة بعد الوصول للهدف تكون كالتالي :
    كود PHP:
     ///////////////////4-RE PUT BUY PENDING////////////
           
    if( lastP=="profit" && LastPend()==OP_BUYSTOP   )
           
    double bl=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_BUYLIMIT,Lots,bl,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_BUYLIMIT   )
           
    double bss=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_BUYSTOP,Lots,bss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
    //======================
           
           
            ///////////////////3-RE PUT SELL PENDING////////////
           
    if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           
    double sll=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_SELLLIMIT   )
           
    double sss=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_SELLSTOP,Lots,sss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
    //======================= 
    و تكون شروط مضاعفة العقود الخاسرة هكذا :
    كود PHP:
      ////////////////////////6-MULTIPLIERS FOR LOSS BUY//////////////////////
         
          
    if( X_Multiplier && lastP=="loss" && LastPend()==OP_BUYSTOP||LastPend()==OP_BUYLIMIT  )
           
           
    double newLot1=Multiplier*LastP_lots;
           {
           
         if(
    StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;}
        if(
    TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}

               
                
    OrderSend(Symbol(),OP_BUY,newLot1,Ask,3*Q,SL,TP,"Expert EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav");
                 
    Time0=Time[0];
                 }
           
    /////////
           
           
    if( X_Multiplier && lastM=="loss" && LastM_ordertype==OP_BUY  )
           
           
    double newLot2=Multiplier*LastM_lots;
           {
           
         if(
    StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;}
        if(
    TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}

               
                
    OrderSend(Symbol(),OP_BUY,newLot2,Ask,3*Q,SL,TP,"Expert EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav");
                 
    Time0=Time[0];
                 }
                 
                  
    ////////////////////////5-MULTIPLIERS FOR LOSS SELLS//////////////////////
         
          
    if( X_Multiplier && lastP=="loss" && LastPend()==OP_SELLSTOP||LastPend()==OP_SELLLIMIT  )
           
           
    double newLot3=Multiplier*LastP_lots;
           {
           
          if(
    StopLoss==0||HideSL){SL=0;}else{SL=Bid+StopLoss*point;}
        if(
    TakeProfit==0||HideTP){TP=0;}else{TP=Bid-TakeProfit*point;}
               
                
    OrderSend(Symbol(),OP_SELL,newLot3,Bid,3*Q,SL,TP,"Dentist_Hussein EA",MagicNumber,0,Red); 
                 
    PlaySound("Alert.wav");
                
    Time0=Time[0];
                 
              }
      
           
    /////////
           
           
    if( X_Multiplier && lastM=="loss" && LastM_ordertype==OP_SELL  )
           
           
    double newLot4=Multiplier*LastM_lots;
           {
           
         if(
    StopLoss==0||HideSL){SL=0;}else{SL=Bid+StopLoss*point;}
        if(
    TakeProfit==0||HideTP){TP=0;}else{TP=Bid-TakeProfit*point;}
               
                
    OrderSend(Symbol(),OP_SELL,newLot4,Bid,3*Q,SL,TP,"Dentist_Hussein EA",MagicNumber,0,Red); 
                 
    PlaySound("Alert.wav");
                
    Time0=Time[0];
                 
              }
      
       
    //================================ 
    و تكون شروط وضع أمر معلق مره أخرى بعد إصابة المضاعفات الهدف و توضع الأوامر من نفس نقطة آخر أمر تم مضاعفته :
    كود PHP:
     //////////////////8- PUT BUY PENDING AFTER PROFIT /////////////
          
          
    if(  lastM=="profit" &&  LastM_ordertype==OP_BUY  )
          
    double bsss=firstP_openprice ;
          {
           
    OrderSend(Symbol(),OP_BUYSTOP,Lots,bsss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
          
          
    //////////////////7- PUT BUY PENDING AFTER PROFIT /////////////
          
          
    if(  lastM=="profit" &&  LastM_ordertype==OP_SELL  )
          
    double ssss=firstP_openprice ;
          {
           
    OrderSend(Symbol(),OP_SELLSTOP,Lots,ssss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
       
        
    //==================== 
    معلشي هتعبك معايا أخي أسامه .. رجاء مراجعة أكواد الدوال و الشروط
    و جزاك الله كل خير .

    [/PHP]profit

    في البداية دالة حفظ بيانات آخر صفقه لا تحتاج إلى كتابة حجم اللوت وسعر الإفتتاح أكثر من مره
    كود PHP:
     string lastM
     for(
    int ii=OrdersHistoryTotal();ii>=0;ii--) 
     {
       
    OrderSelect(iiSELECT_BY_POS,MODE_HISTORY);  
       if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         
        {
        
        
    double LastM_lots,LastM_SL,LastM_openpriceLastM_ordertype
        
           
    //for buy order
           
    if(OrderType()==OP_BUY   && OrderClosePrice()>=OrderOpenPrice()) lastM="profit";
           if(
    OrderType()==OP_BUY   && OrderClosePrice()<=OrderOpenPrice()) lastM="loss";
           
           
    //for SELL order
           
    if(OrderType()==OP_SELL  && OrderClosePrice()<=OrderOpenPrice()) lastM="profit";
           if(
    OrderType()==OP_SELL  && OrderClosePrice()>=OrderOpenPrice()) lastM="loss";
           
    LastM_lots=OrderLots();
           
    LastM_SL=OrderStopLoss();
           
    LastM_openprice=OrderOpenPrice();
           
    LastM_ordertype=OrderType() ;
           break;
        }
      } 
    أما بالنسبه للخطأ لديك فهو شرط وضع الأوامر المعلقه
    كود PHP:
     if( lastP=="profit" && LastPend()==OP_BUYSTOP   )
           
    double bl=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_BUYLIMIT,Lots,bl,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_BUYLIMIT   )
           
    double bss=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_BUYSTOP,Lots,bss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    بهذه الطريقة أنت لم تضع الأوامر إعتمادا على الشروط الصحيح
    كود PHP:
      if( lastP=="profit" && LastPend()==OP_BUYSTOP   )
           {
           
    double bl=LastP_openprice ;
           
    OrderSend(Symbol(),OP_BUYLIMIT,Lots,bl,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_BUYLIMIT   )
           {
           
    double bss=LastP_openprice ;
           
    OrderSend(Symbol(),OP_BUYSTOP,Lots,bss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
            
    //============================
           
           
            ///////////////////===3-RE PUT SELL PENDING===////////////
           
    if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           {
           
    double sll=LastP_openprice ;
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_SELLLIMIT   )
           {
           
    double sss=LastP_openprice ;
           
    OrderSend(Symbol(),OP_SELLSTOP,Lots,sss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    باقي الأكواد صحيحه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  9. #2739
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    نعم التعديل صحيح
    الداله OrdersTotal تعود بعدد الصفقات الكلية المفتوحه سواء بإكسبرت أو يدويا لذلك نقوم بعمل دالة اخرى لمعرفة عدد الصفقات التي فتحها الإكسبرت
    كود PHP:
     int orderscnt(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol()&&OrderType()==type && MagicNumber==OrderMagicNumber()){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    ولكن أنا هنا عند إستخدام الإغلاق لصفقات أكثر من زوج يجب إستخدام دالة OrdersTotal() وليس دالة orderscnt ، وبالنسبة لدالة AccountProfit( ) هى ايضا تعود بقيمة البروفت لكل الصفقات على كل الأزواج !!

  10. #2740
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة dentist_hussein مشاهدة المشاركة

    السلام عليكم أستاذ أسامه .. أنا في إنتظار الرد على هذه المشاركه بارك الله فيك
    https://forum.arabictrader.com/t37612-181.html#2704
    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    في البداية دالة حفظ بيانات آخر صفقه لا تحتاج إلى كتابة حجم اللوت وسعر الإفتتاح أكثر من مره
    كود PHP:
     string lastM
     for(
    int ii=OrdersHistoryTotal();ii>=0;ii--) 
     {
       
    OrderSelect(iiSELECT_BY_POS,MODE_HISTORY);  
       if(
    OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         
        {
        
        
    double LastM_lots,LastM_SL,LastM_openpriceLastM_ordertype
        
           
    //for buy order
           
    if(OrderType()==OP_BUY   && OrderClosePrice()>=OrderOpenPrice()) lastM="profit";
           if(
    OrderType()==OP_BUY   && OrderClosePrice()<=OrderOpenPrice()) lastM="loss";
           
           
    //for SELL order
           
    if(OrderType()==OP_SELL  && OrderClosePrice()<=OrderOpenPrice()) lastM="profit";
           if(
    OrderType()==OP_SELL  && OrderClosePrice()>=OrderOpenPrice()) lastM="loss";
           
    LastM_lots=OrderLots();
           
    LastM_SL=OrderStopLoss();
           
    LastM_openprice=OrderOpenPrice();
           
    LastM_ordertype=OrderType() ;
           break;
        }
      } 
    أما بالنسبه للخطأ لديك فهو شرط وضع الأوامر المعلقه
    كود PHP:
     if( lastP=="profit" && LastPend()==OP_BUYSTOP   )
           
    double bl=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_BUYLIMIT,Lots,bl,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_BUYLIMIT   )
           
    double bss=LastP_openprice ;
           {
           
    OrderSend(Symbol(),OP_BUYSTOP,Lots,bss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    بهذه الطريقة أنت لم تضع الأوامر إعتمادا على الشروط الصحيح
    كود PHP:
      if( lastP=="profit" && LastPend()==OP_BUYSTOP   )
           {
           
    double bl=LastP_openprice ;
           
    OrderSend(Symbol(),OP_BUYLIMIT,Lots,bl,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_BUYLIMIT   )
           {
           
    double bss=LastP_openprice ;
           
    OrderSend(Symbol(),OP_BUYSTOP,Lots,bss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
            
    //============================
           
           
            ///////////////////===3-RE PUT SELL PENDING===////////////
           
    if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           {
           
    double sll=LastP_openprice ;
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           }
           
           
           if( 
    lastP=="profit" && LastPend()==OP_SELLLIMIT   )
           {
           
    double sss=LastP_openprice ;
           
    OrderSend(Symbol(),OP_SELLSTOP,Lots,sss,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    باقي الأكواد صحيحه

    شكرا أخي أسامه ... و لكن لم أستطع فهم أين الخطأ بالظبط لأن الأكواد التي كتبتها حضرتك هي نفس الأكواد بالإكسبيرت ...
    معلشي لو توضيح أكثر لأن الإكسبيرت لا يضع أوامر ولا يعمل ...
    وجزاك الله خيرا
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  11. #2741
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

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

  12. #2742
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة spiders101 مشاهدة المشاركة
    ولكن أنا هنا عند إستخدام الإغلاق لصفقات أكثر من زوج يجب إستخدام دالة OrdersTotal() وليس دالة orderscnt ، وبالنسبة لدالة AccountProfit( ) هى ايضا تعود بقيمة البروفت لكل الصفقات على كل الأزواج !!
    نعم إذا كنت ستعتمد على أكثر من زوج فإستخدم OrdersTotal أو يمكنك تعديل الداله لحساب كل الصفقات المفتوحه بدون المقارنه بإستخدام نوع العمله
    AccountProfit تعود بقيمة الربح الحالي للحساب لكل الصفقات نعم
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  13. #2743
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة dentist_hussein مشاهدة المشاركة





    شكرا أخي أسامه ... و لكن لم أستطع فهم أين الخطأ بالظبط لأن الأكواد التي كتبتها حضرتك هي نفس الأكواد بالإكسبيرت ...
    معلشي لو توضيح أكثر لأن الإكسبيرت لا يضع أوامر ولا يعمل ...
    وجزاك الله خيرا
    عندما قمت بكتابة الجمله الشرطيه
    إستخدمت
    كود PHP:
     if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           
    double sll=LastP_openprice 
    وبما أنك لم تضع الأقواس فبهذا تكون إنتهت الجمله الشرطيه ويبقى تنفيذ الأمر
    كود PHP:
     {
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    فهذا الأمر لن يكون مرتبط بالجمله الشرطيه السابقه والتعديل الذي قمت بوضعه جعلت الأقواس تابعه للجمله الشرطيه
    كود PHP:
     if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           {
           
    double sll=LastP_openprice ;
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    حتى ينفذ الأمرين بداخلها
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  14. #2744
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي رد:موضوع مخصص للأسئلة البرمجية

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    عندما قمت بكتابة الجمله الشرطيه
    إستخدمت
    كود PHP:
     if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           
    double sll=LastP_openprice 
    وبما أنك لم تضع الأقواس فبهذا تكون إنتهت الجمله الشرطيه ويبقى تنفيذ الأمر
    كود PHP:
     {
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    فهذا الأمر لن يكون مرتبط بالجمله الشرطيه السابقه والتعديل الذي قمت بوضعه جعلت الأقواس تابعه للجمله الشرطيه
    كود PHP:
     if( lastP=="profit" && LastPend()==OP_SELLSTOP   )
           {
           
    double sll=LastP_openprice ;
           
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,sll,3,SL,TP,"Expert EA",MagicNumberP,0,Red);
           } 
    حتى ينفذ الأمرين بداخلها

    شكرا جزيلا أخي أسامة...
    قمت بتصحيح هذا الخطأ و لكن الإكسبيرت أيضا لا يعمل و لا يضع أوامر و لا أعلم أين المشكله ...
    برجاء الإطلاع ... و أعانك الله و جزاك الله كل خير .
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  15. #2745
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة spiders101 مشاهدة المشاركة
    استاذ اسامة ، لدي مشكلة بالاكسيبرت المرفق ، انا قمت بعمل بعض التعديلات على الاكسيبرت وإضافة بعض الأكواد وعمل في الباك تست ولكن عند متابعة الاكسيبرت لايف يعمل بعد وضعه مباشرة على الشارت وبعدها بفترة يتوقف الاكسيبرت ولايستجيب لأى شيء حتى خصائص الاكسيبرت لا أستطيع فتحها من على الشارت !! ، هل المشكلة من الاكسيبرت ام من المنصة !!
    هذا الخطأ يحدث غالبا عندما يدخل الكود في حلقة غير منتهيه فتجعل الإكسبرت يتوقف عندها هل قمت بإضافة أي تعديل قد يؤثر بهذا الشكل
    السبب من الإكسبرت وليس المنصه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

المواضيع المتشابهه

  1. موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
    By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 11
    آخر مشاركة: 15-12-2023, 02:03 PM
  2. عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
    By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملات
    مشاركات: 280
    آخر مشاركة: 27-08-2009, 10:30 PM

الاوسمة لهذا الموضوع


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