// _advanced expert advisor template.mq4 // Copyright © 2009, TradingSystemForex // http://www.tradingsystemforex.com/ #property copyright "Copyright © 2009, TradingSystemForex" #property link "http://www.tradingsystemforex.com/" extern string comment=""; extern int magic=1234; extern string moneymanagement="Money Management"; extern double lots=0.01; extern bool lotsoptimized=true; extern double risk=1; extern bool martingale=false; extern double multiplier=2.0; extern double minlot=0.01; extern double maxlot=10; extern double lotdigits=2; extern bool basketpercent=false; extern double profit=10; extern double loss=30; extern string ordersmanagement="Order Management"; extern bool oppositeclose=true; extern bool reversesignals=false; extern int maxtrades=100; extern int tradesperbar=1; extern bool hidestop=false; extern bool hidetarget=false; extern int buystop=0; extern int buytarget=0; extern int sellstop=0; extern int selltarget=0; extern int trailingstart=0; extern int trailingstop=0; extern int trailingstep=1; extern int breakevengain=0; extern int breakeven=0; extern int slippage=5; extern string entrylogics="Entry Logics"; extern bool useheikenashi=true; extern bool onlycross=true; extern int MaMetod=2; extern int MaPeriod=6; extern int MaMetod2=3; extern int MaPeriod2=2; extern bool usehafilter=false; extern int HATimeFrame=60; extern int MaMetod3=2; extern int MaPeriod3=6; extern int MaMetod4=3; extern int MaPeriod4=2; extern bool usepsar=false; extern int SARTimeFrame=60; extern double Step=0.02; extern double Maximum=0.2; extern bool usema=false; extern int MATimeFrame=1440; extern int MAPeriod=21; extern int MAMethod=1; extern int MAPrice=0; extern bool uselaguerre=false; extern int LGTimeFrame=60; extern double gamma=0.7; extern double laguerreup=1; extern double laguerredn=0; extern int shift=1; extern string timefilter="Time Filter"; extern int gmtshift=1; extern bool filter=false; extern int start=7; extern int end=21; extern bool tradesunday=true; extern bool fridayfilter=false; extern int fridayend=24; datetime t0,t1,lastbuyopentime,lastsellopentime; double cb=0,lastbuyopenprice=0,lastsellopenprice=0; double sl,tp,pt,mt,min,max,maxe,mine,lastprofit; int i,j,k,l,dg,bc=-1,tpb=0,total,ticket; int buyopenposition=0,sellopenposition=0; int totalopenposition=0,buyorderprofit=0; int sellorderprofit=0,cnt=0; double lotsfactor=1,ilots; double initiallotsfactor=1; int init(){ t0=Time[0];t1=Time[0];dg=Digits; if(dg==3 || dg==5){pt=Point*10;mt=10;}else{pt=Point;mt=1;} //|---------martingale initialization int tempfactor,total=OrdersTotal(); if(tempfactor==0 && total>0) { for(int cnt=0;cnt0) { for(cnt=0;cnt0) lotsfactor=tempfactor; return(0); } int start(){ /*Comment("\n Developed by WWW.TRADINGSYSTEMFOREX.COM");*/ /*GlobalVariableSet("vGrafBalance",AccountBalance()); GlobalVariableSet("vGrafEquity",AccountEquity());*/ total=OrdersTotal(); if(breakevengain>0) { for(int b=0;b=NormalizeDouble(breakevengain*pt,dg)){ if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),dg)=NormalizeDouble(breakevengain*pt,dg)){ if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),dg)0) { for(int a=0;aNormalizeDouble(OrderOpenPrice()+trailingstart*pt,dg) && (NormalizeDouble(OrderStopLoss(),dg)(NormalizeDouble(Ask+(trailingstop+trailingstep)*pt,dg)))||(OrderStopLoss()==0)){ OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+trailingstop*pt,dg),OrderTakeProfit(),0,Red); return(0); } } } } } if(basketpercent){ double ipf=profit*(0.01*AccountBalance());double ilo=loss*(0.01*AccountBalance()); cb=AccountEquity()-AccountBalance(); if(cb>maxe)maxe=cb;if(cb=ipf||cb<=(ilo*(-1))){ for(i=total-1;i>=0;i--){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUY){ OrderClose(OrderTicket(),OrderLots(),Bid,slippage*pt); } if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELL){ OrderClose(OrderTicket(),OrderLots(),Ask,slippage*pt); } } return(0); } } for(cnt=0;cnt=0)))lots=NormalizeDouble((AccountBalance()/1000)*minlot*risk,lotdigits); if(lotsmaxlot)lots=maxlot; if(tradesperbar==1 && (((TimeCurrent()-lastbuyopentime)HA1)||(onlycross==false && HA2>HA1)))) && (usehafilter==false || (usehafilter && HA2B>HA1B)) && (usema==false||(usema&&MA2>MA1)) && (usepsar==false||(usepsar&&Ask>SAR)) && (uselaguerre==false||(uselaguerre&&LAG==laguerreup)) && openbuy)if(reversesignals)sell=true;else buy=true; if((useheikenashi==false || (useheikenashi && ((onlycross && HA2a>HA1a&&HA2