صفحة 482 من 687 الأولىالأولى ... 382432472476477478479480481482483484485486487488492532582 ... الأخيرةالأخيرة
النتائج 7,216 إلى 7,230 من 10295
  1. #7216
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,854

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة السمحان مشاهدة المشاركة
    السلام عليكم
    ماهو الكود الذي لايسمح بالاكسبيرت بالتركيب على الشارت ويعطيك خيارين باك تيست او شراء من موقع الميتا
    الصوره المرفقه مثال
    الملف المرفق 454333
    وعليكم السلام ورحمة الله وبركاته
    لا يوجد كود لكن يجب أن ترفع الإكسبرت على موقع MQL5 في الماركت وعندما يقوم المستخدم بتنزيل نسخه ديمو فسوف تعمل بهذه الطريقه

  2. #7217
    الصورة الرمزية femtogold4
    femtogold4 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Feb 2009
    الإقامة
    مصر
    المشاركات
    1,293

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة femtogold4 مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته
    استاذي العزيز مستر دولار تحية وبعد
    فرضا عندنا مجموعة صفقات بيع خاسرة وبعدها حصل تصحيح لاخر 4 صفقات
    الصفقة الأخيرة (أ) محققة 30 نقطة والصفقة اللي قبلها (ب) 20 نقطة واللي قبلها (ج) 10 نقاط واللي قبلها (د) نقطة واحدة
    كيف يمكن عمل شرط اغلاق مثلا عند تحقق
    Profit=45 يتم اغلاق الصفقتين أ و ب (لأنهما حققتا ربح اكثر من 45 نقطة ) ولا يتم اغلاق الصفقتين ج و د
    أعتقد الأمر يحتاج إلى مصفوفة ارجو المساعدة جزاك الله خيرا
    اقتباس المشاركة الأصلية كتبت بواسطة goldfile مشاهدة المشاركة
    اخي الكريم تحتاح الى دالة و اول شيئ يتم الاعلان عن المتغيرات التالية هكذا

    كود PHP:
    int orderstotal OrdersTotal();
        
    int size 0;
        
    double ArrayOrder[10];
        
    int cnt 
    حيث ان ArrayOrder هيس المصفوفة التي ستخزن في الصفقات الرابحة و المتغير size هو حجمها

    ثم تشيك على جميع الصفقات المفتوحة للاحتفاظ بالصفقات التي حققت ربح داخل المضفوفة كالتالي

    كود PHP:
    for (cnt orderstotal cnt cnt--)
        {
            
    bool sel OrderSelect(cntSELECT_BY_POSMODE_TRADES);
            if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
            {
                
            if(
    OrderProfit() > 0){
            
    ArrayOrder[size] = OrderProfit();      
            
    size++;
            }
            }
        } 
    لاحظ انه كلما تحقق شرط الربح المتغير size يزيد بواحد يكون في البداية صفر ليخزن الصفقة الرابحة الاولى كعنصر له الاندكس 0 ثم الصفقة الثانية 1 وهكذا حسب عدد الصفقات المفتوحة

    الرابحة , ثم بعد ذلك نحتاج لحلقتين واحدة ضمن الثانية لضمان اضافة العنصر الاول للمصفوفة مع الاثاني والثاني مع الثالث وهكذا الى نهاية المصفوفة

    مع وضع الشرط داخل الحلقة

    كود PHP:
    for( int i size i++){  
         
         for(
    int j <size j++){    
             if(
    ArrayOrder[i]+ ArrayOrder[j] >= 500){ 
    واخير امر حذف اول صفقة

    كود PHP:
    if (OrderSelect(cntSELECT_BY_POSMODE_TRADES))
         
          if(
    OrderType()==OP_BUYOrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
            if(
    OrderType()==OP_SELLOrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet); 
    وستكون الدالة هكذا ليتم استدعائها من داخل start

    كود PHP:
    void CloseOrderOnProfit()
    {
        
    int orderstotal OrdersTotal();
        
    int size 0;
        
    double ArrayOrder[10];
        
    int cnt ;
        
        for (
    cnt orderstotal cnt cnt--)
        {
            
    bool sel OrderSelect(cntSELECT_BY_POSMODE_TRADES);
            if (
    OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
            {
                
            if(
    OrderProfit() > 0){
            
    ArrayOrder[size] = OrderProfit();      
            
    size++;
            }
            }
        }
        if (
    size 1)
        {
            
    ArrayResize(ArrayOrder,size);
            
    ArraySort(ArrayOrder);
        }
        
         for( 
    int i size i++){  
         
         for(
    int j <size j++){    
             if(
    ArrayOrder[i]+ ArrayOrder[j] >= 500){
             
        if (
    OrderSelect(cntSELECT_BY_POSMODE_TRADES))
         
          if(
    OrderType()==OP_BUYOrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);
            if(
    OrderType()==OP_SELLOrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet);
     
             }
                      
         }
              
        
        }
      } 
    اتمنى ان يشتغل معك الكود اخي الكريم واي خطا اتمنى التصويب من الاخ العزيز الدكتور اسامة

    تحياتي للجميع

    بالتوفيق
    اقتباس المشاركة الأصلية كتبت بواسطة femtogold4 مشاهدة المشاركة
    جزاك الله خيرا اخي العزيز goldfile وكما توقعت الامر يحتاج إلى مصفوفة ولا افهم فيها مطلقا هههههه
    سأجرب الكود وننتظر التصحيح من الأستاذ مستر دولار ان شاء الله
    بارك الله فيكم
    UP
    بانتظار التصحيح أستاذ أسامة بارك الله فيك
    وسؤال اخر هل توجد دالة نقطة البريك ايفن للبيع والشراء معا ؟ يعني يكون عندنا هدف وحيد لكل الصفقات بعد نقطة التعادل 0 نقطة
    آخر تعديل بواسطة femtogold4 ، 27-03-2016 الساعة 05:41 AM

  3. #7218
    الصورة الرمزية Profit Box
    Profit Box غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    503

    افتراضي

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

    استاذ اسامه ارجو المساعده في ايجاد حل برمجي ..

    ارغب بجعل الاكسبيرت يستمر في فتح الصفقات وتكون مجموعات من الصفقات

    حاليا الاكسبيرت يفتح مجموعة واحدة وينتظر حتى يتم اغلاقها

    ارجوا المساعدة واعطاء الدوال التي احتاجها

    وشكرا
    اضغط على الصورة لعرض أكبر

الاســـم:	tete.png
المشاهدات:	292
الحجـــم:	5.9 كيلوبايت
الرقم:	454347

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

    افتراضي

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

    استاذ اسامه ارجو المساعده في ايجاد حل برمجي ..

    ارغب بجعل الاكسبيرت يستمر في فتح الصفقات وتكون مجموعات من الصفقات

    حاليا الاكسبيرت يفتح مجموعة واحدة وينتظر حتى يتم اغلاقها

    ارجوا المساعدة واعطاء الدوال التي احتاجها

    وشكرا
    اضغط على الصورة لعرض أكبر

الاســـم:	tete.png
المشاهدات:	292
الحجـــم:	5.9 كيلوبايت
الرقم:	454347
    وعليكم السلام ورحمة الله وبركاته
    يمكنك إستخدام رقم التيكيت للصفقه الرئيسيه وتضعه في كومنت الصفقات التبريد الخاصة بالصفقه الرئيسيه ومنها سوف تصبح كل مجموعة مرتبطه ببعضها برقم كومنت واحد مميز

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة femtogold4 مشاهدة المشاركة
    UP
    بانتظار التصحيح أستاذ أسامة بارك الله فيك
    وسؤال اخر هل توجد دالة نقطة البريك ايفن للبيع والشراء معا ؟ يعني يكون عندنا هدف وحيد لكل الصفقات بعد نقطة التعادل 0 نقطة
    نعم الطريقة صحيحه تماما ولا غبار عليها
    يمكنك أيضا بدلا من إستخدام المصفوفات يمكنك المقارنة مباشرة بين الصفقات بحيث تحفظ ربح كل صفقة بالتي تليها
    مثال
    كود PHP:
    double profit1,profit2;
    for(
    int i=OrdersTotal()-1;i>=0;i--)
    {
     
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     
    int ticket=OrderTicket();
     
    int type=OrderType();
     
    double lots=OrderLots();
     if(
    OrderSymbol()==Symbol()&&OrderType()<=OP_SELL)
     {
      if(
    OrderType()==OP_BUY)profit1=(Bid-OrderOpenPrice())/Point;
      else 
    profit1=(OrderOpenPrice()-Ask)/Point;
      
    profit1=OrderProfit();
      for(
    int j=i-1;j>=0;j--)
      {
       
    OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
       if(
    OrderSymbol()==Symbol()&&OrderType()<=OP_SELL)
       {
        if(
    OrderType()==OP_BUY)profit2=(Bid-OrderOpenPrice())/Point;
        else 
    profit2=(OrderOpenPrice()-Ask)/Point;
        
        if(
    profit2+profit1>45)
        {
         
         if(
    OrderType()==OP_BUY)
         {
          
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
         }
         else 
         {
          
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
         }
         if(
    type==OP_BUY)
         {
          
    OrderClose(ticket,lots,Bid,3);
         }
         else 
         {
          
    OrderClose(ticket,lots,Ask,3);
         }
        }
       }
      }
     }

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

  6. #7221
    الصورة الرمزية Profit Box
    Profit Box غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    503

    افتراضي

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

    لكن واجهت مشكلة ..

    كنت استخدم دالة LastOrderPrice

    كود PHP:
    double LastOrderPrice(int type){ for(int i =0;i<OrdersTotal();i++) {  OrderSelect(i,SELECT_BY_POS,MODE_TRADES);  if(OrderSymbol()==Symbol()&&OrderType()==type)  {   return(OrderOpenPrice());  } } return(0);} 
    لاستخراج قيمة اول صفقة بيع واول صفقة شراء من المجموعة

    الان بوجود عدة مجموعات , بعد وضع رقم تيكيت الصفقة الرئيسية في الصفقات الهيدج او التبريد

    كيف اقدر اعمل المقارنة او البحث لاستخراج , قيمة افتتاح اول صفقتين من كل مجموعة

    وشكرا جزيلا

  7. #7222
    الصورة الرمزية Profit Box
    Profit Box غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    503

    افتراضي

    كود PHP:
    double Su[5];       
    Su[0]=1+2;
    Su[1]=1+3;
    Su[2]=1+4;
    Su[3]=1+5;
    Su[4]=1+6
    كود PHP:
    for(int i=0;i<5;i++) 
    {     
     if( 
    Close[1]>Su[i]&& Su[i]>=Close[0] ) 
     {
     
     }

    استاذ اسامه .. عندي استفسار اخر

    استخدم المستويات على شكل مصفوفه

    اريد حين يتم تنفيذ على احد المستويات يتم كتابة اسم المستوى في كومينت الصفقة مثل Su[2]

    حاولة استخدام Su[i] لكن يكتب لي قيمة المستوى ,


    وشكرا جزيلا

  8. #7223
    الصورة الرمزية goldfile
    goldfile غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سانت لوسيا
    المشاركات
    752

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Profit Box مشاهدة المشاركة
    الله يعطيك العافية وصلت الفكرة , استاذ اسامة ..

    لكن واجهت مشكلة ..

    كنت استخدم دالة LastOrderPrice

    كود PHP:
    double LastOrderPrice(int type){ for(int i =0;i<OrdersTotal();i++) {  OrderSelect(i,SELECT_BY_POS,MODE_TRADES);  if(OrderSymbol()==Symbol()&&OrderType()==type)  {   return(OrderOpenPrice());  } } return(0);} 
    لاستخراج قيمة اول صفقة بيع واول صفقة شراء من المجموعة

    الان بوجود عدة مجموعات , بعد وضع رقم تيكيت الصفقة الرئيسية في الصفقات الهيدج او التبريد

    كيف اقدر اعمل المقارنة او البحث لاستخراج , قيمة افتتاح اول صفقتين من كل مجموعة

    وشكرا جزيلا
    استسمح الدكتور اسامة في الجواب

    انظر اسفله اخي الكريم ستكون دالة الشراء الاساسية هكذا

    كود PHP:
    int ticketb OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,sl,tpIntegerToString(ticketb),Magic,0,Green); 
    لاحظ اننا حولنا المتغير ticketb من تايب انتيجر الى سترينج لان الباراميتر comment في الدالة OrderSend يجب ان يكون من نوع سترينج

    بعد ذلك للبحث عن الصفقات والتحكم فيها من خلال الكومنت الذي احتفظنا بها بهذا الشكل

    كود PHP:
    void  OrderByTicket(){  
    int  Myticket ;
        for (
    int cnt=0cnt<OrdersTotal(); cnt++)
          {
              if(
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
           if(
    OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber
                  
    Myticket==StringToInteger(OrderComment());
              {                                        
                 If(
    Myticket== OrderTicket());
                     
    //Do some thing …..
                

         }
      } 
    قد لا تحتاج لدالة يمكنك وضع المقارنة مباشرة ولكن وضعت لك الدالة لتقريب المعنى

    اتبع نفس منطق الدالة التي كتبتها انت ولكن بدل الاحتفاظ بقيمة OpenPrice نحتفظ بالكومنت

    هذا بالنسبة للسؤال الاول اما السؤال الثاني فستحتاج اللى دالة

    كود PHP:
    ObjectName(); 
    هذا ما اعرف والله تعالى اعلم

    تحياتي للجميع

  9. #7224
    الصورة الرمزية goldfile
    goldfile غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سانت لوسيا
    المشاركات
    752

    افتراضي

    يجب ان تعكس اللوب وتبدأ من OrderTotal -1 الى الصفر لان الصفقة الرئيسية هي الصفقة الاولى

  10. #7225
    الصورة الرمزية femtogold4
    femtogold4 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Feb 2009
    الإقامة
    مصر
    المشاركات
    1,293

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    نعم الطريقة صحيحه تماما ولا غبار عليها
    يمكنك أيضا بدلا من إستخدام المصفوفات يمكنك المقارنة مباشرة بين الصفقات بحيث تحفظ ربح كل صفقة بالتي تليها
    مثال
    كود PHP:
    double profit1,profit2;
    for(
    int i=OrdersTotal()-1;i>=0;i--)
    {
     
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     
    int ticket=OrderTicket();
     
    int type=OrderType();
     
    double lots=OrderLots();
     if(
    OrderSymbol()==Symbol()&&OrderType()<=OP_SELL)
     {
      if(
    OrderType()==OP_BUY)profit1=(Bid-OrderOpenPrice())/Point;
      else 
    profit1=(OrderOpenPrice()-Ask)/Point;
      
    profit1=OrderProfit();
      for(
    int j=i-1;j>=0;j--)
      {
       
    OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
       if(
    OrderSymbol()==Symbol()&&OrderType()<=OP_SELL)
       {
        if(
    OrderType()==OP_BUY)profit2=(Bid-OrderOpenPrice())/Point;
        else 
    profit2=(OrderOpenPrice()-Ask)/Point;
        
        if(
    profit2+profit1>45)
        {
         
         if(
    OrderType()==OP_BUY)
         {
          
    OrderClose(OrderTicket(),OrderLots(),Bid,3);
         }
         else 
         {
          
    OrderClose(OrderTicket(),OrderLots(),Ask,3);
         }
         if(
    type==OP_BUY)
         {
          
    OrderClose(ticket,lots,Bid,3);
         }
         else 
         {
          
    OrderClose(ticket,lots,Ask,3);
         }
        }
       }
      }
     }

    بالنسبه للسؤال الثاني راجع كود المؤشر المرفق يمكنك إستخدام نفس الطريقه
    بارك الله فيك أستاذي
    لم أفهم طريقة عمل المؤشر ولكن بعد التجربة لاحظت تغير قيمة البريك ايفن عند كل حركة للسعر صعودا وهبوطا
    ما أريده هو عمل هدف إجمالي بعد نقطة التعادل 0 نقطة لصفقات الشراء والبيع معا
    يعني مثل هذه الدالة التي تعمل على الشراء منفصل عن البيع أريدها على جميع الصفقات كيف ذلك
    كود PHP:
    double Av_Prices(int type) {  double Price;double lots;  for(int i=0;i<=OrdersTotal();i++)  {   bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()==type)   {    Price+=OrderOpenPrice()*OrderLots();    lots+=OrderLots();   }  }  if(lots!=0)return(Price/lots);  else return(0); }  void AvBreakEven() {  double ProfitS=Av_Prices(OP_SELL)-(Takeprofit*point);  double ProfitB=Av_Prices(OP_BUY)+(Takeprofit*point);  for(int cnt=0;cnt<OrdersTotal();cnt++)  {   bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);   double orderstop=OrderStopLoss();   double openprice=OrderOpenPrice();   int ticket=OrderTicket();   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)   {    if(OrderType()==OP_SELL)    {     bool m1=OrderModify(ticket,openprice,orderstop,ProfitS,0,Blue);    }    if(OrderType()==OP_BUY)    {     bool m2=OrderModify(ticket,openprice,orderstop,ProfitB,0,Red);    }   }  }  } 
    لكن بعد عدة محاولات أظن انه غير ممكن فقد وجدت أخطاء في الهدف والستوب الاجمالي حيث يعطي 130 وما شابه

    كود PHP:
    double All_Av_Prices() {  double Price;double lots;  for(int i=0;i<=OrdersTotal();i++)  {   bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL){    Price+=OrderOpenPrice()*OrderLots();    lots+=OrderLots();   }  }  if(lots!=0)return(Price/lots);  else return(0); }  void All_AvBreakEven() {  double ProfitS=Av_Prices(OP_SELL)-MainProfit*point;  double ProfitB=Av_Prices(OP_BUY)+MainProfit*point;  double LossS=Av_Prices(OP_SELL)+MainProfit*point;  double LossB=Av_Prices(OP_BUY)-MainProfit*point;  for(int cnt=0;cnt<OrdersTotal();cnt++){   bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);   double orderstop=OrderStopLoss();   double openprice=OrderOpenPrice();   int ticket=OrderTicket();   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){    bool m1=OrderModify(ticket,openprice,LossS,ProfitS,0,Blue);    bool m2=OrderModify(ticket,openprice,LossB,ProfitB,0,Red);   }  }  } 
    لكن أظن يمكن عمله كهدف مخفي أو بمقارنة عدد العقود لا أعلم كيف أرجو المساعدة
    كل ما أريده هدف إجمالي بعد نقطة التعادل لكل الصفقات
    آخر تعديل بواسطة femtogold4 ، 30-03-2016 الساعة 01:37 AM

  11. #7226
    الصورة الرمزية Profit Box
    Profit Box غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    503

    افتراضي

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

    انظر اسفله اخي الكريم ستكون دالة الشراء الاساسية هكذا

    كود PHP:
    int ticketb OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,sl,tpIntegerToString(ticketb),Magic,0,Green); 
    لاحظ اننا حولنا المتغير ticketb من تايب انتيجر الى سترينج لان الباراميتر comment في الدالة OrderSend يجب ان يكون من نوع سترينج

    بعد ذلك للبحث عن الصفقات والتحكم فيها من خلال الكومنت الذي احتفظنا بها بهذا الشكل

    كود PHP:
    void  OrderByTicket(){  
    int  Myticket ;
        for (
    int cnt=0cnt<OrdersTotal(); cnt++)
          {
              if(
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
           if(
    OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber
                  
    Myticket==StringToInteger(OrderComment());
              {                                        
                 If(
    Myticket== OrderTicket());
                     
    //Do some thing …..
                

         }
      } 
    قد لا تحتاج لدالة يمكنك وضع المقارنة مباشرة ولكن وضعت لك الدالة لتقريب المعنى

    اتبع نفس منطق الدالة التي كتبتها انت ولكن بدل الاحتفاظ بقيمة OpenPrice نحتفظ بالكومنت

    هذا بالنسبة للسؤال الاول اما السؤال الثاني فستحتاج اللى دالة

    كود PHP:
    ObjectName(); 
    هذا ما اعرف والله تعالى اعلم

    تحياتي للجميع
    الله يعطيك العافية اخووي goldfile .. ما قصرت

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

    ومن كثر التفكير , الاستفسار السابق لم اعرف اصيغه صح << المعذره

    وبسبب كثرة التفكير احس اني بعقد المسألة ,

    لذلك سوف اشرح لك فكرة الاكسبيرت وارجو المساعدة في ايجاد الحلول , واعطاء الاكواد لكل حل

    اضغط على الصورة لعرض أكبر

الاســـم:	ف1.jpg
المشاهدات:	251
الحجـــم:	33.1 كيلوبايت
الرقم:	454420

    اضغط على الصورة لعرض أكبر

الاســـم:	ف2.jpg
المشاهدات:	267
الحجـــم:	22.5 كيلوبايت
الرقم:	454421

    في كل مجموعة الصفقة تتفعل من كل مستوى مرة واحدة فقط

    بعد فتح عدة صفقات ( هدف المجموعة , مجمل ناتج قيمة الصفقات تكون بالموجب )

    المستويات ليست مؤشر بل معادلة حسابية

    تتغير قيمة المستويات مع كل شمعة ( لذلك لا استطيع استخدام مسافة ثابتة )

    واستخدم في تعريف المستويات هذا الكود

    كود PHP:
    double Su[5];       
    Su[0]=1+2;
    Su[1]=1+3;
    Su[2]=1+4;
    Su[3]=1+5;
    Su[4]=1+6

    ارجوا ان وصلت لك الفكرة بالطريقة الصحيحة
    وشكر جزيلا
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة ف1.jpg‏  
    آخر تعديل بواسطة Profit Box ، 30-03-2016 الساعة 02:31 AM

  12. #7227
    الصورة الرمزية femtogold4
    femtogold4 غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Feb 2009
    الإقامة
    مصر
    المشاركات
    1,293

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة femtogold4 مشاهدة المشاركة
    بارك الله فيك أستاذي
    لم أفهم طريقة عمل المؤشر ولكن بعد التجربة لاحظت تغير قيمة البريك ايفن عند كل حركة للسعر صعودا وهبوطا
    ما أريده هو عمل هدف إجمالي بعد نقطة التعادل 0 نقطة لصفقات الشراء والبيع معا
    يعني مثل هذه الدالة التي تعمل على الشراء منفصل عن البيع أريدها على جميع الصفقات كيف ذلك
    كود PHP:
    double Av_Prices(int type) {  double Price;double lots;  for(int i=0;i<=OrdersTotal();i++)  {   bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()==type)   {    Price+=OrderOpenPrice()*OrderLots();    lots+=OrderLots();   }  }  if(lots!=0)return(Price/lots);  else return(0); }  void AvBreakEven() {  double ProfitS=Av_Prices(OP_SELL)-(Takeprofit*point);  double ProfitB=Av_Prices(OP_BUY)+(Takeprofit*point);  for(int cnt=0;cnt<OrdersTotal();cnt++)  {   bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);   double orderstop=OrderStopLoss();   double openprice=OrderOpenPrice();   int ticket=OrderTicket();   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)   {    if(OrderType()==OP_SELL)    {     bool m1=OrderModify(ticket,openprice,orderstop,ProfitS,0,Blue);    }    if(OrderType()==OP_BUY)    {     bool m2=OrderModify(ticket,openprice,orderstop,ProfitB,0,Red);    }   }  }  } 
    لكن بعد عدة محاولات أظن انه غير ممكن فقد وجدت أخطاء في الهدف والستوب الاجمالي حيث يعطي 130 وما شابه

    كود PHP:
    double All_Av_Prices() {  double Price;double lots;  for(int i=0;i<=OrdersTotal();i++)  {   bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL){    Price+=OrderOpenPrice()*OrderLots();    lots+=OrderLots();   }  }  if(lots!=0)return(Price/lots);  else return(0); }  void All_AvBreakEven() {  double ProfitS=Av_Prices(OP_SELL)-MainProfit*point;  double ProfitB=Av_Prices(OP_BUY)+MainProfit*point;  double LossS=Av_Prices(OP_SELL)+MainProfit*point;  double LossB=Av_Prices(OP_BUY)-MainProfit*point;  for(int cnt=0;cnt<OrdersTotal();cnt++){   bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);   double orderstop=OrderStopLoss();   double openprice=OrderOpenPrice();   int ticket=OrderTicket();   if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){    bool m1=OrderModify(ticket,openprice,LossS,ProfitS,0,Blue);    bool m2=OrderModify(ticket,openprice,LossB,ProfitB,0,Red);   }  }  } 
    لكن أظن يمكن عمله كهدف مخفي أو بمقارنة عدد العقود لا أعلم كيف أرجو المساعدة
    كل ما أريده هدف إجمالي بعد نقطة التعادل لكل الصفقات
    لا اعلم سبب عدم ترتيب الاكواد بمشاركتي السابقة
    الكود بالمرفقات نرجو المساعدة ولكم جزيل الشكر
    الملفات المرفقة الملفات المرفقة

  13. #7228
    الصورة الرمزية goldfile
    goldfile غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سانت لوسيا
    المشاركات
    752

    افتراضي

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

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

    ارفقه الاخ اسامة وهو مفتوح المصدر , لا حظ بمجرد وضعه على الشارت يعطيك على اليمين سعر البريك ايفن وعلى يساره الربح بالدولار انظر الصورة

    اضغط على الصورة لعرض أكبر

