//+------------------------------------------------------------------+
//| AccMag MultiStrength 25.mq4 |
//| Copyright 2024, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//==========================
bool ReverseMode=true;
bool CloseByAcc=false;
extern bool UseMagic=false;
extern bool Calculate=true;
int StopHour=100;
int StopMinute=100;
int ManStop =0;
int Total=2;
double FactorTarget=1;
double TargetProfit=3000/FactorTarget;
double TargetProfit2=TargetProfit*2;
double strength=1;
double TargetProfitL=-83*strength;
double TargetProfitP=83*strength;
bool StartAgain=true;
extern double OpenPrice=0.9;
extern bool UB=false;
extern double PB=320;
extern double DP=1000;
double dist=3;
double distB=3;
double reserve=990000;
extern int MagicX = 3000;
int MagicX1 = MagicX+1;
int MagicX2 = MagicX+2;
double lotX=0.1;
extern int Magic = 3700;
int MagicP4 = Magic+10;
int MagicP4b = Magic+11;
int MagicD4 = Magic+3;
int MagicD4b = Magic+4;
int MagicE4 = Magic+15;
int MagicH4 = Magic+6;
int MagicStop=1000000;
int MagicNeum=Magic+8;
int MagicRestart=1100000;
extern double Lot =0.01;
double lot =Lot;
extern double StopLoss=0;
extern double TakeProfit=0;
extern string ghanem ="CL";
extern string ghanemP4 ="C.4";
extern string ghanemP4b ="C.4b";
extern string ghanemB ="Bal";
extern string ghanemBb ="BalB";
extern string ghanemD4 ="D4";
extern string ghanemD4b ="D4b";
extern string ghanemE4 ="E.4";
extern string ghanemH4 ="H4";
extern string ghanemStart ="ghStart";
extern string ghanemX5a ="X5a";
extern string ghanemX5b ="X5b";
string ghanem4 ="A1b";
string ghanem5 ="A2b";
string ghanemNeum="xmzNeum";
string ghanemRestart="ghRestart";
//string ghanemFirst="WLSB,20000:21-3-25,17:22";
//string ghanemFirst="WLBLL,20000:31-3-25,11:41";
string ghanemFirst="WLMs,20000:3-4-25,01:00";
int MagicFirstB=20000;
string ghanemStopP="ghStopP";
string ghanemStopL="ghStopL";
string ghanemStop="ghStop";
string ghanemMid1 ="Mid1";
string ghanemMid2 ="Mid2";
string ghanemLevelA1 ="LevelA1";
string ghanemLevelA2 ="LevelA2";
string ghanemLevelB ="LevelB";
string ghanemLevelC ="LevelC";
string ghanemRisk2="ghRisk2";
string ghanemRisk3="ghRisk3";
string ghanemRisk4="ghRisk4";
double ticksize;
extern double t;
double Buys,Buyt,Sells,Sellt,AskP,BidP;
double Multi=2;
double LevelA=0.06;
double LevelB=0.08;
double LevelC=0.1;
bool ChangeLevel=false;
double LEVELB= LevelB*100;
int UnitFraction=8*LEVELB*LEVELB;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
double ticksize = MarketInfo (Symbol(),MODE_TICKSIZE);
if (ticksize == 0.00001 ||0.001)
t = ticksize*10;
else
t = ticksize;
Print("TargetProfitPXX()=",TargetProfitPXX(),"TargetProfitLXX()=",TargetProfitLXX(),"lastStopLot()=",lastStopLot(),"StrengthX()=",StrengthX(),MyOrderRestart(),MyLotD4b()-MyAcc(),"MyMony=",MyMony(), "lot=",MyLotD4b(),"Acc=",MyAcc(),"Also=",AccountBalance(),"+",AccountProfit(),"ORDERS=",MyOrderP4(),MyOrderP4b());
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//============
AskP=Ask+1000*t;
BidP=Bid-1000*t;
//==============
if (StopLoss == 0) Buys=0;
else Buys = AskP-(StopLoss*t);
if (TakeProfit == 0) Buyt=0;
else Buyt = AskP+(TakeProfit*t);
//============
if (StopLoss == 0) Sells=0;
else Sells =BidP+(StopLoss*t);
if (TakeProfit == 0) Sellt=0;
else Sellt = BidP-(TakeProfit*t);
//=======B4=B4b=======HighestBalance===(+1&+2)===C4,C4b=====
if(ReverseMode==false)
{
if(MyOrderStop()==0&&MyOrderRestart()==0&&OrdersTotal()>0&&((MyOrderB()==0&&MyOrderBb()==0)||(MyOrderB()==0&&MyOrderBb()>0&&AccountBalance()-MyLotBb()>=distB)))
OrderSend(Symbol(),OP_BUYSTOP,0.05,AskP,2,Buys,Buyt,ghanemB,AccountBalance(),0,Blue);
if(MyOrderBb()==0&&MyOrderB()>0&&AccountBalance()-MyLotB()>=distB&&MyOrderStop()==0&&MyOrderRestart()==0)
OrderSend(Symbol(),OP_BUYSTOP,0.05,AskP,2,Buys,Buyt,ghanemBb,AccountBalance(),0,Blue);
}
//=======B4=B4b=P4=====HighestBalance==ReverseMode=====
if(ReverseMode==true)
{
if(MyOrderStop()==0&&MyOrderRestart()==0&&OrdersTotal()>0&&((MyOrderB()==0&&MyOrderBb()==0)||(MyOrderB()==0&&MyOrderBb()>0&&MyLotBb()-AccountBalance()>=distB)))
OrderSend(Symbol(),OP_BUYSTOP,0.05,AskP,2,Buys,Buyt,ghanemB,AccountBalance(),0,Blue);
if(MyOrderBb()==0&&MyOrderB()>0&&MyLotB()-AccountBalance()>=distB&&MyOrderStop()==0&&MyOrderRestart()==0)
OrderSend(Symbol(),OP_BUYSTOP,0.05,AskP,2,Buys,Buyt,ghanemBb,AccountBalance(),0,Blue);
}
//========Delete==B4==or==B4b====================
if(MyOrderB()>0&&MyOrderBb()>0&&MyOrderB()>MyOrderBb()||(MyOrderBb()>0&&MyOrderStop()>0&&MyOrderRestart()==0))
OrderDelete(MyOrderBb());
if(MyOrderB()>0&&MyOrderBb()>0&&MyOrderB()<MyOrderBb()||(MyOrderB()>0&&MyOrderStop()>0&&MyOrderRestart()==0))
OrderDelete(MyOrderB());
//==========Modify==B4==B4b=========
if (MyOrderB()>0&&OrderSelect(MyOrderB(),SELECT_BY_TICKET,MODE_TRADES)==true)
if(OrderOpenPrice()-Ask<500*t)
OrderModify(OrderTicket(),AskP,Buys,Buyt,0,clrNONE);
//=====================
if (MyOrderBb()>0&&OrderSelect(MyOrderBb(),SELECT_BY_TICKET,MODE_TRADES)==true)
if(OrderOpenPrice()-Ask<500*t)
OrderModify(OrderTicket(),AskP,Buys,Buyt,0,clrNONE);
//======Restart=======
if((MyOrderRestart()==0&&MyOrderStop()>0&&OrdersTotal()==1&&ManStop==0)||(MyOrderRestart()==0&&OrdersTotal()==0&&ManStop==0))
OrderSend(Symbol(),OP_BUYSTOP,0.01,AskP,2,Buys,Buyt,ghanemRestart,MagicRestart,0,Blue);
//========Delete=Restart=============
if(MyOrderRestart()>0&&MyOrderStop()==0&&OrdersTotal()>=Total+1)
OrderDelete(MyOrderRestart());
//====Modify=Restart================
if (MyOrderRestart()>0&&OrderSelect(MyOrderRestart(),SELECT_BY_TICKET,MODE_TRADES)==true)
if(OrderOpenPrice()-Ask<500*t)
OrderModify(OrderTicket(),AskP,Buys,Buyt,0,clrNONE);
//======================
if(OrdersTotal()>0)
{
//=====Neum8=========
if(MyOrderNeum()==0&&MyOrderStop()==0&&MyOrderRestart()==0&&OrdersTotal()>0)
OrderSend(Symbol(),OP_BUYSTOP,MylotNeum(),AskP,2,Buys,Buyt,ghanemNeum,MagicNeum,0,Blue);
//========Delete===Neum====
if(MyOrderStop()>0&&MyOrderNeum()>0)
OrderDelete (MyOrderNeum());
//=======
if (MyOrderNeum()>0&&OrderSelect(MyOrderNeum(),SELECT_BY_TICKET,MODE_TRADES)==true)
if(OrderOpenPrice()-Ask<500*t)
OrderModify(OrderTicket(),AskP,Buys,Buyt,0,clrNONE);
//======First===balance=============
if(MyOrderFirst()==0&&MyOrderStop()==0&&MyOrderRestart()==0)
OrderSend(Symbol(),OP_SELLSTOP,lot,BidP,2,Sells,Sellt,ghanemFirst,MagicFirstB,0,Red);
//========Delete===First===balance====
if(MyOrderStop()>0&&MyOrderFirst()>0)
OrderDelete (MyOrderFirst());
if (MyOrderFirst()>0&&OrderSelect(MyOrderFirst(),SELECT_BY_TICKET,MODE_TRADES)==true)
if(Bid-OrderOpenPrice()<500*t)
OrderModify(OrderTicket(),BidP,Sells,Sellt,0,clrNONE);



ساحة النقاش