النتائج 1 إلى 2 من 2
  1. #1
    الصورة الرمزية reki carrillo
    reki carrillo غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2015
    الإقامة
    الجزائر
    المشاركات
    33

    افتراضي تعديلCODEاكسبيرت ارجوك ارجوك ارجوك ان تساعدني مستر دولار

    السلام عيكم ورحمة اللة وبركاتة استاذ الكريم مستر دولار
    رجو المساعدة في تعديل هذا اكسبيرت
    اريد ان اضع مكان هده الدالة
    كود:
    if(MyRealOrdersTotal(MagicNumber)==2 && MyPendingOrdersTotal(MagicNumber)
    ==0)
    هده الأومر .. .. إعدادات ..... حجم اللوت كل واحد مختلف
    1. إذا كان عدد الأوامر المفتوح شراء 1 والأوامر المفتوح بيع 1 فيتم وضع امر المعلق شراء في نفس السعر الدي فتح فيه صفقة شراء
    كود:
     gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots_2,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",MagicNumber,0,Green);
    2. إذا كان عدد الأوامر المفتوح شراء 2 والأوامر المفتوح بيع 1 فيتم وضع امر المعلق بيع في نفس السعر الدي فتح فيه صفقة
    كود:
    gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots_4,ssl,3,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",MagicNumber,0,Green);
    3. إذا كان عدد الأوامر المفتوح شراء 2 والأوامر المفتوح بيع 2 فيتم وضع امر المعلق شراء في نفس السعر الدي فتح فيه صفقة شراء
    كود:
    gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots_5,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",Magic,0,Green);
    4. إذا كان عدد الأوامر المفتوح شراء 3 والأوامر المفتوح بيع 2 فيتم وضع امر المعلق بيع في نفس السعر الدي فتح فيه صفقة بيع
    كود:
    gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots_6,PendingPrice,3 ,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",Magic,0,Green);
    5. إذا كان عدد الأوامر المفتوح شراء 3 والأوامر المفتوح بيع 3 فيتم وضع امر المعلق شراء في نفس السعر الدي فتح فيه صفقة شراء
    كود:
    gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots_7,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",Magic,0,Green);
    6. إذا كان عدد الأوامر المفتوح شراء 4 والأوامر المفتوح بيع 3 فيتم وضع امر المعلق بيع في نفس السعر الدي فتح فيه صفقة بيع
    كود:
    gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots_8,PendingPrice,3 ,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",Magic,0,Green);
    7. إذا كان عدد الأوامر المفتوح شراء 4 والأوامر المفتوح بيع 4 فيتم وضع امر المعلق شراء في نفس السعر الدي فتح فيه صفقة شراء
    كود:
    gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots_9,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",Magic,0,Green);
    8. إذا كان عدد الأوامر المفتوح شراء5 والأوامر المفتوح بيع 4 فيتم وضع امر المعلق بيع في نفس السعر الدي فتح فيه صفقة بيع
    كود:
    gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots_10,PendingPrice,3 ,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",Magic,0,Green);
    9. إذا كان عدد الأوامر المفتوح شراء 5 والأوامر المفتوح بيع 5 فيتم وضع امر المعلق شراء في نفس السعر الدي فتح فيه صفقة شراء
    كود:
    gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots_11,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",Magic,0,Green);
    10. إذا كان عدد الأوامر المفتوح شراء 6 والأوامر المفتوح بيع 5 فيتم وضع امر المعلق بيع في نفس السعر الدي فتح فيه صفقة بيع
    كود:
    gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots_12,PendingPrice,3 ,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",Magic,0,Green);
    11. إذا كان عدد الأوامر المفتوح شراء 6 والأوامر المفتوح بيع 6 فيتم وضع امر المعلق شراء في نفس السعر الدي فتح فيه صفقة شراء
    كود:
    gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots_13,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",Magic,0,Green);
    12. إذا كان عدد الأوامر المفتوح شراء 7 والأوامر المفتوح بيع 6 فيتم وضع امر المعلق بيع في نفس السعر الدي فتح فيه صفقة بيع
    كود:
    gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots_14,PendingPrice,3 ,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",Magic,0,Green);

    هدا هو الجز الدي اريد ان اعدله................................................. ..................................

    كود:
    // //////////// //////// //// //////// /////////// ///////////////// ////////Ç
    if(MyRealOrdersTotal(MagicNumber)==2 && MyPendingOrdersTotal(MagicNumber)==0)
      {
       
       OrderSelect(t1,SELECT_BY_TICKET,MODE_TRADES);
       ssl=OrderStopLoss();
       PendingPrice=Bid+Zone*Point;
    
       if(OrderType()==OP_BUY && slot<Maxlot)
         {      
          gT1=OrderSend(Symbol(),OP_SELLSTOP,slot,ssl,3,PendingPrice+StopLoss*Point,PendingPrice-TakeProfit*Point,"",MagicNumber,0,Green);
         }
         
        if(OrderType()==OP_SELL && slot<Maxlot)
          {
          gT1=OrderSend(Symbol(),OP_BUYSTOP,slot,PendingPrice,3,PendingPrice-StopLoss*Point,PendingPrice+TakeProfit*Point,"",MagicNumber,0,Green);
          } 
    
      }
    return(0);
    }
    
    
    // // ////////// ////////// ///////// // ////////// ////////// ///////// // ////////// ////////// ////////
    int MyRealOrdersTotal(int Magic)
    {
      int c=0;
      int total=OrdersTotal();
      t1=-1;
      t2=-1;
    
      for(int cnt=0; cnt<total; cnt++)
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
        {
          if(t1==-1)
          {
            t1=OrderTicket();
          }
          else
          {
            if(t2==-1)
            {
              t2=OrderTicket();
            }
          }
          c++;
        }
      }
      return(c);
    }
    // / // ////////// ////////// ///////// // ////////// ////////// ////////
    int MyPendingOrdersTotal(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() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
        {
          c++;
        }
      }
      return(c);
    }
    // / // ////////// ////////// ///////// // ////////// ////////// ////////
    int DeletePendingOrders(int Magic)
    {
    int total=OrdersTotal();
    
    for(int cnt=total-1; cnt>=0; cnt--)
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    {
     OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
     if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
     {
       OrderDelete(OrderTicket());
     }
    }
    return(0);
    }
    //+------------------------------------------------------------------+
    آخر تعديل بواسطة reki carrillo ، 22-12-2015 الساعة 12:42 AM

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

    افتراضي

    الفكره في أنك تريد زيادة حجم اللوت في كل مره حسب عدد الصفقات أليس كذلك ؟
    لماذا لا تقوم بعمل دالة تعود بحجم اللوت حسب عدد الصفقات المفتوحه
    مثال
    دالة لحساب مجموع الصفقات المفتوحه
    كود PHP:
     int TotalOrders(int type=-1)
     {
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1)){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    ثم تقوم بعمل دالة لمعرفة قيمة حجم اللوت حسب عدد الصفقات المفتوحه
    مثال
    كود PHP:
      double NextLot()
      {
       switch(
    TotalOrders())
       {
        case 
    2:return (Lots_3);
        case 
    3:return(Lots_4);
        case 
    4:return(Lots_5);
        case 
    5:return(Lots_6);
       } 
      } 
    وهكذا حتى عدد اللوت الذي تريد وضعه ثم تستخدم هذه الداله مع الأوامر


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