طلب مساعده ممن يستطيع
النتائج 1 إلى 10 من 10
  1. #1
    تاريخ التسجيل
    Nov 2010
    المشاركات
    186

    افتراضي طلب مساعده ممن يستطيع

    اريد اعمل اكسبيرت وهو

    فتح اما buy limit او sell limit على بعد مثلا 10 نقاط من افتتاح اليوم

    او

    فتح اما buy stop او sell stop على بعد مثلا 20 نقاط من افتتاح اليوم


    بهدف مثلا 50 نقطه والستوب لوز 80




    وجزاكم الله الجنه

  2. #2
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,977

    افتراضي

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

    فتح اما buy limit او sell limit على بعد مثلا 10 نقاط من افتتاح اليوم

    او

    فتح اما buy stop او sell stop على بعد مثلا 20 نقاط من افتتاح اليوم


    بهدف مثلا 50 نقطه والستوب لوز 80




    وجزاكم الله الجنه
    تفضل
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  3. #3
    تاريخ التسجيل
    Nov 2010
    المشاركات
    186

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    تفضل

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

    يمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين buy limit و sell limit على بعد 10 نقاط من افتتاح الاسبوع بهدف 50 ووقف 100 وان تغلق الصفقات مع نهايه الاسبوع

    //+------------------------------------------------------------------+
    //| alnaser.mq4 |
    //| Copyright © 2011, MetaQuotes Software Corp. |
    //| http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2011, MetaQuotes Software Corp."
    #property link "http://www.metaquotes.net"
    extern int Step=10;
    extern int Takeprofit=50;
    extern int Stoploss=100;
    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()
    {
    if(Hour()==0 && Minute()<5 && MyOrdersTotal(Magicnumber)>0)
    {
    DeletePendingOrders(Magicnumber);
    CloseOrders(Magicnumber);
    }
    if(Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
    {
    double DayOfWeek=iOpen(Symbol(),PERIOD_W1,1);
    double BuyPrice=DayOfWeek-Step*Point;
    double BuyTP=BuyPrice+Takeprofit*Point;
    double BuySL=BuyPrice-Stoploss*Point;

    double SellPrice=DayOfWeek+Step*Point;
    double SellTP=SellPrice-Takeprofit*Point;
    double SellSL=SellPrice+Stoploss*Point;

    OrderSend(Symbol(),OP_BUYLIMIT,Lots,BuyPrice,3,Buy SL,BuyTP,"",Magicnumber,0,Green);
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,SellPrice,3,S ellSL,SellTP,"",Magicnumber,0,Red);


    }
    return(0);
    }
    int MyOrdersTotal(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())
    {
    c++;
    }
    }
    return(c);
    }

    int DeletePendingOrders(int Magic)
    {
    int total = OrdersTotal()-1;

    for (int cnt = total ; cnt >= 0 ; 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 >= 0 ; 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);
    }

    //+------------------------------------------------------------------+
    آخر تعديل بواسطة al_naser ، 09-05-2011 الساعة 10:26 AM

  4. #4
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

    الف شكر اخي مستر لكن هذا ليس كماطلبت اوان هناك اخطاء حيث انه يقوم بالشراء مباشره
    حيث وانا اريد اوامر معلقه
    أخي الكريم حسب معطيات الإكسبيرت فإنه لا يفتح غير أوامر معلقة BUYLIMIT && SELLLIMIT
    OrderSend(Symbol(),OP_BUYLIMIT,Lots,BuyPrice,3,Buy SL,BuyTP,"",Magicnumber,0,Green);
    OrderSend(Symbol(),OP_SELLLIMIT,Lots,SellPrice,3,S ellSL,SellTP,"",Magicnumber,0,Red);
    فبالتالي لا يفتح صفقات ماركت برايس
    أتوقع أن سيبرد الزوج اللي بتستخدمه عالي شوي ( 10 نقاط أوأكثر ) أو سريع الحركة ...... فيتم فتح صفقة معلقة و سرعان ما يتم تفعيل الصفقة ........ حاول تغير عدد النقاط أو أستخدم زوج قليل السيبرد ...... عل و عسى
    extern int Step=10;
    آخر تعديل بواسطة alshakatan ، 10-05-2011 الساعة 12:13 AM

  5. #5
    تاريخ التسجيل
    Nov 2010
    المشاركات
    186

    افتراضي يمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين فقط

    كود PHP:
    //+------------------------------------------------------------------+
    //|                                             alnaser.mq4 |
    //|                      Copyright © 2008, MetaQuotes Software Corp. |
    //|                                        http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2008, MetaQuotes Software Corp."
    #property link      "http://www.metaquotes.net"
    extern int Step=20;
    extern int Takeprofit=50;
    extern int Stoploss=50;
    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()
    {
      if(
    DayOfWeek()==Monday && Hour()==&& Minute()<&& MyOrdersTotal(Magicnumber)>0)
      {
        
    DeletePendingOrders(Magicnumber);
        
    CloseOrders(Magicnumber);
      }
      if(
    DayOfWeek()==Monday && Hour()==&& Minute()>&& MyOrdersTotal(Magicnumber)==0)
      {
        
    double WeekOpen=iOpen(Symbol(),PERIOD_W1,0);
        
    double BuyPrice=WeekOpen+Step*Point;
        
    double BuyTP=BuyPrice+Takeprofit*Point;
        
    double BuySL=BuyPrice-Stoploss*Point;
        
        
    double SellPrice=WeekOpen-Step*Point;
        
    double SellTP=SellPrice-Takeprofit*Point;
        
    double SellSL=SellPrice+Stoploss*Point;
        
        
    OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
        
    OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,3,SellSL,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);
    }  

    //+------------------------------------------------------------------+ 
    الملفات المرفقة الملفات المرفقة
    آخر تعديل بواسطة al_naser ، 10-05-2011 الساعة 12:27 AM

  6. #6
    تاريخ التسجيل
    Nov 2010
    المشاركات
    186

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة alshakatan مشاهدة المشاركة
    أخي الكريم حسب معطيات الإكسبيرت فإنه لا يفتح غير أوامر معلقة BUYLIMIT && SELLLIMIT

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

  7. #7
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

    يمكن تعديلي هذا الاكسبيرت وتعطيني الخطاء حيث اريده ان يقوم فقط بفتح صفقتين فقط buy stop و sell stop على بعد 20 نقاط من افتتاح الاسبوع بهدف 50 ووقف 50 وان تغلق الصفقتين مع نهايه الاسبوع ان لم تتجقق
    أخي العزيز أعتبر نفسك تكلم الإكسبيرت , حسب المعطيات إنت بتقول للإكسبيرت أفتح عملية شراء معلق و بيع معلق بدون شروط .... فحيفضل يحطلك أوامر كتيرة دون توقف ...... فما عليك غير إنك تحطله شرط أو تقوله إزا كان عدد صفقات الشراء المعلقة أقل من 0 أفتح عملية شراء معلقة ... فيفتح لك عملية شراء معلقة و الآن أصبح عدد الصفقات المعلقة أكثر 0 فلا يفتح عملية أخرى حسب الشرط اللي حطيته إنت ......... و لكن عندما تتفعل الصفقة المعلقة يصبح عدد الصفقات المعلقة بعد التفعيل 0 و هنا سوف يضع الإكسبيرت عملية شراء معلقة مرة أخرى و أكيد إنت عارف السبب و أبغاك إنت تشوف الشرط المناسب لحجم الإكسبيرت من وضع صفقة معلقة أخرى بعد التفعيل
    و ما تنسى تعرف عدد الصفقات المعلقة بنفس طريقة تعريف عدد الصفقات ( المعلقة و المفعلة )
    int MyOrdersTotal(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())
    {
    c++;
    }
    }
    return(c);
    }
    سامحني كثرت عليك لكني شفت إنك تعرف لمبادئ صنع الإكسبيرت فأتوقع هذا مفيد لك
    تحيتي
    آخر تعديل بواسطة alshakatan ، 10-05-2011 الساعة 12:46 AM

  8. #8
    تاريخ التسجيل
    Nov 2010
    المشاركات
    186

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة alshakatan مشاهدة المشاركة
    أخي العزيز أعتبر نفسك تكلم الإكسبيرت , حسب المعطيات إنت بتقول للإكسبيرت أفتح عملية شراء معلق و بيع معلق بدون شروط .... فحيفضل يحطلك أوامر كتيرة دون توقف ...... فما عليك غير إنك تحطله شرط أو تقوله إزا كان عدد صفقات الشراء المعلقة أقل من 0 أفتح عملية شراء معلقة ... فيفتح لك عملية شراء معلقة و الآن أصبح عدد الصفقات المعلقة أكثر 0 فلا يفتح عملية أخرى حسب الشرط اللي حطيته إنت ......... و لكن عندما تتفعل الصفقة المعلقة يصبح عدد الصفقات المعلقة بعد التفعيل 0 و هنا سوف يضع الإكسبيرت عملية شراء معلقة مرة أخرى و أكيد إنت عارف السبب و أبغاك إنت تشوف الشرط المناسب لحجم الإكسبيرت من وضع صفقة معلقة أخرى بعد التفعيل
    و ما تنسى تعرف عدد الصفقات المعلقة بنفس طريقة تعريف عدد الصفقات ( المعلقة و المفعلة )

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

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

    اريد غير هذا الكود

    كود PHP:
    if(DayOfWeek()==&& Hour()==22 && Minute()==45 && MyOrdersTotal(Magicnumber)>0)
      {
        
    DeletePendingOrders(Magicnumber);
        
    CloseOrders(Magicnumber);
      } 
    وكمان الكود المسؤل عن فتح صفقات معلقه سواء limit او stop بنفس الوقت ولكن تكون بفارق نقاط مختلفه
    آخر تعديل بواسطة al_naser ، 10-05-2011 الساعة 09:07 PM

  9. #9
    تاريخ التسجيل
    Mar 2007
    الإقامة
    المملكة العربية السعودية
    المشاركات
    440

    افتراضي

    هل تعرف ماهو الكود لغلق جميع الصفقات المعلقه والمفتوحه مع اغلاق سعر الجمعه وليس عند وقت محدد من الجمعه لانه احيانا يغلق السوق قبل الساعه 22
    لا أعتقد أخي بوجود كود يتعرف على وقت إغلاق السوق ليستعان به , لكن الكود المرفق ممتاز جدا , ماعليك سوى سؤال الدعم الفني عن وقت إغلاق السوق عندهم و تدخله على الإكسبيرت
    وكمان الكود المسؤل عن فتح صفقات معلقه سواء limit او stop بنفس الوقت ولكن تكون بفارق نقاط مختلفه
    كود PHP:
    OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green); 
    ما عليك سوى إنك تغير OP_BUYSTOP أو OP_BUYLIMIT أو OP_BUY
    بس ما تنسى تحطله شروط لفتح الصفقات
    زي ماقلت للإكسبيرت قبل كده إزا كان اليوم ==5 و الساععة == 22 و ... و ..... أغلق الصفقات
    و دحين قله إزا ..... إزا ....... أفتح صفقات
    بالتوفيق يا رب

  10. #10
    تاريخ التسجيل
    Nov 2010
    المشاركات
    186

    افتراضي

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

    كود PHP:
    OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green); 
    ما عليك سوى إنك تغير OP_BUYSTOP أو OP_BUYLIMIT أو OP_BUY
    بس ما تنسى تحطله شروط لفتح الصفقات
    زي ماقلت للإكسبيرت قبل كده إزا كان اليوم ==5 و الساععة == 22 و ... و ..... أغلق الصفقات
    و دحين قله إزا ..... إزا ....... أفتح صفقات
    بالتوفيق يا رب

    الف شكر اخي
    لكن هناك بعض المشاكل هو انه رغم تحقق الشروط الاانه احيانا يضع اوامر معلقه واحيانا لايضع اعتقد ان المشكله من السريفر لكني استخدمت طريقة إجبار السيرفر على فتح الصفقة لكن
    دون فائده
    كود PHP:
     gT=0;
           while(
    gT<=0)
           {
             
    Sleep(1000);
             
    gT=OrderSend(Symbol(),OP_SELLSTOP,Lots,sl,3,sl+StopLoss*Point,sl-TakeProfit Point ,"" Magic Green);
             
    Sleep(1000);
           } 
    هل يمكن ان اجعل الاكسبيرت يفتح مع افتتاح السوق وليس عند الساعه 0 لانه احيانا يفتح متاخرا مثلا عند 1:20 فلا يستطيع الاكسبيرت ان يعمل اوامر معلقه لانه مبرمج فقط عندالساعه 0
    الشي الاخر عملت تنزيل بيانات العمله السابقه لشارت الدقيقه لكني اجد بعض الشموع غير موجوده رغم اني مسحت الهيستوري السابقه ونزلتها من جديد لكن دون فائده
    اين اجد هذه البيانات كامله؟