صفحة 174 من 689 الأولىالأولى ... 74124164168169170171172173174175176177178179180184224274674 ... الأخيرةالأخيرة
النتائج 2,596 إلى 2,610 من 10335
  1. #2596
    الصورة الرمزية spiders101
    spiders101 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2011
    الإقامة
    مصــر
    المشاركات
    935

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

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    حسب ما أرى في الشارت المرفق فالصفقات أغلقت تماما على النقاط المحققه ( إذا كنت تقصد الصفقات التي عليها سهم )
    فهي أغلقت على سعر إغلاق الشمعه السابقه عندما وصل السعر لها
    أيضا الأفضل أن تجعل شروط الإغلاق
    كود PHP:
    if(Bid<buys1||Ask>SeLLsl){CloseOrders();} 
    حتى في حال التحرك السريع للسعر وربما عدم المرور نقاط الأستوب فقد لا يغلق الإكسبرت الصفقات عندها
    قمت بتعديل الشروط ولكن مازالت المشكلة موجودة ، على كل حال انا استخدمت الدالة التى تعود بسعر إغلاق الشمعة السابقة
    كود PHP:
    double ClosePrice(){
    for(
    int i=0;i<OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
    int bar=iBarShift(Symbol(),0,OrderOpenTime(),false); // To Find current OrderOpenTime for Bar[0] then get closeprice to the previous Bar
    double ClosePrice=Close[bar+1];     
    }

    return(
    ClosePrice);            

    وشروط الإغلاق تعمل الآن بشكل صحيح ، جزاك الله خيرا

  2. #2597
    الصورة الرمزية fm4ever_fx
    fm4ever_fx غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2010
    المشاركات
    688

    افتراضي

    السلام عليكم اخواني هل يمكن عمل باك تست
    لاكسبرت يعمل علي مؤشر مربوط باكثر من عملة في نفس الوقت

    شكرا لكم
    توقيع العضو
    اللهم اكفني بحلالك عن حرامك واغنني بفضلك عن من سواك

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mesterex مشاهدة المشاركة
    السلام عليكم
    عندى سؤال بخصوص ال MQL5
    أنا الان فى مرحلة برمجة مؤشراتى على ال MQL4 و الحقيقة الاكواد كثيرة جدا المهم الان بالنسبة لل MQL5 هل المفروض انى ابرمج مؤشراتى بها ام ان الافضل ان اظل على ال MQL4 ؟
    و فى حالة اعتماد ال MQL5 المؤشرات السابقة لنا مش هنقدر نستخدمها مرة اخرى فماذا سيكون الحل؟
    وعليكم السلام ورحمة الله وبركاته
    الأفضل أن تتعلم الإثنين لكن أولا تبدأ ب mql4 ثم mql5 لكن في الفترة الحاليه لا أعتقد أن الميتاتريدر 5 سيكون له أهمية أكثر من ميتاتريدر 4 على الأقل خلال السنه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة fm4ever_fx مشاهدة المشاركة
    السلام عليكم اخواني هل يمكن عمل باك تست
    لاكسبرت يعمل علي مؤشر مربوط باكثر من عملة في نفس الوقت

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

  5. #2600
    الصورة الرمزية ahmedessam58
    ahmedessam58 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2008
    الإقامة
    مصر
    المشاركات
    493

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

    اقتباس المشاركة الأصلية كتبت بواسطة ahmedessam58 مشاهدة المشاركة
    مستر دولار / استاذ اسامة
    الكود مظبوط وتمام بس انا مكنتش عاوز المضاعفات تضرب فى عدد صحيح وبمعنى اصح عاوز اققل المضاعفات
    يعنى اضربها فى اى متغير وليكن 1.3 مثلا ولما جربت اغير النسبة اشتغلت على عقود مينى ولم عملت العقود ميكرو المضاعفات مشتغلتش
    فأنا عاوز اخلى المضاعفات تشتغل مع الميكرو وشكرا
    الكود
    كود PHP:
     //+------------------------------------------------------------------+ 
     //|                                                                  | 
     //|                                                                  | 
     //|                                      www.arabictrader.com/vb     | 
     //|                                                                  | 
     //|                                          [email protected]   | 
     //+------------------------------------------------------------------+ 
      
     #property copyright "MR.dollarEA" 
     #property link      "[email protected]

               
     
    extern bool  UseTimeFilter false;         
     
    extern int  StartHour 7;             
     
    extern int  EndHour 17;  
              
     
    extern string  MM_Parameters "---------- Money Management"
     
    extern int  MaxTrades 1;  
     
    extern double  Lots 0.10;                                            
                          
     
    extern string Ich=" Ichimoku Settings"
     
    extern int    tenkansen=9;  
     
    extern int    kijunsen=26;  
     
    extern int    senkospan=52
     
    extern int    shift=1
     
    extern int    shift2=26
     
    extern int    Ichimoku_TIME_FRAME=240
      
    extern string S5="Order Management"

    extern int BreakEven=0
    extern int movestopto=1
    extern int StopLoss=0
    extern int TakeProfit=0
    extern int TrailingStop=0
    extern int TrailingStep=0

      

     
    double point
     
    int digits
     
    double FirstLot;
     
    extern int MagicNumber=2533;                              
     
    int init() 

      
    FirstLot=Lots
        if(
    Digits<4
       { 
          
    point=0.01
          
    digits=2
       } 
       else 
       { 
          
    point=0.0001
          
    digits=4
       } 
    return(
    0); 


     
    //+------------------------------------------------------------------+ 
     //| FUNCTION DEFINITIONS    deinitialization function                | 
     //+------------------------------------------------------------------+ 

     
    void deinit() { 
        
    Comment(""); 
      } 

     
    int orderstotal(){ 
     
    int cnt=0
       for(
    int i =0;i<OrdersTotal();i++){ 
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ 
             
    cnt++; 
           } 
         } 
        return(
    cnt); 
      } 

     
    //+------------------------------------------------------------------+ 
     //| FUNCTION DEFINITIONS   Start function                            | 
     //+------------------------------------------------------------------+ 

     
    int start() 
       { 
        
    Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb"); 
           if (
    UseTimeFilter){ 
           if(!((
    StartHour EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour EndHour && TimeHour(TimeCurrent()) >= StartHour ||
                   
    TimeHour(TimeCurrent()) < EndHour))){ 
               
    Comment("Non-Trading Hours!"); 
               return(
    0); 
             } 
           } 
           
    //|---------trailing stop 

       
    if(TrailingStop>0)MoveTrailingStop(); 
        
      if(
    BreakEven>0)MoveBreakEven(); 
        
           
    ////////////////////////////////////////////////// 
    double  Tenkan=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_TENKANSEN,shift);  
    double  Kijun=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_KIJUNSEN,shift);  
    double  Senkou=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_CHINKOUSPAN,1+kijunsen);  
    double  Senkoua=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift);  
    double  Senkouaplus=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift+27); 
    double  Senkoub=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift);  
    double  Senkoubplus=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift+27); 
    double  Ichimoku_B=iCustom(Symbol(),0,"Ichimoku Trend Magic Histogram with Alert",1,shift); 
    double  Ichimoku_S=iCustom(Symbol(),0,"Ichimoku Trend Magic Histogram with Alert",0,shift); 
    double  Ichimoku_BF=iCustom(Symbol(),0,"Ichimoku Bars Filter",0,shift); 
    double  Ichimoku_SF=iCustom(Symbol(),0,"Ichimoku Bars Filter",1,shift); 
    double  IchimoAA=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANA,shift);  
    double  IchimoBB=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANB,shift);  
        
    //////////////////////////////////////////////////// 
          
    double SL,TP;  
           
          
        
      
        
    //////////////////////////////// 
        
               
        
    if((Open[1]>Tenkan)&&(Close[1]>Tenkan)&&(Tenkan>=Kijun)&&(Close[1]>Senkoub)&&(Close[1]>Senkoua)&&(Ichimoku_B==3)&&
        (
    Senkou>Senkoubplus&&Senkou>Senkouaplus)&&(Ichimoku_BF>0)&&(Close[1]>IchimoAA)&&(Close[1]>IchimoBB)) 
        { 
           if(
    orderstotal()<MaxTrades){ 
            if(
    StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;} 
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;} 
                if(
    WinorLoss()==false)Lots=lastlot()*2;
                else 
    Lots=FirstLot;
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue); 
                 
    PlaySound("Alert.wav"); 
                  
            }   
           } 
            
         
         
        
    ///////////////////// 
         
       
    if ((Open[1]<Tenkan)&&(Close[1]<Tenkan)&&(Tenkan<=Kijun)&&(Close[1]<Senkoua)&&(Close[1]<Senkoub)&&(Ichimoku_S==3)&&
       (
    Senkou<Senkoubplus&&Senkou<Senkouaplus)&&(Ichimoku_SF>0)&&(Close[1]<IchimoAA)&&(Close[1]<IchimoBB)) 
       { 
       if(
    orderstotal()<MaxTrades){     
             if(
    StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;} 
               if(
    TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;} 
                if(
    WinorLoss()==false)Lots=lastlot()*2;
                else 
    Lots=FirstLot;
                
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);  
                 
    PlaySound("Alert.wav"); 
                  
           } 
        } 
      } 
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// 
    // Limiting Orders 

      
    //+------------------------------------------------------------------+ 
    // OrdersHistoryTotal -- MODE_HISTORY -- Closed Orders // 

     // OrdersTotal -- MODE_TRADES -- Opend Orders //  
    //+------------------------------------------------------------------+ 
    // lastlot & WinorLoss Functions //  
     
    double lastlot(){ 
     for(
    int i=0;i<OrdersHistoryTotal();i++){ 
     
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
     if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ 
      
    double lotsnumber=OrderLots(); 


    }  

    return(
    lotsnumber); 


     

    bool WinorLoss(){ 

    bool win=true
     for(
    int i=0;i<OrdersHistoryTotal();i++){ 
     
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
     if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ 
     if(
    OrderProfit()>0){  
      
    win=true
    }  
    else{ 
    win=false



    return(
    win); 




     
    //+------------------------------------------------------------------+ 
     //| FUNCTION DEFINITIONS   TrailingStop                              | 
     //+------------------------------------------------------------------+ 
         
        //|---------trailing stop 

    void MoveTrailingStop() 

        
       for(
    int cnt=0;cnt<OrdersTotal();cnt++) 
       { 
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber
          { 
             if(
    OrderType()==OP_BUY
             { 
                if(
    TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))   
                {                  
                   if((
    NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0)) 
                   { 
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue); 
                     
                   } 
                } 
             } 
             else  
             { 
                if(
    TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))   
                {                  
                   if((
    NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0)) 
                   { 
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red); 
                     
                   } 
                } 
             } 
          } 
       } 




    void MoveBreakEven() 

       
    int cnt,total=OrdersTotal(); 
       for(
    cnt=0;cnt<total;cnt++) 
       { 
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber
          { 
             if(
    OrderType()==OP_BUY
             { 
                if(
    BreakEven>0
                { 
                   if(
    NormalizeDouble((Bid-OrderOpenPrice()),digits)>BreakEven*point
                   { 
                      if(
    NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),digits)<0
                      { 
                         
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+movestopto*point,digits),OrderTakeProfit(),0,Blue); 
                       
                      } 
                   } 
                } 
             } 
             else 
             { 
                if(
    BreakEven>0
                { 
                   if(
    NormalizeDouble((OrderOpenPrice()-Ask),digits)>BreakEven*point
                   { 
                      if(
    NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),digits)<0
                      { 
                         
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-movestopto*point,digits),OrderTakeProfit(),0,Red); 
                    
                      } 
                   } 
                } 
             } 
          } 
       } 


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

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

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    بالنسبه لإضافة مؤشرات بتايم فريم مختلف وعمل مؤشرات منها فهي تختلف قليلا عن الإكسبرتات
    لماذا

    لنفرض حاليا على شارت الساعه
    ووصلت للشمعه رقم 10 وتريد حساب الشروط عندها فسوف تكون الشمعه المحدده بالخط الأحمر
    الملف المرفق 333706

    لكن عندما تذهب إلى فريم الأربع ساعات فأيضا رقم الشمعه سيكون 10
    المحدده بالخط الأبيض
    الملف المرفق 333705

    لاحظ الفرق الذي حدث والخطأ وهذا نظرا لأنها عندما قام بحساب 10 شمعات على فريم الساعه في الحقيقه المفروض أن يقف عند الشمعه رقم 2 على فريم الأربع ساعات

    وهذا ما قد يسبب الخطأ ونفس الخطأ على فريم اليومي أو أي فريم آخر
    بالتالي الكود يجب أن يكون
    كود PHP:
    int shift;     
    double up =iCustom(NULL,0,"auto recommended",2,i+1);
    double down =iCustom(NULL,0,"auto recommended",3,i+1);
    double up2 =iCustom(NULL,0,"auto recommended",2,i+2);
    double down2 =iCustom(NULL,0,"auto recommended",3,i+2);

    double IchimoA=iIchimoku(NULL,0,9,26,52,MODE_SENKOUSPANA,i+1); 
    double IchimoB=iIchimoku(NULL,0,9,26,52,MODE_SENKOUSPANB,i+1);
    shift=iBarShift(Symbol(),Ichimoku_TIME_FRAME,Time[i],false);     
    double IchimoAA=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANA,shift+1); 
    double IchimoBB=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANB,shift+1);
    shift=iBarShift(Symbol(),Ichimoku_TIME_FRAME_2,Time[i],false);     
    double IchimoAAA=iIchimoku(NULL,Ichimoku_TIME_FRAME_2,9,26,52,MODE_SENKOUSPANA,shift+1); 
    double IchimoBBB=iIchimoku(NULL,Ichimoku_TIME_FRAME_2,9,26,52,MODE_SENKOUSPANB,shift+1); 
    تم التعديل وهل دالة iBarShift تستخدم دائمـا فـ حالة إستدعاء مؤشرات من فريمات مختلفة ، ولماذا لاتظهر هذه المشكلة فـ الاكسيبرت مع إنها نفس الفكرة

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

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

    استاذ اسامة ، انا قمت بعمل اكسيبرت للمؤشر المرفق ، والشروط صحيحة لفتح الصفقات فـ الباك تست ، ولكن الغريب ان إشارة المؤشر تظهر مرة واحدة عند بداية الباك تست ولاتظهر بعد ذلك على الشارت اثناء عمل الاكسيبرت !!
    الملفات المرفقة الملفات المرفقة

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

    افتراضي

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

  9. #2604
    الصورة الرمزية fm4ever_fx
    fm4ever_fx غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2010
    المشاركات
    688

    افتراضي

    السلام عليكم ورحمة الله اخواني الكرام من فضلكم اريد معادلة الاغلاق الشمعه الحالية في البرمجة لاكن لاكثر من عملة

    يعني مثلا
    double close=Close[0];

    لاكن هنا سوف يقوم الاكسبرت بتجهيز واستخدام الشمعه الاخيرة لنفس العملة الي نعمل عليها لاكن
    انا اريد اغلاق اكثر من عملة باي شكل تكون المعادلة ؟ وشكرا لكم
    توقيع العضو
    اللهم اكفني بحلالك عن حرامك واغنني بفضلك عن من سواك

  10. #2605
    الصورة الرمزية Moath Mohammed
    Moath Mohammed غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    84

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Moath Mohammed مشاهدة المشاركة
    يعطيك ألف عافية يا مهندس يوسف

    بس بطلبك طلب
    أنا محتاج هالمهمة التالية من الاكسبيريت :
    * إذا كانت عمليات الشراء المفتوحة تساوي 1 --> لا تعديل أو تغيير في الهدف للصفقة
    * إذا كانت عمليات الشراء المفتوحة تساوي 2 سيقوم الاكسبيريت بتعديل التيك بروفت لكل العمليات لسعر إفتتاح أول عملية شراء
    * إذا كانت عمليات الشراء المفتوحة تساوي 3 سيقوم الاكسبيريت بتعديل التيك بروفت لكل العمليات لنفس الهدف المحدد للصفقة رقم 3

    ونفس الكلام ينطبق على عمليات البيع

    كيف يتم ذلك
    أتمنى من الغالين ( الأستاذ أسامة ، المهندس يوسف ) توضيح كيفية عمل هذه الدالة

  11. #2606
    الصورة الرمزية fm4ever_fx
    fm4ever_fx غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2010
    المشاركات
    688

    افتراضي

    السلام عليكم ورحمة الله اخواني الكرام من فضلكم اريد معادلة الاغلاق الشمعه الحالية في البرمجة لاكن لاكثر من عملة

    يعني مثلا
    double close=Close[0];

    لاكن هنا سوف يقوم الاكسبرت بتجهيز واستخدام الشمعه الاخيرة لنفس العملة الي نعمل عليها لاكن
    انا اريد اغلاق اكثر من عملة باي شكل تكون المعادلة ؟ وشكرا لكم
    توقيع العضو
    اللهم اكفني بحلالك عن حرامك واغنني بفضلك عن من سواك

  12. #2607
    الصورة الرمزية fm4ever_fx
    fm4ever_fx غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Sep 2010
    المشاركات
    688

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة fm4ever_fx مشاهدة المشاركة
    السلام عليكم ورحمة الله اخواني الكرام من فضلكم اريد معادلة الاغلاق الشمعه الحالية في البرمجة لاكن لاكثر من عملة

    يعني مثلا
    double close=Close[0];

    لاكن هنا سوف يقوم الاكسبرت بتجهيز واستخدام الشمعه الاخيرة لنفس العملة الي نعمل عليها لاكن
    انا اريد اغلاق اكثر من عملة باي شكل تكون المعادلة ؟ وشكرا لكم




    كثر خيركم وصلتلها بفضل الله باستخدام دالة

    ICLOSE
    ونكتب الدالة بداخلها اسم العملة بين علامتين تنصيص والفريم المطلوب
    توقيع العضو
    اللهم اكفني بحلالك عن حرامك واغنني بفضلك عن من سواك

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

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

    اقتباس المشاركة الأصلية كتبت بواسطة Moath Mohammed مشاهدة المشاركة
    أتمنى من الغالين ( الأستاذ أسامة ، المهندس يوسف ) توضيح كيفية عمل هذه الدالة
    اقتباس المشاركة الأصلية كتبت بواسطة xcv114 مشاهدة المشاركة


    ستقوم بعمل دالة تأتي بعدد الأوردرات المفتوحة
    كود PHP:
    int orderstotal(int type){
     
    int cnt=0;
       for(
    int i =0;i<=OrdersTotal();i++){
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber() && OrderType()==type){
             
    cnt++;
           }
         }
        return(
    cnt);
      } 
    ثم تقوم بعمل دالة أخرى تأتي بسعر فتح الأوردر الأول
    كود PHP:
    double FirstOrderPrice(int type)
    {
      for (
    int i=0;i<=OrdersTotal();i++)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
        {
          return(
    OrderOpenPrice());
          }
      }
      return(
    0);

    ثم تقوم بعمل دالة أخرى لتعديل التيك بروفت
    كود PHP:
    void ModifyTP(int type)
    {
     
      for (
    int cnt OrdersTotal() ; cnt >=cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        
    double tp=OrderTakeProfit();int ticket=OrderTicket();
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() &&OrderType()==type)
        {
         if(
    tp!=FirstOrderPrice(type))
           
    OrderModify(ticket,OrderOpenPrice(),OrderStopLoss(),FirstOrderPrice(type),0);
          
         }
      }

    ثم تضيف الأكواد دي في دالة start
    كود PHP:
    if(orderstotal(OP_BUY)>1){ModifyTP(OP_BUY);}
            if(
    orderstotal(OP_SELL)>1){ModifyTP(OP_SELL);} 
    وبالتالي لو كانت عمليات الشراء أكبر من 1 سيقوم بتعديل التيك بروفت لكل العمليات لسعر إفتتاح أول عملية شراء
    ولو عمليات البيع أكبر من 1 سيقوم بتعديل التيك بروفت لسعر إفتتاح أول عملية بيع
    كان الأفضل يا أخي إنك ترفق الكود وإحنا نعدل لك عليه

    نفس الشرح إللي فوق ده ممكن تستخدمه بس هتغير بس هنزود دالة لمعرفة أخر تيك بروفت وهنغير في الأكواد إللي في دالة start()

    دالة لمعرفة أخر تيك بروفت
    كود PHP:
    double GetlastTP(int type)
    {
      for (
    int i=OrdersTotal();i>0;i--)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
        {
          return(
    OrderTakeProfit());
          }
      }
      return(
    0);

    والأكواد إللي في إستارت ستصع بدل منها
    كود PHP:
    if(orderstotal(OP_BUY)>&& orderstotal(OP_BUY)<3){ModifyTP(OP_BUY);} 
            if(
    orderstotal(OP_BUY)>=3){
            for (
    int i=OrdersTotal();i>0;i--){
                 
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderTakeProfit()!=GetlastTP(OP_BUY) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_BUY){
            
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_BUY),0);
            }
         }
            if(
    orderstotal(OP_SELL)>&& orderstotal(OP_SELL)<3){ModifyTP(OP_SELL);}
            if(
    orderstotal(OP_SELL)>=3){
            for (
    int i=OrdersTotal();i>0;i--){
                 
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderTakeProfit()!=GetlastTP(OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_SELL){
            
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_SELL),0);
            }
         } 
    آخر تعديل بواسطة xcv114 ، 13-08-2012 الساعة 04:29 AM

  14. #2609
    الصورة الرمزية Moath Mohammed
    Moath Mohammed غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    84

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

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




    كان الأفضل يا أخي إنك ترفق الكود وإحنا نعدل لك عليه

    نفس الشرح إللي فوق ده ممكن تستخدمه بس هتغير بس هنزود دالة لمعرفة أخر تيك بروفت وهنغير في الأكواد إللي في دالة start()

    دالة لمعرفة أخر تيك بروفت
    كود PHP:
    double GetlastTP(int type)
    {
      for (
    int i=OrdersTotal();i>0;i--)
      {
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==type)
        {
          return(
    OrderTakeProfit());
          }
      }
      return(
    0);

    والأكواد إللي في إستارت ستصع بدل منها
    كود PHP:
    if(orderstotal(OP_BUY)>&& orderstotal(OP_BUY)<3){ModifyTP(OP_BUY);} 
            if(
    orderstotal(OP_BUY)>=3){
            for (
    int i=OrdersTotal();i>0;i--){
                 
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderTakeProfit()!=GetlastTP(OP_BUY) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_BUY){
            
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_BUY),0);
            }
         }
            if(
    orderstotal(OP_SELL)>&& orderstotal(OP_SELL)<3){ModifyTP(OP_SELL);}
            if(
    orderstotal(OP_SELL)>=3){
            for (
    int i=OrdersTotal();i>0;i--){
                 
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderTakeProfit()!=GetlastTP(OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && OrderType()==OP_SELL){
            
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),GetlastTP(OP_SELL),0);
            }
         } 
    تفضل يالغالي شوف المرفقات
    وأعرف انه مليان أخطاء بس نحاول نتعلم

    < مبتديء متطفل
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 V1.mq4‏ (3.6 كيلوبايت, المشاهدات 86)
    آخر تعديل بواسطة Moath Mohammed ، 13-08-2012 الساعة 04:50 AM

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ahmedessam58 مشاهدة المشاركة
    الكود
    كود PHP:
     //+------------------------------------------------------------------+ 
     //|                                                                  | 
     //|                                                                  | 
     //|                                      www.arabictrader.com/vb     | 
     //|                                                                  | 
     //|                                          [email protected]   | 
     //+------------------------------------------------------------------+ 
      
     #property copyright "MR.dollarEA" 
     #property link      "[email protected]

               
     
    extern bool  UseTimeFilter false;         
     
    extern int  StartHour 7;             
     
    extern int  EndHour 17;  
              
     
    extern string  MM_Parameters "---------- Money Management"
     
    extern int  MaxTrades 1;  
     
    extern double  Lots 0.10;                                            
                          
     
    extern string Ich=" Ichimoku Settings"
     
    extern int    tenkansen=9;  
     
    extern int    kijunsen=26;  
     
    extern int    senkospan=52
     
    extern int    shift=1
     
    extern int    shift2=26
     
    extern int    Ichimoku_TIME_FRAME=240
      
    extern string S5="Order Management"

    extern int BreakEven=0
    extern int movestopto=1
    extern int StopLoss=0
    extern int TakeProfit=0
    extern int TrailingStop=0
    extern int TrailingStep=0

      

     
    double point
     
    int digits
     
    double FirstLot;
     
    extern int MagicNumber=2533;                              
     
    int init() 

      
    FirstLot=Lots
        if(
    Digits<4
       { 
          
    point=0.01
          
    digits=2
       } 
       else 
       { 
          
    point=0.0001
          
    digits=4
       } 
    return(
    0); 


     
    //+------------------------------------------------------------------+ 
     //| FUNCTION DEFINITIONS    deinitialization function                | 
     //+------------------------------------------------------------------+ 

     
    void deinit() { 
        
    Comment(""); 
      } 

     
    int orderstotal(){ 
     
    int cnt=0
       for(
    int i =0;i<OrdersTotal();i++){ 
         
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ 
             
    cnt++; 
           } 
         } 
        return(
    cnt); 
      } 

     
    //+------------------------------------------------------------------+ 
     //| FUNCTION DEFINITIONS   Start function                            | 
     //+------------------------------------------------------------------+ 

     
    int start() 
       { 
        
    Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb"); 
           if (
    UseTimeFilter){ 
           if(!((
    StartHour EndHour && TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < EndHour) || (StartHour EndHour && TimeHour(TimeCurrent()) >= StartHour ||
                   
    TimeHour(TimeCurrent()) < EndHour))){ 
               
    Comment("Non-Trading Hours!"); 
               return(
    0); 
             } 
           } 
           
    //|---------trailing stop 

       
    if(TrailingStop>0)MoveTrailingStop(); 
        
      if(
    BreakEven>0)MoveBreakEven(); 
        
           
    ////////////////////////////////////////////////// 
    double  Tenkan=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_TENKANSEN,shift);  
    double  Kijun=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_KIJUNSEN,shift);  
    double  Senkou=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_CHINKOUSPAN,1+kijunsen);  
    double  Senkoua=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift);  
    double  Senkouaplus=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift+27); 
    double  Senkoub=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift);  
    double  Senkoubplus=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift+27); 
    double  Ichimoku_B=iCustom(Symbol(),0,"Ichimoku Trend Magic Histogram with Alert",1,shift); 
    double  Ichimoku_S=iCustom(Symbol(),0,"Ichimoku Trend Magic Histogram with Alert",0,shift); 
    double  Ichimoku_BF=iCustom(Symbol(),0,"Ichimoku Bars Filter",0,shift); 
    double  Ichimoku_SF=iCustom(Symbol(),0,"Ichimoku Bars Filter",1,shift); 
    double  IchimoAA=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANA,shift);  
    double  IchimoBB=iIchimoku(NULL,Ichimoku_TIME_FRAME,9,26,52,MODE_SENKOUSPANB,shift);  
        
    //////////////////////////////////////////////////// 
          
    double SL,TP;  
           
          
        
      
        
    //////////////////////////////// 
        
               
        
    if((Open[1]>Tenkan)&&(Close[1]>Tenkan)&&(Tenkan>=Kijun)&&(Close[1]>Senkoub)&&(Close[1]>Senkoua)&&(Ichimoku_B==3)&&
        (
    Senkou>Senkoubplus&&Senkou>Senkouaplus)&&(Ichimoku_BF>0)&&(Close[1]>IchimoAA)&&(Close[1]>IchimoBB)) 
        { 
           if(
    orderstotal()<MaxTrades){ 
            if(
    StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;} 
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;} 
                if(
    WinorLoss()==false)Lots=lastlot()*2;
                else 
    Lots=FirstLot;
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue); 
                 
    PlaySound("Alert.wav"); 
                  
            }   
           } 
            
         
         
        
    ///////////////////// 
         
       
    if ((Open[1]<Tenkan)&&(Close[1]<Tenkan)&&(Tenkan<=Kijun)&&(Close[1]<Senkoua)&&(Close[1]<Senkoub)&&(Ichimoku_S==3)&&
       (
    Senkou<Senkoubplus&&Senkou<Senkouaplus)&&(Ichimoku_SF>0)&&(Close[1]<IchimoAA)&&(Close[1]<IchimoBB)) 
       { 
       if(
    orderstotal()<MaxTrades){     
             if(
    StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;} 
               if(
    TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;} 
                if(
    WinorLoss()==false)Lots=lastlot()*2;
                else 
    Lots=FirstLot;
                
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red);  
                 
    PlaySound("Alert.wav"); 
                  
           } 
        } 
      } 
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// 
    // Limiting Orders 

      
    //+------------------------------------------------------------------+ 
    // OrdersHistoryTotal -- MODE_HISTORY -- Closed Orders // 

     // OrdersTotal -- MODE_TRADES -- Opend Orders //  
    //+------------------------------------------------------------------+ 
    // lastlot & WinorLoss Functions //  
     
    double lastlot(){ 
     for(
    int i=0;i<OrdersHistoryTotal();i++){ 
     
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
     if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ 
      
    double lotsnumber=OrderLots(); 


    }  

    return(
    lotsnumber); 


     

    bool WinorLoss(){ 

    bool win=true
     for(
    int i=0;i<OrdersHistoryTotal();i++){ 
     
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
     if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){ 
     if(
    OrderProfit()>0){  
      
    win=true
    }  
    else{ 
    win=false



    return(
    win); 




     
    //+------------------------------------------------------------------+ 
     //| FUNCTION DEFINITIONS   TrailingStop                              | 
     //+------------------------------------------------------------------+ 
         
        //|---------trailing stop 

    void MoveTrailingStop() 

        
       for(
    int cnt=0;cnt<OrdersTotal();cnt++) 
       { 
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber
          { 
             if(
    OrderType()==OP_BUY
             { 
                if(
    TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))   
                {                  
                   if((
    NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0)) 
                   { 
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue); 
                     
                   } 
                } 
             } 
             else  
             { 
                if(
    TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))   
                {                  
                   if((
    NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0)) 
                   { 
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red); 
                     
                   } 
                } 
             } 
          } 
       } 




    void MoveBreakEven() 

       
    int cnt,total=OrdersTotal(); 
       for(
    cnt=0;cnt<total;cnt++) 
       { 
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber
          { 
             if(
    OrderType()==OP_BUY
             { 
                if(
    BreakEven>0
                { 
                   if(
    NormalizeDouble((Bid-OrderOpenPrice()),digits)>BreakEven*point
                   { 
                      if(
    NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),digits)<0
                      { 
                         
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+movestopto*point,digits),OrderTakeProfit(),0,Blue); 
                       
                      } 
                   } 
                } 
             } 
             else 
             { 
                if(
    BreakEven>0
                { 
                   if(
    NormalizeDouble((OrderOpenPrice()-Ask),digits)>BreakEven*point
                   { 
                      if(
    NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),digits)<0
                      { 
                         
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-movestopto*point,digits),OrderTakeProfit(),0,Red); 
                    
                      } 
                   } 
                } 
             } 
          } 
       } 

    السبب ليس في الكود لكن في الحساب نفسه
    إذا كان الحساب يسمح بفتح عقود مايكرو فسوف يعمل الإكسبرت وإذا كان أقل حجم لوت مسموح هو عقود ميني فلن يفتح الإكسبرت صفقات إذا كان حجم اللوت مثلا 0.05
    أيضا يمكنك إضافة شرط بحيث تستطيع معرفة حجم أقل لوت مسموح في الإكسبرت
    كود PHP:
    int Lot_Digits;
    if(
    MarketInfo(Symbol(),MODE_MINLOT)<0.1)Lot_Digits=2;
    else 
    Lot_Digits=1
    ثم عند تحديد حجم لوت المضاعفات التالي
    كود PHP:
     if(WinorLoss()==false)Lots=NormalizeDouble(lastlot()*2,Lot_Digits); 
    حتى يقرب النسبه إلى أقرب حجم لوت مسموح فتحه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

  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