//+------------------------------------------------------------------+ //| Copyright © 2016, Хлыстов Владимир | //| cmillion@narod.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2016, http://cmillion.ru" #property link "cmillion@narod.ru" #property strict #property description "Советник тралит стоплосс и тейкпрофит по индикатору МА" //--------------------------------------------------------------------*/ enum tf { m1=1, // M1 m5=5, // M5 m15=15, // M15 m30=30, // M30 h1=60, // H1 h4=240, // H4 d1=1440, // D1 t=0, // current }; //--------------------------------------------------------------------*/ extern bool Tral_SL = true; //тралить стоплосс extern bool Tral_TP = true; //тралить тейкпрофит sinput string ma = ""; //параметры индикатра МА extern int period = 55, //Период усреднения для вычисления первой MA. ma_shift = 0; //Сдвиг индикатора МА относительно ценового графика. input ENUM_MA_METHOD ma_method = MODE_SMMA; //Метод усреднения индикатора МА. input ENUM_APPLIED_PRICE applied_price = PRICE_OPEN; //Используемая цена индикатора МА. input tf timeframe = t; //Таймфрейм индикатора МА. sinput int Magic = -1; //магик номер ордеров (-1 ведет все ордера) //-------------------------------------------------------------------- int OnInit() { return(INIT_SUCCEEDED); } //------------------------------------------------------------------- void OnTick() { if(!IsTradeAllowed()) return; double stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point; double OSL,OTP,OOP=0,SL=0,TP=0; int i,tip; double MA=NormalizeDouble(iMA(NULL,timeframe,period,ma_shift,ma_method,applied_price,1),Digits); for(i=0; iMA+stoplevel && MA>OSL) SL=MA; if(Tral_TP && Ask> "); } } if(tip==OP_SELL) { if(Tral_SL && AskMA+stoplevel && MA!=OTP) TP=MA; if(SL!=OSL || TP!=OTP) { if(!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> "); } } } } } if(IsTesting() && OOP==0) { if(Bid>MA+stoplevel+10*Point) { if(OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),100,0,0,NULL,Magic,0,clrNONE)==-1) Print("Ошибка открытия ордера <<",(GetLastError()),">> "); } if(Ask> "); } } return; } //--------------------------------------------------------------------