//+------------------------------------------------------------------+ //| ao.mq4 | //| Copyright © 2005, tageiger | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, tageiger aka fxid10t" #property link "http://www.metaquotes.net" #include extern int slip =2; extern double MaximumRisk =0.02; //%account balance to risk per position extern double DecreaseFactor =3; //lot size divisor(reducer) during loss streak extern string comment ="m ao"; extern int magic =1965; int ticket,b,s,c; int init(){return(0);} int deinit(){return(0);} int start(){ if(!IsTesting()){ if(Period()!=15 && c<=0) { int ret=MessageBox("The AO expert was designed for 15m\n charts,do you wish to continue?","ao expert advisor",MB_YESNO|MB_ICONQUESTION); c++; if(ret==IDNO) return(0);}} double mafc=iMA(Symbol(),0,5,0,MODE_SMA,PRICE_MEDIAN,0); double masc=iMA(Symbol(),0,34,0,MODE_SMA,PRICE_MEDIAN,0); double mafp=iMA(Symbol(),0,5,0,MODE_SMA,PRICE_MEDIAN,1); double masp=iMA(Symbol(),0,34,0,MODE_SMA,PRICE_MEDIAN,1); PosCounter(); double aoc=mafc-masc; double aop=mafp-masp; //double AO=iCustom(Symbol(),0,"Awesome",0,0,0); if((aop0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { Print(ticket); } else Print("Error Opening Buy Order: ",GetLastError()); return(0); }}//buy if((aoc(0.0000))*/ && s==0) { ticket=OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, slip, ssl(), 0,//tp Period()+comment, magic, 0,//OrderExpiration DeepPink); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { Print(ticket); } else Print("Error Opening Sell Order: ",GetLastError()); return(0); }}//sell for(int i=0;i(0.0000)) && OrderProfit()>0) { OrderClose(OrderTicket(),OrderLots(),Bid,slip,Red);} if(OrderSymbol()==Symbol() && OrderComment()==Period()+comment && OrderType()==OP_SELL && (aoc>aop) && (aop<(0.0000)) && OrderProfit()>0) { OrderClose(OrderTicket(),OrderLots(),Ask,slip,Green);} } if(!IsTesting()) {Comment("AO Last:",AOC()," ",aoc,"\n"," AO Prev:",AOP()," ",aop);} return(0); } //+------------------------------------------------------------------+ double LotsOptimized() { double lot; int orders=HistoryTotal(); int losses=0; lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2); if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2); } if(lot<0.05) lot=0.05; return(lot); }//end LotsOptimized double bsl() { double Lval; Lval=Low[Lowest(Symbol(),0,MODE_LOW,34,0)]; if(Ask-Lval