النتائج 1 إلى 9 من 9
- 26-05-2012, 02:33 PM #1
اخوانى هل هناك حل برمجى لهذه المشكلة ؟
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
1- ممكن لا يقبل البروكر الامر المعلق
فهل يمكن للاكسبيرت ان يعاود المحاولة مرارا وتكرارا الى ان يتم تعليق الامر؟
ارجو ارفاق الكود البرمجى ان وجد .
2- بعد نجاح تعليق الامر
ممكن ان لا ينفذ البروكر الامر المعلق لعدم توافق السعر .
فهل يمكن للاكسبيرت ان يحاول مرارا وتكرارا تنفيذ الامر المعلق حتى لو اعلى الباى ستوب بنقطة او اتنين واقل من السل ستوب بنقطة او اتنين ؟
ارجو ارفاق الكود البرمجى ان وجد .
3- فى بعض الشركات بيحصل انه بيظهرلك نافذة فيها السعر الجديد ويسألك هل تقبل السعر الجديد ام لا
فهل يمكن للاكسبيرت ان يختار نعم ؟
ارجو ارفاق الكود البرمجى ان وجد .
4- لو فى حل افضل من او اكسبيرت منفصل يتعامل مع الاوامر المعلقة ويحاول تنفيذها . ارجو ارفاقه
شكرا جزيلا
جزاكم الله خيرا
خالص تحياتى
- 26-05-2012, 05:50 PM #2كود 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;
}
- 26-05-2012, 06:53 PM #3
- 27-05-2012, 06:21 PM #4
للرفع وارجو المزيد من المعلومات اخوانى جزاكم الله كل خير
- 27-05-2012, 06:53 PM #5
رد:اخوانى هل هناك حل برمجى لهذه المشكلة ؟
أفهم من كلامك أنك تعرف كيفية التعامل مع وظائف ستدمجها في الاكسبرت
إذا
مكتبة ضمن الاكسبرت لترجمة الأخطاء
كود:#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;
كود: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()));} } //----
- 27-05-2012, 10:51 PM #6
- 27-05-2012, 11:00 PM #7
وعليكم السلام ورحمة الله وبركاته
الفكره في أنك ستستخدم الحلقه للمحاولة عدد المرات التي تريدها حتى يوضع الأمر وفي نفس الوقت في كل مره تقوم بالمحاوله ولا تفلح تقوم بزيادة السعر نقطه حتى يستطيع وضع الأمر المعلق مثلا لو كان سعر الدخول
باي ستوب من 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;
}
}
آخر تعديل بواسطة MR.dollar ، 27-05-2012 الساعة 11:04 PM
- 27-05-2012, 11:05 PM #8
الإجابه عن الأسئلة الأخرى
في الأوامر المعلقه لا توجد هذه الخاصية لكن إذا تقصد في الأوامر بسعر السوق فيوجد ما يسمى بال Slippage أو عدد نقاط إعادة التسعير المسموح وبها وهذه يمكنك أن تحددها عند فتح الأمر
مثال
كود PHP:OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),3,SL,TP,"EA",MagicNumber,0,Red);
- 28-05-2012, 03:47 PM #9
شكرا جزيلا استاذ اسامة
جزاكم الله كل خير