طلب مساعدة فى تعديل إكسبيرت
السلام عليكم ورحمه الله وبركاته
لدى إكسبيرت وضع الأوامر المعلقه فى وقت معين , عند تفعيله يضع أمرين sale stop وbuy stop على بعد عدد نقاط يتم تحديده من سعر السوق والمشكله هى إنى عايزو يضع الأوامر فى الوقت المحدد ومش عايزو يعمل اى حاجه تانيه خالص لأنه بيستمر فى وضع الاوامر وكمان بيفتح صفقات لوحده لما سعر السوق يصادف أسعار الأوامر المعلقه السابقه
وكل اللى أنا طالبه إنه يكون كل وظيفته إنه يضع الأمرين فى الدقيقه المحددة وبعد كده يقفل نفسه كأنه مش موجود .
الإسكريبت :
كود:
//+------------------------------------------------------------------+
//| 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,Name,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);
}
لو حد يقدر يضيف أوامر hide TP /ST يبقى خدمنى خدمه كبيرة أوى.
شكرا مقدما للجميع.
رد: طلب مساعدة فى تعديل إكسبيرت
هذا الإكسبرت حسب ما يبدو للمهندس الفاضل وجدي الأفضل أن تطلب التعديل منه مباشرة ولن يتأخر بإذن الله
رد: طلب مساعدة فى تعديل إكسبيرت
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
هذا الإكسبرت حسب ما يبدو للمهندس الفاضل وجدي الأفضل أن تطلب التعديل منه مباشرة ولن يتأخر بإذن الله
مش عارف أوصل للأستاذ وجدى إزاى يا أخى.
شكرا على ردك.