Quran 24/7 الموضوع المخصص للأسئلة البرمجية mql4 - الصفحة 237


صفحة 237 من 246 الأولىالأولى ... 137187227235236237238239 ... الأخيرةالأخيرة
النتائج 2,361 إلى 2,370 من 2455

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

  1. #2361

    افتراضي

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

    اتمنى لجميع الاعضاء الصحه و العافيه

    ما هي دالة اغلاق جزء من العقد

    مثلا اذا كان عندي صفقة بيع 0.6 لوت

    و صفقة شراء 0.9 لوت

    و الشراء محقق ربح

    المطلوب اغلاق الفرق بينهم اي اغلاق 0.3 لوت من صفقة الشراء

    كل الشكر و التقدير
    وعليكم السلام
    دالة اغلاق جزء من العقد عند تحقق ربح معين من النقاط كالتالي :
    كود:
    input double PartialProfit=20;
    
    
    void OnTick()
    {
     if(PartialProfit>0)PartialClose();
    }
    
    
    void PartialClose()
    {
     bool close;
     for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol();
      datetime ot=OrderOpenTime();
      double   op=OrderOpenPrice(),
               ol=OrderLots(),
               sl=OrderStopLoss(),
               tp=OrderTakeProfit();
      int      tk=OrderTicket(),
               ty=OrderType(),
               mn=OrderMagicNumber(),
               closecount=OrderCloseCount(op,ot);
      double   pc=NormalizeDouble(ol/2,2);//نصف العقد
      if(sy==Symbol()&&mn==MagicNo)
      {
       if(ty==OP_BUY)
       {
        if(Bid>=op+PartialProfit*point&&closecount<1)
        {
         close=OrderClose(tk,pc,Bid,30);
        }
       } 
       if(ty==OP_SELL)
       {
        if(Ask<=op-PartialProfit*point&&closecount<1)
        {  
         close=OrderClose(tk,pc,Ask,30);
        }
       } 
      }  
     }
    }
    ودالة لحساب عدد الاغلاقات الجزئية للعقد الأساسي كالتالي:
    كود:
    int OrderCloseCount(double openprice,datetime opentime)
    {
     int closecount=0;
     int i=0;
     while(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
     {
      i++;
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
      {
       if(OrderOpenPrice()==openprice&&OrderOpenTime()==opentime)closecount++;
      }
     } 
     return(closecount);   
    }
    بحيث :
    PartialProfit الربح الجزئي بالنقاط لاغلاق نصف العقد الأساسي
    التعديل الأخير تم بواسطة kira-h ; 17-06-2019 الساعة 03:04 AM

  2. #2362
    عضو
    تاريخ التسجيل
    Mar 2018
    المشاركات
    101

    افتراضي

    السلام عليكم ورحمة الله وبركاته
    سبق وأن وضعت لنا دالة لحساب أو معرفة آخر قمة لمؤشر الزقزاق بارك الله فيك
    هل من الممكن دالة معرفة وقت وتاريخ آخر قمة لمؤشر الزقزاق
    مع شكري واحترامي لك ولجميع الاعضاء
    التعديل الأخير تم بواسطة احمد ; 20-06-2019 الساعة 12:51 AM

  3. #2363

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة احمد مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته
    سبق وأن وضعت لنا دالة لحساب أو معرفة آخر قمة لمؤشر الزقزاق بارك الله فيك
    هل من الممكن دالة معرفة وقت وتاريخ آخر قمة لمؤشر الزقزاق
    مع شكري واحترامي لك ولجميع الاعضاء
    وعليكم السلام
    وإياك أخي الكريم
    راجع المشاركة التالية ستجد الدالة الزمنية للزيجزاج
    https://www.fxprg.com/vb/showthread....l=1#post881383

  4. #2364
    عضو
    تاريخ التسجيل
    Mar 2018
    المشاركات
    101

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    وعليكم السلام
    وإياك أخي الكريم
    راجع المشاركة التالية ستجد الدالة الزمنية للزيجزاج
    https://www.fxprg.com/vb/showthread....l=1#post881383
    تسلم وبارك الله فيك

  5. #2365

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة احمد مشاهدة المشاركة
    تسلم وبارك الله فيك
    وإياك أخي الكريم

  6. #2366
    عضو
    تاريخ التسجيل
    Sep 2017
    المشاركات
    194

    افتراضي

    أستاذ حسن

    إذا كان ممكن شرط فتح صفقة جديدة بلوت مضاعف حسب النوع عند ضرب ستوب لوز للصفقة الأساسية بدون انتظار إشارة جديدة لتقاطع الموفينجين.

    و شكرا جزيلا

    مثال لفتح صفقة شراء


    كود PHP:
    //--------------------Buy Order
     
    if((((MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)&&time!=Time[0]&&f1>s1&&f2<s2)
     ||(((
    MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)&&time!=Time[0]&&Closed("Profit",OP_SELL)<0))
     {   
      if(
    StopL!=0){SL=Ask-StopL*point;}else SL=0;
      if(
    TakeP!=0){TP=Ask+TakeP*point;}else TP=0
      
    int BuyOrder=OrderSend(Symbol(),OP_BUY,NewLots,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
      if(
    BuyOrder>0)time=Time[0]; 
     } 
    التعديل الأخير تم بواسطة iForex ; 25-06-2019 الساعة 06:13 PM

  7. #2367

    افتراضي

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

    إذا كان ممكن شرط فتح صفقة جديدة بلوت مضاعف حسب النوع عند ضرب ستوب لوز للصفقة الأساسية بدون انتظار إشارة جديدة لتقاطع الموفينجين.

    و شكرا جزيلا

    مثال لفتح صفقة شراء


    كود PHP:
    //--------------------Buy Order
     
    if((((MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)&&time!=Time[0]&&f1>s1&&f2<s2)
     ||(((
    MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)&&time!=Time[0]&&Closed("Profit",OP_SELL)<0))
     {   
      if(
    StopL!=0){SL=Ask-StopL*point;}else SL=0;
      if(
    TakeP!=0){TP=Ask+TakeP*point;}else TP=0
      
    int BuyOrder=OrderSend(Symbol(),OP_BUY,NewLots,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
      if(
    BuyOrder>0)time=Time[0]; 
     } 
    السلام عليكم
    الصحيح كالتالي:
    كود:
    void OnTick()
    {
     if((MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)
     {   
      if((time!=Time[0]&&f1>s1&&f2<s2)
      ||(Closed("Profit",OP_SELL)<0&&Closed("Time",OP_SELL)>Current("Time")))
      {
       if(StopL!=0){SL=Ask-StopL*point;}else SL=0;
       if(TakeP!=0){TP=Ask+TakeP*point;}else TP=0; 
       int BuyOrder=OrderSend(Symbol(),OP_BUY,NewLots,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
       if(BuyOrder>0)time=Time[0]; 
      } 
     }
    }
     
    double Closed(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               pt=OrderProfit(),
               sl=OrderStopLoss();  
      datetime tm=OrderCloseTime();                  
      if(sy==Symbol()&&mn==MagicNo)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="Time")return(tm);
       }
      } 
     }
     return(0);
    }
    
    
    double Current(string info,int type=-1)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               sl=OrderStopLoss();  
      datetime tm=OrderOpenTime();                  
      if(sy==Symbol()&&mn==MagicNo)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Type")return(ty);
        else if(info=="Time")return(tm);
       }
      } 
     }
     return(0);
    }

  8. #2368
    عضو
    تاريخ التسجيل
    Apr 2017
    المشاركات
    168

    افتراضي

    سلام عليكم اخ حسن في مرفق موشر مبني على شموع هيكن اشي لي اربع تايم فريم حاولت اني اعرف قيمة السهم يلي بيظهر بس ما حسنت هاد الكود تبعي قلي وين غلطي عاوز من الموشر يفتح صفقه واحده فقط عند ظهور السهم
    كود PHP:
      double Hsh(int ti ,int tr ,int shift)  {   double hsh=iCustom(Symbol(),ti,"TF Heiken Ashi Arrows",tr,shift);   return(hsh);  } 
    وشكرا
    الملفات المرفقة الملفات المرفقة

  9. #2369

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sal_moh85 مشاهدة المشاركة
    سلام عليكم اخ حسن في مرفق موشر مبني على شموع هيكن اشي لي اربع تايم فريم حاولت اني اعرف قيمة السهم يلي بيظهر بس ما حسنت هاد الكود تبعي قلي وين غلطي عاوز من الموشر يفتح صفقه واحده فقط عند ظهور السهم
    كود PHP:
      double Hsh(int ti ,int tr ,int shift)  {   double hsh=iCustom(Symbol(),ti,"TF Heiken Ashi Arrows",tr,shift);   return(hsh);  } 
    وشكرا
    وعليكم السلام
    الدالة سليمة
    وشروط ظهور السهم بالفريم الحالي كالتالي:
    كود:
     if(Hsh(0,0,1)!=EMPTY_VALUE&&Hsh(0,2,1)!=EMPTY_VALUE&&Hsh(0,4,1)!=EMPTY_VALUE&&Hsh(0,6,1)!=EMPTY_VALUE
     &&(Hsh(0,0,2)==EMPTY_VALUE||Hsh(0,2,2)==EMPTY_VALUE||Hsh(0,4,2)==EMPTY_VALUE||Hsh(0,6,2)==EMPTY_VALUE))//UP ARROW
     
     if(Hsh(0,1,1)!=EMPTY_VALUE&&Hsh(0,3,1)!=EMPTY_VALUE&&Hsh(0,5,1)!=EMPTY_VALUE&&Hsh(0,7,1)!=EMPTY_VALUE
     &&(Hsh(0,1,2)==EMPTY_VALUE||Hsh(0,3,2)==EMPTY_VALUE||Hsh(0,5,2)==EMPTY_VALUE||Hsh(0,7,2)==EMPTY_VALUE))//DOWN ARROW

  10. #2370
    عضو
    تاريخ التسجيل
    Sep 2017
    المشاركات
    194

    افتراضي

    السلام عليكم استاذ حسن

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

    و شكرا جزيلا استاذ حسن
    الملفات المرفقة الملفات المرفقة
    التعديل الأخير تم بواسطة iForex ; 27-06-2019 الساعة 10:59 AM

صفحة 237 من 246 الأولىالأولى ... 137187227235236237238239 ... الأخيرةالأخيرة

العلامات المرجعية

العلامات المرجعية

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •