صفحة 105 من 689 الأولىالأولى ... 5559599100101102103104105106107108109110111115155205605 ... الأخيرةالأخيرة
النتائج 1,561 إلى 1,575 من 10335
  1. #1561
    الصورة الرمزية cher90
    cher90 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2009
    العمر
    34
    المشاركات
    550

    افتراضي

    السلام عليكم ورحمة الله أستاذ اسامة

    حاولت تعديل الإكسبريت بحيث يغلق صفقة البيع عند تحقق شروط صفقة الشراء
    وان يغلق صفقة الشراء عند تحقق شروط صفقة البيع

    هذا هو الكود الذي أضفته
    كود PHP:
    {
      
    int total  OrdersTotal()-1;
      
      for (
    int cnt total cnt cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && (S<5000&&S_Previous>5000) )
          {
            
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
          }
          
          if (
    OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && (B<5000&&B_Previous>5000) )
          {
            
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
          }
        }
      }
      return(
    0);

    لاكن لايحدث شيء وضعت الستوب و الهدف 0 يعني يفتح صفقة شراء عند تحقق شروطها و نفس الشيء للبيع
    لاكن دون هدف وستوب وتبقى هكذا ....

    أرجو من فضلك ان تدلني على الخطأ وشكرااا جزيلاااا
    الملفات المرفقة الملفات المرفقة

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

    افتراضي

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

    أنا لم أعدل سوىأشياء طفيفه و لم أضف الدوال
    طيب أخي أسامه هل هذه الدوال كلها هي المسئوله عن غخفاء الهدف و الإستوب و يجب غضافتها كلها خارج الداله ستارت ؟؟؟
    كود:
      
            if(HideSL&&StopLoss>0)
       {
          CloseBuyOrdersHiddenSL();CloseSellOrdersHiddenSL();
       }
       if(HideTP&&TakeProfit>0)
       {
          CloseBuyOrdersHiddenTP();CloseSellOrdersHiddenTP();
       }
          
       ////////////////////////////////////////////////////
          
           
        
       for(int cnt=OrdersTotal();cnt>=0;cnt--)
        {
        
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
         double type=OrderType();double stop=OrderStopLoss();double open=OrderOpenPrice();
         int tick=OrderTicket();double profit=OrderTakeProfit();
         if(OrderSymbol()==Symbol()||ModifyAllOrders==true){
         if(StopLoss!=0||TakeProfit!=0){
         if(type==OP_BUY&&(HideSL==false||HideTP==false)){
         if(StopLoss!=0&&HideSL==false){SL=open-StopLoss*point;}
         if(TakeProfit!=0&&HideTP==false){TP=open+TakeProfit*point;}
         if(stop!=SL||profit!=TP){
         OrderModify(tick,open,SL,TP,0,Blue);
          }}
          if(type==OP_SELL&&(HideSL==false||HideTP==false)){
           if(StopLoss!=0&&HideSL==false){SL=open+StopLoss*point;}
            if(TakeProfit!=0&&HideTP==false){TP=open-TakeProfit*point;}
            if(stop!=SL||profit!=TP){
            OrderModify(tick,open,SL,TP,0,Red);
            }  }} } }   
        
      
        }
       
    
    //+------------------------------------------------------------------+
    
    int CloseBuyOrdersHiddenTP()
    {
      int total=OrdersTotal();
    
      for (int cnt=total;cnt>=0;cnt--)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(OrderSymbol()==Symbol())
        {
          if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*point))
          {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
          }
        }
      }
      return(0);
    }
    void CloseBuyOrdersHiddenSL()
    {
      int total=OrdersTotal();
    
      for (int cnt=total;cnt>=0;cnt--)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(OrderSymbol()==Symbol())
        {
          if(OrderType()==OP_BUY&&Bid<(OrderOpenPrice()-StopLoss*point))
          {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
          }
        }
      }
    }
    
    void CloseSellOrdersHiddenTP()
    {
      int total=OrdersTotal();
    
      for(int cnt=total;cnt>=0;cnt--)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(OrderSymbol()==Symbol())
        {
          if(OrderType()==OP_SELL&&Ask<(OrderOpenPrice()-TakeProfit*point))
          {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
          }
        }
      }
    }
    
    void CloseSellOrdersHiddenSL()
    {
      int total=OrdersTotal();
    
      for(int cnt=total;cnt>=0;cnt--)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(OrderSymbol()==Symbol())
        {
          if(OrderType()==OP_SELL&&Ask>(OrderOpenPrice()+StopLoss*point))
          {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
          }
        }
      }
    }
    لأني حقيقه لا أعلم هل يجب غضافتها كلها أم بعضها و مكانها بالتحديد وسك أكواد إكسبيرتي .
    أنا آسف على كثرة الأسئله أخي ... وجزاك الله خيرا .
    الدوال الخاصة بإخفاء الهدف والأستوب لوز
    كود PHP:
    int CloseBuyOrdersHiddenTP()
    {
      
    int total=OrdersTotal();

      for (
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
          }
        }
      }
      return(
    0);
    }
    void CloseBuyOrdersHiddenSL()
    {
      
    int total=OrdersTotal();

      for (
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_BUY&&Bid<(OrderOpenPrice()-StopLoss*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
          }
        }
      }
    }

    void CloseSellOrdersHiddenTP()
    {
      
    int total=OrdersTotal();

      for(
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_SELL&&Ask<(OrderOpenPrice()-TakeProfit*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
          }
        }
      }
    }

    void CloseSellOrdersHiddenSL()
    {
      
    int total=OrdersTotal();

      for(
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_SELL&&Ask>(OrderOpenPrice()+StopLoss*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
          }
        }
      }

    ثم لا تنسى عندما تقوم فتح الصفقه بأن تجعل الهدف والأستوب لوز = 0
    بحيث تضع شرط
    كود PHP:
    if(HideSL)SL=0;
    if(
    HideTP)TP=0
    سوف تجد هذا لجزء أيضا في الإكسبرت
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة cher90 مشاهدة المشاركة
    السلام عليكم ورحمة الله أستاذ اسامة

    حاولت تعديل الإكسبريت بحيث يغلق صفقة البيع عند تحقق شروط صفقة الشراء
    وان يغلق صفقة الشراء عند تحقق شروط صفقة البيع

    هذا هو الكود الذي أضفته
    كود PHP:
    {
      
    int total  OrdersTotal()-1;
      
      for (
    int cnt total cnt cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
        {
          if (
    OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && (S<5000&&S_Previous>5000) )
          {
            
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
          }
          
          if (
    OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && (B<5000&&B_Previous>5000) )
          {
            
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
          }
        }
      }
      return(
    0);

    لاكن لايحدث شيء وضعت الستوب و الهدف 0 يعني يفتح صفقة شراء عند تحقق شروطها و نفس الشيء للبيع
    لاكن دون هدف وستوب وتبقى هكذا ....

    أرجو من فضلك ان تدلني على الخطأ وشكرااا جزيلاااا
    وعليكم السلام ورحمة الله وبركاته
    لاحظ شرط الدخول الأول
    كود PHP:
      if(B<5000&&B_Previous>5000){// *********
           
             
    if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav"); 
    أين إغلاق القوس { الخاص بهذا الشرط
    كود PHP:
      if(B<5000&&B_Previous>5000){// *********
           
             
    if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav");
                 }
    //******** 
    ثم total إجعلها
    كود PHP:
    total=OrdersTotal(); 
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  4. #1564
    الصورة الرمزية cher90
    cher90 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2009
    العمر
    34
    المشاركات
    550

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    وعليكم السلام ورحمة الله وبركاته
    لاحظ شرط الدخول الأول
    كود PHP:
      if(B<5000&&B_Previous>5000){// *********
           
             
    if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav"); 
    أين إغلاق القوس { الخاص بهذا الشرط
    كود PHP:
      if(B<5000&&B_Previous>5000){// *********
           
             
    if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav");
                 }
    //******** 
    ثم total إجعلها
    كود PHP:
    total=OrdersTotal(); 
    بارك الله فيك أستاذ اسامة على مساعداتك الطيبة

    حاولت حصر وقت عمل الإكسبريت يعني يعمل كل يوم من 7h صباحا حتى 23h ليلا
    ولا يفتح أي صفقة خارج هذا الوقت لاكن لم اتمكن من ذلك
    إستخدمت كود إكسبريت Scalp_net_v1.3.2_tf (مرفق)

    هكذا
    كود PHP:
        //--------- int Order = SIGNAL_NONE; ************************************** Work Time ***********************************************************************
        
     
    if (Hour()>=FromHourTrade && Hour()<=ToHourTradeOrder SIGNAL_BUY;    ///////////////////////////////////////---- #define SIGNAL_BUY   1
     
    if (Hour()>=FromHourTrade && Hour()<=ToHourTradeOrder SIGNAL_SELL;   ///////////////////////////////////////---- #define SIGNAL_SELL  2 
    وأضفت الشرط Order == SIGNAL_BUY في شروط الدخول

    كود PHP:
             if(B<5000&&B_Previous>5000 && Order == SIGNAL_BUY){//------- A :p
           
             
    if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav");
                 }
    //------------------------------- A
                                              
          //------------------------------------------------------------
                     
                     
    if(S<5000&&S_Previous>5000 && Order == SIGNAL_SELL){ //-------- B
           
             
    if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red); 
                 
    PlaySound("Alert.wav");
                 
                 } 
    //--------------- B 
    و أريد أيضا من فضلك كود مضاعفات يعني كل 100 نقطة من كل الصفقات بحجم 0.1 لوت > ينتقل إلى 0.2 لوت
    وبعد 100 نقطة > ينتقل إلى 0.3 وهكذا
    وشيء أخير أيضا لو تكرمت طريقة أو كود تحديد الربح اليومي يعني بعد تحقيق 20 نقطة من مجمل الصفقات مثلا في اليوم يتوقف عن العمل حتى بداية اليوم الجديد

    أرجو اني لم أثقل عليك أستاذي الكريم وجزاك الله خيرا
    الملفات المرفقة الملفات المرفقة
    آخر تعديل بواسطة cher90 ، 28-01-2012 الساعة 01:11 AM

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    الدوال الخاصة بإخفاء الهدف والأستوب لوز
    كود PHP:
    int CloseBuyOrdersHiddenTP()
    {
      
    int total=OrdersTotal();

      for (
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
          }
        }
      }
      return(
    0);
    }
    void CloseBuyOrdersHiddenSL()
    {
      
    int total=OrdersTotal();

      for (
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_BUY&&Bid<(OrderOpenPrice()-StopLoss*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3*D);
          }
        }
      }
    }

    void CloseSellOrdersHiddenTP()
    {
      
    int total=OrdersTotal();

      for(
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_SELL&&Ask<(OrderOpenPrice()-TakeProfit*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
          }
        }
      }
    }

    void CloseSellOrdersHiddenSL()
    {
      
    int total=OrdersTotal();

      for(
    int cnt=total;cnt>=0;cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(
    OrderSymbol()==Symbol())
        {
          if(
    OrderType()==OP_SELL&&Ask>(OrderOpenPrice()+StopLoss*point))
          {
            
    OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3*D);
          }
        }
      }

    ثم لا تنسى عندما تقوم فتح الصفقه بأن تجعل الهدف والأستوب لوز = 0
    بحيث تضع شرط
    كود PHP:
    if(HideSL)SL=0;
    if(
    HideTP)TP=0
    سوف تجد هذا لجزء أيضا في الإكسبرت

    قمت بإضافة الدوال ولكن يظهر عندي خطئان لم أستطع إصلاحهما

    هل هذا الكود
    كود:
    if(HideSL)SL=0;
    if(HideTP)TP=0;
    هو نفسه هذا الكود
    كود:
            if(HideSL&&StopLoss>0)
       {
          CloseBuyOrdersHiddenSL();CloseSellOrdersHiddenSL();
       }
       if(HideTP&&TakeProfit>0)
       {
          CloseBuyOrdersHiddenTP();CloseSellOrdersHiddenTP();
       }
    الإكسبيرت مرفق رجاء الإطلاع أخي أسامه و تقبل ودي و إحترامي و تقديري .
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  6. #1566
    الصورة الرمزية alsafir
    alsafir غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Nov 2010
    الإقامة
    السعودية
    المشاركات
    3,659

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    لا يمكن أن تقوم بتعريف المتغير aa بهذا الشكل
    كود PHP:
     double aa+=a
    لكن قم بتعريف المتغير أولا ثم بدأ العمليه الحسابيه
    كود PHP:
      double aa;
        
    aa+=a
    وطبعا تعريفه ستجعله خارج الحلقه
    جرب هذه الداله والداله التي وضعتها أنت وراجع النتائج
    كود PHP:
    for(int i=0;i<Bars;i++){
       
    double aa;
       for(
    int e=i;e<i+period;e++){
       
    double a=Close[e];
        
    aa+=a;
       
    double lin=aa/period;
       
    ExtMapBuffer1[i]=lin;
       }
      } 

    السلام عليكم ورحمة الله وبركاته

    المعذرة تعبتك ياغالي

    لكن طلعلي خط ، يعني ماصار تاريخي ، فماهو السبب

    وجزاك الله الف خير

    والسلام عليكم ورحمة الله وبركاته
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة متوسط.gif‏  
    توقيع العضو

  7. #1567
    الصورة الرمزية poles2008
    poles2008 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2011
    المشاركات
    51

    افتراضي

    اخى مستر دولار
    لديا سؤال اذا سمحت
    كيف اقوم بتعريف فيبوناتشى فى لغة البرمجة
    فانا اريد تعريف Fibonacci Expansion
    فمثلا اذا كان السعر اعلى من مستوى 100 يقوم بالشراء ولو اقل من مستوى 100 يقوم بالبيع

  8. #1568
    الصورة الرمزية Ahmedmaths
    Ahmedmaths غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    154

    افتراضي

    السلام عليكم ورحمة الله وبركاته
    سؤال برمجي للأستاذ مستر دولار

    أنا برمجت اكسبيرت بسيط يقوم بفتح صفقتين احداهما بيع والاخرى شراء وهدف كل منهما 20 نقطة ومن غير ستوب لوز
    ثم عرفت دالة لغلق الصفقة عندما يعكس السعر 20 نقطة (يعني كأني عملت ستوب لوز 20 نقطة)
    المشكلة عند تشغيل هذا الاكسبيرت مثلا على يوم 14/11/2011 يفتح الاكسبيرت صفقتان بيع+شراء ولكن لا يتم تفعيل أمر غلق صفقة الشراء بعد عكس السعر لأسفل بينما يتم تفعيل أمر غلق صفقة البيع عندما يعكس السعر لأعلى


    وهذا هو كود البرنامج
    ////////////////////////////////////////////////////////////
    double TP,B,S;
    int Magicnumber1=123456;
    int Magicnumber2=123457;
    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start()
    {
    double Lot,F;
    F=AccountEquity()/AccountBalance();
    Comment(F*100,"--",AccountEquity(),"--",AccountBalance());
    Lot=NormalizeDouble(AccountFreeMargin()/25000,1);
    TP=200;
    if(MyOrdersTotal(Magicnumber1)==0)
    {

    OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,Ask+TP*Point ,"l",Magicnumber1,0,Green);
    B=Ask;
    }
    if(MyOrdersTotal(Magicnumber2)==0)
    {
    OrderSend(Symbol(),OP_SELL,Lot,Bid,0,0,Bid-TP*Point,"l",Magicnumber2,0,Green);
    S=Bid;
    }
    if(Ask<=B-TP*Point)
    {
    CloseOrders(Magicnumber1);
    }
    if(Bid>=S+TP*Point)
    {
    CloseOrders(Magicnumber2);
    }
    //////////////////////////////////////////////////////////////////////
    return(0);
    }
    //+------------------------------------------------------------------+
    int MyOrdersTotal(int Magic)
    {
    int c=0;
    int total = OrdersTotal();

    for (int cnt = 0 ; cnt < total ; cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
    c++;
    }
    }
    return(c);
    }
    //+------------------------------------------------------------------+
    int CloseOrders(int Magic)
    {
    int total = OrdersTotal()-1;

    for (int cnt = total ; cnt > 0 ; cnt--)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
    if (OrderType()==OP_BUY)
    {
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
    }

    if (OrderType()==OP_SELL)
    {
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
    }
    }
    }
    return(0);
    }

    ///////////////////////////////////////////////

  9. #1569
    الصورة الرمزية Ahmedmaths
    Ahmedmaths غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    154

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Ahmedmaths مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته
    سؤال برمجي للأستاذ مستر دولار

    أنا برمجت اكسبيرت بسيط يقوم بفتح صفقتين احداهما بيع والاخرى شراء وهدف كل منهما 20 نقطة ومن غير ستوب لوز
    ثم عرفت دالة لغلق الصفقة عندما يعكس السعر 20 نقطة (يعني كأني عملت ستوب لوز 20 نقطة)
    المشكلة عند تشغيل هذا الاكسبيرت مثلا على يوم 14/11/2011 يفتح الاكسبيرت صفقتان بيع+شراء ولكن لا يتم تفعيل أمر غلق صفقة الشراء بعد عكس السعر لأسفل بينما يتم تفعيل أمر غلق صفقة البيع عندما يعكس السعر لأعلى


    وهذا هو كود البرنامج
    ////////////////////////////////////////////////////////////
    double TP,B,S;
    int Magicnumber1=123456;
    int Magicnumber2=123457;
    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start()
    {
    double Lot,F;
    F=AccountEquity()/AccountBalance();
    Comment(F*100,"--",AccountEquity(),"--",AccountBalance());
    Lot=NormalizeDouble(AccountFreeMargin()/25000,1);
    TP=200;
    if(MyOrdersTotal(Magicnumber1)==0)
    {

    OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,Ask+TP*Point ,"l",Magicnumber1,0,Green);
    B=Ask;
    }
    if(MyOrdersTotal(Magicnumber2)==0)
    {
    OrderSend(Symbol(),OP_SELL,Lot,Bid,0,0,Bid-TP*Point,"l",Magicnumber2,0,Green);
    S=Bid;
    }
    if(Ask<=B-TP*Point)
    {
    CloseOrders(Magicnumber1);
    }
    if(Bid>=S+TP*Point)
    {
    CloseOrders(Magicnumber2);
    }
    //////////////////////////////////////////////////////////////////////
    return(0);
    }
    //+------------------------------------------------------------------+
    int MyOrdersTotal(int Magic)
    {
    int c=0;
    int total = OrdersTotal();

    for (int cnt = 0 ; cnt < total ; cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
    c++;
    }
    }
    return(c);
    }
    //+------------------------------------------------------------------+
    int CloseOrders(int Magic)
    {
    int total = OrdersTotal()-1;

    for (int cnt = total ; cnt > 0 ; cnt--)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
    if (OrderType()==OP_BUY)
    {
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
    }

    if (OrderType()==OP_SELL)
    {
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
    }
    }
    }
    return(0);
    }

    ///////////////////////////////////////////////
    وهذا هو الاكسبيرت
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: mq4 TEST.mq4‏ (2.9 كيلوبايت, المشاهدات 93)

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة cher90 مشاهدة المشاركة
    بارك الله فيك أستاذ اسامة على مساعداتك الطيبة

    حاولت حصر وقت عمل الإكسبريت يعني يعمل كل يوم من 7h صباحا حتى 23h ليلا
    ولا يفتح أي صفقة خارج هذا الوقت لاكن لم اتمكن من ذلك
    إستخدمت كود إكسبريت Scalp_net_v1.3.2_tf (مرفق)

    هكذا
    كود PHP:
        //--------- int Order = SIGNAL_NONE; ************************************** Work Time ***********************************************************************
        
     
    if (Hour()>=FromHourTrade && Hour()<=ToHourTradeOrder SIGNAL_BUY;    ///////////////////////////////////////---- #define SIGNAL_BUY   1
     
    if (Hour()>=FromHourTrade && Hour()<=ToHourTradeOrder SIGNAL_SELL;   ///////////////////////////////////////---- #define SIGNAL_SELL  2 
    وأضفت الشرط Order == SIGNAL_BUY في شروط الدخول

    كود PHP:
             if(B<5000&&B_Previous>5000 && Order == SIGNAL_BUY){//------- A :p
           
             
    if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
                 
    PlaySound("Alert.wav");
                 }
    //------------------------------- A
                                              
          //------------------------------------------------------------
                     
                     
    if(S<5000&&S_Previous>5000 && Order == SIGNAL_SELL){ //-------- B
           
             
    if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
               if(
    TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
               
                
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"MR.dollar EA",MagicNumber,0,Red); 
                 
    PlaySound("Alert.wav");
                 
                 } 
    //--------------- B 
    و أريد أيضا من فضلك كود مضاعفات يعني كل 100 نقطة من كل الصفقات بحجم 0.1 لوت > ينتقل إلى 0.2 لوت
    وبعد 100 نقطة > ينتقل إلى 0.3 وهكذا
    وشيء أخير أيضا لو تكرمت طريقة أو كود تحديد الربح اليومي يعني بعد تحقيق 20 نقطة من مجمل الصفقات مثلا في اليوم يتوقف عن العمل حتى بداية اليوم الجديد

    أرجو اني لم أثقل عليك أستاذي الكريم وجزاك الله خيرا
    راجع الإكسبرت المرفق وإستخدم منه فلتر التوقيت والمضاعفات

    بالنسبه لتحديد الربح اليومي فسوف تحتاج إلى عمل داله لمعرفة الربح اليومي بالنقاط مثال :
    كود PHP:
    double profitpoints(){
    double ProfitPips;
    for(
    int i=OrdersTotal();i>0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(
    OrderSymbol()==Symbol()&OrderMagicNumber()==MagicNumber&&OrderOpenTime()>iTime(Symbol(),1440,0)){
    if(
    OrderType()==OP_SELL)ProfitPips+=(OrderOpenPrice()-OrderClosePrice());
    if(
    OrderType()==OP_BUY)ProfitPips+=(OrderClosePrice()-OrderOpenPrice());
     }
    if(
    OrderOpenTime()<iTime(Symbol(),1440,0))return(ProfitPips/Point);
    }
    return(
    ProfitPips/Point);

    ثم تحدد في شروط الدخول
    كود PHP:
    if(profitpoints()<20
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

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


    قمت بإضافة الدوال ولكن يظهر عندي خطئان لم أستطع إصلاحهما

    هل هذا الكود
    كود:
    if(HideSL)SL=0;
    if(HideTP)TP=0;
    هو نفسه هذا الكود
    كود:
            if(HideSL&&StopLoss>0)
       {
          CloseBuyOrdersHiddenSL();CloseSellOrdersHiddenSL();
       }
       if(HideTP&&TakeProfit>0)
       {
          CloseBuyOrdersHiddenTP();CloseSellOrdersHiddenTP();
       }
    الإكسبيرت مرفق رجاء الإطلاع أخي أسامه و تقبل ودي و إحترامي و تقديري .
    الخطأ في أنك قمت بتعريف أحد الدوال داخل الداله start وهذا ما أخبرتك به سابقا
    والبرمجه ليست نسخ ولصق لكن إذا فهمت الفكره الآساسيه فسوف تجد أن الموضوع أسهل بكثير من هذه الطريقه

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

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

    افتراضي

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

    السلام عليكم ورحمة الله وبركاته

    المعذرة تعبتك ياغالي

    لكن طلعلي خط ، يعني ماصار تاريخي ، فماهو السبب

    وجزاك الله الف خير

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

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة poles2008 مشاهدة المشاركة
    اخى مستر دولار
    لديا سؤال اذا سمحت
    كيف اقوم بتعريف فيبوناتشى فى لغة البرمجة
    فانا اريد تعريف Fibonacci Expansion
    فمثلا اذا كان السعر اعلى من مستوى 100 يقوم بالشراء ولو اقل من مستوى 100 يقوم بالبيع
    لست بحاجه إلى تعريف الفيبوناتشي إذا فهمت ما هو المبدأ الذي يعتمد عليه
    مستوى 100 في الفيبوناتشي إكسبانش يحسب ب
    ( القاع - الفرق بين القمه الأولى والقمه الثانيه )
    أو ( القمه + الفرق بين القاع الأول والقاع الثاني )
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

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

    مرفق الإكسبرت بعد التعديل
    شكرا جزيلا أخي اسامه على تعبك معي .
    أنا لم افهم اخي لماذا يجب أن تكون القيمه صفر في هذا الكود كما أخبرتني
    كود:
    if(HideSL)SL=0;
    if(HideTP)TP=0;
    و طبعا هذا ليس له علاقه بالهدف و الإستوب الخارجي
    يعني لو اردت هدف الصفقه مثلا 10 نقاط و الإستوب 10 نقاطو أردتهما مخفيان سوف اجعل الكود هكذا
    كود:
    extern int BreakEven=0;
    extern int movestopto=0;
    extern bool HideSL=true;
    extern int StopLoss=10;
    extern bool HideTP=true;
    extern int TakeProfit=10;
    extern int TrailingStop=0;
    extern int TrailingStep=0;
    extern int MagicNumber=2533;
    و داخل الداله ستارت تكون قيمة hidetp و ال hidesl صفر هكذا
    كود:
    if(StopLoss==0||HideSL){SL=0;}else{SL=Ask-StopLoss*point;}
               if(TakeProfit==0||HideTP){TP=0;}else{TP=Ask+TakeProfit*point;}
    و الداله السابقه هي نفسها هذه الداله
    كود:
    if(HideSL)SL=0;
    if(HideTP)TP=0;
    هل هذا صحيح اخي اسامه بارك الله فيك .
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Ahmedmaths مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته
    سؤال برمجي للأستاذ مستر دولار

    أنا برمجت اكسبيرت بسيط يقوم بفتح صفقتين احداهما بيع والاخرى شراء وهدف كل منهما 20 نقطة ومن غير ستوب لوز
    ثم عرفت دالة لغلق الصفقة عندما يعكس السعر 20 نقطة (يعني كأني عملت ستوب لوز 20 نقطة)
    المشكلة عند تشغيل هذا الاكسبيرت مثلا على يوم 14/11/2011 يفتح الاكسبيرت صفقتان بيع+شراء ولكن لا يتم تفعيل أمر غلق صفقة الشراء بعد عكس السعر لأسفل بينما يتم تفعيل أمر غلق صفقة البيع عندما يعكس السعر لأعلى


    وهذا هو كود البرنامج
    ////////////////////////////////////////////////////////////
    double TP,B,S;
    int Magicnumber1=123456;
    int Magicnumber2=123457;
    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start()
    {
    double Lot,F;
    F=AccountEquity()/AccountBalance();
    Comment(F*100,"--",AccountEquity(),"--",AccountBalance());
    Lot=NormalizeDouble(AccountFreeMargin()/25000,1);
    TP=200;
    if(MyOrdersTotal(Magicnumber1)==0)
    {

    OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,Ask+TP*Point ,"l",Magicnumber1,0,Green);
    B=Ask;
    }
    if(MyOrdersTotal(Magicnumber2)==0)
    {
    OrderSend(Symbol(),OP_SELL,Lot,Bid,0,0,Bid-TP*Point,"l",Magicnumber2,0,Green);
    S=Bid;
    }
    if(Ask<=B-TP*Point)
    {
    CloseOrders(Magicnumber1);
    }
    if(Bid>=S+TP*Point)
    {
    CloseOrders(Magicnumber2);
    }
    //////////////////////////////////////////////////////////////////////
    return(0);
    }
    //+------------------------------------------------------------------+
    int MyOrdersTotal(int Magic)
    {
    int c=0;
    int total = OrdersTotal();

    for (int cnt = 0 ; cnt < total ; cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
    c++;
    }
    }
    return(c);
    }
    //+------------------------------------------------------------------+
    int CloseOrders(int Magic)
    {
    int total = OrdersTotal()-1;

    for (int cnt = total ; cnt > 0 ; cnt--)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
    if (OrderType()==OP_BUY)
    {
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
    }

    if (OrderType()==OP_SELL)
    {
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
    }
    }
    }
    return(0);
    }

    ///////////////////////////////////////////////
    وعليكم السلام ورحمة الله وبركاته
    لماذا جعلت عدد الصفقات -1
    كود PHP:
     int total  OrdersTotal()-1
    بالتالي إذا كان عدد الصفقات 2
    فسوف يصبح 2 - 1 = 1
    ثم يبدأ في البحث عن الصفقات بالرقم 1 أي سيبحث عن صفقه واحده فقط
    كود PHP:
     for (int cnt total cnt cnt--) 
    ولن يبحث عن الصفقه الأخرى
    وإذا أغلقت صفقه فسوف يبقى صفقه واحده فسوف يصبح معنى
    كود PHP:
     int total  OrdersTotal()-1
    أي 1 - 1 = 0
    بالتالي لن يتم تنفيذ الحلقه أساسا
    قم بتعديله إجعلها
    كود PHP:
      int total  OrdersTotal(); 
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

  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