نتابع
الآن وفي دالة
[PHP]
int start()
[/PHP]
نضع هذا الكود الخاص بتعريف المتغيرات الخاصة بنقاط الشراء والبيع والهدف والوقف
وأوامر الشراء والبيع المعلقة
[PHP]
if (Hour()==hour && Minute()>=minute)
{
string Name="m-e-c_biz_Pending_Orders_EA_V1";
Comment(Name);
double b= iClose(Symbol(),PERIOD_M15,1)+Pips*Point;
double s= iClose(Symbol(),PERIOD_M15,1)-Pips*Point;
if (StopLoss>0)
{
double bsl=b-StopLoss*Point;
double ssl=s+StopLoss*Point;
}
else
{
bsl=0;
ssl=0;
}
if (TakeProfit>0)
{
double bt=b+TakeProfit*Point;
double st=s-TakeProfit*Point;
}
else
{
bt=0;
st=0;
}
if (MyBuyPendingOrdersTotal(MagicNumber)==0) OrderSend(Symbol(),OP_BUYSTOP,Lots,b,3,bsl,bt,Name ,MagicNumber,0,Green);
if (MySellPendingOrdersTotal(MagicNumber)==0) OrderSend(Symbol(),OP_SELLSTOP,Lots,s,3,ssl,st,Nam e,MagicNumber,0,Red);
}
[/PHP]
وآخر كود سنضيفه هو
الكود الخاص بحذف الامر المعلق المعاكس عند تفعيل احد العقود
[PHP]
if (MyBuyRealOrdersTotal(MagicNumber)>0) DeleteSellPendingOrders(MagicNumber);
if (MySellRealOrdersTotal(MagicNumber)>0) DeleteBuyPendingOrders(MagicNumber);
[/PHP]
الاكسبيرت الآن جاهز
الكود النهائي
[PHP]
//+------------------------------------------------------------------+
//| m-e-c_biz_Pending_Orders_EA_V1.mq4 |
//| Copyright © 2010 m-e-c.biz |
//| http://m-e-c.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010 m-e-c.biz"
#property link "http://m-e-c.biz"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
//خصائص الاكسبيرت
extern int Pips=50;// الفرق بالنقاط بين سعر الاغلاق وسعر وضع الاوامر المعلقة
extern int hour = 0;// ساعة وضع الاوامر
extern int minute = 15;// دقيقة وضع الاوامر
extern int TakeProfit=20;// الهدف
extern int StopLoss=20;// الوقف
extern double Lots=0.1;// اللوت
extern int MagicNumber = 123456;// الماجيك نمبر
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if (Hour()==hour && Minute()>=minute)
{
string Name="m-e-c_biz_Pending_Orders_EA_V1";
Comment(Name);
double b= iClose(Symbol(),PERIOD_M15,1)+Pips*Point;
double s= iClose(Symbol(),PERIOD_M15,1)-Pips*Point;
if (StopLoss>0)
{
double bsl=b-StopLoss*Point;
double ssl=s+StopLoss*Point;
}
else
{
bsl=0;
ssl=0;
}
if (TakeProfit>0)
{
double bt=b+TakeProfit*Point;
double st=s-TakeProfit*Point;
}
else
{
bt=0;
st=0;
}
if (MyBuyPendingOrdersTotal(MagicNumber)==0) OrderSend(Symbol(),OP_BUYSTOP,Lots,b,3,bsl,bt,Name ,MagicNumber,0,Green);
if (MySellPendingOrdersTotal(MagicNumber)==0) OrderSend(Symbol(),OP_SELLSTOP,Lots,s,3,ssl,st,Nam e,MagicNumber,0,Red);
}
if (MyBuyRealOrdersTotal(MagicNumber)>0) DeleteSellPendingOrders(MagicNumber);
if (MySellRealOrdersTotal(MagicNumber)>0) DeleteBuyPendingOrders(MagicNumber);
//----
return(0);
}
//+------------------------------------------------------------------+
// وظيفة لحساب عدد الصفقات الحالية الشراء
int MyBuyRealOrdersTotal(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() && (OrderType()==OP_BUY))
{
c++;
}
}
return(c);
}
// وظيفة لحساب عدد الصفقات الحالية للبيع
int MySellRealOrdersTotal(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() && (OrderType()==OP_SELL))
{
c++;
}
}
return(c);
}
// وظيفة لحساب عدد صفقات الشراء المعلقة فقط
int MyBuyPendingOrdersTotal(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() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT ))
{
c++;
}
}
return(c);
}
// وظيفة لحساب عدد صفقات البيع المعلقة فقط
int MySellPendingOrdersTotal(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() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT))
{
c++;
}
}
return(c);
}
// وظيفة لحذف صفقات الشراء المعلقة
void DeleteBuyPendingOrders(int Magic)
{
int total = OrdersTotal();
for (int cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
// وظيفة لحذف صفقات البيع المعلقة
void DeleteSellPendingOrders(int Magic)
{
int total = OrdersTotal();
for (int cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
[/PHP]
الاكسبيرت في المرفقات
بالتوفيق ان شاء الله
مواقع النشر (المفضلة)