//---- input parameters extern bool use_daily_target=false; extern double daily_target=1000; extern bool trade_in_fri=true; extern int magic=999; extern double start_lot=0.1; extern double range=50; extern int level=50; extern bool lot_multiplier=true; extern double multiplier=1.0; extern double increament=0.1; extern bool use_sl_and_tp=false; extern double sl=60; extern double tp=30; extern double tp_in_money=100.0; extern bool stealth_mode=true; extern bool use_bb=true; extern int bb_period=20; extern int bb_deviation=2; extern int bb_shift=0; extern bool use_stoch=true; extern int k=5; extern int d=3; extern int slowing=3; extern int price_field=0; extern int stoch_shift=0; extern int lo_level=30; extern int up_level=70; extern bool use_rsi=true; extern int rsi_period=12; extern int rsi_shift=0; extern int lower=30; extern int upper=70; double pt; double minlot; double stoplevel; int prec=0; int a=0; int ticket=0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- if(Digits==3 || Digits==5) pt=10*Point; else pt=Point; minlot = MarketInfo(Symbol(),MODE_MINLOT); stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL); if(start_lot=daily_target) { Comment("\ndaily target achieved."); return(0); } if(!trade_in_fri && DayOfWeek()==5 && total()==0) { Comment("\nstop trading in Friday."); return(0); } if(total()==0 && a==0) { if(signal()==buy) { if(stealth_mode) { if(use_sl_and_tp) ticket=OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,"",magic,0,Blue); else ticket=OrderSend(Symbol(),0,start_lot,Ask,3, 0, 0,"",magic,0,Blue); } else { if(use_sl_and_tp) { if(OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,"",magic,0,Blue)>0) { for(int i=1; i0) { for(i=1; i0) { for(i=1; i0) { for(i=1; i0 && total()=op+range*pt) { if(use_sl_and_tp) { if(lot_multiplier) ticket=OrderSend(Symbol(),1,NormalizeDouble(lastlot*multiplier,prec),Bid,3,Bid+sl*pt,Bid-tp*pt,"",magic,0,Red); else ticket=OrderSend(Symbol(),1,NormalizeDouble(lastlot+increament,prec),Bid,3,Bid+sl*pt,Bid-tp*pt,"",magic,0,Red); } else { if(lot_multiplier) ticket=OrderSend(Symbol(),1,NormalizeDouble(lastlot*multiplier,prec),Bid,3,0,0,"",magic,0,Red); else ticket=OrderSend(Symbol(),1,NormalizeDouble(lastlot+increament,prec),Bid,3,0,0,"",magic,0,Red); } } } if(use_sl_and_tp && total()>1) { double s_l, t_p; for(i=0; i1) continue; type=OrderType(); s_l=OrderStopLoss(); t_p=OrderTakeProfit(); } for(i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic || OrderType()>1) continue; if(OrderType()==type) { if(OrderStopLoss()!=s_l || OrderTakeProfit()!=t_p) { OrderModify(OrderTicket(),OrderOpenPrice(),s_l,t_p,0,CLR_NONE); } } } } double profit=0; for(i=0; i1) continue; profit+=OrderProfit(); } if(profit>=tp_in_money || a>0) { closeall(); closeall(); closeall(); a++; if(total()==0) a=0; } if(!stealth_mode && use_sl_and_tp && total()upBB && stoch>up_level && rsi>upper) return(sell); if(Low[bb_shift]upBB && stoch>up_level) return(sell); if(Low[bb_shift]upBB) return(sell); if(Low[bb_shift]up_level && rsi>upper) return(sell); if(stochup_level) return(sell); if(stochupBB && rsi>upper) return(sell); if(Low[bb_shift]upper) return(sell); if(rsi=0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue; if(OrderType()>1) OrderDelete(OrderTicket()); else { if(OrderType()==0) OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); else OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); } } }