الاســـم:	breakeven.jpg
المشاهدات:	231
الحجـــم:	30.5 كيلوبايت
الرقم:	454494

    من داخل المؤشر احفظ قيمة BreakEven وكذلك Equity باستخدام الدالتين الظريفتن

    كود PHP:
    GlobalVariableSet() ;
    GlobalVariableGet() ; 
    ثم تسترجع القيم من اجعل عمل شرط تحرك البريك ايفن مثال من داخل المؤشر

    كود PHP:
           GlobalVariableSet("BreakEven_Equity"+Symbol()+AccountName(),sum) ;
           
    GlobalVariableSet("BreakEven_Level"+Symbol()+AccountName(),level0) ; 
    sum هي قيمة Equity و level0 هي قيمة البريك ايفن

    ثم من داخل الاكسبريت اعمل الاتي لاسترجاع القيم هكذا بكل يسر

    كود PHP:
       iEquity GlobalVariableGet("BreakEven_Equity"+Symbol()+AccountName()) ;
       
    BreakLevel GlobalVariableGet("BreakEven_Level"+Symbol()+AccountName()) ; 
    مع تعرف المتغيرين iEquity و BreakLevel كمتغيرين عامين

    ثم بعد ذالك دالة الموديفاي وانا اكتبها في الغالب بهذا الشكل

    كود PHP:
    void ModifyStopLoss(double stoploss) { 
       
    bool ret;
       
    ret OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,OrderTakeProfit(),0,CLR_NONE); 
        if (
    ret == false)
         Print(
    "OrderSend() error - "ErrorDescription(GetLastError()));

    ثم اخر مرحلة كتابة شرط تحريك الستوب لوز مع استدعاء الدالة ModifyStopLoss

    كود PHP:
    void BreakEven()
    {
     
        
    double price BreakLevel ;
        for (
    int i=OrdersTotal()-1>= 0i--)
        if (
    OrderSelect(iSELECT_BY_POSMODE_TRADES))
        {
             
                         if(
    Ask OrderOpenPrice() && iEquity >=&& OrderStopLoss()< OrderOpenPrice()  )
                            if(
    OrderType()==OP_BUY)
                          
    ModifyStopLoss(BreakLevel) ;
                        
                            if(
    OrderType()==OP_SELL)
                            if(
    Bid OrderOpenPrice() && iEquity >=&& OrderStopLoss()> OrderOpenPrice()  )
                        
    ModifyStopLoss(BreakLevel) ;
                                  
                
            }
        } 
    اظن ان الامور واضحة هذا ما استطيع فعله اخي الكريم وتقبل خالص ودي

  14. #7229
    الصورة الرمزية goldfile
    goldfile غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سانت لوسيا
    المشاركات
    752

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Profit Box مشاهدة المشاركة
    الله يعطيك العافية اخووي goldfile .. ما قصرت

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

    ومن كثر التفكير , الاستفسار السابق لم اعرف اصيغه صح << المعذره

    وبسبب كثرة التفكير احس اني بعقد المسألة ,

    لذلك سوف اشرح لك فكرة الاكسبيرت وارجو المساعدة في ايجاد الحلول , واعطاء الاكواد لكل حل

    اضغط على الصورة لعرض أكبر

