النتائج 1 إلى 8 من 8
- 03-03-2021, 05:12 PM #1
مطلوب داله اغلاق صفقات معلقه بعد وقت محدد
سلام عليكم ورحمه الله وبركاته
احتاج الي معرفه داله اغلاق الاوامر المعلقه بعد مرور وقت يتم تحديده ومتغير
مثلا
تم وضع 10اوامر معلقه بيع
لكن تم تنفيذ منها2 وبعد كذا السعر عكس وابتعد عن الاوامر المعلقه
هنا يتم اقفال الاوامر المعلقه ويعيدها الي قرب السعر الحالي وهكذا كلما ابتعد السعر عن الامر المعلق يتم حذف الامر واعاده مره اخري لقرب السعر
- 03-03-2021, 09:23 PM #2كود PHP:
void ordertime(){
int OrderTime;
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
OrderTime=(TimeCurrent()-OrderOpenTime())*3;
if(OrderTime>TimeMinute){
if(OrderType()==OP_BUYSTOP){
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if(OrderType()==OP_SELLSTOP){
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
}
}
- 03-03-2021, 09:23 PM #3
اضفت الكود الي اعلاه لكن لا يقفل الاوامر المعلقه
ماهو الحل
- 04-03-2021, 11:17 PM #4
- 05-03-2021, 02:43 PM #5
- 05-03-2021, 03:52 PM #6
لم افهم ما تقصده في المشاركة الاولى بقولك = بعد مرور وقت يتم تحديده = ...هل معنى هذا مرور مدة زمنية بالدقائق مثلا بعد 180 دقيقة او بعد 11:30 مثلا
فإذا كان المقصود هو 180 فمعنى هذا ان الاكسبرت يقوم بحذف الاوامر المعلقة كلما مر عليها المدة المحددة
والشيء الثاني الذي لم افهمه ان الدالة المذكورة مبتورة يعني فيها نوع واحد من الاوامر المعلقة من نوع Sell stop و Buy stop يعني لو كانت لديك اوامر معلقة من نوع limit فلن تقوم بحذفها
- 05-03-2021, 04:27 PM #7
هذه دالة تقارن التوقيت الحالي بتوقيت فتح الصفقه وإذا مره عدد دقائق محدده يتم حذف الصفقات المعلقة
حيث MinutesToClose هو متغير خارجي يحدد عدد الدقائق
كود PHP:bool DeleteAllLimitOrders()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >=0 ; cnt--)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()){
if(TimeCurrent()-OrderOpenTime()>=MinutesToClose*60){
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
if(!OrderDelete(OrderTicket()))
{
Print("Error deleting " + (string)OrderType() + " order : ",GetLastError());
return (false);
}
}
}
}
}
return (true);
}
آخر تعديل بواسطة salamandal ، 05-03-2021 الساعة 04:30 PM
- 05-03-2021, 06:54 PM #8
انا اضع الاغلاق عن30دقيقه
والدقيقه تتكون من60ثانيه في الاكسبرت يغلق الاوامر المعلقه
ويرجع يضع اوامر جديده معلقه ثم يغلق مره اخري الاوامر المعلقه الي ان تتغير الدقيقه الي31 هنا يتوقف
والي اريده ان يغلق الامر مره وحده فقط وبعدها يبداء فتح الاوامر المعلق