//+------------------------------------------------------------------+ //| Proffessor_v1_2011.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern double lot=0.01; extern int MAX_Lines = 5; //максимальное колличество отложенных ордеров каждого направления extern double klot = 1; //коэффициент умножения лотов при удалении от цены extern double pluslot =0.01; //коэффициент доливки лота при удалении от цены extern int plusDelta =-5; //коэффициент увеличения расстояния между отложенными ордерами //если значение отрицательное, то расстояние уменьшается на данное кол-во пунктов extern double Delta1 =70; //первая дельта от цены для стопового ордера extern int Delta = 60; //расстояние между отложенными ордерами extern double ProfitClose = 0.8; //закрывать все ордера при получении профита(в долларах) extern double f =40; //параметр границы флета по ADX extern double bar = 2; //сдвиг по барам ADX extern double timeframe = 1; //таймфрейм для индикатора ADX 0-текущий,1-1минута, 2-5минут, 3-15минут, 4-30минут, 5-1час //6-4часа, 7-день, 8-неделя, 9-месяц extern int magic = 12345; extern int StartHour=0; //час начала работы советника extern int EndHour=24; //час окончания работы советника extern int pop=3;//количество попыток закрыть ордер int init() { Comment("ProfessorSoft_v3_2011"); return (0); } int deinit() { Comment(""); return (0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- bool ticket; double Lots; int x,q; bool trade=false; trade=true; double iflet,ibuy,isell; int _timeframe; if(timeframe==1)_timeframe=1; else if(timeframe==0)_timeframe=0; else if(timeframe==2)_timeframe=5; else if(timeframe==3)_timeframe=15; else if(timeframe==4)_timeframe=30; else if(timeframe==5)_timeframe=60; else if(timeframe==6)_timeframe=240; else if(timeframe==7)_timeframe=1440; else if(timeframe==8)_timeframe=10080; else _timeframe=43200; if(OrdersTotal()==0 && trade==true && time()==true) { ticket=-1; iflet=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, bar); ibuy=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_PLUSDI, bar); isell=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MINUSDI, bar); if(ifletisell)//условие для покупки и определение флета { Lots=lot; ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",magic,0,Blue); if(ticket==-1)return(0); OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red); for(x=1;x<=MAX_Lines;x++) { Lots=NormalizeDouble(Lots*klot,2)+pluslot; OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue); OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red); } } else if(ifletf && ibuy>isell)//условие для покупки и определение тренда { Lots=lot; ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",magic,0,Blue); if(ticket==-1)return(0); OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red); for(x=1;x<=MAX_Lines;x++) { Lots=NormalizeDouble(Lots*klot,2)+pluslot; OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue); OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red); } } else if(iflet>f && ibuy0) { Comment(" Balance ",AccountBalance(),"\n Equity ",AccountEquity(),"\n Profit ",OrdersProfit()); if(OrdersProfit()>=ProfitClose) { for (int i=OrdersTotal()-1;i>=0;i--) { bool closed; OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()==OP_BUY) { for(q=0;q1 ) OrderDelete(OrderTicket()); } } } //---- return(0); } //+------------------------------------------------------------------+ bool time() { if (StartHour=StartHour && Hour()EndHour) {if (Hour()>=EndHour && Hour()=0;i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) { if(OrderSymbol()!= SMB) continue; if(OrderType()==OP_BUY || OrderType()==OP_SELL) { rezultSymb+=OrderProfit(); } } } return(rezultSymb); }