//+------------------------------------------------------------------+ //| AllProfit.mq4 | //| Copyright 2019, AM2 | //| http://www.forexsystems.biz | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, AM2" #property link "http://www.forexsystems.biz" #property version "1.00" #property strict //--- Inputs extern double Lots = 0.1; // торговый объем ордера extern double Pro = 3; // язь в рублях extern int StopLoss = 5000; // лось extern int TakeProfit = 200; // язь extern int TrailingStop = 200; // трал extern int Slip = 30; // реквот extern int Magic = 123; // магик extern bool Buy = 1; // баи extern bool Sell = 1; // сэлы //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Comment(""); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void PutOrder(int type,double price) { int r=0; color clr=Green; if(type==1 || type==3 || type==5) { clr=Red; } if(type==0 || type==2 || type==4) { clr=Blue; } r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr); return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int CountTrades(int type=-1) { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TimeDay(OrderOpenTime())==Day()) { if(OrderType()== type || type==-1) count++; } } } return(count); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OldCountTrades(int type=-1) { int count=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TimeDay(OrderOpenTime())!=Day()) { if(OrderType()== type || type==-1) count++; } } } return(count); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseAll(int ot=-1) { bool cl; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TimeDay(OrderOpenTime())==Day()) { if(OrderType()==0 && (ot==0 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White); } if(OrderType()==1 && (ot==1 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White); } } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OldCloseAll(int ot=-1) { bool cl; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TimeDay(OrderOpenTime())!=Day()) { if(OrderType()==0 && (ot==0 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White); } if(OrderType()==1 && (ot==1 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White); } } } } } //+------------------------------------------------------------------+ //| Профит всех ордеров по типу ордера | //+------------------------------------------------------------------+ double AllProfit(int type=-1) { double pr=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TimeDay(OrderOpenTime())==Day()) { if(OrderType()==type || type==-1) { pr+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } return(pr); } //+------------------------------------------------------------------+ //| Профит всех ордеров по типу ордера | //+------------------------------------------------------------------+ double OldAllProfit(int type=-1) { double pr=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TimeDay(OrderOpenTime())!=Day()) { if(OrderType()==type || type==-1) { pr+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } return(pr); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { double op=iOpen(NULL,PERIOD_D1,0); // позы за день if(AllProfit(0)>Pro && Pro>0) { CloseAll(0); } if(AllProfit(1)>Pro && Pro>0) { CloseAll(1); } // старые позы if(OldAllProfit(0)>Pro && Pro>0) { OldCloseAll(0); } if(OldAllProfit(1)>Pro && Pro>0) { OldCloseAll(1); } if(CountTrades(0)<1 && Ask>op && Buy) { PutOrder(0,Ask); } if(CountTrades(1)<1 && Bid