أحتاج مساعدة بليز في فهم هذا الكود
كود:
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
السلام عليكم يا اخوان
في كود حساب عدد الصفقات سواء كانت منفذة أو معلقة اش وظيفة المتغيرmagic
ونحن في بداية الكود عرفنا متغير magicnumber لكي يميز صفقات هذا الاكسبرت
كود:
extern int MagicNumber = 123456;// الماجيك نمبر
سؤال أيضا المتغير cnt يمثل عداد للوب أم يمثل index رقم الصفقة
الآن المتغير c يمثل الصفقات المختارة ( هل المقصود هنا الصفقات المنفذة )
المتغير total يمثل مجموع جميع الصفقات سواء كانت منفذة أو معلقة
أتمنى الحصول على إجابة وافية لكي تتضح لي ملابسات الكود
شكر كبير لجهودكم جميعا
في حفظ الرحمن / هاشمية
رد: أحتاج مساعدة بليز في فهم هذا الكود
اقتباس:
المشاركة الأصلية كتبت بواسطة هاشمية
كود:
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
السلام عليكم يا اخوان
في كود حساب عدد الصفقات سواء كانت منفذة أو معلقة اش وظيفة المتغيرmagic
ونحن في بداية الكود عرفنا متغير magicnumber لكي يميز صفقات هذا الاكسبرت
كود:
extern int MagicNumber = 123456;// الماجيك نمبر
سؤال أيضا المتغير cnt يمثل عداد للوب أم يمثل index رقم الصفقة
الآن المتغير c يمثل الصفقات المختارة ( هل المقصود هنا الصفقات المنفذة )
المتغير total يمثل مجموع جميع الصفقات سواء كانت منفذة أو معلقة
أتمنى الحصول على إجابة وافية لكي تتضح لي ملابسات الكود
شكر كبير لجهودكم جميعا
في حفظ الرحمن / هاشمية
بالنسبة للسؤال الأول يمكنك الإستغناء عن المتغير Magic وإزالته وستعطي نفس النتيجة
وسيكون الكود كالآتي
كود PHP:
int MyOrdersTotal()
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
المتغير cnt ويمثل رقم الصفقه وبداية الحلقه
المتغير c يمثل عدد الصفقات المختارة والتي تنطبق عليها الشروط التي قمت بتحديدها
المتغير total هو عدد جميع الصفقات المفتوحه سواء كانت ماركت أو أوامر معلقه وهو أيضا عدد الحلقات التي سيتم تنفيذها
رد: أحتاج مساعدة بليز في فهم هذا الكود
كود:
//+------------------------------------------------------------------+
//| Byu_Sell_Day.mq4 |
//| Copyright © 2007, www.****forex.net |
//| http://www.****forex.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, www.****forex.net"
#property link "http://www.****forex.net"
extern int Step=20;
extern int Takeprofit=50;
extern int Stoploss=50;
extern double Lots=1;
int Magicnumber=234561;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(Hour()==0 && Minute()<5 && MyOrdersTotal(Magicnumber)>0)
{
DeletePendingOrders(Magicnumber);
CloseOrders(Magicnumber);
}
if(Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
{
double DayClose=iClose(Symbol(),PERIOD_D1,1);
double BuyPrice=DayClose+Step*Point;
double BuyTP=BuyPrice+Takeprofit*Point;
double BuySL=BuyPrice-Stoploss*Point;
double SellPrice=DayClose-Step*Point;
double SellTP=SellPrice-Takeprofit*Point;
double SellSL=SellPrice+Stoploss*Point;
OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,3,SellSL,SellTP,"",Magicnumber,0,Green);
}
return(0);
}
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
int DeletePendingOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt > 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
int CloseOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt > 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
جزاك الله ألف خير يا اخي الكريم
من خلال هذا الكود الذي يسير ضمن الاستيراتجية التالية
اقتباس:
1) الساعة 12:15 بتوقيت جرينتش نأخذ سعر اغلاق اخر شمعة (15 دقيقة) للكيبل وهو GBPUSD ولنفرض ان سعر الاغلاق هو 1.5260
2 ، 3) يتم وضع امر معلق BUYSTOP فوق سعر الاغلاق السابق بـ 50 نقطة
يعني عند السعر 1.5310 والهدف 20 نقطة يعني عند 1.5330 والوقف 20 نقطة يعني عند 1.5290
و يتم وضع امر معلق آخر SELLSTOP تحت سعر الاغلاق السابق بـ 50 نقطة
يعني عند السعر 1.5210 والهدف 20 نقطة يعني عند 1.5190 والوقف 20 نقطة يعني عند 1.5230
4) عند تفعل أي أمر يُلغى الآخر
يعني يجب وضع أمرين ولكن يتم تنفيذ أمر واحد فقط
متى يتم تنفيذ الأمر : حينما يصل السعر فوق أو تحت السعر ب 50 نقطة تبعا للسوق فيتحول من كونه معلق إلى منفذ
وإذا كان هذا الكلام صحيح هنا إذا يبدأ عمل المتغير c
سؤال آخر يعطيك العافية :
بالنسبة لسير الكود بعد الدالة mytotalsorder التي قمنا نحن بصنعها
ما هي الدالة التي ستعمل هل هي ordersend وإن كانت كذلك لماذا ؟
أثابك ربي ورزقك من أسوع أبوابه أينما كنت
رد: أحتاج مساعدة بليز في فهم هذا الكود
اقتباس:
المشاركة الأصلية كتبت بواسطة هاشمية
كود:
//+------------------------------------------------------------------+
//| Byu_Sell_Day.mq4 |
//| Copyright © 2007, www.****forex.net |
//| http://www.****forex.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, www.****forex.net"
#property link "http://www.****forex.net"
extern int Step=20;
extern int Takeprofit=50;
extern int Stoploss=50;
extern double Lots=1;
int Magicnumber=234561;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(Hour()==0 && Minute()<5 && MyOrdersTotal(Magicnumber)>0)
{
DeletePendingOrders(Magicnumber);
CloseOrders(Magicnumber);
}
if(Hour()==0 && Minute()>5 && MyOrdersTotal(Magicnumber)==0)
{
double DayClose=iClose(Symbol(),PERIOD_D1,1);
double BuyPrice=DayClose+Step*Point;
double BuyTP=BuyPrice+Takeprofit*Point;
double BuySL=BuyPrice-Stoploss*Point;
double SellPrice=DayClose-Step*Point;
double SellTP=SellPrice-Takeprofit*Point;
double SellSL=SellPrice+Stoploss*Point;
OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,3,SellSL,SellTP,"",Magicnumber,0,Green);
}
return(0);
}
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
int DeletePendingOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt > 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
int CloseOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt > 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
return(0);
}
جزاك الله ألف خير يا اخي الكريم
من خلال هذا الكود الذي يسير ضمن الاستيراتجية التالية
متى يتم تنفيذ الأمر : حينما يصل السعر فوق أو تحت السعر ب 50 نقطة تبعا للسوق فيتحول من كونه معلق إلى منفذ
وإذا كان هذا الكلام صحيح هنا إذا يبدأ عمل المتغير c
سؤال آخر يعطيك العافية :
بالنسبة لسير الكود بعد الدالة mytotalsorder التي قمنا نحن بصنعها
ما هي الدالة التي ستعمل هل هي ordersend وإن كانت كذلك لماذا ؟
أثابك ربي ورزقك من أسوع أبوابه أينما كنت
سيبدأ عمل المتغير c ويأخذ قيمة عدد الصفقات بمجرد وضع الأوامر المعلقة لأني كما أخبرت في المشاركة السابقه أن OrdersTotal تعود بجميع الصفقات المفعله وكذلك الصفقات المعلقه
لكن إذا أردت حساب فقط الصفقات المفعله ماركت وليست الصفقات المعلقه ضعي شرط آخر هو
أو هكذا
كود PHP:
OrderType()==OP_SELL||OrderType()==OP_BUY
نفس المعنى
بالنسبة للداله
فهي تحتفظ بقيمه معينه ثم بعد ذلك يتم استدعائها بداخل الدالة start
ثم تأتي الدالة التي تليها في الكود سواء كانت OrderSend أو غيرها وهكذا تأتي الأوامر تباعا
رد: أحتاج مساعدة بليز في فهم هذا الكود
السلام عليكم
شكرا كثيرا اخي الكريم
أثابك الله وجعل ما قدمته في ميزان حسناتك
وضعت الاكسبرت على الشارت وعند الساعة 12
لم يحدث شي لم يفتح اي صفقة
ظل ساكنا ما المشكلة برأيك
رد: أحتاج مساعدة بليز في فهم هذا الكود
رد: أحتاج مساعدة بليز في فهم هذا الكود
اقتباس:
المشاركة الأصلية كتبت بواسطة هاشمية
UP
الإكسبرت يفتح صفقات بدون مشاكل يمكنك التأكد من ذلك عن طريق عمل باك تست له