الاســـم:	ف1.jpg
المشاهدات:	251
الحجـــم:	33.1 كيلوبايت
الرقم:	454420

    اضغط على الصورة لعرض أكبر

الاســـم:	ف2.jpg
المشاهدات:	267
الحجـــم:	22.5 كيلوبايت
الرقم:	454421

    في كل مجموعة الصفقة تتفعل من كل مستوى مرة واحدة فقط

    بعد فتح عدة صفقات ( هدف المجموعة , مجمل ناتج قيمة الصفقات تكون بالموجب )

    المستويات ليست مؤشر بل معادلة حسابية

    تتغير قيمة المستويات مع كل شمعة ( لذلك لا استطيع استخدام مسافة ثابتة )

    واستخدم في تعريف المستويات هذا الكود

    كود PHP:
    double Su[5];       
    Su[0]=1+2;
    Su[1]=1+3;
    Su[2]=1+4;
    Su[3]=1+5;
    Su[4]=1+6

    ارجوا ان وصلت لك الفكرة بالطريقة الصحيحة
    وشكر جزيلا
    السلام عليكم

    اخي الكريم Profit Box بهذا الشكل انت تريد عمل اكسبريت كامل وانا لااستطيع ذلك يمكن الدكتور اسامة او احد الاخوة , اما اذا كنت بدأت العمل على الاكسبريت و تحتاج مساعدة في جزء معين منه او الاستفسار بخصوص

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

    تقبل خالص تحياتي واعتذاري ايضا


    اخي للكريم

  15. #7230
    الصورة الرمزية Profit Box
    Profit Box غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2009
    الإقامة
    المملكة العربية السعودية
    المشاركات
    503

    افتراضي

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

    اخي الكريم Profit Box بهذا الشكل انت تريد عمل اكسبريت كامل وانا لااستطيع ذلك يمكن الدكتور اسامة او احد الاخوة , اما اذا كنت بدأت العمل على الاكسبريت و تحتاج مساعدة في جزء معين منه او الاستفسار بخصوص

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

    تقبل خالص تحياتي واعتذاري ايضا


    اخي للكريم
    الله يعطيك العافية .. ما قصرت

    الحمدالله انا انتهيت من الاكسبيرت بس ينفذ مجموعة وحده , وحطيته على سيرفر وبتابع النتائج ..

    حاليا بحاول اطوره انه ينفذ عدة مجموعات في نفس الوقت وواجهتني مشكلة وارجوا المساعدة

    اريد ربط الصفقات عبر النمبر ماجيك

    للصفقات الرئيسية في خانة النمبر ماجيك وضعت رقم التكيت لاعطاء كل صفقة رئيسية نمبر ماجيك خاص ( ارجوا التصحيح ان أخطأت )

    كود PHP:
    OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3*Q,0,0,"EA",OrderTicket(),0,Red); 
    كيف اقدر انقل للصفقات الفرعية النمبر ماجيك الصفقات الرئيسية ( ارجوا التوضيح )


    واريد استخدم دالة البحث عن عدة الصفقات المفتوحة لكل مجموعة

    كود PHP:
     int orderscnt() { int cnt=0;   for(int i =0;i<OrdersTotal();i++){     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){       if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){         cnt++;       }     }   }    return(cnt);  } 
    الحين لكل مجموعة نمبر ماجيك خاص ( الي هو رقم التكتيت للصفقة الرئيسية ) كيف تصبح المقارنة او صغية الكود للدالة

    وشكرا جزيلا

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

  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