//+------------------------------------------------------------------+ //| DarkPoint EA.mq4 | //| Sysmonster | //| https://www.sysmonster.com | //+------------------------------------------------------------------+ #property copyright "Sysmonster" #property link "https://www.sysmonster.com" #property version "1.00" #property strict enum sls{ stoploss1=1, stoploss2=2 }; input double lots=0.01; input bool enable_tade1=true; input bool enable_tade2=true; input bool enable_tade3=true; input sls trade1sl=stoploss2; input sls trade2sl=stoploss2; input sls trade3sl=stoploss2; input int MagicNumber=786; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ double sl1; double sl2; double tp1; double tp2; double tp3; int timeprev=0; int start() { //--- /*#define COMPILATION_DATE __DATE__ #define EXPIRATION_DAYS 8 static datetime expiration = COMPILATION_DATE + EXPIRATION_DAYS * PERIOD_D1 * 60; Comment("The EA will expire in 8 Days"); // if( TimeCurrent() > expiration){ Alert("expired on "+expiration); ExpertRemove(); return 0;} */ breakeven(); if(timeprev == Time[0]) return 0; timeprev = Time[0]; if(totalOpen()==0) { trade(); } return 0; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void breakeven() { for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if(OrderType()==OP_BUY) { if(Bid>=tp1 && OrderStopLoss()=tp2 && OrderStopLoss()OrderOpenPrice()){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-(10*Point),OrderTakeProfit(),OrderExpiration()); } if(Ask<=tp2 && OrderStopLoss()>tp1){ OrderModify(OrderTicket(),OrderOpenPrice(),tp1,OrderTakeProfit(),OrderExpiration()); } } } } } //+------------------------------------------------------------------+ void trade() { double signal=iCustom(Symbol(),0,"Dark Point.ex4",0,1); if(buySignal()) { if(enable_tade1)OrderSend(Symbol(),OP_BUY,lots,Ask,10,(trade1sl==1?sl1:sl2),tp1,tp1,MagicNumber); if(enable_tade2)OrderSend(Symbol(),OP_BUY,lots,Ask,10,(trade2sl==1?sl1:sl2),tp2,tp1,MagicNumber); if(enable_tade3)OrderSend(Symbol(),OP_BUY,lots,Ask,10,(trade3sl==1?sl1:sl2),tp3,tp1,MagicNumber); } if(sellSignal()) { if(enable_tade1)OrderSend(Symbol(),OP_SELL,lots,Bid,10,(trade1sl==1?sl1:sl2),tp1,tp1,MagicNumber); if(enable_tade2)OrderSend(Symbol(),OP_SELL,lots,Bid,10,(trade2sl==1?sl1:sl2),tp2,tp1,MagicNumber); if(enable_tade3)OrderSend(Symbol(),OP_SELL,lots,Bid,10,(trade3sl==1?sl1:sl2),tp3,tp1,MagicNumber); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool buySignal() { bool flage=false; string objname="DP_TP_Line_1"+((long)iTime(Symbol(),0,1)); for(int i=0; iClose[1]) { getPrices(); flage=true; } } } return flage; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool sellSignal() { bool flage=false; string objname="DP_TP_Line_1"+((long)iTime(Symbol(),0,1)); for(int i=0; i= 0; cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType()==OP_BUY) { totaltrades+=1; } } return totaltrades; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int totalSellOpenTrades() { int totaltrades=0; for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType()==OP_SELL) { totaltrades+=1; } } return totaltrades; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int totalOpen() { return totalBuyOpenTrades()+totalSellOpenTrades(); } //+------------------------------------------------------------------+