صفحة 339 من 686 الأولىالأولى ... 239289329333334335336337338339340341342343344345349389439 ... الأخيرةالأخيرة
النتائج 5,071 إلى 5,085 من 10285
  1. #5071
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,851

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة first_knight مشاهدة المشاركة
    السلام عليكم مبرمجين واعضاء ومشرفين المنتدى
    هذا الاكسبيرت يعطي تنبية للشراء والبيع
    لكنه لا يدخل صفقات . الرجاء توضيح كيف الغي التنبية واجعلة يدخل صفقات
    وكذلك به تنبية modify order . اريد ان الغي التنبيهات واحولها لاوامر تنفيذ
    بارك الله فيكم جميعا
    كود:
    #property copyright "Abukareem"
    #property link      "abukareem"
     
    //#include <Debug.mqh>
     
    extern int MaxSL = 1100;
    extern int MinSL = 400;
    extern int MinMoveValue = 200;
    extern double BBMaxOpenOrderDeviation = 1.5;
    extern double BBSLDeviation = 1.0;
    extern double BBScalpingDeviation = 3.0;
    extern int SEFCPeriod = 12;
     
    int buys=0;
    int sells=0;
     
    int ticket = -1;  // valid when one ticket is opened 
    double orderSL;
    double orderTP;
     
    #define SLIPPAGE 2
    #define ORDER_COMMENT "FPSS"
     
    bool CalculateOpenOrders(string symbol) {
      buys=0;
      sells=0;
      for (int i=0; i<OrdersTotal(); i++) {
        if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) break;    
        if (OrderCloseTime() != 0) continue;
        if (StringFind(OrderComment(), ORDER_COMMENT) < 0) continue;
      // if for tester only, all orders are ours
        if  (OrderSymbol()==Symbol()) {
          if (OrderType()==OP_BUY)  buys++;
          if (OrderType()==OP_SELL) sells++;
          ticket = OrderTicket();
          orderSL = OrderStopLoss();
          orderTP = OrderTakeProfit();
        }
      }
      if (buys > 0 && sells > 0) {
        Print("WARNING: opened both buy and sell orders");
        ticket = -1;
      }
      return (buys>0 || sells>0);
    }
     
    datetime lastOrderCandle = 0;
     
    void DoOpenOrder(int type, string typeS, double price, double sl, double tp) {
      if (lastOrderCandle == Time[0]) {
        return;   // to protect Order/SL, Order/SL during one candle
      }
      lastOrderCandle = Time[0];
      
      Alert("Trend change signalized, open "+typeS+" order, symbol: "+Symbol()+", price: "+price+", stoploss: "+sl, ", tp: "+tp + ", Comment: "+ORDER_COMMENT); 
     
      if (!IsTesting()) return;  
      int ot = OrderSend(Symbol(), type, MarketInfo(Symbol(), MODE_MINLOT), price, SLIPPAGE, sl, tp, ORDER_COMMENT, 0, 0, Yellow);
      if (ot < 0) Print(GetLastError());
     
    }
     
    void DoCloseOrder(int type, string typeS, double price) {
     
      static datetime lastCloseCandle = 0;
      static int lastCloseTicket = -1;
      if (Time[0] == lastCloseCandle && lastCloseTicket == ticket) return;
      lastCloseTicket = ticket;
      lastCloseCandle = Time[0];
      lastOrderCandle = 0;
      
      Alert("Trend change signalized, close "+typeS+" orders. Close price: "+price);
        
      if (!IsTesting()) return;
      for (int i=0; i<OrdersTotal(); i++) {
        if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) break;
        if (OrderType() == type) {
          if (!OrderClose(OrderTicket(), OrderLots(), price, SLIPPAGE, Orange)) {
            Print("OrderClose", GetLastError());
          }
        }      
      }      
    }
     
    void DoModifyOrder(int type, string typeS, double sl, double tp) {
    //Debug("Modif1", ticket, type, sl, tp, orderSL, orderTP);
      if (ticket < 0) return;
      
      double minMove = Point*MinMoveValue;
      if (MathAbs(sl-orderSL) < minMove && MathAbs(tp-orderTP) < minMove) return;
     
    //  if (lastOrderCandle == Time[0]) return;   // do not modify in order period, ne have higher TP when (Ask/Bid+deviation)
    //  lastOrderCandle = Time[0];   // modify SL/TP once per period ?? 
      
      Alert("Modify order: ", typeS, ", Move SL: ", sl, ", TP: ", tp);
      if (!IsTesting()) return;
      bool res = OrderModify(ticket, OrderOpenPrice(), sl, tp, 0, Yellow);
    //Debug("Modify", type, ticket, sl, tp, res);  
    }
     
    int init() {
      //DebugOpen("", "FPS.dbg");
      return(0);
    }
     
    void deinit() {
      //DebugClose();
    }
     
    int start() {
      
      if (Bars<100) {
        return(0);  // not enough data
      }
     
    // test for signal arrow, current signal, indicator has Signal=1 to draw arrows
      int BBBuySignal = 0;
      int BBSellSignal = 0;
     
      double sl;
      sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 2 /*buy arrow*/, 1);
      if (sl != EMPTY_VALUE) { // buy arrow is at the lower band
        BBBuySignal++;
        // and the trend go on at leas in one sample, i.e. filter case when close price won't reach previous one a tall
        if (Close[0] > Close[1]) {
          
          BBBuySignal++;
        }
      } else {
        sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 3 /*sell arrow*/, 1);
        if (sl != EMPTY_VALUE) {
          BBSellSignal++;
          if (Close[0] < Close[1]) {  
            BBSellSignal++;
          }
        }
      }  
      if (sl == EMPTY_VALUE) {
        sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 0 /*buffer*/, 1);  // previous sample not to be so strict
        if (sl == EMPTY_VALUE) {
          sl = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 1 /*buffer*/, 1);    
        }  
      }
     
      double middle = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 6 /*middle trend */, 0);
      double bbWidth = iCustom(Symbol(), Period(), "BBand Stop Alert", BBSLDeviation, 7 /*width */, 0);
     
    //  double tp = MathMax(BBScalpingDeviation*bbWidth, Point*MaxSL);
      double tp = BBScalpingDeviation*bbWidth;
     
    //Debug("middle/stp", sells, buys, BBBuySignal, BBSellSignal, Bid, middle, bbWidth, sl, tp, MathAbs(Bid-sl), MathAbs(Bid-sl) <= Point*MaxSL, MathAbs(Bid-sl) >= Point*MinSL, MathAbs(Bid-middle)<= BBMaxOpenOrderDeviation*bbWidth);
      // trend detection may be anothe criterion 
      
      bool Bullish = iCustom(Symbol(), Period(), "SEFC084", SEFCPeriod, 1/* bull*/, 1) > 0;  // is not bull then must be bear
       
      if (CalculateOpenOrders(Symbol())) {  
        if ((Bid > sl /* in tester is applied on SL but has effect in manual mode */|| BBBuySignal >0) && sells > 0) {
          DoCloseOrder(OP_SELL, "SELL", Ask); 
          sells = 0;
        }
        if ((Bid < sl || BBSellSignal >0) && buys > 0) {
          DoCloseOrder(OP_BUY, "BUY", Bid);
          buys = 0;
        }
        double sl2;    
        if (buys == 1) {
          if (MathAbs(Bid-sl) < Point*MinSL) {
            sl2 = orderSL;
          }
          else {
            sl2 = MathMax(orderSL, sl);
          }
          DoModifyOrder(OP_BUY, "BUY", sl2, middle + tp);
        }
        if (sells == 1) {
          if (MathAbs(Bid-sl) < Point*MinSL) {
            sl2 = orderSL;
          }
          else {
            sl2 = MathMin(orderSL, sl+Ask-Bid);
          }
          DoModifyOrder(OP_SELL, "SELL", sl2, middle - tp + Ask-Bid); 
        }
      }
      
      if (MathAbs(Bid-sl) <= Point*MaxSL &&   // do not open order when deviation is too high and price is already far from band
          MathAbs(Bid-sl) >= Point*MinSL &&     // price is back in channel or channel is too narrow
          MathAbs(Bid-middle)<= BBMaxOpenOrderDeviation*bbWidth  // price is not too far, bounce danger
        ) {  
        if (BBBuySignal>1 && Bullish && buys == 0) {
          DoOpenOrder(OP_BUY, "BUY", Ask, sl, middle + tp);  
        } else if (BBSellSignal>1 && !Bullish && sells == 0) {
          DoOpenOrder(OP_SELL, "SELL", Bid, sl + Ask-Bid, middle - tp + Ask-Bid);
        }
      }
        
      return(0);
    }
    قم بإلغاء هذا السطر من الكود
    كود PHP:
      if (!IsTesting()) return; 

  2. #5072
    الصورة الرمزية ahmad mah
    ahmad mah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2011
    المشاركات
    4

    افتراضي أمر يوقف عمل الاكسبيرات مؤقتا

    الاخوة الاعزاء ابحث عن الامر اضعه داخل الاكسبيرت ليوقف عمله مؤقتا وليعود ويفتحه بعد فترة زمنية اختارها انا(الامر يجعل Auto Trading ) احمر دون ان يزيل الاكسبيرت من الشارت ويعود بعدزمن اخترته انا ويجعله اخضر ولكم جزيل الشكر.

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    شكرا على المساعدة الكريمة
    وسؤال آخر لو سمحت
    كيف يمكن أن أجعل الاكسبيرت ان لا يفتح أكثر من 20 صفقة في اليوم الواحد
    عملت اول جزء كالتالي :
    كود PHP:
    //+------------------Limit Open All Orders--------------------------------+
    int LimitOpenAllOrders1()
    {
        
    int count;
        for (
    int i=OrdersTotal()-1i>=0i--)
        
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
        if(
    OrderType()==OP_SELL&&OrderType()==OP_BUY)
        {
          
    count++;
        }
        return(
    count);
    }
    int LimitOpenAllOrders2()
    {
        
    int count;
        for (
    int i=OrdersHistoryTotal()-1i>=0i--)
        
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
        if(
    OrderType()==OP_SELL&&OrderType()==OP_BUY)
        {
          
    count++;
        }
        return(
    count);
    }
    //+------------------Open Order1 CONDITIONS--------------------------------+
    void Technical()
    {
      if ((
    LimitOpenAllOrders1()+LimitOpenAllOrders2())<30)
      {
    //////
      
    }

    بقي لي إضافة شرط "في اليوم الواحد" 24 ساعة
    بمعنى آخر كل يوم لا يفتح أكثر من 20 صفقة إجمالية على جميع العملات
    جزاك الله خيرا
    أهلين حسن ، تضيف الكود الى الدالة
    كود PHP:
    if(OrderType()==OP_SELL&&OrderType()==OP_BUY)
    if(
    OrderOpenTime()>=iTime(Symbol(),1440,0)) 
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

  4. #5074
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Jmeel مشاهدة المشاركة
    أهلين حسن ، تضيف الكود الى الدالة
    كود PHP:
    if(OrderType()==OP_SELL&&OrderType()==OP_BUY)
    if(
    OrderOpenTime()>=iTime(Symbol(),1440,0)) 
    جزاك الله خيرا أستاذ جميل
    جاري التجربة
    آخر تعديل بواسطة kira-h ، 15-04-2014 الساعة 01:15 AM

  5. #5075
    الصورة الرمزية kira-h
    kira-h غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Oct 2011
    الإقامة
    المغرب
    المشاركات
    1,334

    افتراضي

    أستاذ جميل تمت التجربة بالباكتيست واتضح أن الدوال الخاصة بحساب عدد الصفقات الاجمالية خاطئة
    وبعد محاولات توصلت إلى الدالة الصحيحة وهي كالتالي:
    كود PHP:
    int LimitOpenAllOrdersInTime()
    {
        
    int countA=0;
        for (
    int i=OrdersTotal()-1i>=0i--)
        if (
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(
    OrderOpenTime()>=iTime(Symbol(),1440,0))
         {
          if(
    OrderType()==OP_SELL||OrderType()==OP_BUY)
          {
           
    countA++;
          }
         }
        }
        
    int countB=0;
        for (
    int j=OrdersHistoryTotal()-1j>=0j--)
        if (
    OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
        {
         if(
    OrderOpenTime()>=iTime(Symbol(),1440,0))
         {
          if(
    OrderType()==OP_SELL||OrderType()==OP_BUY)
          {
           
    countB++;
          }
         }
        }
        if ((
    countA+countB)<30)
        {
          
    // TechnicalAnalysis(); 
        
    }
        return(
    countA);

    جزاكم الله خيرا
    تحياتي وتقديري
    آخر تعديل بواسطة kira-h ، 15-04-2014 الساعة 03:02 AM

  6. #5076
    الصورة الرمزية first_knight
    first_knight غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    170

    افتراضي

    جزاكم الله خيرا مستر دولار

  7. #5077
    الصورة الرمزية ahmad mah
    ahmad mah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2011
    المشاركات
    4

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ahmad mah مشاهدة المشاركة
    الاخوة الاعزاء ابحث عن الامر اضعه داخل الاكسبيرت ليوقف عمله مؤقتا وليعود ويفتحه بعد فترة زمنية اختارها انا(الامر يجعل Auto Trading ) احمر دون ان يزيل الاكسبيرت من الشارت ويعود بعدزمن اخترته انا ويجعله اخضر ولكم جزيل الشكر.


    ارجو ان يكون احد مهتم يسؤالي

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ahmad mah مشاهدة المشاركة
    ارجو ان يكون احد مهتم يسؤالي
    يمكنك إستخدام الأمر Sleep لإيقاف الإكسبرت فتح معينه
    مثال
    كود PHP:
    if(Hour()>22)
        {
         
    Sleep(10000);
        } 

  9. #5079
    الصورة الرمزية ahmad mah
    ahmad mah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2011
    المشاركات
    4

    افتراضي

    شكرا لك أخي الكريم هذا الامر يوقف عمل الاكسبيرت الذي على الشارت لفترة زمنية لكن لا يةقف عمل الاكسبيرتات الموجودة على شترتات اخرى انا ابحث عن امر (كود) يعطل عمل الكل على المحطة بالكامل اي يحول لون AUTO TRADING من اخضر الى احمر اي يعمل DISABLE AUTOMATED TRADING اي يلغي اشارة الصح من TOOLS (من ALLOW AUTOMATED TADING)

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ahmad mah مشاهدة المشاركة
    شكرا لك أخي الكريم هذا الامر يوقف عمل الاكسبيرت الذي على الشارت لفترة زمنية لكن لا يةقف عمل الاكسبيرتات الموجودة على شترتات اخرى انا ابحث عن امر (كود) يعطل عمل الكل على المحطة بالكامل اي يحول لون AUTO TRADING من اخضر الى احمر اي يعمل DISABLE AUTOMATED TRADING اي يلغي اشارة الصح من TOOLS (من ALLOW AUTOMATED TADING)
    لا يوجد كود مثل هذا الأمر حسب علمي لكن يوجد فقط الداله ExpertRemove وهي تحذف الإكسبرت من على الشارت

  11. #5081
    الصورة الرمزية first_knight
    first_knight غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    170

    افتراضي

    السلام عليكم مشرفين ومبرمجين واعضاء وزوار المنتدى
    استاذي ومعلمي مستر دولار في المشاركة رقم 5061
    قمت انا بالغاء كود التنبية واستبداله بكود الشراء والبيع
    لكن مازال الاكسبيرت لا يفتح صفقات هل تتكرم بالقاء نظرة على الاكسبيرت
    لاني الحظ انة لا توجد دالة
    كود:
    void OnTick()
    والتي اعتقد عدم وجودها هي السبب في عدم فتح الصفقات
    مرفق الاكسبيرت قبل وبعد التعديل
    الملفات المرفقة الملفات المرفقة

  12. #5082
    الصورة الرمزية ahmad mah
    ahmad mah غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2011
    المشاركات
    4

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    لا يوجد كود مثل هذا الأمر حسب علمي لكن يوجد فقط الداله ExpertRemove وهي تحذف الإكسبرت من على الشارت
    شكرا لك مشرفنا الغالي مستر دولار انا فعلا استخدم هذه الدالة (ExpertRemove)لكل الاكسبيرتات على الشارتات ولكن اضطر ان اعود للشارتات لاضافة الاكسبيرتات من جديد ولو كان هذا الكود الذي ابحث عنه موجود لامكنني الغاء عمل الاكسبيرتات على جميع الشارتات ولامكنني ان اطلب منه اعادة تفعيل الاكسبيرتات في اليوم التالي مثلا. انا سمعت انه يمكن عمل ذلك ولا أدري كيف.

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة first_knight مشاهدة المشاركة
    السلام عليكم مشرفين ومبرمجين واعضاء وزوار المنتدى
    استاذي ومعلمي مستر دولار في المشاركة رقم 5061
    قمت انا بالغاء كود التنبية واستبداله بكود الشراء والبيع
    لكن مازال الاكسبيرت لا يفتح صفقات هل تتكرم بالقاء نظرة على الاكسبيرت
    لاني الحظ انة لا توجد دالة
    كود:
    void OnTick()
    والتي اعتقد عدم وجودها هي السبب في عدم فتح الصفقات
    مرفق الاكسبيرت قبل وبعد التعديل
    وعليكم السلام ورحمة الله وبركاته
    الداله start تقوم بنفس عمل الداله OnTick فليس هذا هو السبب
    لكن السبب لديك خطأ في تحديد إعدادات الداله OrderSend
    أنت قمت بجعله
    كود PHP:
    OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+StopLoss,Bid-TakeProfit,"Abukareem",MagicNumber,0,Red); 
    فالخطأ في تحديد القيم Bid+StopLoss و Bid-TakeProfit
    جرب أن تحسب هذه القيم لو جعلت TakeProfit=50 وكان السعر الحالي 1.4030
    فسوف يصبح الهدف 1.4030-50 = -49.6070
    فهل هذا يعقل بالتأكيد خطأ
    الصحيح أنك يجب أن تقوم بتحويل قيمة TakeProfit إلى قيمتها بالنقاط بأن تضربها في Point وأيضا نفس الفكره بالنسبه للأستوب لوز

    قم بتعديل هذه الأخطاء ثم أعد تجربة الإكسبرت مره أخرى

  14. #5084
    الصورة الرمزية first_knight
    first_knight غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2014
    الإقامة
    المملكة العربية السعودية
    المشاركات
    170

    افتراضي

    شكرا لك مستر دولار كلامك صحيح
    بارك الله فيك ووسع لك في رزقك

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة first_knight مشاهدة المشاركة
    شكرا لك مستر دولار كلامك صحيح
    بارك الله فيك ووسع لك في رزقك
    بالتوفيق إن شاء الله

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

  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