طلب مساعده من اخواننا المبرجين
السلام عليكم اخوانى
كود الدالة الأتى لمعرفة اخر سعر لعملية البيع او لعملية الشراء حسب ما هو محدد
كود:
double last_price(int op)
{
double c;
for (int cnt=0; cnt<OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
c=OrderOpenPrice();
}
return(c);
}
قمت بالتعديل علية لمعرفة اول سعر لول صفقة تم فتحها وأصبح كالتالى
كود:
double price1(int op)
{
double c;
OrderSelect(0,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
c=OrderOpenPrice();
return(c);
}
وأيضا قمت بالتعديل هكذا للحصول على سعر ثانى صفقة
كود:
double price2(int op)
{
double c;
OrderSelect(1,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
c=OrderOpenPrice();
return(c);
}
ونفس الحال للحصول على سعر ثالث ورابع صفقة
المشكلة الأن هى ان الكود بيشتغل تمام فى حالة وجود صفقات بيع فقط او شراء فقط اما فى وجود الصفقتين بيع وشراء لا يعطينى النتيجة مظبوطة مع انى محددله price1(op_sell)or price1(op_buy)1 ومع ذالك الخانة اللتى بها الأرقام 0 , 1 , 2 فى الكود المرفق بتحسب اخر صفقة تم فتحها وتعد الصفقات بيع وشراء مجتمعين
حاولت افصل بينهم ولكن دون جدوى
من يعرف لنا مخرج لهذه المشكلة فليطرحها
وجزاكم الله خيرا
رد:طلب مساعده من اخواننا المبرجين
انا لم اطلع على المطلوب من معرفة اخر سعر لعمية البيع او الشراء
لكن انت تستعمل نفس المتغير للبيع و الشراء
اظن لازم تعمل الدوال بالشكل التالى
كود PHP:
double price1buy(int op)
{
double cb;
OrderSelect(0,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
cb=OrderOpenPrice();
return(cb);
}
double price2buy(int op)
{
double cb;
OrderSelect(1,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
cb=OrderOpenPrice();
return(cb);
}
double price1sell(int op)
{
double cs;
OrderSelect(0,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
cs=OrderOpenPrice();
return(cs);
}
double price2sell(int op)
{
double cs;
OrderSelect(1,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
cs=OrderOpenPrice();
حيث اننا نستعمل متغير double cs للبيع
و double cb للشراء
رد:طلب مساعده من اخواننا المبرجين
اقتباس:
المشاركة الأصلية كتبت بواسطة بهجت الريس
السلام عليكم اخوانى
كود الدالة الأتى لمعرفة اخر سعر لعملية البيع او لعملية الشراء حسب ما هو محدد
كود:
double last_price(int op)
{
double c;
for (int cnt=0; cnt<OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
c=OrderOpenPrice();
}
return(c);
}
قمت بالتعديل علية لمعرفة اول سعر لول صفقة تم فتحها وأصبح كالتالى
كود:
double price1(int op)
{
double c;
OrderSelect(0,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
c=OrderOpenPrice();
return(c);
}
وأيضا قمت بالتعديل هكذا للحصول على سعر ثانى صفقة
كود:
double price2(int op)
{
double c;
OrderSelect(1,SELECT_BY_POS,MODE_TRADES) ;
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==op)
c=OrderOpenPrice();
return(c);
}
ونفس الحال للحصول على سعر ثالث ورابع صفقة
المشكلة الأن هى ان الكود بيشتغل تمام فى حالة وجود صفقات بيع فقط او شراء فقط اما فى وجود الصفقتين بيع وشراء لا يعطينى النتيجة مظبوطة مع انى محددله price1(op_sell)or price1(op_buy)1 ومع ذالك الخانة اللتى بها الأرقام 0 , 1 , 2 فى الكود المرفق بتحسب اخر صفقة تم فتحها وتعد الصفقات بيع وشراء مجتمعين
حاولت افصل بينهم ولكن دون جدوى
من يعرف لنا مخرج لهذه المشكلة فليطرحها
وجزاكم الله خيرا
إنت بتستخدم OrdersTotal () ودي بتعود بقيمة كل العقود المفتوحة سواء بيع أو شراء
-------------
المفروض إنك هتعمل دالة تعود بعدد عقود الشراء
كود PHP:
int Buyorderstotal(){
int cnt=0;
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==OP_BUY){
cnt++;
}
}
return(cnt);
}
وتقوم بعمل دالة أخرى تعود بعدد عقود البيع
كود PHP:
int Sellorderstotal(){
int cnt=0;
for(int i =0;i<=OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()== magic1 && OrderType()==OP_SELL){
cnt++;
}
}
return(cnt);
}
ثم تقوم بعمل دالة تعود بقيمة إفتتاح العقد المطلوب ( بدل ما تعمل دالة لكل عقد ) هتعمل دالة واحدة بالشكل ده
كود PHP:
double PriceOf(int op , int OrderNumber){
double c;
if(op=OP_SELL){
for (int s=0; s<Sellorderstotal()(); s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(s==OrderNumber && OrderSymbol()==Symbol() && OrderMagicNumber()== magic1)
c=OrderOpenPrice();
}
}
if(op=OP_BUY){
for (int b=0; b<Buyorderstotal()(); b++){
OrderSelect(b,SELECT_BY_POS,MODE_TRADES);
if(b==OrderNumber && OrderSymbol()==Symbol() && OrderMagicNumber()== magic1)
c=OrderOpenPrice();
}
}
return(c);
ولما تحتاج تستدعي أي إفتتاح لعقد تستخدمها بالشكل ده في إستارت مثلا
لو عايز قيمة العقد الأول للشراء
(PriceOf(OP_BUY , 1
لو عايز قيمة العقد الثاني بيع
(PriceOf(OP_SELL, 2
-----------------------------------------