النتائج 1 إلى 8 من 8
الموضوع: طلب كود بسيط
- 23-05-2012, 11:04 PM #1
طلب كود بسيط
ممكن كود للاوامر المعلقة كالتالى
نفرض وصعنا امرين معلقين buystop and sellstop
على بعد عدد من النقاط
الكود المطلوب هو ادا تفعل الامر اى من الامرين المعلقين و وصل الى الهدف يحذف الامر المعلق الاخر
شكرا
- 24-05-2012, 12:24 AM #2
هو الكود صعب الى هده الدرجة!!!!!!!!
- 24-05-2012, 12:39 AM #3
الطريقة الأول عمل دالة لمعرفة عدد الصفقات المفتوحه
ثم تضع شرط مثلاكود 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:if(orderscnt(OP_BUY)==0&&orderscnt(OP_BUYSTOP)==1)//Delete Order
وتضيف شرط آخركود PHP:bool LastOrderProfit(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(OrderClosePrice()==OrderTakeProfit())return(true);
else return(false);
}
}
return(true);
}
كود PHP:if(orderscnt(OP_BUY)==0&&orderscnt(OP_BUYSTOP)==1&&LastOrderProfit())//Delete Order
- 24-05-2012, 12:41 AM #4
رد:طلب كود بسيط
تفضل
ستاركود PHP:void deinit() {
Comment("");
}
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() && MagicNumber==OrderMagicNumber()&&OrderType()==type||type==-1){
cnt++;
}
}
}
return(cnt);
}
دالة الحذفكود PHP:if(orderscnt(OP_BUY)+orderscnt(OP_SELL)==0&&orderscnt(OP_BUYSTOP)+orderscnt(OP_SELLSTOP)<2)DeletePendingOrders();
كود PHP:void DeletePendingOrders(){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()>OP_SELL)
OrderDelete(OrderTicket());
}
}
- 24-05-2012, 12:43 AM #5
سوري مستر دولار ما انتبهت على ردك الا بعد الرد
- 24-05-2012, 12:47 AM #6
شكرا اخى على سرعة الرد
الكود الاول جربته من قبل لكنه لا يتوافق مع المطلوب لانه ممكن يكون اكثر من اورد مفتوح في الاتجاهين
الكود الثاني سيتم تجريبه
شكرا
- 24-05-2012, 01:03 AM #7
في هذه الحاله إجعل كل أمرين معلقين لهم مثلا كومنت متشابه ومختلف عن باقي الأوامر ثم قم بعمل داله للبحث عن الصفقات برقم الكومنت
وإذا كان هناك صفقة واحده فقط بنفس رقم الكومنت يتم حذفها لأن الصفقة الأخرى تفعلت
أو بدلا من تحديد الصفقات برقم التيكيت يمكنك عملها برقم الماجيك نمبركود PHP:for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
string comment=OrderComment();int ticket=OrderTicket();
}
bool ordernotclosed;
for(int j=0;j<OrdersTotal();j++){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderComment()==comment&&OrderTicket()!=ticket){
ordernotclosed=true;break;
}
}
if(!ordernotclose)OrderDelete(ticket);
}
- 24-05-2012, 01:19 AM #8
بارك الله فيك اخى
فكرة الكومونت اظن راح تفي بالغرض
شكرا جزيلا
المشكل ليس في الاوامر المعلقة بل في المجال الضيق للتحكم فيها
راح نجرب الكومنت مختلف او مجك لكل صفقةآخر تعديل بواسطة المبرمج ، 24-05-2012 الساعة 01:28 AM
الأكثر زيارة
رد مع اقتباس