صفحة 104 من 689 الأولىالأولى ... 454949899100101102103104105106107108109110114154204604 ... الأخيرةالأخيرة
النتائج 1,546 إلى 1,560 من 10335
  1. #1546
    الصورة الرمزية dentist_hussein
    dentist_hussein غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Aug 2011
    الإقامة
    مصر
    المشاركات
    1,827

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    ستضع الشرط عند أمر البيع كما وضعته عند أمر الشراء
    كود PHP:
     if (  ts2>ks2&&ts1<ks1&&ts1<sb1&&sa1 ){
           if(
    orderstotal()<1){
             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,"dentist_hussein EA",MagicNumber,0,Red); 
                 
    PlaySound("Alert.wav");
                 
               }  
              
           } 
    نعم يمكنك جعله كمتغير خارجي
    بالنسبه لإخفاء الهدف والأستوب فيجب أن تضيف جميع الدوال المسؤله عن عملها فليس من المعقول أن تضيف جزء وجزء آخر لا تضيفه وإلا فكيف ستؤدي الداله غرضها

    البريك إيفن BreakEven هو يشبه التريلينج ستوب لكنه يقوم بنقل الأستوب لوز إلى عدد نقاط ربح معين عندما يتحرك السعر في إتجاه الصفقه ربح معين
    movestopto هو عدد نقاط الربح التي يتم وضع الأستوب عندها

    خطأ حجم اللوت يمكنك عدم وضع شرط لكن فقط أن تأخذ بعين الإعتبار هذه الإحتماليه عند تشغيل الإكسبرت
    أو يمكنك وضع شرط
    كود PHP:
     if(Lots<MarketInfo(Symbol(),MODE_MINLOT))Lots=MarketInfo(Symbol(),MODE_MINLOT); 
    قبل أمر البيع والشراء
    وهذا يعني إذا كان حجم اللوت Lots أقل من أصغر حجم لوت مسموح به فسوف يجعل الإكسبرت Lots تساوي أصغر حجم لوت مسموح به
    أنصحك بالتجربه دائما في أي جزء لا تعرف وظيفته قم بتجربته وراجع ما هي الوظيفه التي يقوم بها وعندها ستعرف السبب
    شكرا جزيلا أخي أسامه
    أنا قمت بتعديلات على الإكسبيرت بحيث قمت بالتأكد من وجود الداله
    كود:
    if(orderstotal()<1){
    عند أمر البيع و الشراء ... الآن لن يتم إلا صفقه واحده أليس كذلك و عندما أريد أن أجعل صفقتين أي صفقه أخرى بجانب المفتوحه " سوف أجعل الكود بهذا الشكل
    كود:
    if(orderstotal()<2){
    ؟؟؟؟ و هكذا لا أحتاج لكود خارجي .... هل هذا صحيح ؟؟؟
    - قمت بوضع الداله
    كود:
     double point;
     int digits,i,D;
                                
     int init()
    {
        if(Digits==5||Digits==3){ D=10;}
        else{D=1;}
        if(Digits<4)
       {
          point=0.01;
          digits=2;
       }
       else
       {
          point=0.0001;
          digits=4;
       }
    return(0);
    }
    حتى يعمل الإكسبيرت على المنصه الرباعيه و الخماسيه و قمت بأخذه من إكسبيرت إخفاء الهدف و الإستوب لأني أحاول نقل باقي دواله وكان يظهر لي بعض الأخطاء فيها حرف ال D الموجود سابقا و أريد بعد إذنك أعرف معنى هذا الحرف هنا ؟؟؟؟

    ثم حاولت أن أنقل الدوال الخاصه بإخفاء الستوب للإكسبيرت و لكن الكثير من الأخطاء و لا أعلم المكان الصحيح لوضع دوال إخفاء الإستوب و الهدف في إكسبيرتي .
    قمت أيضا بتغيير Point في الداله استارت إلى point .
    الإكسبيرت مرفق رجاء الإطلاع و جزاك الله خيرا
    وآسف على تعبك معايا
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    معنى الكود كالآتي
    إذا كان عدد الأرقام العشريه بعد الفاصل اقل من 4 أي 2 هذا في حالة الين في البروكر الذي لا يستخدم رقم عشري زائد أو 3 في أزواج الين في البروكر الذي يستخدم رقم عشري زائد
    فسوف يصبح point=0.01
    وبالتالي عندما تحسب الهدف أو الأستوب لوز
    فسوف يكون مثلا سعر الدخول 114.501 + 30 نقطه * point
    أي 114.501+30*0.01 = 114.801 جرب تحسبها بالآله
    لكن إذا إستخدمنا المتغير Point ففي الرقم العشري الزائد قيمته 0.001 ولسي 0.01
    أي 114.501+30*0.001 = 114.531

    الجزء الآخر والخاص ب 4 أو 5 أرقام عشريه هو جزء else
    إي إذا كانت عدد الأرقام العشرية أكبر أو تساوي 4 أي 4 أو 5 أرقام عشرية
    فسوف تصبح قيمة النقطه point=0.0001
    بالتالي إذا كان سعر اليورو مثلا الدخول 1.43205 والهدف 30 نقطه
    فسوف يصبح الهدف 1.43205+30*0.0001 = 1.43505
    جرب تحسبها بالآله
    تمام جدا أخي أسامه
    وسؤال بعد إذنك ... ذكرت " الجزء الآخر والخاص ب 4 أو 5 أرقام عشريه هو جزء else
    إي إذا كانت عدد الأرقام العشرية أكبر أو تساوي 4 أي 4 أو 5 أرقام عشرية .... "
    ولكن الكود يقول في هذا الجزء
    كود:
    digits=4;
    و ليس
    كود:
    digits=>4;
    فهل علامة الأكبر من هنا ليس لها قيمه ويتم حساب ماياسوي الأربع أرقام عشريه فيما فوق؟؟؟
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  3. #1548
    الصورة الرمزية Elhadi_Bouazizi
    Elhadi_Bouazizi غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2008
    الإقامة
    الجزائر
    المشاركات
    243

    افتراضي

    قمت ببرمجة الاكسبيرت الذي في المرفقات اعتمادا على هذا الموضوع:https://forum.arabictrader.com/t97945.html
    حيث قمت بتغيير المؤشر الى متوسط 200
    و المضاعفة من الشكل 111 222 444 888 ....
    عملية التجميع لا تعطي أي أخطاء
    لكن عند التست الاكسبيرت يقوم بفتع عمليات بيع متتالية حتى يتوقف.
    جزء من الجرنال:
    2012.01.26 10:20:19 2012.01.02 08:26 Tester: order #127 is closed
    2012.01.26 10:20:19 2012.01.02 08:26 sma_200_v2: stopped because of Stop Out
    2012.01.26 10:20:19 2012.01.02 08:26 sma_200_v2 EURUSD,M5: open #127 buy 0.10 EURUSD at 1.29525 sl: 1.29325 tp: 1.30025 ok
    2012.01.26 10:20:18 2012.01.02 08:24 sma_200_v2 EURUSD,M5: open #51 buy 0.10 EURUSD at 1.29505 sl: 1.29305 tp: 1.30005 ok
    2012.01.26 10:20:18 2012.01.02 08:24 sma_200_v2 EURUSD,M5: open #50 buy 0.10 EURUSD at 1.29504 sl: 1.29304 tp: 1.30004 ok
    2012.01.26 10:20:18 2012.01.02 08:24 sma_200_v2 EURUSD,M5: open #49 buy 0.10 EURUSD at 1.29506 sl: 1.29306 tp: 1.30006 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #48 buy 0.10 EURUSD at 1.29507 sl: 1.29307 tp: 1.30007 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #47 buy 0.10 EURUSD at 1.29497 sl: 1.29297 tp: 1.29997 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #46 buy 0.10 EURUSD at 1.29500 sl: 1.29300 tp: 1.30000 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #45 buy 0.10 EURUSD at 1.29504 sl: 1.29304 tp: 1.30004 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #44 buy 0.10 EURUSD at 1.29507 sl: 1.29307 tp: 1.30007 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #43 buy 0.10 EURUSD at 1.29510 sl: 1.29310 tp: 1.30010 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #42 buy 0.10 EURUSD at 1.29509 sl: 1.29309 tp: 1.30009 ok
    2012.01.26 10:20:18 2012.01.02 08:23 sma_200_v2 EURUSD,M5: open #41 buy 0.10 EURUSD at 1.29508 sl: 1.29308 tp: 1.30008 ok

    أين هو الخطأ ، أو كيف يمكن أن أجده
    كيف يمكن تحويل هذا الاكسبيرت الى نصف آلي
    الملفات المرفقة الملفات المرفقة
    آخر تعديل بواسطة mohammed.elhadi ، 26-01-2012 الساعة 12:56 PM
    توقيع العضو
    متداول و محلل فني و كاتب مقالات

  4. #1549
    الصورة الرمزية wahaab
    wahaab غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2009
    الإقامة
    الجزائر
    المشاركات
    412

    افتراضي

    اخي مستر دولار كيف اجعل الاكسبرت يبدا العمل مع افتتاح لشمعة القادمة وليش في منتصف الشمعة الحالية لان فكرة الاكسبرت تبدا مع افتتاح كل شمعة
    ثانيا: كيف اضع متغير ياخذ قيمة افتتاح شمعة الاربع ساعات فقط مهما تغير الفريم عالشارت ولكل العملات.لان القيمة
    open[0]
    تتغير اذا تغير الفريم
    ولك جزيل الشكر اخي الكريم.

  5. #1550
    الصورة الرمزية aliphy
    aliphy غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    May 2009
    الإقامة
    تركيا
    المشاركات
    147

    افتراضي

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

    هذا هو الكود
    وشكرا لكم


    كود PHP:
      extern int Step=5;
    extern int Takeprofit=15;
    extern double Lots=1;  
    int Magicnumber=234561;
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
      return(
    0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
       return(
    0);
      }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
    {
    int ticket;
      if(
    Hour()==&& Hour()==&& Hour()==&& Hour()==12 && Hour()==16 && Hour()==20 && Hour()==24 && Minute()<&& MyOrdersTotal(Magicnumber)>0)
      {
        
    DeletePendingOrders(Magicnumber);
        
    CloseOrders(Magicnumber);
      }
      if(
    Hour()==&& Hour()==&& Hour()==&& Hour()==12 && Hour()==16 && Hour()==20 && Hour()==24 && Minute()>&& MyOrdersTotal(Magicnumber)==0)
      {
        
    double Hourclose=iClose(Symbol(),PERIOD_H4,1);
        
    double BuyPrice=Hourclose+Step*Point;
        
    double BuyTP=BuyPrice+Takeprofit*Point;
        
        
    double SellPrice=Hourclose-Step*Point;
        
    double SellTP=SellPrice-Takeprofit*Point;
           
        
    ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask,BuyPrice,3,BuyTP,"",Magicnumber,0,Green);
        
    ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid,SellPrice,3,SellTP,"",Magicnumber,0,Red);
        
        
      }
      return(
    0);
    }
    int MyOrdersTotal(int Magic)
    {
      
    int c=0;
      
    int total  OrdersTotal();
      
      for (
    int cnt cnt total cnt++)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
        {
          
    c++;
        }
      }
      return(
    c);
    }

    int DeletePendingOrders(int Magic)
    {
      
    int total  OrdersTotal()-1;
     
      for (
    int cnt total cnt >= cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
        {
          
    OrderDelete(OrderTicket());
        }
      }
      return(
    0);
    }  

    int CloseOrders(int Magic)
    {
      
    int total  OrdersTotal()-1;
      
      for (
    int cnt total cnt >= 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);

    آخر تعديل بواسطة aliphy ، 26-01-2012 الساعة 05:51 PM

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

    افتراضي

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

    وعندي سؤال أخر

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


    كود PHP:
       for(int i=0;i<Bars;i++){
       for(
    int e=i;e<i+period;i++){
       
    double a=Close[e];
       
    double aa+=a;
       
    double lin=aa/period;
       
    ExtMapBuffer1[i]=lin;}} 

    وجزاك الله خيراً
    لا يمكن أن تقوم بتعريف المتغير 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;
       }
      } 
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

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

    شكرا جزيلا أخي أسامه
    أنا قمت بتعديلات على الإكسبيرت بحيث قمت بالتأكد من وجود الداله
    كود:
    if(orderstotal()<1){
    عند أمر البيع و الشراء ... الآن لن يتم إلا صفقه واحده أليس كذلك و عندما أريد أن أجعل صفقتين أي صفقه أخرى بجانب المفتوحه " سوف أجعل الكود بهذا الشكل
    كود:
    if(orderstotal()<2){
    ؟؟؟؟ و هكذا لا أحتاج لكود خارجي .... هل هذا صحيح ؟؟؟
    - قمت بوضع الداله
    كود:
     double point;
     int digits,i,D;
                                
     int init()
    {
        if(Digits==5||Digits==3){ D=10;}
        else{D=1;}
        if(Digits<4)
       {
          point=0.01;
          digits=2;
       }
       else
       {
          point=0.0001;
          digits=4;
       }
    return(0);
    }
    حتى يعمل الإكسبيرت على المنصه الرباعيه و الخماسيه و قمت بأخذه من إكسبيرت إخفاء الهدف و الإستوب لأني أحاول نقل باقي دواله وكان يظهر لي بعض الأخطاء فيها حرف ال D الموجود سابقا و أريد بعد إذنك أعرف معنى هذا الحرف هنا ؟؟؟؟

    ثم حاولت أن أنقل الدوال الخاصه بإخفاء الستوب للإكسبيرت و لكن الكثير من الأخطاء و لا أعلم المكان الصحيح لوضع دوال إخفاء الإستوب و الهدف في إكسبيرتي .
    قمت أيضا بتغيير Point في الداله استارت إلى point .
    الإكسبيرت مرفق رجاء الإطلاع و جزاك الله خيرا
    وآسف على تعبك معايا
    - نعم سوف يفتح صفقتين فقط
    - يتم تعريف الدوال خارج الداله start وليس داخلها وغالبا هذا هو سبب الخطأ عندك
    الإكسبرت الذي أرفقته غير معدل عليه أرفق الإكسبرت الذي قمت بالتعديل عليه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

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


    تمام جدا أخي أسامه
    وسؤال بعد إذنك ... ذكرت " الجزء الآخر والخاص ب 4 أو 5 أرقام عشريه هو جزء else
    إي إذا كانت عدد الأرقام العشرية أكبر أو تساوي 4 أي 4 أو 5 أرقام عشرية .... "
    ولكن الكود يقول في هذا الجزء
    كود:
    digits=4;
    و ليس
    كود:
    digits=>4;
    فهل علامة الأكبر من هنا ليس لها قيمه ويتم حساب ماياسوي الأربع أرقام عشريه فيما فوق؟؟؟
    معنى else يعني إذا لم يتحقق الشرط الأول الموجود في if وهو
    كود PHP:
     if(Digits<4
    فيتم تنفيذ ما بداخل else
    وهو
    كود PHP:
     point=0.0001;
          
    digits=4
    ف digits ليست هي الشرط لكنها جسد الجمله الشرطيه أي ما يتم تنفيذه
    أنصحك بمراجعة هذه المشاركه بها شرح للجمله الشرطيه وكيفية كتابتها

    https://forum.arabictrader.com/t93679.html#post1673127
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ambmh01 مشاهدة المشاركة
    قمت ببرمجة الاكسبيرت الذي في المرفقات اعتمادا على هذا الموضوع:https://forum.arabictrader.com/t97945.html
    حيث قمت بتغيير المؤشر الى متوسط 200
    و المضاعفة من الشكل 111 222 444 888 ....
    عملية التجميع لا تعطي أي أخطاء
    لكن عند التست الاكسبيرت يقوم بفتع عمليات بيع متتالية حتى يتوقف.
    جزء من الجرنال:

    أين هو الخطأ ، أو كيف يمكن أن أجده
    كيف يمكن تحويل هذا الاكسبيرت الى نصف آلي
    الإكسبرت يفتح صفقات كثيره لأنك أنت من وضع هذا الشرط
    كود PHP:
     if(Bid>=openprice+step*point 
    وأيضا
    كود PHP:
    if(Ask<=openprice-step*point 
    بالتالي عندما يتم فتح صفقة بيع وعكس السعر ويتم الدخول في شراء فسوف يظل يفتح صفقات شراء لأن الشرط سيظل محقق
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kwahab مشاهدة المشاركة
    اخي مستر دولار كيف اجعل الاكسبرت يبدا العمل مع افتتاح لشمعة القادمة وليش في منتصف الشمعة الحالية لان فكرة الاكسبرت تبدا مع افتتاح كل شمعة
    ثانيا: كيف اضع متغير ياخذ قيمة افتتاح شمعة الاربع ساعات فقط مهما تغير الفريم عالشارت ولكل العملات.لان القيمة
    open[0]
    تتغير اذا تغير الفريم
    ولك جزيل الشكر اخي الكريم.
    يمكنك وضع شرط
    كود PHP:
     if(High[0]==Low[0]) 
    وبالتالي ستعلم أن الشمعة إفتتحت الآن و أن السعر لم يتحرك بعد
    أو شرط آخر
    كود PHP:
     if(TimeCurrent()==Time[0]) 
    بالتالي ستعلم أيضا أن التوقيت الحالي هو نفس توقيت إفتتاح الشمعه وهذا يعني أن الشمعة إفتتحت الآن

    الدوال الخاصه بمعرفة قيم شموع تايم فريم آخر
    كود PHP:
    iOpen(Symbol(),TimeFrame,0); 
    TimeFrame هو التايم فريم الذي تريده
    0 هو رقم الشمعه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

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

    https://forum.arabictrader.com/t93175.html

    إذا أردت كتابة كود المؤشر بداخل الإكسبرت بدون إستدعائه فيجب أن تقوم بمراجعة كود المؤشر
    حذف الدوال غير المهمه مثل
    كود PHP:
       int counted_bars IndicatorCounted(); 
        
        if(
    counted_bars 0
            return(-
    1); 
    يجب أن تعرف مبدأ عمل المؤشر حتى تحاول أخذ الجزء الرئيسي فيه أي معادلات ظهور الإشارة ووضعها في الإكسبرت
    كود PHP:
      double WMA(int xint p

        return(
    iMA(NULL0p0methodpricex));    

            
    vect1 2*WMA(1period/2) - WMA(1period);
           
    vect1 2*WMA(2period/2) - WMA(2period);
            
    ExtMapBuffer1 iMAOnArray(vect10p0method1);        
            
    ExtMapBuffer2 iMAOnArray(vect10p0method2);
            if(
    ExtMapBuffer1>ExtMapBuffer2)//Green Line 
            
    if(ExtMapBuffer1<ExtMapBuffer2)//Red Line 
    لاحظ كيف قمت بتحويل كود المؤشر كله إلى هذا الجزء البسيط والذي سيفي بالغرض الرئيسي للمؤشر
    وطبعا ستختلف طريقة الكتابه من مؤشر لآخر وحسب الكود الذي تكتبه الأسهل طبعا هو إستخدام
    الداله iCustom مباشرة
    بارك الله فيك أستاذ أسامة وجزاك الله خيرا

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

    افتراضي

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

    هذا هو الكود
    وشكرا لكم


    كود PHP:
      extern int Step=5;
    extern int Takeprofit=15;
    extern double Lots=1;  
    int Magicnumber=234561;
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
      return(
    0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
       return(
    0);
      }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
    {
    int ticket;
      if(
    Hour()==&& Hour()==&& Hour()==&& Hour()==12 && Hour()==16 && Hour()==20 && Hour()==24 && Minute()<&& MyOrdersTotal(Magicnumber)>0)
      {
        
    DeletePendingOrders(Magicnumber);
        
    CloseOrders(Magicnumber);
      }
      if(
    Hour()==&& Hour()==&& Hour()==&& Hour()==12 && Hour()==16 && Hour()==20 && Hour()==24 && Minute()>&& MyOrdersTotal(Magicnumber)==0)
      {
        
    double Hourclose=iClose(Symbol(),PERIOD_H4,1);
        
    double BuyPrice=Hourclose+Step*Point;
        
    double BuyTP=BuyPrice+Takeprofit*Point;
        
        
    double SellPrice=Hourclose-Step*Point;
        
    double SellTP=SellPrice-Takeprofit*Point;
           
        
    ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask,BuyPrice,3,BuyTP,"",Magicnumber,0,Green);
        
    ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid,SellPrice,3,SellTP,"",Magicnumber,0,Red);
        
        
      }
      return(
    0);
    }
    int MyOrdersTotal(int Magic)
    {
      
    int c=0;
      
    int total  OrdersTotal();
      
      for (
    int cnt cnt total cnt++)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
        {
          
    c++;
        }
      }
      return(
    c);
    }

    int DeletePendingOrders(int Magic)
    {
      
    int total  OrdersTotal()-1;
     
      for (
    int cnt total cnt >= cnt--)
      {
        
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (
    OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
        {
          
    OrderDelete(OrderTicket());
        }
      }
      return(
    0);
    }  

    int CloseOrders(int Magic)
    {
      
    int total  OrdersTotal()-1;
      
      for (
    int cnt total cnt >= 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);

    وعليكم السلام ورحمة الله وبركاته
    شروط الدخول لديك خاطئه ولا يمكن أن تتحقق
    كود PHP:
     if(Hour()==&& Hour()==&& Hour()==&& Hour()==12 && Hour()==16 && Hour()==20 && Hour()==24 && Minute()>&& MyOrdersTotal(Magicnumber)==0
    فكيف ستكون الساعة الآن 0 وفي نفس الوقت الساعة 4 وفي نفس الوقت الساعه 8 و 12 و 16 و 20 و 24
    أنت تقصد أو وهي || وليس &&
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    - نعم سوف يفتح صفقتين فقط
    - يتم تعريف الدوال خارج الداله start وليس داخلها وغالبا هذا هو سبب الخطأ عندك
    الإكسبرت الذي أرفقته غير معدل عليه أرفق الإكسبرت الذي قمت بالتعديل عليه
    أنا لم أعدل سوىأشياء طفيفه و لم أضف الدوال
    طيب أخي أسامه هل هذه الدوال كلها هي المسئوله عن غخفاء الهدف و الإستوب و يجب غضافتها كلها خارج الداله ستارت ؟؟؟
    كود:
      
            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);
          }
        }
      }
    }
    لأني حقيقه لا أعلم هل يجب غضافتها كلها أم بعضها و مكانها بالتحديد وسك أكواد إكسبيرتي .
    أنا آسف على كثرة الأسئله أخي ... وجزاك الله خيرا .
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    معنى else يعني إذا لم يتحقق الشرط الأول الموجود في if وهو
    كود PHP:
     if(Digits<4
    فيتم تنفيذ ما بداخل else
    وهو
    كود PHP:
     point=0.0001;
          
    digits=4
    ف digits ليست هي الشرط لكنها جسد الجمله الشرطيه أي ما يتم تنفيذه
    أنصحك بمراجعة هذه المشاركه بها شرح للجمله الشرطيه وكيفية كتابتها

    https://forum.arabictrader.com/t93679.html#post1673127
    تمام أخي أسامه .
    توقيع العضو
    MetaTrader Login: 652105
    Investor Password: Z3UR9DA0

  15. #1560
    الصورة الرمزية aliphy
    aliphy غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    May 2009
    الإقامة
    تركيا
    المشاركات
    147

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    وعليكم السلام ورحمة الله وبركاته
    شروط الدخول لديك خاطئه ولا يمكن أن تتحقق
    كود PHP:
     if(Hour()==&& Hour()==&& Hour()==&& Hour()==12 && Hour()==16 && Hour()==20 && Hour()==24 && Minute()>&& MyOrdersTotal(Magicnumber)==0
    فكيف ستكون الساعة الآن 0 وفي نفس الوقت الساعة 4 وفي نفس الوقت الساعه 8 و 12 و 16 و 20 و 24
    أنت تقصد أو وهي || وليس &&

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

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

  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