صفحة 293 من 689 الأولىالأولى ... 193243283287288289290291292293294295296297298299303343393 ... الأخيرةالأخيرة
النتائج 4,381 إلى 4,395 من 10335
  1. #4381
    الصورة الرمزية AMINDESETIF
    AMINDESETIF غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2012
    الإقامة
    الجزائر
    المشاركات
    166

    افتراضي

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

  2. #4382
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

    افتراضي

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

  3. #4383
    الصورة الرمزية محمد آل مسيري
    محمد آل مسيري غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jan 2010
    الإقامة
    السعودية
    العمر
    40
    المشاركات
    4,001

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    بالنسبه للمشكله الأولى فيمكنك أن تقوم بتحديد أن يفتح صفقة واحده فقط ولا يفتح صفقة جديده حتى مرور وقت معين مثلا ساعه كامله
    مثال سوف أقوم بعمل دالة لمعرفة توقيت فتح آخر صفقة مغلقه
    كود PHP:
    datetime LastOrderOpenTime()
    {
     for(
    int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
       return(
    OrderOpenTime());
      }
     }
     return(
    0);

    ثم ستضع من ضمن شروط الدخول
    كود PHP:
    if(TimeCurrent()-LastOrderOpenTime()>=3600
    3600 ثانيه أي 60 دقيقه

    بالنسبه لعدم فتح صفقات فهذا لأنه يوجد من ضمن شروط الإكسبرت
    في حالة الشراء
    كود PHP:
    (halt1!=1
    فهو يحسب قبل أن يفتح صفقات الشراء أن لا يكون هناك أي صفقات شراء مفتوحه
    وأيضا بالنسبه للبيع
    كود PHP:
    (halt2!=1
    إذا حذفت هذه الشروط فسوف يفتح الصفقات في كل مره
    يعطيك ألف عافية حبيبنا ،،، بالنسبة للمشكلة الثانية تم حلها بنجاح

    بالنسبة للمشكلة الأولى نحن أخذنا وقت آخر صفقة تم اغلاقها .. وهذا المقياس ليس دقيق ..

    فمثلاً قد تكون آخر صفقة تم فتحها لم تغلق بعد ( والتي اغلقت ربما تكون صفقة قبل ساعات وساعات ) .. وكذلك هناك حالة ( يمكن أن يكون هناك صفقة بيع وصفقة شراء تدخلان للسوق في نفس الوقت مثلاً عند الساعة 1 ظهراً بالتمام 1.00 قد يكون هناك صفقة بيع وشراء وبالتالي منع أي صفقة مباشرة يعني أن صفقة واحدة فقط هي التي سوف تدخل السوق ) .

    فما هو الحل برأيك عزيزي ؟
    توقيع العضو
    ماجستير تقنيات تعليم من جامعة الملك سعود، مهتم بأسواق الأسهم والعملات، تابعني عبر تويتر @almasseri

  4. #4384
    الصورة الرمزية Walid_ELShereef
    Walid_ELShereef متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2012
    الإقامة
    الكويت
    العمر
    44
    المشاركات
    370

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

    الأخ العزيز الاستاذ أسامة بعد التحية
    صممت اكسبرت يقوم بفتح صفقتي buy limit و صفقة sell limit في وقت واحد طبقا لشروط معينة ولكني اسأل حضرتك عن كيفية كتابة الاكواد الخاصة عند تفعل أحد هذه الاوامر يقوم بالغاء الامر الآخر بمعنى عندي تفعل buy يقوم بحذف الامر المعلق الاخر sell limit وفي حالة تحقيق الاهدف الانتظار مره اخرى للدخول اما في حالة ضرب الاستوب لوز يقوم من نفس نقطة ضرب الاستوب لوز فتح صفقة معاكسة بضعف اللوت السابق بمعني يا استاذ أسامة في حالتنا هذه تفعلت صفقة buy وضربت استوب يقوم الاكسبرت بفتح صفقة sell من نفس نقطة الاستوب لوز للصفقة السابقة بلوت مضاعف وفي حالة الحصول منها على الهدف الامر انتهى اما في حالة ضرب الاستوب لوز مره اخرى يقوم الاكسبرت من نفس نقطة ضرب الاستوب لوز بفتح امر معاكس buy من نفس نقطة ضرب الاستوب لوز للصفقة السابقة وهكذا لحين اللوصول للهدف وعندئذ العودة من جديد عند انتظباق الشروط يفتح buy limit و sell limit وهكذا معلش تعبت حضرتك معي وفي انتظار الدوال البرمجية وجزاك لله كل خير

  5. #4385
    الصورة الرمزية AMINDESETIF
    AMINDESETIF غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2012
    الإقامة
    الجزائر
    المشاركات
    166

    افتراضي

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

  6. #4386
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

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

    اقتباس المشاركة الأصلية كتبت بواسطة AMINDESETIF مشاهدة المشاركة
    السلام عليكم
    شكرا اخى الكريم Jmeel
    لم اعرف صياغة دالة تحريك السعر + اضافتها الى اختيارات الاكسبير
    لو ممكن الدالة
    تفضل هذه هي الدالة
    كود PHP:
    void MoveTrailingStop()
    {
       
    int cnt,total=OrdersTotal();
       for(
    cnt=0;cnt<total;cnt++)
       {
          
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if(
    OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(
    OrderType()==OP_BUY)
             {
                if(
    TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,digits))  
                {                 
                   if((
    NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
                   {
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blue);
                   }
                }
             }
             else 
             {
                if(
    TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))  
                {                 
                   if((
    NormalizeDouble(OrderStopLoss(),digits)>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(OrderStopLoss()==0))
                   {
                      
    OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,digits),OrderTakeProfit(),0,Red);
                   }
                }
             }
          }
       }

    وهذا الشرط تضعه في دالة Start
    كود PHP:
       if(TrailingStop>0)MoveTrailingStop(); 
    وهذه خانى الأختيارات تضعها في بداية الأكسبيرت
    كود PHP:
    extern int TrailingStop=0;
    extern int TrailingStep=0
    أرجع للأكسبيرت ستتعلم منه أكثر .
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

  7. #4387
    الصورة الرمزية Walid_ELShereef
    Walid_ELShereef متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2012
    الإقامة
    الكويت
    العمر
    44
    المشاركات
    370

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة waleedgadelmola مشاهدة المشاركة
    الأخ العزيز الاستاذ أسامة بعد التحية
    صممت اكسبرت يقوم بفتح صفقتي buy limit و صفقة sell limit في وقت واحد طبقا لشروط معينة ولكني اسأل حضرتك عن كيفية كتابة الاكواد الخاصة عند تفعل أحد هذه الاوامر يقوم بالغاء الامر الآخر بمعنى عندي تفعل buy يقوم بحذف الامر المعلق الاخر sell limit وفي حالة تحقيق الاهدف الانتظار مره اخرى للدخول اما في حالة ضرب الاستوب لوز يقوم من نفس نقطة ضرب الاستوب لوز فتح صفقة معاكسة بضعف اللوت السابق بمعني يا استاذ أسامة في حالتنا هذه تفعلت صفقة buy وضربت استوب يقوم الاكسبرت بفتح صفقة sell من نفس نقطة الاستوب لوز للصفقة السابقة بلوت مضاعف وفي حالة الحصول منها على الهدف الامر انتهى اما في حالة ضرب الاستوب لوز مره اخرى يقوم الاكسبرت من نفس نقطة ضرب الاستوب لوز بفتح امر معاكس buy من نفس نقطة ضرب الاستوب لوز للصفقة السابقة وهكذا لحين اللوصول للهدف وعندئذ العودة من جديد عند انتظباق الشروط يفتح buy limit و sell limit وهكذا معلش تعبت حضرتك معي وفي انتظار الدوال البرمجية وجزاك لله كل خير
    للرفع أخي العزيز مستر دولار

  8. #4388
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

    افتراضي

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

    بالنسبة للمشكلة الأولى نحن أخذنا وقت آخر صفقة تم اغلاقها .. وهذا المقياس ليس دقيق ..

    فمثلاً قد تكون آخر صفقة تم فتحها لم تغلق بعد ( والتي اغلقت ربما تكون صفقة قبل ساعات وساعات ) .. وكذلك هناك حالة ( يمكن أن يكون هناك صفقة بيع وصفقة شراء تدخلان للسوق في نفس الوقت مثلاً عند الساعة 1 ظهراً بالتمام 1.00 قد يكون هناك صفقة بيع وشراء وبالتالي منع أي صفقة مباشرة يعني أن صفقة واحدة فقط هي التي سوف تدخل السوق ) .

    فما هو الحل برأيك عزيزي ؟
    أستاذ محمد الأستاذ اسامه اعطاك دالة تعود بتوقيت فتح آخر صفقة اغلقت ، اعمل نسخه منها ثم غير بدل History الى MODE_TRADE و ORDERSTRADE فتستعود لك بتوقيت افتتاح آخر صفقة ولازالت شغاله ، سيكون لدينا دالتين في هذه الحالة ، ثم ستعدل الشرط الى مقارنة مع الدالتين في التوقيت بدلا من الدالة الواحدة ، هذه الطريقة الأسهل .
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

  9. #4389
    الصورة الرمزية Walid_ELShereef
    Walid_ELShereef متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2012
    الإقامة
    الكويت
    العمر
    44
    المشاركات
    370

    افتراضي

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


    للرفع أخي العزيز مستر دولار

    للرفع مستر دولار او الاستاذ العزيز Jmeel

  10. #4390
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

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

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



    للرفع مستر دولار او الاستاذ العزيز Jmeel
    =======

    في الأول حتحتاج دالة بسيطة لحذف المعلق بعد تفعيل احدهم

    كود PHP:
    int TotalOrderByType(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNo&&OrderType()==type){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
        
      } 
    ثم ستضع الشرط اذا العقد للشراء اكبر من 0 و المعلق اكبر من 0 الغي المعلق بيع ، ثم تعدل الشرط لألغاء المعلق شراء

    كود PHP:
    If(TotalOrderByType(OP_BUY)>&& TotalOrderByType(OP_SELLSTOP)>0)  // Delete SellStop 
    السؤال الثاني لموضوع المضاعفة ، سيكون اذا اغلقت بخسار افتح عكسها بضعف اللوت
    هذه الدالة

    كود PHP:
    double LastOrderProf(int type){
      for(
    int iOrdersHistoryTotal ()-1i>=0i--){
      
    OrderSelect(i,SELECT_BY_POSMODE_HISTORY);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()==type){
       return(
    OrderProfit());
      }
     }
     return(
    0);

    والشرط هو

    كود PHP:
    If(LastOrderProf(OP_BUY)<0)  // OPSELL 

    واهلا بك .
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

  11. #4391
    الصورة الرمزية Walid_ELShereef
    Walid_ELShereef متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2012
    الإقامة
    الكويت
    العمر
    44
    المشاركات
    370

    افتراضي

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


    =======

    في الأول حتحتاج دالة بسيطة لحذف المعلق بعد تفعيل احدهم

    كود PHP:
    int TotalOrderByType(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNo&&OrderType()==type){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
        
      } 
    ثم ستضع الشرط اذا العقد للشراء اكبر من 0 و المعلق اكبر من 0 الغي المعلق بيع ، ثم تعدل الشرط لألغاء المعلق شراء

    كود PHP:
    If(TotalOrderByType(OP_BUY)>&& TotalOrderByType(OP_SELLSTOP)>0)  // Delete SellStop 
    السؤال الثاني لموضوع المضاعفة ، سيكون اذا اغلقت بخسار افتح عكسها بضعف اللوت
    هذه الدالة

    كود PHP:
    double LastOrderProf(int type){
      for(
    int iOrdersHistoryTotal ()-1i>=0i--){
      
    OrderSelect(i,SELECT_BY_POSMODE_HISTORY);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()==type){
       return(
    OrderProfit());
      }
     }
     return(
    0);

    والشرط هو

    كود PHP:
    If(LastOrderProf(OP_BUY)<0)  // OPSELL 

    واهلا بك .
    أخي الكريم الاستاذ جميل أولا بشكرك لتعبك معي بس صراحة الامر غير واضح معي سوف أقوم بالتوضيح أكثر
    اولا عند تحقق الشروط في عمل الاكسبرت يقوم بتعليق التالي :
    Sell Limit
    Buy Limit
    وهذه الاوامر كل افتتاح شمعه جديده فاذا انتهت الشمعه ولم يتم تفعيل أحد هذه الاوامر يتم حذفها وتعليق أوامر جديدة عن اسعار جديدة
    في حالة تفعل هذه الاوامر وليكن Buy Limit وأصبح امر Buy
    هنا لابد من الاتي
    حذف الامر المعلق السابق Sell Limit ووضع أمر معلق جديد عند سعر الاستوب لوز للامر Buy ولكن هذه المرة تعليق Sell Stop بضعف اللوت للصفقة المفتوحة الحالية Buy
    هنا احتمالين
    الاحتمال الاول تحقيق الامر المفتوح الحالي وهو Buy لهدفة وهنا يتم حذف الامر المعلق Sell Stop وانتهى الأمر
    الاحتمال الثاني عدم تحقيق الأمر المفتوح الحالي وهو Buy لهدفة وتم ضرب الاستوب لوز هنا سوف يتم تفعل الامر المعلق Sell Stop بضعف اللوت لكي يصبح لدينا أمر Sell وهنا لابد فورا من تعليق أمر معلق Buy Stop عند نقطة الاستوب لوز للامر المفتوح الحالي Sell بضعف اللوت للأمر المفتوح وهكذا أخي الكريم
    بمعني
    عند افتتاح كل شمعة يتم تعليق أمرين
    Sell Limit و Buy Limit والانتظار لحين تفعل احدهم فان لم يتم تفعيل احدهم يتم الالغاء وتعليق أوامر جديدة عند افتتاح الشمعة الجديدة
    اما اذا تم تفعيل احدهم يتم وضع أمر معلق بضعف اللوت للامر المفتوح وعند سعر الاستوب لوز للامر المفتوح ولكن هذه المرة هو عكس الامر المفتوح Stop بمعنى إن تم تفعيل الامر Sell يتم وضع امر معلق Buy Stop عند سعر الاستوب لوز للصفقة المفتوحة الحالية Sell وهكذا أخي الكريم لحين الوصول للهدف ان شاء الله
    أرجو التكرم بوضع الدالات المناسبة بالكامل وجزاك الله خيرا

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

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

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

    بالنسبة للمشكلة الأولى نحن أخذنا وقت آخر صفقة تم اغلاقها .. وهذا المقياس ليس دقيق ..

    فمثلاً قد تكون آخر صفقة تم فتحها لم تغلق بعد ( والتي اغلقت ربما تكون صفقة قبل ساعات وساعات ) .. وكذلك هناك حالة ( يمكن أن يكون هناك صفقة بيع وصفقة شراء تدخلان للسوق في نفس الوقت مثلاً عند الساعة 1 ظهراً بالتمام 1.00 قد يكون هناك صفقة بيع وشراء وبالتالي منع أي صفقة مباشرة يعني أن صفقة واحدة فقط هي التي سوف تدخل السوق ) .

    فما هو الحل برأيك عزيزي ؟
    يمكنك أن تقوم بتعريف متغير لحفظ الشمعه التي تم فتح صفقه فيها
    كود PHP:
    static datetime Time0
    ثم ستضع من ضمن شروط الإكسبرت
    كود PHP:
    if(Time0!=Time[0]) 
    وعندما يتم فتح صفقة سوف تضع الكود
    كود PHP:
    Time0=Time[0]; 
    بالتالي لن تفتح صفقة أخرى في نفس هذه الشمعه التي تحققت فيها الشروط إلا مره واحده فقط
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

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

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


    أخي الكريم الاستاذ جميل أولا بشكرك لتعبك معي بس صراحة الامر غير واضح معي سوف أقوم بالتوضيح أكثر
    اولا عند تحقق الشروط في عمل الاكسبرت يقوم بتعليق التالي :
    Sell Limit
    Buy Limit
    وهذه الاوامر كل افتتاح شمعه جديده فاذا انتهت الشمعه ولم يتم تفعيل أحد هذه الاوامر يتم حذفها وتعليق أوامر جديدة عن اسعار جديدة
    في حالة تفعل هذه الاوامر وليكن Buy Limit وأصبح امر Buy
    هنا لابد من الاتي
    حذف الامر المعلق السابق Sell Limit ووضع أمر معلق جديد عند سعر الاستوب لوز للامر Buy ولكن هذه المرة تعليق Sell Stop بضعف اللوت للصفقة المفتوحة الحالية Buy
    هنا احتمالين
    الاحتمال الاول تحقيق الامر المفتوح الحالي وهو Buy لهدفة وهنا يتم حذف الامر المعلق Sell Stop وانتهى الأمر
    الاحتمال الثاني عدم تحقيق الأمر المفتوح الحالي وهو Buy لهدفة وتم ضرب الاستوب لوز هنا سوف يتم تفعل الامر المعلق Sell Stop بضعف اللوت لكي يصبح لدينا أمر Sell وهنا لابد فورا من تعليق أمر معلق Buy Stop عند نقطة الاستوب لوز للامر المفتوح الحالي Sell بضعف اللوت للأمر المفتوح وهكذا أخي الكريم
    بمعني
    عند افتتاح كل شمعة يتم تعليق أمرين
    Sell Limit و Buy Limit والانتظار لحين تفعل احدهم فان لم يتم تفعيل احدهم يتم الالغاء وتعليق أوامر جديدة عند افتتاح الشمعة الجديدة
    اما اذا تم تفعيل احدهم يتم وضع أمر معلق بضعف اللوت للامر المفتوح وعند سعر الاستوب لوز للامر المفتوح ولكن هذه المرة هو عكس الامر المفتوح Stop بمعنى إن تم تفعيل الامر Sell يتم وضع امر معلق Buy Stop عند سعر الاستوب لوز للصفقة المفتوحة الحالية Sell وهكذا أخي الكريم لحين الوصول للهدف ان شاء الله
    أرجو التكرم بوضع الدالات المناسبة بالكامل وجزاك الله خيرا
    أنت شرحت الشروط بكل تفصيل باقي فقط أن تحويل هذه الأوامر إلى كود بنفس الطريقه التي شرحتها
    قم بعمل دالة لمعرفة عدد الأوامر المعلقة حسب نوعها
    كود PHP:
     int orderscnt(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol()&&OrderType()==type && MagicNumber==OrderMagicNumber()){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    أول شرط سيكون حذف الأمر الليميت المعلق ووضع الأمر المعلق الأستوب
    ستحتاج أولا عمل دالة لمعرفة قيمة ستوب الأمر المفتوح وحجم اللوت له
    كود PHP:
    double StopLossOrder(int type)
    {
     for(
    int i=0;i<OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       return(
    OrderStopLoss());
      }
     }
     return(
    0);
    }
    double LotsOrder(int type)
    {
     for(
    int i=0;i<OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       return(
    OrderLots());
      }
     }

    ودالة لحذف الأوامر المعلقه
    كود PHP:
    void DeletePendingOrder(int type)
    {
     for(
    int i=0;i<OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       
    OrderDelete(OrderTicket());
      }
     }

    ثم ستكون الشروط
    كود PHP:
    if(orderscnt(OP_BUY)>0&&orderscnt(OP_SELLSTOP)==0)
    {
     
    DeletePendingOrder(OP_SELLLIMIT);
     
    OrderSend(Symbol(),OP_SELLSTOP,LotsOrder(OP_BUY)*2,StopLossOrder(OP_BUY),0,"EA",MagicNumber,0,Red);
    }
    if(
    orderscnt(OP_SELL)>0&&orderscnt(OP_BUYSTOP)==0)
    {
     
    DeletePendingOrder(OP_BUYLIMIT);
     
    OrderSend(Symbol(),OP_BUYSTOP,LotsOrder(OP_SELL)*2,StopLossOrder(OP_SELL),0,"EA",MagicNumber,0,Blue);

    أما بالنسبه لإلغاء الأوامر المعلقه في حال أغلقت الأوامر المفتوحه على هدفها
    كود PHP:
    if(orderscnt(OP_BUY)+orderscnt(OP_SELL)==0)
    {
     
    DeletePendingOrder(OP_BUYSTOP);
     
    DeletePendingOrder(OP_SELLSTOP);

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

  14. #4394
    الصورة الرمزية Walid_ELShereef
    Walid_ELShereef متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2012
    الإقامة
    الكويت
    العمر
    44
    المشاركات
    370

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

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    أنت شرحت الشروط بكل تفصيل باقي فقط أن تحويل هذه الأوامر إلى كود بنفس الطريقه التي شرحتها
    قم بعمل دالة لمعرفة عدد الأوامر المعلقة حسب نوعها
    كود PHP:
     int orderscnt(int type){
     
    int cnt=0;
       for(
    int i =0;i<OrdersTotal();i++){
         if(
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(
    OrderSymbol()==Symbol()&&OrderType()==type && MagicNumber==OrderMagicNumber()){
             
    cnt++;
           }
         }
       }
        return(
    cnt);
      } 
    أول شرط سيكون حذف الأمر الليميت المعلق ووضع الأمر المعلق الأستوب
    ستحتاج أولا عمل دالة لمعرفة قيمة ستوب الأمر المفتوح وحجم اللوت له
    كود PHP:
    double StopLossOrder(int type)
    {
     for(
    int i=0;i<OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       return(
    OrderStopLoss());
      }
     }
     return(
    0);
    }
    double LotsOrder(int type)
    {
     for(
    int i=0;i<OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       return(
    OrderLots());
      }
     }

    ودالة لحذف الأوامر المعلقه
    كود PHP:
    void DeletePendingOrder(int type)
    {
     for(
    int i=0;i<OrdersTotal();i++)
     {
      
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
    OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       
    OrderDelete(OrderTicket());
      }
     }

    ثم ستكون الشروط
    كود PHP:
    if(orderscnt(OP_BUY)>0&&orderscnt(OP_SELLSTOP)==0)
    {
     
    DeletePendingOrder(OP_SELLLIMIT);
     
    OrderSend(Symbol(),OP_SELLSTOP,LotsOrder(OP_BUY)*2,StopLossOrder(OP_BUY),0,"EA",MagicNumber,0,Red);
    }
    if(
    orderscnt(OP_SELL)>0&&orderscnt(OP_BUYSTOP)==0)
    {
     
    DeletePendingOrder(OP_BUYLIMIT);
     
    OrderSend(Symbol(),OP_BUYSTOP,LotsOrder(OP_SELL)*2,StopLossOrder(OP_SELL),0,"EA",MagicNumber,0,Blue);

    أما بالنسبه لإلغاء الأوامر المعلقه في حال أغلقت الأوامر المفتوحه على هدفها
    كود PHP:
    if(orderscnt(OP_BUY)+orderscnt(OP_SELL)==0)
    {
     
    DeletePendingOrder(OP_BUYSTOP);
     
    DeletePendingOrder(OP_SELLSTOP);

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

  15. #4395
    الصورة الرمزية محمد آل مسيري
    محمد آل مسيري غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Jan 2010
    الإقامة
    السعودية
    العمر
    40
    المشاركات
    4,001

    افتراضي

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


    أستاذ محمد الأستاذ اسامه اعطاك دالة تعود بتوقيت فتح آخر صفقة اغلقت ، اعمل نسخه منها ثم غير بدل History الى MODE_TRADE و ORDERSTRADE فتستعود لك بتوقيت افتتاح آخر صفقة ولازالت شغاله ، سيكون لدينا دالتين في هذه الحالة ، ثم ستعدل الشرط الى مقارنة مع الدالتين في التوقيت بدلا من الدالة الواحدة ، هذه الطريقة الأسهل .
    بارك الله فيك أخي الكريم .. ألا نستطيع تسهيل الأمر بدلاً من الدالتين بتسجيل وقت الصفقة الأخيرة في متغير ومن ثم مقارنته داخل الشروط ؟
    توقيع العضو
    ماجستير تقنيات تعليم من جامعة الملك سعود، مهتم بأسواق الأسهم والعملات، تابعني عبر تويتر @almasseri

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

  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