extern string S1="---------------- ASCTrend Settings"; extern bool Email = true; extern int SL_add_pip = 11; extern int changeLiner = 1; extern int Gup = 1; extern string S2="---------------- Money Management"; extern double Lots=0.1; //lots extern bool RiskManagement=false; //money management extern double RiskPercent=10; //risk in percentage //extern bool Martingale=false; //martingale //extern double Multiplier=1.5; //multiplier //extern double MinProfit=0; //minimum profit to apply the martingale //extern bool UseBasketOptions=false; //use basket loss/profit //extern int BasketProfit=1000; // if equity reaches this level, close trades //extern int BasketLoss=9999; // if equity reaches this negative level, close trades extern string S3="---------------- Order Management"; extern int StopLoss=25; //stop loss extern int TakeProfit=15; //take profit extern int TrailingStop=0; //trailing stop int TrailingStep=1; //margin allowe to the price before to enable the ts extern int BreakEven=0; //breakeven extern bool AddPositions=false; //positions cumulated extern int MaxOrders=100; //maximum number of orders //extern bool UseHiddenSL=false; //use hidden sl //extern int HiddenSL=5; //stop loss under 15 pīps //extern bool UseHiddenTP=false; //use hidden tp //extern int HiddenTP=10; //take profit under 10 pīps extern int Slippage=3; extern int Magic=0; // magic number //extern string S4="---------------- Filters"; //extern bool MAFilter=false; //moving average filter //extern int MAPeriod=20; //ma filter period //extern int MAMethod=0; //ma filter method //extern int MAPrice=0; //ma filter price //extern bool TradeOnSunday=true; //time filter on sunday //extern bool MondayToThursdayTimeFilter=false; //time filter the week //extern int MondayToThursdayStartHour=8; //start hour time filter the week //extern int MondayToThursdayEndHour=17; //end hour time filter the week //extern bool FridayTimeFilter=false; //time filter on friday //extern int FridayStartHour=8; //start hour time filter on friday //extern int FridayEndHour=14; //end hour time filter on friday extern string S5="---------------- Extras"; extern bool EmailAlert=false; extern bool ReverseTheSystem=false; //sell/buy instead of buy/sell extern int MaxTradePerBar=1; datetime Time0;int TradePerBar=0;int BarCount=-1; int err=0;int TK;double Balance=0.0;double maxEquity;double minEquity; int init(){Time0=Time[0];return(0);} int deinit(){return(0);} //start function int start(){int SL=StopLoss;int TP=TakeProfit;int TK=0;int j=0,limit=1;double SLI=0,TPI=0;double BV=0,SV=0; for(int i=1;i<=limit;i++){ //time filter //if((TradeOnSunday==false&&DayOfWeek()==0)||(MondayToThursdayTimeFilter&&DayOfWeek()>=1&&DayOfWeek()<=4&&!(Hour()>=MondayToThursdayStartHour&&Hour()<=MondayToThursdayEndHour))|| //(FridayTimeFilter&&DayOfWeek()==5&&!(Hour()>=FridayStartHour&&Hour()<=FridayEndHour))){for(i=OrdersTotal();i>=0;i--){OrderSelect(i,SELECT_BY_POS); //if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);return(0);} //if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);return(0);} //switch(OrderType()){case OP_BUYLIMIT:case OP_BUYSTOP:case OP_SELLLIMIT:case OP_SELLSTOP:result=OrderDelete(OrderTicket());}}return(0);} //Basket profit or loss //double CurrentProfit=0;double CurrentBasket=0;CurrentBasket=AccountEquity()-AccountBalance(); //if(UseBasketOptions&&CurrentBasket>maxEquity)maxEquity=CurrentBasket;if(UseBasketOptions&&CurrentBasket=BasketProfit||CurrentBasket<=(BasketLoss*(-1))){CloseEverything();CECount++;} //ma filter //double MAF=iMA(Symbol(),0,MAPeriod,0,MAMethod,MAPrice,i);string MAFIB="false";string MAFIS="false"; //if((MAFilter==false)||(MAFilter&&Bid>MAF))MAFIB="true";if((MAFilter==false)||(MAFilter&&Ask0&&ASC2a!=EMPTY_VALUE)&&ASC2>0&&ASC2!=EMPTY_VALUE&&(TradePerBar<=MaxTradePerBar))BUY="true"; if(!(ASC1a>0&&ASC1a!=EMPTY_VALUE)&&ASC1>0&&ASC1!=EMPTY_VALUE&&(TradePerBar<=MaxTradePerBar))SELL="true"; //entry conditions if( //MAFIB=="true"&& BUY=="true"){if(ReverseTheSystem)SV=1;else BV=1;break;} if( //MAFIS=="true"&& SELL=="true"){if(ReverseTheSystem)BV=1;else SV=1;break;}} //risk management bool MM=RiskManagement; if(MM){if(RiskPercent<0.1||RiskPercent>100){Comment("Invalid Risk Value.");return(0);} else{Lots=MathFloor((AccountFreeMargin()*AccountLeverage()*RiskPercent*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)* MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);}} if(MM==false){Lots=Lots;} //martingale //if(Balance!=0.0&&Martingale==True){if(Balance>AccountBalance())Lots=Multiplier*Lots;else if((Balance+MinProfit)=AccountBalance()&&Balance<=AccountBalance())Lots=Lots;}Balance=AccountBalance();if(Lots<0.01)Lots=0.01;if(Lots>100)Lots=100; //positions initialization int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0;cnt=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0; //entry conditions verification if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;} //conditions to close positions if((SV>0) //||(UseHiddenSL&&(OrderOpenPrice()-Ask)/Point>=HiddenSL)||(UseHiddenTP&&(Bid-OrderOpenPrice())/Point>=HiddenTP) ){CB=1;if(EmailAlert)SendMail ("SilverTrendSignal Alert EA: ",Symbol()+" "+Period()+": Buy Order closed @ "+DoubleToStr(Bid,Digits));} if((BV>0) //||(UseHiddenSL&&(Bid-OrderOpenPrice())/Point>=HiddenSL)||(UseHiddenTP&&(OrderOpenPrice()-Ask)/Point>=HiddenTP) ){CS=1;if(EmailAlert)SendMail ("SilverTrendSignal Alert EA: ",Symbol()+" "+Period()+": Sell Order closed @ "+DoubleToStr(Bid,Digits));} for(cnt=0;cnt0)TradePerBar++;OS=0;return(0);}} if(OB==1){if(Time0!=Time[0]){if(TP==0)TPI=0;else TPI=Ask+TP*Point;if(SL==0)SLI=0;else SLI=Ask-SL*Point; TK=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SLI,TPI,EAName,Magic,0,Lime); if(EmailAlert)SendMail ("SilverTrendSignal Alert EA: ",Symbol()+" "+Period()+": Buy Order opened @ "+DoubleToStr(Bid,Digits));Time0=Time[0];if(TK>0)TradePerBar++;OB=0;return(0);}}} for(j=0;j0){ if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp);}}}if(TS>0){if((pb-OrderOpenPrice())>TS*pp){ if(OrderStopLoss()0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}if(TS>0){if(OrderOpenPrice()-pa>TS*pp){ if(OrderStopLoss()>pa+(TS+TrailingStep-1)*pp||OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}} //stop loss modification function void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE);} //add positions function bool AddP(){int _num=0; int _ot=0; for (int j=0;j_ot) _ot=OrderOpenTime();}}if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}