النتائج 1 إلى 9 من 9
  1. #1
    الصورة الرمزية back door
    back door غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2012
    المشاركات
    505

    افتراضي اخوانى هل هناك حل برمجى لهذه المشكلة ؟

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

    1- ممكن لا يقبل البروكر الامر المعلق
    فهل يمكن للاكسبيرت ان يعاود المحاولة مرارا وتكرارا الى ان يتم تعليق الامر؟
    ارجو ارفاق الكود البرمجى ان وجد .

    2- بعد نجاح تعليق الامر
    ممكن ان لا ينفذ البروكر الامر المعلق لعدم توافق السعر .
    فهل يمكن للاكسبيرت ان يحاول مرارا وتكرارا تنفيذ الامر المعلق حتى لو اعلى الباى ستوب بنقطة او اتنين واقل من السل ستوب بنقطة او اتنين ؟
    ارجو ارفاق الكود البرمجى ان وجد .

    3- فى بعض الشركات بيحصل انه بيظهرلك نافذة فيها السعر الجديد ويسألك هل تقبل السعر الجديد ام لا
    فهل يمكن للاكسبيرت ان يختار نعم ؟
    ارجو ارفاق الكود البرمجى ان وجد .

    4- لو فى حل افضل من او اكسبيرت منفصل يتعامل مع الاوامر المعلقة ويحاول تنفيذها . ارجو ارفاقه

    شكرا جزيلا
    جزاكم الله خيرا
    خالص تحياتى

  2. #2
    الصورة الرمزية أبو الدرداء
    أبو الدرداء غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2009
    الإقامة
    مصر
    المشاركات
    148

    افتراضي

    كود PHP:
    double price=Ask+30*Point;
     
    int Ticket=OrderSend(Symbol(),OP_BUYSTOP,1,price,3,0,0,"ea",MagicNumber,0,Blue);
     while(
    Ticket<0){
     
    Ticket=OrderSend(Symbol(),OP_BUYSTOP,1,price,3,0,0,"ea",MagicNumber,0,Blue);
     
    price+=1*Point;
     } 

  3. #3
    الصورة الرمزية back door
    back door غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2012
    المشاركات
    505

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة أبو الدرداء مشاهدة المشاركة
    كود PHP:
    double price=Ask+30*Point;
     
    int Ticket=OrderSend(Symbol(),OP_BUYSTOP,1,price,3,0,0,"ea",MagicNumber,0,Blue);
     while(
    Ticket<0){
     
    Ticket=OrderSend(Symbol(),OP_BUYSTOP,1,price,3,0,0,"ea",MagicNumber,0,Blue);
     
    price+=1*Point;
     } 
    جزاك الله خيرا
    الكود دة بيعبر عن اى حالة من الحالات السابقة؟
    او عموما هو بيعبر عن اية؟
    خالص تحياتى وتقديرى

  4. #4
    الصورة الرمزية back door
    back door غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2012
    المشاركات
    505

    افتراضي

    للرفع وارجو المزيد من المعلومات اخوانى جزاكم الله كل خير

  5. #5
    الصورة الرمزية mb
    mb
    mb غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2011
    المشاركات
    49

    افتراضي رد:اخوانى هل هناك حل برمجى لهذه المشكلة ؟

    أفهم من كلامك أنك تعرف كيفية التعامل مع وظائف ستدمجها في الاكسبرت
    إذا
    مكتبة ضمن الاكسبرت لترجمة الأخطاء
    كود:
    #include <stderror.mqh> #include <stdlib.mqh>
    المتغيرات الخارجية ستكون كالتالي
    كود:
    extern double Take_Profit=50; extern double Stop_Loss=50; extern double lots = 0.01; extern string comment="O-O"; extern int slippage=3; extern int magic=3333; extern int pips=25;
    المتغيرات العامة ستكون كالتالي
    كود:
    int tries=100;//عدد المحاولات int DG; double PT,MD;
    الوظيفة init ستكون كالتالي
    كود:
    int init() { DG=Digits; if(DG==3 || DG==5){PT=Point*10;MD=10;} else{PT=Point;MD=1;} return(0); }
    الوظائف هي
    buy_stop لتعليق أمر شراء
    sell_stop لتعليق أمر بيع
    كود:
    void buy_stop() { int buystop_ticket=0; int number=0; //---- if(pips<MarketInfo(Symbol(),MODE_STOPLEVEL)){pips=MarketInfo(Symbol(),MODE_STOPLEVEL);} double ask=Ask + (pips*PT); double loss_stop=ask - (Stop_Loss*PT); double profit_take=ask + (Take_Profit*PT); //---- while(buystop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); buystop_ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,ask,slippage*MD,loss_stop,profit_take,comment,magic,0,Green); if(buystop_ticket<0){Print("Error opening buy stop! ",ErrorDescription(GetLastError())); number++;} } if(buystop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} } //---- void sell_stop() { int sellstop_ticket=0; int number=0; //---- if(pips<MarketInfo(Symbol(),MODE_STOPLEVEL)){pips=MarketInfo(Symbol(),MODE_STOPLEVEL);} double bid=Bid - (pips*PT); double loss_stop=bid + (Stop_Loss*PT); double profit_take=bid - (Take_Profit*PT); //--- while(sellstop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); sellstop_ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,bid,slippage*MD,loss_stop,profit_take,comment,magic,0,Red); if(sellstop_ticket<0){Print("Error opening sell stop! ",ErrorDescription(GetLastError())); number++;} } if(sellstop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} } //----

  6. #6
    الصورة الرمزية back door
    back door غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2012
    المشاركات
    505

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mb مشاهدة المشاركة
    أفهم من كلامك أنك تعرف كيفية التعامل مع وظائف ستدمجها في الاكسبرت
    إذا
    مكتبة ضمن الاكسبرت لترجمة الأخطاء
    كود:
    #include <stderror.mqh> #include <stdlib.mqh>
    المتغيرات الخارجية ستكون كالتالي
    كود:
    extern double Take_Profit=50; extern double Stop_Loss=50; extern double lots = 0.01; extern string comment="O-O"; extern int slippage=3; extern int magic=3333; extern int pips=25;
    المتغيرات العامة ستكون كالتالي
    كود:
    int tries=100;//عدد المحاولات int DG; double PT,MD;
    الوظيفة init ستكون كالتالي
    كود:
    int init() { DG=Digits; if(DG==3 || DG==5){PT=Point*10;MD=10;} else{PT=Point;MD=1;} return(0); }
    الوظائف هي
    buy_stop لتعليق أمر شراء
    sell_stop لتعليق أمر بيع
    كود:
    void buy_stop() { int buystop_ticket=0; int number=0; //---- if(pips<MarketInfo(Symbol(),MODE_STOPLEVEL)){pips=MarketInfo(Symbol(),MODE_STOPLEVEL);} double ask=Ask + (pips*PT); double loss_stop=ask - (Stop_Loss*PT); double profit_take=ask + (Take_Profit*PT); //---- while(buystop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); buystop_ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,ask,slippage*MD,loss_stop,profit_take,comment,magic,0,Green); if(buystop_ticket<0){Print("Error opening buy stop! ",ErrorDescription(GetLastError())); number++;} } if(buystop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} } //---- void sell_stop() { int sellstop_ticket=0; int number=0; //---- if(pips<MarketInfo(Symbol(),MODE_STOPLEVEL)){pips=MarketInfo(Symbol(),MODE_STOPLEVEL);} double bid=Bid - (pips*PT); double loss_stop=bid + (Stop_Loss*PT); double profit_take=bid - (Take_Profit*PT); //--- while(sellstop_ticket<=0 && number<tries ) { while(!IsTradeAllowed())Sleep(500); RefreshRates(); sellstop_ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,bid,slippage*MD,loss_stop,profit_take,comment,magic,0,Red); if(sellstop_ticket<0){Print("Error opening sell stop! ",ErrorDescription(GetLastError())); number++;} } if(sellstop_ticket<0){Print("Error Occured "+ErrorDescription(GetLastError()));} } //----
    شكرا جزيلا اخى الكريم

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

    افتراضي

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

    1- ممكن لا يقبل البروكر الامر المعلق
    فهل يمكن للاكسبيرت ان يعاود المحاولة مرارا وتكرارا الى ان يتم تعليق الامر؟
    ارجو ارفاق الكود البرمجى ان وجد .

    2- بعد نجاح تعليق الامر
    ممكن ان لا ينفذ البروكر الامر المعلق لعدم توافق السعر .
    فهل يمكن للاكسبيرت ان يحاول مرارا وتكرارا تنفيذ الامر المعلق حتى لو اعلى الباى ستوب بنقطة او اتنين واقل من السل ستوب بنقطة او اتنين ؟
    ارجو ارفاق الكود البرمجى ان وجد .

    3- فى بعض الشركات بيحصل انه بيظهرلك نافذة فيها السعر الجديد ويسألك هل تقبل السعر الجديد ام لا
    فهل يمكن للاكسبيرت ان يختار نعم ؟
    ارجو ارفاق الكود البرمجى ان وجد .

    4- لو فى حل افضل من او اكسبيرت منفصل يتعامل مع الاوامر المعلقة ويحاول تنفيذها . ارجو ارفاقه

    شكرا جزيلا
    جزاكم الله خيرا
    خالص تحياتى
    وعليكم السلام ورحمة الله وبركاته
    الفكره في أنك ستستخدم الحلقه للمحاولة عدد المرات التي تريدها حتى يوضع الأمر وفي نفس الوقت في كل مره تقوم بالمحاوله ولا تفلح تقوم بزيادة السعر نقطه حتى يستطيع وضع الأمر المعلق مثلا لو كان سعر الدخول
    باي ستوب من 1.4230 والسعر الحالي 1.4225
    سوف يبدأ يحاول وضعه السعر عند 1.4230 إذا لم يفلح يحاول مره أخرى يضع السعر عند 1.4231 إذا لم يفلح يحاول وضعه عند 1.4232 وهكذا بعدد المرات التي تريد المحاوله فيها
    أو يمكنك الإكتفاء عند الرقم الذي تريده وتظل تحاول
    مثال
    كود PHP:
     if(rsi>50){
               
    enteryprice=High[1]+20*Point;
                for(
    int i=0;i<TriesNumber;i++){
                 
    ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(enteryprice,Digits),3,SL,TP," EA",MagicNumber,0,Blue);
                 if(
    ticket>0)break;
                 
    enteryprice+=1*Point;
                 }
                } 
    TriesNumber سيكون متغير خارجي تقوم بتعريفه تحدد فيه عدد مرات المحاوله أو يمكنك إستبداله بأي رقم مباشرة مثلا 20 مره
    آخر تعديل بواسطة MR.dollar ، 27-05-2012 الساعة 11:04 PM
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

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

    افتراضي

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

    1- ممكن لا يقبل البروكر الامر المعلق
    فهل يمكن للاكسبيرت ان يعاود المحاولة مرارا وتكرارا الى ان يتم تعليق الامر؟
    ارجو ارفاق الكود البرمجى ان وجد .

    2- بعد نجاح تعليق الامر
    ممكن ان لا ينفذ البروكر الامر المعلق لعدم توافق السعر .
    فهل يمكن للاكسبيرت ان يحاول مرارا وتكرارا تنفيذ الامر المعلق حتى لو اعلى الباى ستوب بنقطة او اتنين واقل من السل ستوب بنقطة او اتنين ؟
    ارجو ارفاق الكود البرمجى ان وجد .

    3- فى بعض الشركات بيحصل انه بيظهرلك نافذة فيها السعر الجديد ويسألك هل تقبل السعر الجديد ام لا
    فهل يمكن للاكسبيرت ان يختار نعم ؟
    ارجو ارفاق الكود البرمجى ان وجد .

    4- لو فى حل افضل من او اكسبيرت منفصل يتعامل مع الاوامر المعلقة ويحاول تنفيذها . ارجو ارفاقه

    شكرا جزيلا
    جزاكم الله خيرا
    خالص تحياتى
    الإجابه عن الأسئلة الأخرى
    في الأوامر المعلقه لا توجد هذه الخاصية لكن إذا تقصد في الأوامر بسعر السوق فيوجد ما يسمى بال Slippage أو عدد نقاط إعادة التسعير المسموح وبها وهذه يمكنك أن تحددها عند فتح الأمر
    مثال
    كود PHP:
    OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3,SL,TP,"EA",MagicNumber,0,Red); 
    الرقم 3 هو عدد نقاط إعادة التسعير المسموح بها يمكنك زيادته أو نقصانه حسب ما تريد
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  9. #9
    الصورة الرمزية back door
    back door غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2012
    المشاركات
    505

    افتراضي

    شكرا جزيلا استاذ اسامة
    جزاكم الله كل خير


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17