النتائج 1 إلى 3 من 3
- 29-12-2022, 01:08 PM #1
الى الاخوه الكرام المبرمجين هل من مساعده للاضافه على الاكسبرت وشكرا.
السلام عليكم ورحمة الله وبركاتهwazdaman.mq4wazdaman.mq4
الرجاء من الاخوه المبرمجين اطلب اضافة بسيطه على هذا الاكسبرت.
اريد اضافة ايقاف الاكسبرت على موعد الاخبار.
وايضا اضافة التاريخ للعمل والوقوف في وقت محدد على الاكسبرت.
واضافة قيمة الربح والخساره بالدولار.
واكون شاكرا لكم جهودكم
اخوكم محمد الدابوقي
- 08-01-2023, 04:35 PM #2
السلام علظ®كم ورحمه الله
حرظ® هدا الاظ®عدىل وارحو اں ظ®كوں موع،ظ¯
سحل محظ®وى هدا الكود على ملع، حدىد و اعطىه اسم ظ®ظ®ظ®هى ظ®ى .mq4
مع ع،ائظ¯ ظ®حظ®اظ®ى
كود PHP://+------------------------------------------------------------------+
//| wazdaman.mq4 |
//| Copyright 2022, Girgis Abdelmalak |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, Girgis Abdelmalak"
#property link "[email protected]"
#property version "1.00"
#property strict
input string info1="وقت عمل الاكسبيرت";
input bool EnableTimeFilter=false;
input string Start_Hour="00:00";
input string End_Hour="23:00";
input string info2=" قيمة الربح";
extern int win_USD=0;
input string info5="قيمة الخسارة بالنسبة المئوية";
extern int Loss_Percnt=10;
input string info6=" قيمة الربح بالنسبة المؤية";
extern int win_Percnt=4;
enum order
{
BUY,
SELL
};
input string info3 = "Order Info";
input order orderType = BUY;
input double lot = 0.01;
input string info4 = "lot multiplier value";
input double multiplier = 0.01;
double pt;
int P;
int MagicNumber = 7003;
double mLot;
int OnInit()
{
if(Digits==4 || Digits<=2) pt=Point;
if(Digits==5 || Digits==3) pt=Point*10;
if(Digits==5 || Digits==3)P=10;
else P=1;
return(INIT_SUCCEEDED);
}
bool TimeFilter(string StartH,string EndH) {
datetime Start=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+StartH);
datetime End=StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)+" "+EndH);
if(!(Time[0]>=Start && Time[0]<=End))
{
return(false);
}
return(true);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int ticket = 0;
static datetime time0;
bool isNewBar = time0 != Time[0];
time0 = Time[0];
if(EnableTimeFilter&&TimeFilter(Start_Hour,End_Hour)==false)return;
if(win_USD>0&&AccountProfit()>=win_USD)CloseDeleteAll();
if(win_Percnt>0&&AccountProfit()>=win_Percnt*mLot*100){CloseDeleteAll() ;}
if(Loss_Percnt>0&&AccountProfit()<=-(Loss_Percnt*mLot*100)){CloseDeleteAll() ;}
if(isNewBar)
{
mLot = LastCurrentOrderInfo("Lots");
if(mLot == -1)
mLot = LastClosedOrderInfo("Lots");
if(mLot == -1)
mLot = lot;
else{mLot = mLot + multiplier;}
if(orderType == BUY)
{
ticket=OrderSend(Symbol(),OP_BUY,mLot,NormalizeDouble(Ask,Digits),3*P,0,0,"",MagicNumber,0,Blue);
if(ticket<0)Print("Open Buy Error: ", GetLastError());
}
else
{
ticket=OrderSend(Symbol(),OP_SELL,mLot,NormalizeDouble(Bid,Digits),3*P,0,0,"",MagicNumber,0,Red);
if(ticket<0)Print("Open Buy Error: ", GetLastError());
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double LastClosedOrderInfo(string info,int type=-1)
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type || type==-1))
{
if(info=="Type")return(OrderType());
else if(info=="Lots")return(OrderLots());
else if(info=="Price")return(OrderOpenPrice());
else if(info=="TP")return(OrderTakeProfit());
else if(info=="SL")return(OrderStopLoss());
else if(info=="Profit")return(OrderProfit());
else if(info=="Time")return(OrderCloseTime());
else if(info=="Comment")return(StringToDouble(OrderComment()));
}
}
return(-1);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double LastCurrentOrderInfo(string info,int type=-1)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && (OrderType()==type || type==-1))
{
if(info=="Type")return(OrderType());
else if(info=="Lots")return(OrderLots());
else if(info=="Price")return(OrderOpenPrice());
else if(info=="TP")return(OrderTakeProfit());
else if(info=="SL")return(OrderStopLoss());
else if(info=="Profit")return(OrderProfit());
else if(info=="Time")return(OrderOpenTime());
else if(info=="Comment")return(StringToDouble(OrderComment()));
}
}
return(0);
}
bool CloseDeleteAll()
{
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()){
switch(OrderType())
{
case OP_BUY :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0,Violet))
return(false);
}break;
case OP_SELL :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,Violet))
return(false);
}break;
}
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);
}
- 12-01-2023, 02:03 PM #3
شكر خاص جدا
آخر تعديل بواسطة dabouqi ، 12-01-2023 الساعة 02:08 PM